2016-06-26 12 views
0

pièce jointe PDF facture avec mail en utilisant FPDF premier téléchargement fpdf d'ici « www.fpdf.org/en/download.php » et le dossier sur le copier sur votre lecteur où vous voulez pdfcréer facture pdf en utilisant fpdf

Invoice.php

<?php 
    require('../fpdf181/fpdf.php'); 
define('EURO', chr(128)); 
define('EURO_VAL', 6.55957); 
class PDF_Invoice extends FPDF 
{ 
    // private variables 
var $colonnes; 
var $format; 
var $angle=0; 

// private functions 
function RoundedRect($x, $y, $w, $h, $r, $style = '') 
{ 
    $k = $this->k; 
    $hp = $this->h; 
    if($style=='F') 
    $op='f'; 
elseif($style=='FD' || $style=='DF') 
    $op='B'; 
else 
    $op='S'; 
$MyArc = 4/3 * (sqrt(2) - 1); 
$this->_out(sprintf('%.2F %.2F m',($x+$r)*$k,($hp-$y)*$k)); 
$xc = $x+$w-$r ; 
$yc = $y+$r; 
$this->_out(sprintf('%.2F %.2F l', $xc*$k,($hp-$y)*$k)); 

$this->_Arc($xc + $r*$MyArc, $yc - $r, $xc + $r, $yc - $r*$MyArc, $xc + $r, $yc); 
$xc = $x+$w-$r ; 
$yc = $y+$h-$r; 
$this->_out(sprintf('%.2F %.2F l',($x+$w)*$k,($hp-$yc)*$k)); 
$this->_Arc($xc + $r, $yc + $r*$MyArc, $xc + $r*$MyArc, $yc + $r, $xc, $yc + $r); 
$xc = $x+$r ; 
$yc = $y+$h-$r; 
$this->_out(sprintf('%.2F %.2F l',$xc*$k,($hp-($y+$h))*$k)); 
$this->_Arc($xc - $r*$MyArc, $yc + $r, $xc - $r, $yc + $r*$MyArc, $xc - $r, $yc); 
$xc = $x+$r ; 
$yc = $y+$r; 
$this->_out(sprintf('%.2F %.2F l',($x)*$k,($hp-$yc)*$k)); 
$this->_Arc($xc - $r, $yc - $r*$MyArc, $xc - $r*$MyArc, $yc - $r, $xc, $yc - $r); 
$this->_out($op); 
} 
function _Arc($x1, $y1, $x2, $y2, $x3, $y3) 
{ 
$h = $this->h; 
$this->_out(sprintf('%.2F %.2F %.2F %.2F %.2F %.2F c ', $x1*$this->k, ($h-$y1)*$this->k, 
$x2*$this->k, ($h-$y2)*$this->k, $x3*$this->k, ($h-$y3)*$this->k)); 
} 
function Rotate($angle, $x=-1, $y=-1) 
{ 
if($x==-1) 
    $x=$this->x; 
if($y==-1) 
    $y=$this->y; 
if($this->angle!=0) 
    $this->_out('Q'); 
$this->angle=$angle; 
if($angle!=0) 
{ 
    $angle*=M_PI/180; 
    $c=cos($angle); 
    $s=sin($angle); 
    $cx=$x*$this->k; 
    $cy=($this->h-$y)*$this->k; 
    $this->_out(sprintf('q %.5F %.5F %.5F %.5F %.2F %.2F cm 1 0 0 1 %.2F %.2F cm',$c,$s,-$s,$c,$cx,$cy,-$cx,-$cy)); 
    } 
} 
function _endpage() 
{ 
    if($this->angle!=0) 
    { 
    $this->angle=0; 
    $this->_out('Q'); 
    } 
    parent::_endpage(); 
} 
// public functions 
function sizeOfText($texte, $largeur) 
{ 
$index = 0; 
$nb_lines = 0; 
$loop  = TRUE; 
while ($loop) 
{ 
    $pos = strpos($texte, "\n"); 
    if (!$pos) 
    { 
     $loop = FALSE; 
     $ligne = $texte; 
    } 
    else 
    { 
     $ligne = substr($texte, $index, $pos); 
     $texte = substr($texte, $pos+1); 
    } 
    $length = floor($this->GetStringWidth($ligne)); 
    $res = 1 + floor($length/$largeur) ; 
    $nb_lines += $res; 
} 
return $nb_lines; 
} 
// Company 
function addSociete($nom, $adresse) 
{ 
    $x1 = 10; 
    $y1 = 40; 
    //Positionnement en bas 
    $this->SetXY($x1, $y1); 
    $this->SetFont('Arial','B',12); 
    $length = $this->GetStringWidth($nom); 
    $this->Cell($length, 2, $nom); 
    $this->SetXY($x1, $y1 + 4); 
    $this->SetFont('Arial','',10); 
    $length = $this->GetStringWidth($adresse); 
    //Coordonnées de la société 
    $lignes = $this->sizeOfText($adresse, $length) ; 
    $this->MultiCell($length, 4, $adresse); 
} 
// Label and number of invoice/estimate 
function fact_dev($libelle, $num) 
{ 
    $r1 = $this->w - 80; 
    $r2 = $r1 + 68; 
    $y1 = 6; 
    $y2 = $y1 + 2; 
    $mid = ($r1 + $r2)/2; 
    $texte = $libelle . " EN " . EURO . " N° : " . $num;  
    $szfont = 12; 
    $loop = 0; 
    while ($loop == 0) 
    { 
     $this->SetFont("Arial", "B", $szfont); 
     $sz = $this->GetStringWidth($texte); 
     if (($r1+$sz) > $r2) 
     $szfont --; 
     else 
     $loop ++; 
    } 
    $this->SetLineWidth(0.1); 
    $this->SetFillColor(192); 
    $this->RoundedRect($r1, $y1, ($r2 - $r1), $y2, 2.5, 'DF'); 
    $this->SetXY($r1+1, $y1+2); 
    $this->Cell($r2-$r1 -1,5, $texte, 0, 0, "C"); 
    } 
    // Estimate 
function addDevis($numdev) 
{ 
    $string = sprintf("DEV%04d",$numdev); 
    $this->fact_dev("Devis", $string); 
} 
// Invoice 
function addFacture($numfact) 
{ 
    $string = sprintf("FA%04d",$numfact); 
    $this->fact_dev("Facture", $string); 
} 
function addDate($date) 
{ 
    $r1 = $this->w - 61; 
    $r2 = $r1 + 30; 
    $y1 = 17; 
    $y2 = $y1 ; 
    $mid = $y1 + ($y2/2); 
    $this->RoundedRect($r1, $y1, ($r2 - $r1), $y2, 3.5, 'D'); 
    $this->Line($r1, $mid, $r2, $mid); 
    $this->SetXY($r1 + ($r2-$r1)/2 - 5, $y1+3); 
    $this->SetFont("Arial", "B", 10); 
    $this->Cell(10,5, "DATE", 0, 0, "C"); 
    $this->SetXY($r1 + ($r2-$r1)/2 - 5, $y1+9); 
    $this->SetFont("Arial", "", 10); 
    $this->Cell(10,5,$date, 0,0, "C"); 
    } 
function addClient($ref) 
{ 
$r1 = $this->w - 31; 
$r2 = $r1 + 19; 
$y1 = 17; 
$y2 = $y1; 
$mid = $y1 + ($y2/2); 
$this->RoundedRect($r1, $y1, ($r2 - $r1), $y2, 3.5, 'D'); 
$this->Line($r1, $mid, $r2, $mid); 
$this->SetXY($r1 + ($r2-$r1)/2 - 5, $y1+3); 
$this->SetFont("Arial", "B", 10); 
$this->Cell(10,5, "CLIENT", 0, 0, "C"); 
$this->SetXY($r1 + ($r2-$r1)/2 - 5, $y1 + 9); 
$this->SetFont("Arial", "", 10); 
$this->Cell(10,5,$ref, 0,0, "C"); 
} 

function addPageNumber($page) 
{ 
$r1 = $this->w - 80; 
$r2 = $r1 + 19; 
$y1 = 17; 
$y2 = $y1; 
$mid = $y1 + ($y2/2); 
$this->RoundedRect($r1, $y1, ($r2 - $r1), $y2, 3.5, 'D'); 
$this->Line($r1, $mid, $r2, $mid); 
$this->SetXY($r1 + ($r2-$r1)/2 - 5, $y1+3); 
$this->SetFont("Arial", "B", 10); 
$this->Cell(10,5, "PAGE", 0, 0, "C"); 
$this->SetXY($r1 + ($r2-$r1)/2 - 5, $y1 + 9); 
$this->SetFont("Arial", "", 10); 
$this->Cell(10,5,$page, 0,0, "C"); 
} 

// Client address 
function addClientAdresse($nom, $adresse) 
{ 
$r1  = $this->w - 80; 
$r2  = $r1 + 68; 
$y1  = 40; 
/*$this->SetXY($r1, $y1); 
$this->MultiCell(60, 4, $adresse);*/ 
//$x1 = 10; 
//$y1 = 247; 
//Positionnement en bas 
$this->SetXY($r1, $y1); 
$this->SetFont('Arial','B',12); 
$length = $this->GetStringWidth($nom); 
$this->Cell($length, 2, $nom); 
$this->SetXY($r1, $y1 + 4); 
$this->SetFont('Arial','',10); 
$length = $this->GetStringWidth($adresse); 
//Coordonnées de la société 
$lignes = $this->sizeOfText($adresse, $length) ; 
$this->MultiCell($length, 4, $adresse); 
} 

// Mode of payment 
function addReglement($mode) 
{ 
$r1 = 10; 
$r2 = $r1 + 60; 
$y1 = 80; 
$y2 = $y1+10; 
$mid = $y1 + (($y2-$y1)/2); 
$this->RoundedRect($r1, $y1, ($r2 - $r1), ($y2-$y1), 2.5, 'D'); 
$this->Line($r1, $mid, $r2, $mid); 
$this->SetXY($r1 + ($r2-$r1)/2 -5 , $y1+1); 
$this->SetFont("Arial", "B", 10); 
$this->Cell(10,4, "BUYER NAME", 0, 0, "C"); 
$this->SetXY($r1 + ($r2-$r1)/2 -5 , $y1 + 5); 
$this->SetFont("Arial", "", 10); 
$this->Cell(10,5,$mode, 0,0, "C"); 
} 

// Expiry date 
function addEcheance($date) 
{ 
$r1 = 80; 
$r2 = $r1 + 40; 
$y1 = 80; 
$y2 = $y1+10; 
$mid = $y1 + (($y2-$y1)/2); 
$this->RoundedRect($r1, $y1, ($r2 - $r1), ($y2-$y1), 2.5, 'D'); 
$this->Line($r1, $mid, $r2, $mid); 
$this->SetXY($r1 + ($r2 - $r1)/2 - 5 , $y1+1); 
$this->SetFont("Arial", "B", 10); 
$this->Cell(10,4, "DATE", 0, 0, "C"); 
    $this->SetXY($r1 + ($r2-$r1)/2 - 5 , $y1 + 5); 
    $this->SetFont("Arial", "", 10); 
$this->Cell(10,5,$date, 0,0, "C"); 
} 

// VAT number 
function addNumTVA($tva) 
{ 
$this->SetFont("Arial", "B", 10); 
$r1 = $this->w - 80; 
$r2 = $r1 + 70; 
$y1 = 80; 
$y2 = $y1+10; 
$mid = $y1 + (($y2-$y1)/2); 
$this->RoundedRect($r1, $y1, ($r2 - $r1), ($y2-$y1), 2.5, 'D'); 
$this->Line($r1, $mid, $r2, $mid); 
$this->SetXY($r1 + 16 , $y1+1); 
$this->Cell(40, 4, "SHIPPING DATE", '', '', "C"); 
$this->SetFont("Arial", "", 10); 
$this->SetXY($r1 + 16 , $y1+5); 
$this->Cell(40, 5, $tva, '', '', "C"); 
} 

function addReference($ref) 
{ 
$this->SetFont("Arial", "", 10); 
$length = $this->GetStringWidth("Références : " . $ref); 
$r1 = 10; 
$r2 = $r1 + $length; 
$y1 = 92; 
$y2 = $y1+5; 
$this->SetXY($r1 , $y1); 
$this->Cell($length,4, "Références : " . $ref); 
} 

function addCols($tab) 
{ 
global $colonnes; 

$r1 = 10; 
$r2 = $this->w - ($r1 * 2) ; 
$y1 = 100; 
$y2 = $this->h - 50 - $y1; 
$this->SetXY($r1, $y1); 
$this->Rect($r1, $y1, $r2, $y2, "D"); 
$this->Line($r1, $y1+6, $r1+$r2, $y1+6); 
$colX = $r1; 
$colonnes = $tab; 
while (list($lib, $pos) = each ($tab)) 
{ 
    $this->SetXY($colX, $y1+2); 
    $this->Cell($pos, 1, $lib, 0, 0, "C"); 
    $colX += $pos; 
    $this->Line($colX, $y1, $colX, $y1+$y2); 
} 
} 

function addLineFormat($tab) 
{ 
global $format, $colonnes; 

while (list($lib, $pos) = each ($colonnes)) 
{ 
    if (isset($tab["$lib"])) 
     $format[ $lib ] = $tab["$lib"]; 
} 
} 

function lineVert($tab) 
{ 
global $colonnes; 

reset($colonnes); 
$maxSize=0; 
while (list($lib, $pos) = each ($colonnes)) 
{ 
    $texte = $tab[ $lib ]; 
    $longCell = $pos -2; 
    $size = $this->sizeOfText($texte, $longCell); 
    if ($size > $maxSize) 
     $maxSize = $size; 
} 
return $maxSize; 
} 

// add a line to the invoice/estimate 
/* $ligne = array("REFERENCE" => $prod["ref"], 
        "DESIGNATION" => $libelle, 
        "QUANTITE"  => sprintf("%.2F", $prod["qte"]) , 
        "P.U. HT"  => sprintf("%.2F", $prod["px_unit"]), 
        "MONTANT H.T." => sprintf ("%.2F", $prod["qte"] * $prod["px_unit"]) , 
        "TVA"   => $prod["tva"]); 
    */ 
    function addLine($ligne, $tab) 
    { 
    global $colonnes, $format; 

     $ordonnee  = 10; 
$maxSize  = $ligne; 

reset($colonnes); 
while (list($lib, $pos) = each ($colonnes)) 
{ 
    $longCell = $pos -2; 
    $texte  = $tab[ $lib ]; 
    $length = $this->GetStringWidth($texte); 
    $tailleTexte = $this->sizeOfText($texte, $length); 
    $formText = $format[ $lib ]; 
    $this->SetXY($ordonnee, $ligne-1); 
    $this->MultiCell($longCell, 4 , $texte, 0, $formText); 
    if ($maxSize < ($this->GetY() )) 
     $maxSize = $this->GetY() ; 
    $ordonnee += $pos; 
} 
return ($maxSize - $ligne);} 


function addRemarque($remarque) 


{ 
$this->SetFont("Arial", "", 10); 
$length = $this->GetStringWidth("Remarque : " . $remarque); 
$r1 = 10; 
$r2 = $r1 + $length; 
$y1 = $this->h - 45.5; 
$y2 = $y1+5; 
$this->SetXY($r1 , $y1); 
$this->Cell($length,4, "Remarque : " . $remarque); 
} 
function addCadreTVAs() 
{ 
$this->SetFont("Arial", "B", 8); 
$r1 = 10; 
$r2 = $r1 + 120; 
$y1 = $this->h - 40; 
$y2 = $y1+20; 
$this->RoundedRect($r1, $y1, ($r2 - $r1), ($y2-$y1), 2.5, 'D'); 
$this->Line($r1, $y1+4, $r2, $y1+4); 
$this->Line($r1+5, $y1+4, $r1+5, $y2); // avant BASES HT 
$this->Line($r1+27, $y1, $r1+27, $y2); // avant REMISE 
$this->Line($r1+43, $y1, $r1+43, $y2); // avant MT TVA 
$this->Line($r1+63, $y1, $r1+63, $y2); // avant % TVA 
$this->Line($r1+75, $y1, $r1+75, $y2); // avant PORT 
$this->Line($r1+91, $y1, $r1+91, $y2); // avant TOTAUX 
$this->SetXY($r1+9, $y1); 
$this->Cell(10,4, "BASES HT"); 
$this->SetX($r1+29); 
$this->Cell(10,4, "REMISE"); 
$this->SetX($r1+48); 
$this->Cell(10,4, "MT TVA"); 
$this->SetX($r1+63); 
$this->Cell(10,4, "% TVA"); 
$this->SetX($r1+78); 
$this->Cell(10,4, "PORT"); 
$this->SetX($r1+100); 
$this->Cell(10,4, "TOTAUX"); 
$this->SetFont("Arial", "B", 6); 
$this->SetXY($r1+93, $y2 - 8); 
$this->Cell(6,0, "H.T. :"); 
$this->SetXY($r1+93, $y2 - 3); 
$this->Cell(6,0, "T.V.A. :"); 
} 

function addCadreEurosFrancs() 
{ 
$r1 = $this->w - 70; 
$r2 = $r1 + 60; 
$y1 = $this->h - 40; 
$y2 = $y1+20; 
$this->RoundedRect($r1, $y1, ($r2 - $r1), ($y2-$y1), 2.5, 'D'); 
$this->Line($r1+20, $y1, $r1+20, $y2); // avant EUROS 
$this->Line($r1+20, $y1+4, $r2, $y1+4); // Sous Euros & Francs 
$this->Line($r1+38, $y1, $r1+38, $y2); // Entre Euros & Francs 
$this->SetFont("Arial", "B", 8); 
$this->SetXY($r1+22, $y1); 
$this->Cell(15,4, "EUROS", 0, 0, "C"); 
$this->SetFont("Arial", "", 8); 
$this->SetXY($r1+42, $y1); 
$this->Cell(15,4, "FRANCS", 0, 0, "C"); 
$this->SetFont("Arial", "B", 6); 
$this->SetXY($r1, $y1+5); 
$this->Cell(20,4, "TOTAL TTC", 0, 0, "C"); 
$this->SetXY($r1, $y1+10); 
$this->Cell(20,4, "ACOMPTE", 0, 0, "C"); 
$this->SetXY($r1, $y1+15); 
$this->Cell(20,4, "NET A PAYER", 0, 0, "C"); 
} 

// remplit les cadres TVA/Totaux et la remarque 
// params = array("RemiseGlobale" => [0|1], 
//"remise_tva"  => [1|2...], // {la remise s'applique sur ce code TVA} 
// "remise"   => value,  // {montant de la remise} 
//"remise_percent" => percent, // {pourcentage de remise sur ce montant de TVA} 
//     "FraisPort"  => [0|1], 
//      "portTTC"  => value,  // montant des frais de ports TTC 
//              // par defaut la TVA = 19.6 % 
//      "portHT"   => value,  // montant des frais de ports HT 
//      "portTVA"  => tva_value, // valeur de la TVA a appliquer sur le montant HT 
//     "AccompteExige" => [0|1], 
//      "accompte"   => value // montant de l'acompte (TTC) 
//      "accompte_percent" => percent // pourcentage d'acompte (TTC) 
//     "Remarque" => "texte"    // texte 
// tab_tva = array("1"  => 19.6, 
//     "2"  => 5.5, ...); 
// invoice = array("px_unit" => value, 
//     "qte"  => qte, 
//     "tva"  => code_tva); 
function addTVAs($params, $tab_tva, $invoice) 
{ 
$this->SetFont('Arial','',8); 

reset ($invoice); 
$px = array(); 
while (list($k, $prod) = each($invoice)) 
{ 
    $tva = $prod["tva"]; 
    @ $px[$tva] += $prod["qte"] * $prod["px_unit"]; 
} 

$prix  = array(); 
$totalHT = 0; 
$totalTTC = 0; 
$totalTVA = 0; 
$y = 261; 
reset ($px); 
natsort($px); 
while (list($code_tva, $articleHT) = each($px)) 
{ 
    $tva = $tab_tva[$code_tva]; 
    $this->SetXY(17, $y); 
    $this->Cell(19,4, sprintf("%0.2F", $articleHT),'', '','R'); 
    if ($params["RemiseGlobale"]==1) 
    { 
     if ($params["remise_tva"] == $code_tva) 
     { 
      $this->SetXY(37.5, $y); 
      if ($params["remise"] > 0) 
      { 
       if (is_int($params["remise"])) 
        $l_remise = $param["remise"]; 
       else 
        $l_remise = sprintf ("%0.2F", $params["remise"]); 
       $this->Cell(14.5,4, $l_remise, '', '', 'R'); 
       $articleHT -= $params["remise"]; 
      } 
      else if ($params["remise_percent"] > 0) 
      { 
       $rp = $params["remise_percent"]; 
       if ($rp > 1) 
        $rp /= 100; 
       $rabais = $articleHT * $rp; 
       $articleHT -= $rabais; 
       if (is_int($rabais)) 
        $l_remise = $rabais; 
       else 
        $l_remise = sprintf ("%0.2F", $rabais); 
       $this->Cell(14.5,4, $l_remise, '', '', 'R'); 
      } 
      else 
       $this->Cell(14.5,4, "ErrorRem", '', '', 'R'); 
     } 
    } 
    $totalHT += $articleHT; 
    $totalTTC += $articleHT * (1 + $tva/100); 
    $tmp_tva = $articleHT * $tva/100; 
    $a_tva[ $code_tva ] = $tmp_tva; 
    $totalTVA += $tmp_tva; 
    $this->SetXY(11, $y); 
    $this->Cell(5,4, $code_tva); 
    $this->SetXY(53, $y); 
    $this->Cell(19,4, sprintf("%0.2F",$tmp_tva),'', '' ,'R'); 
    $this->SetXY(74, $y); 
    $this->Cell(10,4, sprintf("%0.2F",$tva) ,'', '', 'R'); 
    $y+=4; 
} 

if ($params["FraisPort"] == 1) 
{ 
    if ($params["portTTC"] > 0) 
    { 
     $pTTC = sprintf("%0.2F", $params["portTTC"]); 
     $pHT = sprintf("%0.2F", $pTTC/1.196); 
     $pTVA = sprintf("%0.2F", $pHT * 0.196); 
     $this->SetFont('Arial','',6); 
     $this->SetXY(85, 261); 
     $this->Cell(6 ,4, "HT : ", '', '', ''); 
     $this->SetXY(92, 261); 
     $this->Cell(9 ,4, $pHT, '', '', 'R'); 
     $this->SetXY(85, 265); 
     $this->Cell(6 ,4, "TVA : ", '', '', ''); 
     $this->SetXY(92, 265); 
     $this->Cell(9 ,4, $pTVA, '', '', 'R'); 
     $this->SetXY(85, 269); 
     $this->Cell(6 ,4, "TTC : ", '', '', ''); 
     $this->SetXY(92, 269); 
     $this->Cell(9 ,4, $pTTC, '', '', 'R'); 
     $this->SetFont('Arial','',8); 
     $totalHT += $pHT; 
     $totalTVA += $pTVA; 
     $totalTTC += $pTTC; 
    } 
    else if ($params["portHT"] > 0) 
    { 
     $pHT = sprintf("%0.2F", $params["portHT"]); 
     $pTVA = sprintf("%0.2F", $params["portTVA"] * $pHT/100); 
     $pTTC = sprintf("%0.2F", $pHT + $pTVA); 
     $this->SetFont('Arial','',6); 
     $this->SetXY(85, 261); 
     $this->Cell(6 ,4, "HT : ", '', '', ''); 
     $this->SetXY(92, 261); 
     $this->Cell(9 ,4, $pHT, '', '', 'R'); 
     $this->SetXY(85, 265); 
     $this->Cell(6 ,4, "TVA : ", '', '', ''); 
     $this->SetXY(92, 265); 
     $this->Cell(9 ,4, $pTVA, '', '', 'R'); 
     $this->SetXY(85, 269); 
     $this->Cell(6 ,4, "TTC : ", '', '', ''); 
     $this->SetXY(92, 269); 
     $this->Cell(9 ,4, $pTTC, '', '', 'R'); 
     $this->SetFont('Arial','',8); 
     $totalHT += $pHT; 
     $totalTVA += $pTVA; 
     $totalTTC += $pTTC; 
    } 
    } 

    $this->SetXY(114,266.4); 
    $this->Cell(15,4, sprintf("%0.2F", $totalHT), '', '', 'R'); 
    $this->SetXY(114,271.4); 
    $this->Cell(15,4, sprintf("%0.2F", $totalTVA), '', '', 'R'); 

    $params["totalHT"] = $totalHT; 
    $params["TVA"] = $totalTVA; 
    $accompteTTC=0; 
    if ($params["AccompteExige"] == 1) 
    { 
    if ($params["accompte"] > 0) 
    { 
     $accompteTTC=sprintf ("%.2F", $params["accompte"]); 
     if (strlen ($params["Remarque"]) == 0) 
      $this->addRemarque("Accompte de $accompteTTC Euros exigé à la commande."); 
     else 
      $this->addRemarque($params["Remarque"]); 
    } 
    else if ($params["accompte_percent"] > 0) 
    { 
     $percent = $params["accompte_percent"]; 
     if ($percent > 1) 
      $percent /= 100; 
     $accompteTTC=sprintf("%.2F", $totalTTC * $percent); 
     $percent100 = $percent * 100; 
     if (strlen ($params["Remarque"]) == 0) 
      $this->addRemarque("Accompte de $percent100 % (soit $accompteTTC Euros) exigé à la commande."); 
     else 
      $this->addRemarque($params["Remarque"]); 
    } 
    else 
     $this->addRemarque("Drôle d'acompte !!! " . $params["Remarque"]); 
    } 
    else 
    { 
    if (strlen ($params["Remarque"]) > 0) 
     $this->addRemarque($params["Remarque"]); 
    } 
    $re = $this->w - 50; 
    $rf = $this->w - 29; 
    $y1 = $this->h - 40; 
    $this->SetFont("Arial", "", 8); 
    $this->SetXY($re, $y1+5); 
    $this->Cell(17,4, sprintf("%0.2F", $totalTTC), '', '', 'R'); 
    $this->SetXY($re, $y1+10); 
    $this->Cell(17,4, sprintf("%0.2F", $accompteTTC), '', '', 'R'); 
    $this->SetXY($re, $y1+14.8); 
    $this->Cell(17,4, sprintf("%0.2F", $totalTTC - $accompteTTC), '', '', 'R'); 
    $this->SetXY($rf, $y1+5); 
    $this->Cell(17,4, sprintf("%0.2F", $totalTTC * EURO_VAL), '', '', 'R'); 
    $this->SetXY($rf, $y1+10); 
    $this->Cell(17,4, sprintf("%0.2F", $accompteTTC * EURO_VAL), '', '', 'R'); 
    $this->SetXY($rf, $y1+14.8); 
    $this->Cell(17,4, sprintf("%0.2F", ($totalTTC - $accompteTTC) * EURO_VAL), '', '', 'R'); 
} 

// add a watermark (temporary estimate, DUPLICATA...) 
// call this method first 
function temporaire($texte) 
{ 
$this->SetFont('Arial','B',35); 
$this->SetTextColor(242,242,242); 
$this->Rotate(45,55,190); 
$this->Text(55,190,$texte); 
$this->Rotate(0); 
$this->SetTextColor(0,0,0,0.1); 
} 
}?> 

PHP-Generator.php avec le code postal

<?php 

include ('../../../../wp-load.php'); 
global $wpdb; 
    $order_id=$_POST['order_id']; 
    $selected_val=$_POST['selected_val']; 
    $dreason=$_POST['dreason']; 
    $product_name_semail=$_POST['product_name_semail']; 
    $order_price_semail=$_POST['order_price_semail']; 
    $species_name_semail=$_POST['species_name_semail']; 
    $finish_name_semail=$_POST['finish_name_semail']; 
    $order_date_semail=$_POST['order_date_semail']; 
    $table_name=$wpdb->prefix.'matched_order_details'; 
    $order_table=$wpdb->prefix.'buyer_order_request'; 
    $matched_table=$wpdb->prefix.'matched_order_details'; 
    $query="SELECT * FROM $matched_table INNER JOIN $order_table ON $matched_table.id =$order_id"; 
    $results=$wpdb->get_results($query); 
    $match_buyer_id=$results[0]->buyer_id; 
    $match_supplier_id=$results[0]->order_supplier_id; 
    $match_supplier_id; 
    $supplier_data=get_userdata($match_supplier_id); 
    $buyer_data=get_userdata($match_buyer_id); 
    $buyer_mail=$buyer_data->user_email; 
    $buyer_name=$buyer_data->user_login; 
    $supplier_mail=$supplier_data->user_email; 

    require('invoice.php'); 

$pdf = new PDF_Invoice('P', 'mm', 'A4'); 
$pdf->AddPage(); 
$reportName="Product Order Invoice";  
$pdf->SetFont('Arial', '', 17); 
$pdf->Cell(0, 15, $reportName, 0, 1, 'C'); 
$pdf->addSociete("MaSociete", 
       "MonAdresse\n" . 
       "75000 PARIS\n". 
       "R.C.S. PARIS B 000 000 007\n" . 
       "Capital : 18000 " . EURO); 

$pdf->temporaire("Flatrock Technology Ecommerce"); 
$today = date('d/m/Y'); 
$pdf->SetFont('Arial','',12); 
$pdf->addClientAdresse("MaSociete", 
       "MonAdresse\n" . 
       "75000 PARIS\n". 
       "R.C.S. PARIS B 000 000 007\n" . 
       "Capital : 18000 " . EURO); 
$pdf->addReglement($buyer_name); 
$pdf->addEcheance($today); 
$pdf->addNumTVA("05/11/2004"); 
//$pdf->addReference("Devis ... du ...."); 
$cols=array("S.NO" => 9, 
     "PRODUCT NAME"=> 46, 
     "SPECIES NAME"=> 42, 
     "FINISH NAME"=> 38, 
     "ORDER DATE" => 30, 
     "PRICE"=> 25); 
$pdf->addCols($cols); 

$cols=array("S.NO" => "L", 
     "PRODUCT NAME"=> "C", 
     "SPECIES NAME"=> "C", 
     "FINISH NAME"=> "C", 
     "ORDER DATE" => "C", 
     "PRICE"=> "C"); 
$pdf->addLineFormat($cols); 

$y = 109; 
$line = array("S.NO" => "1", 
      "PRODUCT NAME" => $product_name_semail, 
      "SPECIES NAME"  => $species_name_semail, 
      "FINISH NAME"  => $finish_name_semail, 
      "ORDER DATE" => $order_date_semail, 
      "PRICE"   =>$order_price_semail); 
$size = $pdf->addLine($y, $line); 
$y += $size + 2; 
$pdf->SetXY(10, 247); 
$pdf->Cell(165,8,'Total Price:',1,0,'R'); 
$pdf->Cell(25,8,$order_price_semail,1,1,'C'); 

$tot_prods = array(array ("px_unit" => 600, "qte" => 1, "tva" => 1), 
       array ("px_unit" => 10, "qte" => 1, "tva" => 1)); 
$tab_tva = array("1"  => 19.6, 
       "2"  => 5.5); 
$params = array("RemiseGlobale" => 1, 
        "remise_tva"  => 1,  // {la remise s'applique sur ce code TVA} 
        "remise"   => 0,  // {montant de la remise} 
        "remise_percent" => 10,  // {pourcentage de remise sur ce montant de TVA} 
       "FraisPort"  => 1, 
        "portTTC"  => 10,  // montant des frais de ports TTC 
               // par defaut la TVA = 19.6 % 
        "portHT"   => 0,  // montant des frais de ports HT 
        "portTVA"  => 19.6, // valeur de la TVA a appliquer sur le montant HT 
       "AccompteExige" => 1, 
        "accompte"   => 0,  // montant de l'acompte (TTC) 
        "accompte_percent" => 15, // pourcentage d'acompte (TTC) 
       "Remarque" => "Avec un acompte, svp..."); 


    $filename="/home-path/plugins/plugin-name/folder-name/order-".$order_id.".pdf"; 

    $opt=$pdf->Output($filename,'F'); 

      $to = $buyer_mail; 
      $from = $supplier_mail; 
      $headers = "From: " . strip_tags($from) . "\r\n"; 
      $headers.= "CC: [email protected]\r\n"; 
      $headers.= "BCC: $from\r\n"; 
      $headers.= "MIME-Version: 1.0\r\n"; 
      $headers.= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 
      $message = '<html><body>'; 

      $message .= '<table width="100%"; rules="all" style="border:1px solid #3A5896; padding-left:20px">'; 
      $message .= '<span style="font-size: 14px;margin-bottom: 5px;padding: 7px 10px; background:#999999; color:#ffffff; float:left; margin-right:5px;">Order Confirmation </span>'; 
      $message .= "<tr><td><h1>Dear $buyer_data->user_login,</h1><br /><br /><tr><td>We Are Heartly Thanks To You. You can Choose Me For Your Order.<br>Your Order Details Here</td></tr>"; 
      $message .= "<tr><td style='font-size:14px;'>Product Details<br /><br /></td><tr><td style='width:20%'>Product Name: $product_name_semail</td></tr>"; 
      $message.='<tr><td style="width:20%">Category: '. $species_name_semail.'</td></td>'; 
      $message.='<tr><td style="width:20%">Size: '.$finish_name_semail.'</td>'; 
      $message.="<tr><td style='width:20%'>Price: $order_price_semail</td>"; 
      $message.="<tr><td style='width:20%'>Shipping Date: $order_date_semail</td>"; 
      $attachments = array( WP_PLUGIN_DIR . '/plugin-name/folder-name/order-'.$order_id.'.pdf'); 
      $message .= "<tr><td style='font-size:12px'><br><I>Thanks & Regards<br>$supplier_data->user_login</I></td><br><br></tr>"; 
      $message .= "</table>"; 
      $message .= "</body></html>"; 

      wp_mail($to, 'test mail ', $message, $headers,$attachments); 

?>

+1

Ceci est plus une réponse à une question. –

+0

Alors, quel est le problème exact que vous rencontrez? – codedge

+0

je suis résolu ce problème et mettre mon code à un autre codeur qui phase ce type de problème –

Répondre

0

PHP-Generator.php avec le code postal

<?php 

include ('../../../../wp-load.php'); 
global $wpdb; 
    $order_id=$_POST['order_id']; 
    $selected_val=$_POST['selected_val']; 
    $dreason=$_POST['dreason']; 
    $product_name_semail=$_POST['product_name_semail']; 
    $order_price_semail=$_POST['order_price_semail']; 
    $species_name_semail=$_POST['species_name_semail']; 
    $finish_name_semail=$_POST['finish_name_semail']; 
    $order_date_semail=$_POST['order_date_semail']; 
    $table_name=$wpdb->prefix.'matched_order_details'; 
    $order_table=$wpdb->prefix.'buyer_order_request'; 
    $matched_table=$wpdb->prefix.'matched_order_details'; 
    $query="SELECT * FROM $matched_table INNER JOIN $order_table ON $matched_table.id =$order_id"; 
    $results=$wpdb->get_results($query); 
    $match_buyer_id=$results[0]->buyer_id; 
    $match_supplier_id=$results[0]->order_supplier_id; 
    $match_supplier_id; 
    $supplier_data=get_userdata($match_supplier_id); 
    $buyer_data=get_userdata($match_buyer_id); 
    $buyer_mail=$buyer_data->user_email; 
    $buyer_name=$buyer_data->user_login; 
    $supplier_mail=$supplier_data->user_email; 

    require('invoice.php'); 

$pdf = new PDF_Invoice('P', 'mm', 'A4'); 
$pdf->AddPage(); 
$reportName="Product Order Invoice";  
$pdf->SetFont('Arial', '', 17); 
$pdf->Cell(0, 15, $reportName, 0, 1, 'C'); 
$pdf->addSociete("MaSociete", 
       "MonAdresse\n" . 
       "75000 PARIS\n". 
       "R.C.S. PARIS B 000 000 007\n" . 
       "Capital : 18000 " . EURO); 

$pdf->temporaire("Flatrock Technology Ecommerce"); 
$today = date('d/m/Y'); 
$pdf->SetFont('Arial','',12); 
$pdf->addClientAdresse("MaSociete", 
       "MonAdresse\n" . 
       "75000 PARIS\n". 
       "R.C.S. PARIS B 000 000 007\n" . 
       "Capital : 18000 " . EURO); 
$pdf->addReglement($buyer_name); 
$pdf->addEcheance($today); 
$pdf->addNumTVA("05/11/2004"); 
//$pdf->addReference("Devis ... du ...."); 
$cols=array("S.NO" => 9, 
     "PRODUCT NAME"=> 46, 
     "SPECIES NAME"=> 42, 
     "FINISH NAME"=> 38, 
     "ORDER DATE" => 30, 
     "PRICE"=> 25); 
$pdf->addCols($cols); 

$cols=array("S.NO" => "L", 
     "PRODUCT NAME"=> "C", 
     "SPECIES NAME"=> "C", 
     "FINISH NAME"=> "C", 
     "ORDER DATE" => "C", 
     "PRICE"=> "C"); 
$pdf->addLineFormat($cols); 

$y = 109; 
$line = array("S.NO" => "1", 
      "PRODUCT NAME" => $product_name_semail, 
      "SPECIES NAME"  => $species_name_semail, 
      "FINISH NAME"  => $finish_name_semail, 
      "ORDER DATE" => $order_date_semail, 
      "PRICE"   =>$order_price_semail); 
$size = $pdf->addLine($y, $line); 
$y += $size + 2; 
$pdf->SetXY(10, 247); 
$pdf->Cell(165,8,'Total Price:',1,0,'R'); 
$pdf->Cell(25,8,$order_price_semail,1,1,'C'); 

$tot_prods = array(array ("px_unit" => 600, "qte" => 1, "tva" => 1), 
       array ("px_unit" => 10, "qte" => 1, "tva" => 1)); 
$tab_tva = array("1"  => 19.6, 
       "2"  => 5.5); 
$params = array("RemiseGlobale" => 1, 
        "remise_tva"  => 1,  // {la remise s'applique sur ce code TVA} 
        "remise"   => 0,  // {montant de la remise} 
        "remise_percent" => 10,  // {pourcentage de remise sur ce montant de TVA} 
       "FraisPort"  => 1, 
        "portTTC"  => 10,  // montant des frais de ports TTC 
               // par defaut la TVA = 19.6 % 
        "portHT"   => 0,  // montant des frais de ports HT 
        "portTVA"  => 19.6, // valeur de la TVA a appliquer sur le montant HT 
       "AccompteExige" => 1, 
        "accompte"   => 0,  // montant de l'acompte (TTC) 
        "accompte_percent" => 15, // pourcentage d'acompte (TTC) 
       "Remarque" => "Avec un acompte, svp..."); 


    $filename="/home-path/plugins/plugin-name/folder-name/order-".$order_id.".pdf"; 

    $opt=$pdf->Output($filename,'F'); 

      $to = $buyer_mail; 
      $from = $supplier_mail; 
      $headers = "From: " . strip_tags($from) . "\r\n"; 
      $headers.= "CC: [email protected]\r\n"; 
      $headers.= "BCC: $from\r\n"; 
      $headers.= "MIME-Version: 1.0\r\n"; 
      $headers.= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 
      $message = '<html><body>'; 

      $message .= '<table width="100%"; rules="all" style="border:1px solid #3A5896; padding-left:20px">'; 
      $message .= '<span style="font-size: 14px;margin-bottom: 5px;padding: 7px 10px; background:#999999; color:#ffffff; float:left; margin-right:5px;">Order Confirmation </span>'; 
      $message .= "<tr><td><h1>Dear $buyer_data->user_login,</h1><br /><br /><tr><td>We Are Heartly Thanks To You. You can Choose Me For Your Order.<br>Your Order Details Here</td></tr>"; 
      $message .= "<tr><td style='font-size:14px;'>Product Details<br /><br /></td><tr><td style='width:20%'>Product Name: $product_name_semail</td></tr>"; 
      $message.='<tr><td style="width:20%">Category: '. $species_name_semail.'</td></td>'; 
      $message.='<tr><td style="width:20%">Size: '.$finish_name_semail.'</td>'; 
      $message.="<tr><td style='width:20%'>Price: $order_price_semail</td>"; 
      $message.="<tr><td style='width:20%'>Shipping Date: $order_date_semail</td>"; 
      $attachments = array( WP_PLUGIN_DIR . '/plugin-name/folder-name/order-'.$order_id.'.pdf'); 
      $message .= "<tr><td style='font-size:12px'><br><I>Thanks & Regards<br>$supplier_data->user_login</I></td><br><br></tr>"; 
      $message .= "</table>"; 
      $message .= "</body></html>"; 

      wp_mail($to, 'test mail ', $message, $headers,$attachments);