2
0
forked from Wavyzz/dolibarr
Files
dolibarr-fork/htdocs/docs/class/courrier-droit-editeur.class.php

375 lines
10 KiB
PHP

<?PHP
/* Copyright (C) 2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* $Id$
* $Source$
*
*/
/**
\file docs/class/courrier-droit-editeur.class.php
\ingroup editeurs
\brief Classe de generation des courriers pour les editeurs
*/
class pdf_courrier_droit_editeur
{
/**
\brief Constructeur
\param db Handler accès base de donnée
*/
function pdf_courrier_droit_editeur ($db)
{
$this->langs = $langs;
$this->db = $db;
// Dimension page pour format A4
$this->type = 'pdf';
$this->page_largeur = 210;
$this->page_hauteur = 297;
$this->format = array($this->page_largeur,$this->page_hauteur);
$this->marge_gauche=10;
$this->marge_droite=10;
$this->marge_haute=10;
$this->marge_basse=10;
$this->name = "Courrier des droits ".strftime("%Y", time());
$this->file = '1'.strftime("%Y", time()).'.pdf';
}
/**
\brief Génère le document
\return int 0 = ok, <> 0 = ko
*/
function Generate($numero)
{
global $conf;
$this->file = $numero.strftime("%Y", time());
$this->extension = "pdf";
dolibarr_syslog("pdf_courrier_droit_editeur::Generate ", LOG_DEBUG );
require_once(FPDF_PATH.'fpdf.php');
require_once(DOL_DOCUMENT_ROOT."/product.class.php");
require_once(DOL_DOCUMENT_ROOT."/product/canvas/product.livre.class.php");
$error = 0;
$year = strftime("%Y", time());
//
$sql = "SELECT s.idp,s.nom";
$sql .= " FROM ".MAIN_DB_PREFIX."societe as s";
//$sql .= " , ".MAIN_DB_PREFIX."categorie_fournisseur as cf";
$sql .= " WHERE s.fournisseur = 1 ";
//$sql .= " AND s.rowid = cf.fk_societe";
//$sql .= " AND cf.fk_categorie = 2";
$resql=$this->db->query($sql);
if ($resql)
{
$fichref = "Droits-$year";
$dir_all = DOL_DATA_ROOT."/ged/" . get_exdir($numero);
$file_all = $dir_all . $numero . ".pdf";
// Initialisation document vierge
$pdf_all=new FPDI_Protection('P','mm',$this->format);
// Protection et encryption du pdf
if ($conf->global->PDF_SECURITY_ENCRYPTION)
{
$pdfrights = array('print'); // Ne permet que l'impression du document
$pdfuserpass = ''; // Mot de passe pour l'utilisateur final
$pdfownerpass = NULL; // Mot de passe du propriétaire, créé aléatoirement si pas défini
$pdf_all->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
}
$pdf_all->Open();
while ($obj = $this->db->fetch_object($resql) )
{
$id = $obj->idp;
dolibarr_syslog("droits-editeurs.php id:$id", LOG_DEBUG );
$coupdf = new pdf_courrier_droit_editeur($this->db, $langs);
$fichref = "Droits-$year";
$dir = DOL_DATA_ROOT."/societe/courrier/" . get_exdir($id);
$file = $dir . $fichref . ".pdf";
// Initialisation document vierge
$pdf=new FPDI_Protection('P','mm',$this->format);
// Protection et encryption du pdf
if ($conf->global->PDF_SECURITY_ENCRYPTION)
{
$pdfrights = array('print'); // Ne permet que l'impression du document
$pdfuserpass = ''; // Mot de passe pour l'utilisateur final
$pdfownerpass = NULL; // Mot de passe du propriétaire, créé aléatoirement si pas défini
$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
}
$pdf->Open();
$coupdf->Write($id, $dir, $year, $pdf);
$coupdf->Write($id, $dir_all, $year, $pdf_all);
$pdf->Close();
$pdf->Output($file);
dolibarr_syslog("droits-editeurs.php write $file", LOG_DEBUG );
}
$pdf_all->Close();
$pdf_all->Output($file_all);
dolibarr_syslog("droits-editeurs.php write $fileall", LOG_DEBUG );
}
else
{
dolibarr_syslog("pdf_courrier_droit_editeur::Generate ".$db->error(), LOG_ERR );
}
return 0;
}
/**
\brief Fonction générant le fichier
\param id id de la societe
\return int 1=ok, 0=ko
*/
function Write($id, $dir, $year, &$pdf)
{
dolibarr_syslog("pdf_courrier_droit_editeur::Write $id,$year ", LOG_DEBUG );
$soc = new Societe($this->db);
$soc->fetch($id);
if (! file_exists($dir))
{
if (create_exdir($dir) < 0)
{
$this->error=$this->langs->trans("ErrorCanNotCreateDir",$dir);
return 0;
}
}
if (file_exists($dir))
{
// Initialisation document vierge
$books = array();
$year_data = $year - 1;
// On récupère données du mail
$sql = "SELECT p.rowid,p.label, pc.taux, pc.quantite";
$sql .= " FROM ".MAIN_DB_PREFIX."facture as f";
$sql .= " , ".MAIN_DB_PREFIX."facturedet as fd";
$sql .= " , ".MAIN_DB_PREFIX."product as p";
$sql .= " , ".MAIN_DB_PREFIX."product_cnv_livre as pl";
$sql .= " , ".MAIN_DB_PREFIX."product_cnv_livre_contrat as pc";
$sql .= " WHERE fd.fk_facture = f.rowid";
$sql .= " AND fd.fk_product = p.rowid";
$sql .= " AND p.canvas = 'livre'";
$sql .= " AND p.rowid = pl.rowid";
$sql .= " AND pl.fk_contrat = pc.rowid";
$sql .= " AND year (f.datef) <= ".($year_data);
$sql .= " GROUP BY p.rowid";
$resql=$this->db->query($sql);
if ($resql)
{
$i = 0;
while ($obj = $this->db->fetch_object($resql) )
{
$id = $obj->idp;
$books[$i]['title'] = $obj->label;
$books[$i]['id'] = $obj->rowid;
$books[$i]['taux'] = $obj->taux;
$books[$i]['qty'] = $obj->quantite;
$i++;
}
$this->db->free($resql);
}
else
{
print $this->db->error();
print "$sql\n";
}
foreach($books as $ref => $value)
{
$livre = new ProductLivre($this->db);
$livre->FetchCanvas($value['id']);
$pdf->AddPage();
$qtycontrat = $value['qty'];
/*
* Adresse
*/
// Client destinataire
$posy=42;
$pdf->SetTextColor(0,0,0);
$pdf->SetFont('Arial','',8);
$pdf->SetXY(102,$posy-5);
// Nom client
$pdf->SetXY(102,$posy+3);
$pdf->SetFont('Arial','B',11);
$pdf->MultiCell(106,4, $soc->nom, 0, 'L');
// Caractéristiques client
$carac_client=$soc->adresse;
$carac_client.="\n".$soc->cp . " " . $soc->ville."\n";
$carac_client.=$soc->pays."\n";
$pdf->SetFont('Arial','',9);
$pdf->SetXY(102,$posy+8);
$pdf->MultiCell(86,4, $carac_client);
/*
*
*
*/
$pdf->SetTextColor(0,0,0);
$pdf->SetFont('Arial','',10);
$pdf->SetXY(10,100);
$pdf->MultiCell(190,5,"Je vous prie de trouver ci-dessous le récapitulatif des ventes du titre cité pour la période du 1er janvier au 31 décembre $year_data.");
$pdf->SetXY(10,120);
$pdf->MultiCell(25,5,"Nom du titre : ");
$pdf->SetFont('Arial','B',10);
$pdf->SetXY(35,120);
$pdf->MultiCell(140,5,$value['title']);
$pdf->SetFont('Arial','',10);
$pdf->SetXY(10,140);
$pdf->MultiCell(46,5,"Quantité signée au contrat : ");
$pdf->SetFont('Arial','B',10);
$pdf->SetXY(56,140);
$pdf->MultiCell(14,5,$qtycontrat,0,'R');
$sql = "SELECT p.label, sum(fd.qty), date_format(f.datef,'%Y')";
$sql .= " FROM ".MAIN_DB_PREFIX."facture as f";
$sql .= " , ".MAIN_DB_PREFIX."facturedet as fd";
$sql .= " , ".MAIN_DB_PREFIX."product as p";
$sql .= " WHERE fd.fk_facture = f.rowid";
$sql .= " AND p.rowid = '".$value['id']."'";
$sql .= " AND fd.fk_product = p.rowid";
$sql .= " AND p.canvas = 'livre'";
$sql .= " GROUP BY p.rowid, date_format(f.datef,'%Y') ORDER BY date_format(f.datef,'%Y') ASC";
$resql=$this->db->query($sql);
$qtysell = 0;
if ($resql)
{
$i = 0;
while ($row = $this->db->fetch_row($resql) )
{
$i++;
$pdf->SetFont('Arial','',10);
$pdf->SetXY(10,140 + ($i * 8) );
$pdf->MultiCell(44,5,"Quantité vendue en ".$row[2]." : ",0);
$pdf->SetFont('Arial','B',10);
$pdf->SetXY(54,140 + ($i * 8) );
$pdf->MultiCell(16,5,$row[1],0,'R');
$qtysell += $row[1];
}
$this->db->free($resql);
}
else
{
print $this->db->error();
}
$pdf->SetFont('Arial','',10);
$pdf->SetXY(100,140 + ($i * 8) );
$pdf->MultiCell(15,5,"Solde : ",0);
$pdf->SetFont('Arial','B',10);
$pdf->SetXY(115,140 + ($i * 8) );
$pdf->MultiCell(16,5,($qtycontrat - $qtysell),0,'R');
$i++;
$pdf->SetFont('Arial','',10);
$pdf->SetXY(10,140 + ($i * 10) );
$pdf->MultiCell(50,5,"Taux des droits d'auteurs : ",0);
$pdf->SetFont('Arial','B',10);
$pdf->SetXY(60,140 + ($i * 10) );
$pdf->MultiCell(16,5, $value['taux']." %",0,'R');
$i++;
$pdf->SetFont('Arial','',10);
$pdf->SetXY(10,140 + ($i * 10) );
$pdf->MultiCell(50,5,"Prix de vente des livres HT : ",0);
$pdf->SetFont('Arial','B',10);
$pdf->SetXY(60,140 + ($i * 10) );
$pdf->MultiCell(16,5, sprintf("%.2f",$livre->price),0,'R');
$i++;
$pdf->SetFont('Arial','',10);
$pdf->SetXY(10,140 + ($i * 10) );
$pdf->MultiCell(50,5,"Prix de vente des livres TTC : ",0);
$pdf->SetFont('Arial','B',10);
$pdf->SetXY(60,140 + ($i * 10) );
$pdf->MultiCell(16,5, sprintf("%.2f",$livre->price_ttc),0,'R');
$i++;
$pdf->SetFont('Arial','',10);
$pdf->SetXY(10,150 + ($i * 10) );
$pdf->MultiCell(80,5,"Reste à devoir sur les droits pour l'année ".($year-1)." : ",0);
$pdf->SetFont('Arial','B',10);
$pdf->SetXY(90,140 + ($i * 10) );
$pdf->MultiCell(16,5, $pu_ttc,0,'R');
$i++;
$pdf->SetFont('Arial','',10);
$pdf->SetXY(10,150 + ($i * 10) + 20);
$pdf->MultiCell(190,5,"Nous restons à votre entière disposition pour de plus amples renseignements dont vous pouvez avoir besoin et vous remercions de la confiance que vous nous avez accordée.");
}
return 0;
}
else
{
$this->error=$this->langs->trans("ErrorCanNotCreateDir",$dir);
return -6;
}
}
}
?>