This commit is contained in:
Rodolphe Quiedeville 2008-09-01 13:23:46 +00:00
parent 0a7c51642e
commit 539a39105d

View File

@ -22,286 +22,286 @@
*/ */
/** /**
\file htdocs/expedition/mods/methode_expedition.modules.php \file htdocs/expedition/mods/methode_expedition.modules.php
\ingroup expedition \ingroup expedition
\brief Fichier contenant la classe mère de generation de bon de livraison en PDF \brief Fichier contenant la classe mère de generation de bon de livraison en PDF
et la classe mère de numérotation des bons de livraisons et la classe mère de numérotation des bons de livraisons
\version $Revision$ \version $Revision$
*/ */
require_once(DOL_DOCUMENT_ROOT.'/includes/fpdf/fpdfi/fpdi_protection.php'); require_once(DOL_DOCUMENT_ROOT.'/includes/fpdf/fpdfi/fpdi_protection.php');
/** /**
\class methode_expedition \class methode_expedition
\brief Classe mère des methodes expeditions \brief Classe mère des methodes expeditions
*/ */
class methode_expedition class methode_expedition
{ {
function methode_expedition($db=0) function methode_expedition($db=0)
{ {
$this->db = $db; $this->db = $db;
$this->name = "NON DEFINIT"; $this->name = "NON DEFINIT";
$this->description = "ERREUR DANS LA DEFINITION DU MODULE."; $this->description = "ERREUR DANS LA DEFINITION DU MODULE.";
} }
function Active($statut)
{
// Mise a jour du statut
$sql = "UPDATE ".MAIN_DB_PREFIX."expedition_methode set statut = $statut ";
$sql.= " WHERE rowid = ".$this->id;
$resql = $this->db->query($sql);
if ($resql)
{
$af = $this->db->affected_rows($resql);
if ($af == 0 && $statut == 1)
{
// On créé la méthode dans la base
$sql = "INSERT INTO ".MAIN_DB_PREFIX."expedition_methode";
$sql .= " (rowid, statut, code, libelle, description)";
$sql .= " VALUES (".$this->id.",1,'$this->code','$this->name','$this->description')";
$resql = $this->db->query($sql);
if (! $resql)
{
dolibarr_syslog("methode_expedition::Active Erreur 2");
}
}
}
else
{
dolibarr_syslog("methode_expedition::Active Erreur 1");
}
}
function write_file($id)
{
global $user;
$propale = new Propal($this->db,"",$id);
if ($propale->fetch($id))
{
$file = $dir . "/" . $propale->ref . ".pdf"; function Active($statut)
{
if (file_exists($dir)) // Mise a jour du statut
{ $sql = "UPDATE ".MAIN_DB_PREFIX."expedition_methode set statut = $statut ";
// Protection et encryption du pdf $sql.= " WHERE rowid = ".$this->id;
if ($conf->global->PDF_SECURITY_ENCRYPTION)
{ $resql = $this->db->query($sql);
$pdf=new FPDI_Protection('P','mm','A4');
$pdfrights = array('print'); // Ne permet que l'impression du document if ($resql)
$pdfuserpass = ''; // Mot de passe pour l'utilisateur final {
$pdfownerpass = NULL; // Mot de passe du propriétaire, créé aléatoirement si pas défini $af = $this->db->affected_rows($resql);
$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
} if ($af == 0 && $statut == 1)
else {
{ // On créé la méthode dans la base
$pdf=new FPDI('P','mm',$this->format);
} $sql = "INSERT INTO ".MAIN_DB_PREFIX."expedition_methode";
$sql .= " (rowid, statut, code, libelle, description)";
$pdf->Open(); $sql .= " VALUES (".$this->id.",1,'$this->code','$this->name','$this->description')";
$pdf->AddPage();
$resql = $this->db->query($sql);
$pdf->SetTitle($propale->ref);
$pdf->SetSubject("Proposition commerciale"); if (! $resql)
$pdf->SetCreator("Dolibarr ".DOL_VERSION); {
$pdf->SetAuthor($user->fullname); dolibarr_syslog("methode_expedition::Active Erreur 2");
}
$this->_pagehead($pdf, $propale); }
}
$tab_top = 100; else
$tab_height = 150; {
dolibarr_syslog("methode_expedition::Active Erreur 1");
$pdf->SetFillColor(220,220,220); }
}
$pdf->SetTextColor(0,0,0);
$pdf->SetFont('Arial','', 10); function write_file($id)
{
$pdf->SetXY (10, $tab_top + 10 ); global $user;
$propale = new Propal($this->db,"",$id);
$iniY = $pdf->GetY(); if ($propale->fetch($id))
$curY = $pdf->GetY(); {
$nexY = $pdf->GetY();
$nblignes = sizeof($propale->lignes);
$file = $dir . "/" . $propale->ref . ".pdf";
for ($i = 0 ; $i < $nblignes ; $i++)
{ if (file_exists($dir))
{
$curY = $nexY; // Protection et encryption du pdf
if ($conf->global->PDF_SECURITY_ENCRYPTION)
$pdf->SetXY (30, $curY ); {
$pdf=new FPDI_Protection('P','mm','A4');
$pdf->MultiCell(100, 5, $propale->lignes[$i]->desc, 0, 'J', 0); $pdfrights = array('print'); // Ne permet que l'impression du document
$pdfuserpass = ''; // Mot de passe pour l'utilisateur final
$nexY = $pdf->GetY(); $pdfownerpass = NULL; // Mot de passe du propriétaire, créé aléatoirement si pas défini
$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
}
else
{
$pdf=new FPDI('P','mm',$this->format);
}
$pdf->Open();
$pdf->AddPage();
$pdf->SetTitle($propale->ref);
$pdf->SetSubject("Proposition commerciale");
$pdf->SetCreator("Dolibarr ".DOL_VERSION);
$pdf->SetAuthor($user->fullname);
$this->_pagehead($pdf, $propale);
$tab_top = 100;
$tab_height = 150;
$pdf->SetFillColor(220,220,220);
$pdf->SetTextColor(0,0,0);
$pdf->SetFont('Arial','', 10);
$pdf->SetXY (10, $tab_top + 10 );
$iniY = $pdf->GetY();
$curY = $pdf->GetY();
$nexY = $pdf->GetY();
$nblignes = sizeof($propale->lignes);
for ($i = 0 ; $i < $nblignes ; $i++)
{
$curY = $nexY;
$pdf->SetXY (30, $curY );
$pdf->MultiCell(100, 5, $propale->lignes[$i]->desc, 0, 'J', 0);
$nexY = $pdf->GetY();
$pdf->SetXY (10, $curY ); $pdf->SetXY (10, $curY );
$pdf->MultiCell(20, 5, $propale->lignes[$i]->ref, 0, 'C'); $pdf->MultiCell(20, 5, $propale->lignes[$i]->ref, 0, 'C');
$pdf->SetXY (133, $curY ); $pdf->SetXY (133, $curY );
$pdf->MultiCell(10, 5, $propale->lignes[$i]->tva_tx, 0, 'C'); $pdf->MultiCell(10, 5, $propale->lignes[$i]->tva_tx, 0, 'C');
$pdf->SetXY (145, $curY ); $pdf->SetXY (145, $curY );
$pdf->MultiCell(10, 5, $propale->lignes[$i]->qty, 0, 'C'); $pdf->MultiCell(10, 5, $propale->lignes[$i]->qty, 0, 'C');
$pdf->SetXY (156, $curY ); $pdf->SetXY (156, $curY );
$pdf->MultiCell(18, 5, price($propale->lignes[$i]->price), 0, 'R', 0); $pdf->MultiCell(18, 5, price($propale->lignes[$i]->price), 0, 'R', 0);
$pdf->SetXY (174, $curY ); $pdf->SetXY (174, $curY );
$total = price($propale->lignes[$i]->price * $propale->lignes[$i]->qty); $total = price($propale->lignes[$i]->price * $propale->lignes[$i]->qty);
$pdf->MultiCell(26, 5, $total, 0, 'R', 0); $pdf->MultiCell(26, 5, $total, 0, 'R', 0);
$pdf->line(10, $curY, 200, $curY ); $pdf->line(10, $curY, 200, $curY );
if ($nexY > 240 && $i < $nblignes - 1) if ($nexY > 240 && $i < $nblignes - 1)
{ {
$this->_tableau($pdf, $tab_top, $tab_height, $nexY); $this->_tableau($pdf, $tab_top, $tab_height, $nexY);
$pdf->AddPage(); $pdf->AddPage();
$nexY = $iniY; $nexY = $iniY;
$this->_pagehead($pdf, $propale); $this->_pagehead($pdf, $propale);
$pdf->SetTextColor(0,0,0); $pdf->SetTextColor(0,0,0);
$pdf->SetFont('Arial','', 10); $pdf->SetFont('Arial','', 10);
} }
} }
$this->_tableau($pdf, $tab_top, $tab_height, $nexY); $this->_tableau($pdf, $tab_top, $tab_height, $nexY);
/* /*
* *
*/ */
$tab2_top = 254; $tab2_top = 254;
$tab2_lh = 7; $tab2_lh = 7;
$tab2_height = $tab2_lh * 3; $tab2_height = $tab2_lh * 3;
$pdf->SetFont('Arial','', 11); $pdf->SetFont('Arial','', 11);
$pdf->Rect(132, $tab2_top, 68, $tab2_height); $pdf->Rect(132, $tab2_top, 68, $tab2_height);
$pdf->line(132, $tab2_top + $tab2_height - ($tab2_lh*3), 200, $tab2_top + $tab2_height - ($tab2_lh*3) ); $pdf->line(132, $tab2_top + $tab2_height - ($tab2_lh*3), 200, $tab2_top + $tab2_height - ($tab2_lh*3) );
$pdf->line(132, $tab2_top + $tab2_height - ($tab2_lh*2), 200, $tab2_top + $tab2_height - ($tab2_lh*2) ); $pdf->line(132, $tab2_top + $tab2_height - ($tab2_lh*2), 200, $tab2_top + $tab2_height - ($tab2_lh*2) );
$pdf->line(132, $tab2_top + $tab2_height - $tab2_lh, 200, $tab2_top + $tab2_height - $tab2_lh ); $pdf->line(132, $tab2_top + $tab2_height - $tab2_lh, 200, $tab2_top + $tab2_height - $tab2_lh );
$pdf->line(174, $tab2_top, 174, $tab2_top + $tab2_height); $pdf->line(174, $tab2_top, 174, $tab2_top + $tab2_height);
$pdf->SetXY (132, $tab2_top + 0); $pdf->SetXY (132, $tab2_top + 0);
$pdf->MultiCell(42, $tab2_lh, "Total HT", 0, 'R', 0); $pdf->MultiCell(42, $tab2_lh, "Total HT", 0, 'R', 0);
$pdf->SetXY (132, $tab2_top + $tab2_lh); $pdf->SetXY (132, $tab2_top + $tab2_lh);
$pdf->MultiCell(42, $tab2_lh, "Total TVA", 0, 'R', 0); $pdf->MultiCell(42, $tab2_lh, "Total TVA", 0, 'R', 0);
$pdf->SetXY (132, $tab2_top + ($tab2_lh*2)); $pdf->SetXY (132, $tab2_top + ($tab2_lh*2));
$pdf->MultiCell(42, $tab2_lh, "Total TTC", 1, 'R', 1); $pdf->MultiCell(42, $tab2_lh, "Total TTC", 1, 'R', 1);
$pdf->SetXY (174, $tab2_top + 0); $pdf->SetXY (174, $tab2_top + 0);
$pdf->MultiCell(26, $tab2_lh, price($propale->total_ht), 0, 'R', 0); $pdf->MultiCell(26, $tab2_lh, price($propale->total_ht), 0, 'R', 0);
$pdf->SetXY (174, $tab2_top + $tab2_lh); $pdf->SetXY (174, $tab2_top + $tab2_lh);
$pdf->MultiCell(26, $tab2_lh, price($propale->total_tva), 0, 'R', 0); $pdf->MultiCell(26, $tab2_lh, price($propale->total_tva), 0, 'R', 0);
$pdf->SetXY (174, $tab2_top + ($tab2_lh*2)); $pdf->SetXY (174, $tab2_top + ($tab2_lh*2));
$pdf->MultiCell(26, $tab2_lh, price($propale->total_ttc), 1, 'R', 1); $pdf->MultiCell(26, $tab2_lh, price($propale->total_ttc), 1, 'R', 1);
/* /*
* *
*/ */
$pdf->Output($file); $pdf->Output($file);
} }
} }
} }
function _tableau(&$pdf, $tab_top, $tab_height, $nexY) function _tableau(&$pdf, $tab_top, $tab_height, $nexY)
{ {
$pdf->SetFont('Arial','',11); $pdf->SetFont('Arial','',11);
$pdf->Text(30,$tab_top + 5,'Désignation'); $pdf->Text(30,$tab_top + 5,'Désignation');
$pdf->line(132, $tab_top, 132, $tab_top + $tab_height); $pdf->line(132, $tab_top, 132, $tab_top + $tab_height);
$pdf->Text(134,$tab_top + 5,'TVA'); $pdf->Text(134,$tab_top + 5,'TVA');
$pdf->line(144, $tab_top, 144, $tab_top + $tab_height); $pdf->line(144, $tab_top, 144, $tab_top + $tab_height);
$pdf->Text(147,$tab_top + 5,'Qté'); $pdf->Text(147,$tab_top + 5,'Qté');
$pdf->line(156, $tab_top, 156, $tab_top + $tab_height); $pdf->line(156, $tab_top, 156, $tab_top + $tab_height);
$pdf->Text(160,$tab_top + 5,'P.U.'); $pdf->Text(160,$tab_top + 5,'P.U.');
$pdf->line(174, $tab_top, 174, $tab_top + $tab_height); $pdf->line(174, $tab_top, 174, $tab_top + $tab_height);
$pdf->Text(187,$tab_top + 5,'Total'); $pdf->Text(187,$tab_top + 5,'Total');
// $pdf->Rect(10, $tab_top, 190, $nexY - $tab_top); // $pdf->Rect(10, $tab_top, 190, $nexY - $tab_top);
$pdf->Rect(10, $tab_top, 190, $tab_height); $pdf->Rect(10, $tab_top, 190, $tab_height);
$pdf->SetTextColor(0,0,0); $pdf->SetTextColor(0,0,0);
$pdf->SetFont('Arial','',10); $pdf->SetFont('Arial','',10);
$titre = $langs->trans("AmountInCurrency",$langs->trans("Currency".$conf->monnaie)); $titre = $langs->trans("AmountInCurrency",$langs->trans("Currency".$conf->monnaie));
$pdf->Text(200 - $pdf->GetStringWidth($titre), 98, $titre); $pdf->Text(200 - $pdf->GetStringWidth($titre), 98, $titre);
} }
function _pagehead(&$pdf, $propale) function _pagehead(&$pdf, $propale)
{ {
$pdf->SetXY(10,5); $pdf->SetXY(10,5);
if (defined("FAC_PDF_INTITULE")) if (defined("FAC_PDF_INTITULE"))
{ {
$pdf->SetTextColor(0,0,200); $pdf->SetTextColor(0,0,200);
$pdf->SetFont('Times','B',14); $pdf->SetFont('Times','B',14);
$pdf->MultiCell(76, 8, FAC_PDF_INTITULE, 0, 'L'); $pdf->MultiCell(76, 8, FAC_PDF_INTITULE, 0, 'L');
} }
$pdf->SetTextColor(70,70,170); $pdf->SetTextColor(70,70,170);
if (defined("FAC_PDF_ADRESSE")) if (defined("FAC_PDF_ADRESSE"))
{ {
$pdf->SetFont('Times','',12); $pdf->SetFont('Times','',12);
$pdf->MultiCell(76, 5, FAC_PDF_ADRESSE); $pdf->MultiCell(76, 5, FAC_PDF_ADRESSE);
} }
if (defined("FAC_PDF_TEL")) if (defined("FAC_PDF_TEL"))
{ {
$pdf->SetFont('Times','',10); $pdf->SetFont('Times','',10);
$pdf->MultiCell(76, 5, "Tél : ".FAC_PDF_TEL); $pdf->MultiCell(76, 5, "Tél : ".FAC_PDF_TEL);
} }
if (defined("FAC_PDF_SIREN")) if (defined("FAC_PDF_SIREN"))
{ {
$pdf->SetFont('Times','',10); $pdf->SetFont('Times','',10);
$pdf->MultiCell(76, 5, "SIREN : ".FAC_PDF_SIREN); $pdf->MultiCell(76, 5, "SIREN : ".FAC_PDF_SIREN);
} }
if (defined("FAC_PDF_INTITULE2")) if (defined("FAC_PDF_INTITULE2"))
{ {
$pdf->SetXY(100,5); $pdf->SetXY(100,5);
$pdf->SetFont('Times','B',14); $pdf->SetFont('Times','B',14);
$pdf->SetTextColor(0,0,200); $pdf->SetTextColor(0,0,200);
$pdf->MultiCell(100, 10, FAC_PDF_INTITULE2, '' , 'R'); $pdf->MultiCell(100, 10, FAC_PDF_INTITULE2, '' , 'R');
} }
/* /*
* Adresse Client * Adresse Client
*/ */
$pdf->SetTextColor(0,0,0); $pdf->SetTextColor(0,0,0);
$pdf->SetFont('Courier','B',12); $pdf->SetFont('Courier','B',12);
$propale->fetch_client(); $propale->fetch_client();
$pdf->SetXY(102,42); $pdf->SetXY(102,42);
$pdf->MultiCell(96,5, $propale->client->nom); $pdf->MultiCell(96,5, $propale->client->nom);
$pdf->SetFont('Courier','B',11); $pdf->SetFont('Courier','B',11);
$pdf->SetXY(102,47); $pdf->SetXY(102,47);
$pdf->MultiCell(96,5, $propale->client->adresse . "\n" . $propale->client->cp . " " . $propale->client->ville); $pdf->MultiCell(96,5, $propale->client->adresse . "\n" . $propale->client->cp . " " . $propale->client->ville);
$pdf->rect(100, 40, 100, 40); $pdf->rect(100, 40, 100, 40);
$pdf->SetTextColor(200,0,0); $pdf->SetTextColor(200,0,0);
$pdf->SetFont('Courier','B',12); $pdf->SetFont('Courier','B',12);
$pdf->Text(11, 88, "Date : " . dolibarr_print_date($propale->date,'day')); $pdf->Text(11, 88, "Date : " . dolibarr_print_date($propale->date,'day'));
$pdf->Text(11, 94, "Proposition commerciale : ".$propale->ref); $pdf->Text(11, 94, "Proposition commerciale : ".$propale->ref);
} }
} }