Add option to set mask on new files

This commit is contained in:
Laurent Destailleur 2008-10-21 21:27:20 +00:00
parent 1ca8c0975f
commit 6a259176a4
31 changed files with 1206 additions and 1130 deletions

View File

@ -19,11 +19,11 @@
*/ */
/** /**
\file htdocs/adherents/cartes/carte.php \file htdocs/adherents/cartes/carte.php
\ingroup adherent \ingroup adherent
\brief Page de creation d'une carte PDF \brief Page de creation d'une carte PDF
\version $Id$ \version $Id$
*/ */
require("./pre.inc.php"); require("./pre.inc.php");
require_once(DOL_DOCUMENT_ROOT."/adherents/adherent.class.php"); require_once(DOL_DOCUMENT_ROOT."/adherents/adherent.class.php");
@ -32,29 +32,29 @@ require_once(DOL_DOCUMENT_ROOT."/adherents/cartes/PDF_card.class.php");
// liste des patterns remplacable dans le texte a imprimer // liste des patterns remplacable dans le texte a imprimer
$patterns = array ( $patterns = array (
'/%PRENOM%/', '/%PRENOM%/',
'/%NOM%/', '/%NOM%/',
'/%SERVEUR%/', '/%SERVEUR%/',
'/%SOCIETE%/', '/%SOCIETE%/',
'/%ADRESSE%/', '/%ADRESSE%/',
'/%CP%/', '/%CP%/',
'/%VILLE%/', '/%VILLE%/',
'/%PAYS%/', '/%PAYS%/',
'/%EMAIL%/', '/%EMAIL%/',
'/%NAISS%/', '/%NAISS%/',
'/%PHOTO%/', '/%PHOTO%/',
'/%TYPE%/', '/%TYPE%/',
'/%ID%/', '/%ID%/',
'/%ANNEE%/' '/%ANNEE%/'
); );
/* /*
*------------------------------------------------- *-------------------------------------------------
* Pour créer l'objet on a 2 moyens : * Pour cr<EFBFBD>er l'objet on a 2 moyens :
* Soit on donne les valeurs en les passant dans un tableau (sert pour un format personnel) * Soit on donne les valeurs en les passant dans un tableau (sert pour un format personnel)
* Soit on donne le type d'étiquette au format AVERY * Soit on donne le type d'<EFBFBD>tiquette au format AVERY
*------------------------------------------------- *-------------------------------------------------
*/ */
//$pdf = new PDF_Label(array('name'=>'perso1', 'marginLeft'=>1, 'marginTop'=>1, 'NX'=>2, 'NY'=>7, 'SpaceX'=>0, 'SpaceY'=>0, 'width'=>99.1, 'height'=>'38.1', 'metric'=>'mm', 'font-size'=>14), 1, 2); //$pdf = new PDF_Label(array('name'=>'perso1', 'marginLeft'=>1, 'marginTop'=>1, 'NX'=>2, 'NY'=>7, 'SpaceX'=>0, 'SpaceY'=>0, 'width'=>99.1, 'height'=>'38.1', 'metric'=>'mm', 'font-size'=>14), 1, 2);
$pdf = new PDF_card('CARD', 1, 1); $pdf = new PDF_card('CARD', 1, 1);
@ -64,8 +64,8 @@ $pdf->AddPage();
// Choix de l'annee d'impression ou annee courante. // Choix de l'annee d'impression ou annee courante.
if (!isset($annee)){ if (!isset($annee)){
$now = getdate(); $now = getdate();
$annee=$now['year']; $annee=$now['year'];
} }
// requete en prenant que les adherents a jour de cotisation // requete en prenant que les adherents a jour de cotisation
@ -79,41 +79,42 @@ $sql.= " WHERE d.fk_adherent_type = t.rowid AND d.statut = 1 AND datefin >= ".$d
$sql.= " ORDER BY d.rowid ASC"; $sql.= " ORDER BY d.rowid ASC";
$result = $db->query($sql); $result = $db->query($sql);
if ($result) if ($result)
{ {
$num = $db->num_rows($result); $num = $db->num_rows($result);
$i = 0; $i = 0;
while ($i < $num) while ($i < $num)
{ {
$objp = $db->fetch_object($result); $objp = $db->fetch_object($result);
// attribut a remplacer // attribut a remplacer
$replace = array ( $replace = array (
ucfirst(strtolower($objp->prenom)), ucfirst(strtolower($objp->prenom)),
strtoupper($objp->nom), strtoupper($objp->nom),
"http://".$_SERVER["SERVER_NAME"]."/", "http://".$_SERVER["SERVER_NAME"]."/",
$objp->societe, $objp->societe,
ucwords(strtolower($objp->adresse)), ucwords(strtolower($objp->adresse)),
$objp->cp, $objp->cp,
strtoupper($objp->ville), strtoupper($objp->ville),
ucfirst(strtolower($objp->pays)), ucfirst(strtolower($objp->pays)),
$objp->email, $objp->email,
$objp->naiss, $objp->naiss,
$objp->photo, $objp->photo,
$objp->type, $objp->type,
$objp->rowid, $objp->rowid,
$annee $annee
); );
// imprime le texte specifique sur la carte // imprime le texte specifique sur la carte
//$pdf->Add_PDF_card(sprintf("%s\n%s\n%s\n%s\n%s, %s\n%s", $objp->type." n° ".$objp->rowid,ucfirst(strtolower($objp->prenom))." ".strtoupper($objp->nom),"<".$objp->email.">", ucwords(strtolower($objp->adresse)), $objp->cp, strtoupper($objp->ville), ucfirst(strtolower($objp->pays))),$annee,"Association FreeLUG http://www.freelug.org/"); $pdf->Add_PDF_card(preg_replace ($patterns, $replace, $conf->global->ADHERENT_CARD_TEXT),
$pdf->Add_PDF_card(preg_replace ($patterns, $replace, $conf->global->ADHERENT_CARD_TEXT), preg_replace ($patterns, $replace, $conf->global->ADHERENT_CARD_HEADER_TEXT),
preg_replace ($patterns, $replace, $conf->global->ADHERENT_CARD_HEADER_TEXT), preg_replace ($patterns, $replace, $conf->global->ADHERENT_CARD_FOOTER_TEXT));
preg_replace ($patterns, $replace, $conf->global->ADHERENT_CARD_FOOTER_TEXT)); $i++;
$i++; }
}
$db->close(); $db->close();
$pdf->Output();
// Output to http strem
$pdf->Output();
} }
else else
{ {
@ -122,4 +123,4 @@ else
llxFooter('$Date$ - $Revision$'); llxFooter('$Date$ - $Revision$');
} }
?> ?>

View File

@ -16,17 +16,14 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* $Id$
* $Source$
*/ */
/** /**
\file htdocs/adherents/cartes/etiquette.php \file htdocs/adherents/cartes/etiquette.php
\ingroup adherent \ingroup adherent
\brief Page de creation d'etiquettes \brief Page de creation d'etiquettes
\version $Revision$ \version $Id$
*/ */
require("./pre.inc.php"); require("./pre.inc.php");
require_once(DOL_DOCUMENT_ROOT."/adherents/adherent.class.php"); require_once(DOL_DOCUMENT_ROOT."/adherents/adherent.class.php");
@ -35,18 +32,18 @@ require_once('PDF_card.class.php');
/* /*
*------------------------------------------------- *-------------------------------------------------
* Pour créer l'objet on a 2 moyens : * Pour cr<EFBFBD>er l'objet on a 2 moyens :
* Soit on donne les valeurs en les passant dans un tableau (sert pour un format personnel) * Soit on donne les valeurs en les passant dans un tableau (sert pour un format personnel)
* Soit on donne le type d'étiquette au format AVERY * Soit on donne le type d'<EFBFBD>tiquette au format AVERY
*------------------------------------------------- *-------------------------------------------------
*/ */
//$pdf = new PDF_Label(array('name'=>'perso1', 'marginLeft'=>1, 'marginTop'=>1, 'NX'=>2, 'NY'=>7, 'SpaceX'=>0, 'SpaceY'=>0, 'width'=>99.1, 'height'=>'38.1', 'metric'=>'mm', 'font-size'=>14), 1, 2); //$pdf = new PDF_Label(array('name'=>'perso1', 'marginLeft'=>1, 'marginTop'=>1, 'NX'=>2, 'NY'=>7, 'SpaceX'=>0, 'SpaceY'=>0, 'width'=>99.1, 'height'=>'38.1', 'metric'=>'mm', 'font-size'=>14), 1, 2);
//$pdf = new PDF_card('CARD', 1, 1); //$pdf = new PDF_card('CARD', 1, 1);
if (defined("ADHERENT_ETIQUETTE_TYPE") && ADHERENT_ETIQUETTE_TYPE !=''){ if (defined("ADHERENT_ETIQUETTE_TYPE") && ADHERENT_ETIQUETTE_TYPE !=''){
$pdf = new PDF_card(ADHERENT_ETIQUETTE_TYPE, 1, 1); $pdf = new PDF_card(ADHERENT_ETIQUETTE_TYPE, 1, 1);
}else{ }else{
$pdf = new PDF_card('L7163', 1, 1); $pdf = new PDF_card('L7163', 1, 1);
} }
$pdf->Open(); $pdf->Open();
@ -54,8 +51,8 @@ $pdf->AddPage();
// Choix de l'annee d'impression ou annee courante. // Choix de l'annee d'impression ou annee courante.
if (!isset($annee)){ if (!isset($annee)){
$now = getdate(); $now = getdate();
$annee=$now['year']; $annee=$now['year'];
} }
// requete en prenant que les adherents a jour de cotisation // requete en prenant que les adherents a jour de cotisation
@ -69,20 +66,22 @@ $sql.= " WHERE d.fk_adherent_type = t.rowid AND d.statut = 1 AND datefin >= ".$d
$sql.= " ORDER BY d.rowid ASC"; $sql.= " ORDER BY d.rowid ASC";
$result = $db->query($sql); $result = $db->query($sql);
if ($result) if ($result)
{ {
$num = $db->num_rows(); $num = $db->num_rows();
$i = 0; $i = 0;
while ($i < $num) while ($i < $num)
{ {
$objp = $db->fetch_object($result); $objp = $db->fetch_object($result);
// imprime le texte specifique sur la carte // imprime le texte specifique sur la carte
$pdf->Add_PDF_card(sprintf("%s\n%s\n%s %s\n%s", ucfirst(strtolower($objp->prenom))." ".strtoupper($objp->nom), ucwords(strtolower($objp->adresse)), $objp->cp, strtoupper($objp->ville), ucfirst(strtolower($objp->pays))),'',''); $pdf->Add_PDF_card(sprintf("%s\n%s\n%s %s\n%s", ucfirst(strtolower($objp->prenom))." ".strtoupper($objp->nom), ucwords(strtolower($objp->adresse)), $objp->cp, strtoupper($objp->ville), ucfirst(strtolower($objp->pays))),'','');
$i++; $i++;
} }
$db->close(); $db->close();
$pdf->Output();
// Output to http strem
$pdf->Output();
} }
else else
{ {
@ -91,4 +90,4 @@ else
llxFooter('$Date$ - $Revision$'); llxFooter('$Date$ - $Revision$');
} }
?> ?>

View File

@ -169,6 +169,9 @@ if ($what == 'mysql')
if ($compression == 'none') fclose($handle); if ($compression == 'none') fclose($handle);
if ($compression == 'gz') gzclose($handle); if ($compression == 'gz') gzclose($handle);
if ($compression == 'bz') bzclose($handle); if ($compression == 'bz') bzclose($handle);
if (! empty($conf->global->MAIN_UMASK))
@chmod($outputfile, octdec($conf->global->MAIN_UMASK));
} }
else else
{ {

View File

@ -110,7 +110,7 @@ class CommActionRapport
$pdf=new FPDI_Protection('P','mm',$this->format); $pdf=new FPDI_Protection('P','mm',$this->format);
$pdfrights = array('print'); // Ne permet que l'impression du document $pdfrights = array('print'); // Ne permet que l'impression du document
$pdfuserpass = ''; // Mot de passe pour l'utilisateur final $pdfuserpass = ''; // Mot de passe pour l'utilisateur final
$pdfownerpass = NULL; // Mot de passe du propriétire, crée aléatoirement si pas défini $pdfownerpass = NULL; // Mot de passe du propri<EFBFBD>tire, cr<63>e al<61>atoirement si pas d<>fini
$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
} }
else else
@ -138,7 +138,9 @@ class CommActionRapport
$pdf->Close(); $pdf->Close();
$pdf->Output($file); $pdf->Output($file);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
return 1; return 1;
} }
} }

View File

@ -94,8 +94,17 @@ if ($_POST["action"] == "builddoc" && $user->rights->facture->lire)
// enregistre le fichier pdf concatene // enregistre le fichier pdf concatene
$filename=sanitize_string(strtolower($langs->transnoentities("Unpayed"))); $filename=sanitize_string(strtolower($langs->transnoentities("Unpayed")));
if ($option=='late') $filename.='_'.sanitize_string(strtolower($langs->transnoentities("Late"))); if ($option=='late') $filename.='_'.sanitize_string(strtolower($langs->transnoentities("Late")));
if ($pagecount) $pdf->Output($diroutputpdf.'/'.$filename.'_'.dolibarr_print_date(mktime(),'dayhourlog').'.pdf'); if ($pagecount)
else $mesg='<div class="error">'.$langs->trans('NoPDFAvailableForChecked').'</div>'; {
$file=$diroutputpdf.'/'.$filename.'_'.dolibarr_print_date(mktime(),'dayhourlog').'.pdf';
$pdf->Output($file);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
}
else
{
$mesg='<div class="error">'.$langs->trans('NoPDFAvailableForChecked').'</div>';
}
} }
else else
{ {

View File

@ -21,74 +21,74 @@
*/ */
/** /**
\file htdocs/compta/paiement/cheque/pdf/pdf_blochet.class.php \file htdocs/compta/paiement/cheque/pdf/pdf_blochet.class.php
\ingroup banque \ingroup banque
\brief Fichier de la classe permettant de générer les bordereau de remise de cheque \brief Fichier de la classe permettant de g<EFBFBD>n<EFBFBD>rer les bordereau de remise de cheque
\version $Revision$ \version $Revision$
*/ */
/** /**
\class BordereauChequeBlochet \class BordereauChequeBlochet
\brief Classe permettant de générer les bordereau de remise de cheque \brief Classe permettant de g<EFBFBD>n<EFBFBD>rer les bordereau de remise de cheque
*/ */
class BordereauChequeBlochet class BordereauChequeBlochet
{ {
var $emetteur; // Objet societe qui emet var $emetteur; // Objet societe qui emet
/** /**
\brief Constructeur \brief Constructeur
*/ */
function BordereauChequeBlochet($db) function BordereauChequeBlochet($db)
{ {
global $conf,$langs,$mysoc; global $conf,$langs,$mysoc;
$langs->load("main"); $langs->load("main");
$langs->load("bills"); $langs->load("bills");
$this->db = $db; $this->db = $db;
$this->name = "blochet"; $this->name = "blochet";
$this->description = $langs->transnoentities("CheckReceipt"); $this->description = $langs->transnoentities("CheckReceipt");
$this->tab_top = 60; $this->tab_top = 60;
// Dimension page pour format A4 // Dimension page pour format A4
$this->type = 'pdf'; $this->type = 'pdf';
$this->page_largeur = 210; $this->page_largeur = 210;
$this->page_hauteur = 297; $this->page_hauteur = 297;
$this->format = array($this->page_largeur,$this->page_hauteur); $this->format = array($this->page_largeur,$this->page_hauteur);
$this->marge_gauche=10; $this->marge_gauche=10;
$this->marge_droite=20; $this->marge_droite=20;
$this->marge_haute=10; $this->marge_haute=10;
$this->marge_basse=10; $this->marge_basse=10;
$this->line_height = 5; $this->line_height = 5;
$this->line_per_page = 25; $this->line_per_page = 25;
$this->tab_height = 200; //$this->line_height * $this->line_per_page; $this->tab_height = 200; //$this->line_height * $this->line_per_page;
} }
/** /**
\brief Generate Header \brief Generate Header
\param pdf pdf object \param pdf pdf object
\param page current page number \param page current page number
\param pages number of pages \param pages number of pages
*/ */
function Header(&$pdf, $page, $pages) function Header(&$pdf, $page, $pages)
{ {
global $langs; global $langs;
$title = $this->description; $title = $this->description;
$pdf->SetFont('Arial','B',10); $pdf->SetFont('Arial','B',10);
$pdf->Text(10, 10, $title); $pdf->Text(10, 10, $title);
$pdf->SetFont('Arial','',10); $pdf->SetFont('Arial','',10);
$pdf->Text(10, 19, $langs->transnoentities("Numero")); $pdf->Text(10, 19, $langs->transnoentities("Numero"));
$pdf->SetFont('Arial','',10); $pdf->SetFont('Arial','',10);
$pdf->Text(10, 27, $langs->transnoentities("Date") ); $pdf->Text(10, 27, $langs->transnoentities("Date") );
$pdf->SetFont('Arial','',10); $pdf->SetFont('Arial','',10);
$pdf->Text(10, 35, $langs->transnoentities("Owner")); $pdf->Text(10, 35, $langs->transnoentities("Owner"));
@ -120,7 +120,7 @@ class BordereauChequeBlochet
$pdf->line(170, 47, 170, 54); $pdf->line(170, 47, 170, 54);
$pdf->SetFont('Arial','',10); $pdf->SetFont('Arial','',10);
$pdf->Text(10, 52, "Nombre de chèque"); $pdf->Text(10, 52, "Nombre de ch<EFBFBD>que");
$pdf->SetFont('Arial','B',10); $pdf->SetFont('Arial','B',10);
$pdf->Text(57, 52, $this->nbcheque); $pdf->Text(57, 52, $this->nbcheque);
@ -131,7 +131,7 @@ class BordereauChequeBlochet
$pdf->SetFont('Arial','B',10); $pdf->SetFont('Arial','B',10);
$pdf->SetXY (170, 47); $pdf->SetXY (170, 47);
$pdf->MultiCell(31, 7, price($this->amount), 0, 'C', 0); $pdf->MultiCell(31, 7, price($this->amount), 0, 'C', 0);
// Tableau // Tableau
$pdf->SetFont('Arial','',8); $pdf->SetFont('Arial','',8);
$pdf->Text(11,$this->tab_top + 6,$langs->transnoentities("Num")); $pdf->Text(11,$this->tab_top + 6,$langs->transnoentities("Num"));
@ -178,31 +178,31 @@ class BordereauChequeBlochet
$pdf->SetXY (10, $this->tab_top + 10 + $yp); $pdf->SetXY (10, $this->tab_top + 10 + $yp);
$pdf->MultiCell(20, $this->line_height, $this->lines[$j]->num_chq?$this->lines[$j]->num_chq:'', 0, 'J', 0); $pdf->MultiCell(20, $this->line_height, $this->lines[$j]->num_chq?$this->lines[$j]->num_chq:'', 0, 'J', 0);
$pdf->SetXY (30, $this->tab_top + 10 + $yp); $pdf->SetXY (30, $this->tab_top + 10 + $yp);
$pdf->MultiCell(70, $this->line_height, dolibarr_trunc($this->lines[$j]->bank_chq,44), 0, 'J', 0); $pdf->MultiCell(70, $this->line_height, dolibarr_trunc($this->lines[$j]->bank_chq,44), 0, 'J', 0);
$pdf->SetXY (100, $this->tab_top + 10 + $yp); $pdf->SetXY (100, $this->tab_top + 10 + $yp);
$pdf->MultiCell(80, $this->line_height, dolibarr_trunc($this->lines[$j]->emetteur_chq,50), 0, 'J', 0); $pdf->MultiCell(80, $this->line_height, dolibarr_trunc($this->lines[$j]->emetteur_chq,50), 0, 'J', 0);
$pdf->SetXY (180, $this->tab_top + 10 + $yp); $pdf->SetXY (180, $this->tab_top + 10 + $yp);
$pdf->MultiCell(20, $this->line_height, price($this->lines[$j]->amount_chq), 0, 'R', 0); $pdf->MultiCell(20, $this->line_height, price($this->lines[$j]->amount_chq), 0, 'R', 0);
$yp = $yp + $this->line_height; $yp = $yp + $this->line_height;
} }
} }
/** /**
\brief Fonction générant le rapport sur le disque \brief Fonction g<EFBFBD>n<EFBFBD>rant le rapport sur le disque
\param _dir repertoire \param _dir repertoire
\param month mois du rapport \param month mois du rapport
\param year annee du rapport \param year annee du rapport
*/ */
function write_file($_dir, $number) function write_file($_dir, $number)
{ {
global $langs; global $langs;
$dir = $_dir . "/".get_exdir($number); $dir = $_dir . "/".get_exdir($number);
if (! is_dir($dir)) if (! is_dir($dir))
{ {
$result=create_exdir($dir); $result=create_exdir($dir);
@ -210,54 +210,56 @@ class BordereauChequeBlochet
if ($result < 0) if ($result < 0)
{ {
$this->error=$langs->transnoentities("ErrorCanNotCreateDir",$dir); $this->error=$langs->transnoentities("ErrorCanNotCreateDir",$dir);
return -1; return -1;
} }
} }
$month = sprintf("%02d",$month); $month = sprintf("%02d",$month);
$year = sprintf("%04d",$year); $year = sprintf("%04d",$year);
$_file = $dir . "bordereau-00".$number.".pdf"; //Todo: réparation provisoire, ajout de 2 zero $_file = $dir . "bordereau-00".$number.".pdf"; //Todo: r<EFBFBD>paration provisoire, ajout de 2 zero
// Protection et encryption du pdf // Protection et encryption du pdf
if ($conf->global->PDF_SECURITY_ENCRYPTION) if ($conf->global->PDF_SECURITY_ENCRYPTION)
{ {
require_once(FPDFI_PATH.'fpdi_protection.php'); require_once(FPDFI_PATH.'fpdi_protection.php');
$pdf = new FPDI_Protection('P','mm','A4'); $pdf = new FPDI_Protection('P','mm','A4');
$pdfrights = array('print'); // Ne permet que l'impression du document $pdfrights = array('print'); // Ne permet que l'impression du document
$pdfuserpass = ''; // Mot de passe pour l'utilisateur final $pdfuserpass = ''; // Mot de passe pour l'utilisateur final
$pdfownerpass = NULL; // Mot de passe du propriétaire, créé aléatoirement si pas défini $pdfownerpass = NULL; // Mot de passe du propri<72>taire, cr<63><72> al<61>atoirement si pas d<>fini
$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
} }
else else
{ {
require_once(FPDFI_PATH.'fpdi.php'); require_once(FPDFI_PATH.'fpdi.php');
$pdf=new FPDI('P','mm',$this->format); $pdf=new FPDI('P','mm',$this->format);
} }
$pdf->Open(); $pdf->Open();
$pages = intval($lignes / $this->line_per_page); $pages = intval($lignes / $this->line_per_page);
if (($lignes % $this->line_per_page)>0) if (($lignes % $this->line_per_page)>0)
{ {
$pages++; $pages++;
} }
if ($pages == 0) if ($pages == 0)
{ {
// force à générer au moins une page si le rapport ne contient aucune ligne // force to build at least one page if report has no lines
$pages = 1; $pages = 1;
} }
$pdf->AddPage(); $pdf->AddPage();
$this->Header($pdf, 1, $pages); $this->Header($pdf, 1, $pages);
$this->Body($pdf, 1); $this->Body($pdf, 1);
$pdf->Output($_file); $pdf->Output($_file);
} if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
}
} }
?> ?>

View File

@ -22,7 +22,7 @@
/** /**
\file htdocs/bon-prelevement.class.php \file htdocs/bon-prelevement.class.php
\ingroup prelevement \ingroup prelevement
\brief Fichier de la classe des bons de prélévements \brief Fichier de la classe des bons de pr<EFBFBD>l<EFBFBD>vements
\version $Revision$ \version $Revision$
*/ */
@ -129,7 +129,7 @@ class BonPrelevement
if ($concat == 1) if ($concat == 1)
{ {
/* /*
* On aggrège les lignes * On aggr<EFBFBD>ge les lignes
*/ */
$sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."prelevement_lignes"; $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."prelevement_lignes";
$sql .= " WHERE fk_prelevement_bons".$this->id; $sql .= " WHERE fk_prelevement_bons".$this->id;
@ -150,7 +150,7 @@ class BonPrelevement
else else
{ {
/* /*
* Pas de d'agrégation * Pas de d'agr<EFBFBD>gation
*/ */
$sql = "INSERT INTO ".MAIN_DB_PREFIX."prelevement_lignes (fk_prelevement_bons"; $sql = "INSERT INTO ".MAIN_DB_PREFIX."prelevement_lignes (fk_prelevement_bons";
$sql .= " , fk_soc , client_nom "; $sql .= " , fk_soc , client_nom ";
@ -237,7 +237,7 @@ class BonPrelevement
} }
else else
{ {
dolibarr_syslog("BonPrelevement::Fetch Erreur aucune ligne retournée"); dolibarr_syslog("BonPrelevement::Fetch Erreur aucune ligne retourn<EFBFBD>e");
return -1; return -1;
} }
} }
@ -279,7 +279,7 @@ class BonPrelevement
for ($i = 0 ; $i < sizeof($facs) ; $i++) for ($i = 0 ; $i < sizeof($facs) ; $i++)
{ {
/* Tag la facture comme impayée */ /* Tag la facture comme impay<EFBFBD>e */
dolibarr_syslog("BonPrelevement::set_credite set_payed fac ".$facs[$i]); dolibarr_syslog("BonPrelevement::set_credite set_payed fac ".$facs[$i]);
$fac = new Facture($this->db); $fac = new Facture($this->db);
$fac->fetch($facs[$i]); $fac->fetch($facs[$i]);
@ -302,7 +302,7 @@ class BonPrelevement
} }
/* /*
* Fin de la procédure * Fin de la proc<EFBFBD>dure
* *
*/ */
if ($error == 0) if ($error == 0)
@ -352,10 +352,10 @@ class BonPrelevement
if ($this->db->query($sql)) if ($this->db->query($sql))
{ {
$subject = "Crédit prélèvement ".$this->ref." à la banque"; $subject = "Cr<EFBFBD>dit pr<70>l<EFBFBD>vement ".$this->ref." <20> la banque";
$message = "Le bon de prélèvement ".$this->ref; $message = "Le bon de pr<EFBFBD>l<EFBFBD>vement ".$this->ref;
$message .= " a été crédité par la banque.\n"; $message .= " a <EFBFBD>t<EFBFBD> cr<63>dit<69> par la banque.\n";
$message .= "Date crédit : ".dolibarr_print_date($date,'dayhour'); $message .= "Date cr<EFBFBD>dit : ".dolibarr_print_date($date,'dayhour');
$this->Notify($user, "cr", $subject, $message); $this->Notify($user, "cr", $subject, $message);
} }
@ -366,7 +366,7 @@ class BonPrelevement
} }
/* /*
* Fin de la procédure * Fin de la proc<EFBFBD>dure
* *
*/ */
if ($error == 0) if ($error == 0)
@ -421,12 +421,12 @@ class BonPrelevement
{ {
$this->method_trans = $method; $this->method_trans = $method;
$subject = "Transmission du prélèvement ".$this->ref." à la banque"; $subject = "Transmission du pr<EFBFBD>l<EFBFBD>vement ".$this->ref." <20> la banque";
$message = "Le bon de prélèvement ".$this->ref; $message = "Le bon de pr<EFBFBD>l<EFBFBD>vement ".$this->ref;
$message .= " a été transmis à la banque par ".$user->prenom. " ".$user->nom; $message .= " a <EFBFBD>t<EFBFBD> transmis <20> la banque par ".$user->prenom. " ".$user->nom;
$message .= "\n\n"; $message .= "\n\n";
$message .= "\nMontant : ".price($this->amount); $message .= "\nMontant : ".price($this->amount);
$message .= "\nMéthode : ".$this->methodes_trans[$this->method_trans]; $message .= "\nM<EFBFBD>thode : ".$this->methodes_trans[$this->method_trans];
$message .= "\nDate : ".dolibarr_print_date($date,'day'); $message .= "\nDate : ".dolibarr_print_date($date,'day');
$this->Notify($user,"tr", $subject, $message, 1); $this->Notify($user,"tr", $subject, $message, 1);
@ -439,7 +439,7 @@ class BonPrelevement
} }
/* /*
* Fin de la procédure * Fin de la proc<EFBFBD>dure
* *
*/ */
if ($error == 0) if ($error == 0)
@ -470,7 +470,7 @@ class BonPrelevement
function Notify($user, $action, $subject, $message, $joinfile=0) function Notify($user, $action, $subject, $message, $joinfile=0)
{ {
$message .= "\n\n--\n"; $message .= "\n\n--\n";
$message .= "Ceci est un message automatique envoyé par Dolibarr"; $message .= "Ceci est un message automatique envoy<EFBFBD> par Dolibarr";
$sql = "SELECT u.name, u.firstname, u.email"; $sql = "SELECT u.name, u.firstname, u.email";
$sql .= " FROM ".MAIN_DB_PREFIX."user as u"; $sql .= " FROM ".MAIN_DB_PREFIX."user as u";
@ -516,15 +516,15 @@ class BonPrelevement
} }
/** /**
* \brief Recupére la liste des factures concernées * \brief Recup<EFBFBD>re la liste des factures concern<EFBFBD>es
*/ */
function _get_list_factures() function _get_list_factures()
{ {
$arr = array(); $arr = array();
/* /*
* Renvoie toutes les factures présente * Renvoie toutes les factures pr<EFBFBD>sente
* dans un bon de prélèvement * dans un bon de pr<EFBFBD>l<EFBFBD>vement
*/ */
$sql = "SELECT fk_facture"; $sql = "SELECT fk_facture";
$sql .= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p"; $sql .= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p";
@ -595,7 +595,7 @@ class BonPrelevement
} }
/** /**
* \brief Renvoi nombre de factures a prélever * \brief Renvoi nombre de factures a pr<EFBFBD>lever
* \param banque bank * \param banque bank
* \param agence agence * \param agence agence
* \return int <O si erreur, sinon nbre de factures * \return int <O si erreur, sinon nbre de factures
@ -645,7 +645,7 @@ class BonPrelevement
/** /**
* \brief Cree prelevement * \brief Cree prelevement
* \return int <0 si ko, nbre de facture prélevé sinon * \return int <0 si ko, nbre de facture pr<EFBFBD>lev<EFBFBD> sinon
*/ */
function Create($banque=0, $guichet=0) function Create($banque=0, $guichet=0)
{ {
@ -693,7 +693,7 @@ class BonPrelevement
$sql .= " AND f.paye = 0"; $sql .= " AND f.paye = 0";
$sql .= " AND pfd.traite = 0"; $sql .= " AND pfd.traite = 0";
$sql .= " AND f.total_ttc > 0"; $sql .= " AND f.total_ttc > 0";
$sql .= " AND f.fk_mode_reglement = 3"; // Mode prélèvement $sql .= " AND f.fk_mode_reglement = 3"; // Mode pr<EFBFBD>l<EFBFBD>vement
if ($banque == 1) if ($banque == 1)
{ {
@ -718,7 +718,7 @@ class BonPrelevement
$i++; $i++;
} }
$this->db->free($resql); $this->db->free($resql);
dolibarr_syslog("$i factures à prélever"); dolibarr_syslog("$i factures <EFBFBD> pr<70>lever");
} }
else else
{ {
@ -737,11 +737,11 @@ class BonPrelevement
if (! $error) if (! $error)
{ {
/* /*
* Vérification des RIB * V<EFBFBD>rification des RIB
* *
*/ */
$i = 0; $i = 0;
dolibarr_syslog("Début vérification des RIB"); dolibarr_syslog("D<EFBFBD>but v<>rification des RIB");
if (sizeof($factures) > 0) if (sizeof($factures) > 0)
{ {
@ -769,7 +769,7 @@ class BonPrelevement
} }
else else
{ {
dolibarr_syslog("Impossible de lire la société"); dolibarr_syslog("Impossible de lire la soci<EFBFBD>t<EFBFBD>");
} }
} }
else else
@ -790,7 +790,7 @@ class BonPrelevement
* *
*/ */
dolibarr_syslog(sizeof($factures_prev)." factures seront prélevées"); dolibarr_syslog(sizeof($factures_prev)." factures seront pr<EFBFBD>lev<EFBFBD>es");
if (sizeof($factures_prev) > 0) if (sizeof($factures_prev) > 0)
{ {
@ -855,7 +855,7 @@ class BonPrelevement
else else
{ {
$error++; $error++;
dolibarr_syslog("Erreur création du bon de prelevement"); dolibarr_syslog("Erreur cr<EFBFBD>ation du bon de prelevement");
} }
} }
@ -865,7 +865,7 @@ class BonPrelevement
*/ */
if (!$error) if (!$error)
{ {
dolibarr_syslog("Début génération des paiements"); dolibarr_syslog("D<EFBFBD>but g<>n<EFBFBD>ration des paiements");
dolibarr_syslog("Nombre de factures ".sizeof($factures_prev)); dolibarr_syslog("Nombre de factures ".sizeof($factures_prev));
if (sizeof($factures_prev) > 0) if (sizeof($factures_prev) > 0)
@ -880,7 +880,7 @@ class BonPrelevement
$pai->amounts = array(); $pai->amounts = array();
$pai->amounts[$fac[0]] = $fact->total_ttc; $pai->amounts[$fac[0]] = $fact->total_ttc;
$pai->datepaye = $this->db->idate($datetimeprev); $pai->datepaye = $this->db->idate($datetimeprev);
$pai->paiementid = 3; // prélèvement $pai->paiementid = 3; // pr<EFBFBD>l<EFBFBD>vement
$pai->num_paiement = $ref; $pai->num_paiement = $ref;
if ($pai->create($user, 1) == -1) // on appelle en no_commit if ($pai->create($user, 1) == -1) // on appelle en no_commit
@ -896,7 +896,7 @@ class BonPrelevement
$pai->valide(); $pai->valide();
/* /*
* Ajout d'une ligne de prélèvement * Ajout d'une ligne de pr<EFBFBD>l<EFBFBD>vement
* *
* *
* $fac[3] : banque * $fac[3] : banque
@ -916,7 +916,7 @@ class BonPrelevement
} }
/* /*
* Mise à jour des demandes * Mise <EFBFBD> jour des demandes
* *
*/ */
$sql = "UPDATE ".MAIN_DB_PREFIX."prelevement_facture_demande"; $sql = "UPDATE ".MAIN_DB_PREFIX."prelevement_facture_demande";
@ -976,7 +976,7 @@ class BonPrelevement
} }
/* /*
* Mise à jour du total * Mise <EFBFBD> jour du total
* *
*/ */
@ -988,7 +988,7 @@ class BonPrelevement
if (! $resql) if (! $resql)
{ {
$error++; $error++;
dolibarr_syslog("Erreur mise à jour du total - $sql"); dolibarr_syslog("Erreur mise <EFBFBD> jour du total - $sql");
} }
/* /*
@ -1086,11 +1086,13 @@ class BonPrelevement
} }
/** /**
* Génération d'un bon de prélèvement * G<EFBFBD>n<EFBFBD>ration d'un bon de pr<EFBFBD>l<EFBFBD>vement
* *
*/ */
function Generate() function Generate()
{ {
global $conf;
$result = -1; $result = -1;
$this->file = fopen ($this->filename,"w"); $this->file = fopen ($this->filename,"w");
@ -1160,7 +1162,9 @@ class BonPrelevement
$this->EnregTotal($this->total); $this->EnregTotal($this->total);
fclose($this->file); fclose($this->file);
if (! empty($conf->global->MAIN_UMASK))
@chmod($this->file, octdec($conf->global->MAIN_UMASK));
return $result; return $result;
} }
@ -1173,13 +1177,13 @@ class BonPrelevement
function EnregDestinataire($rowid, $client_nom, $rib_banque, $rib_guichet, $rib_number, $amount) function EnregDestinataire($rowid, $client_nom, $rib_banque, $rib_guichet, $rib_number, $amount)
{ {
fputs ($this->file, "06"); fputs ($this->file, "06");
fputs ($this->file, "08"); // Prélèvement ordinaire fputs ($this->file, "08"); // Pr<EFBFBD>l<EFBFBD>vement ordinaire
fputs ($this->file, " "); // Zone Réservée B2 fputs ($this->file, " "); // Zone R<EFBFBD>serv<EFBFBD>e B2
fputs ($this->file, $this->numero_national_emetteur); // Numéro National d'emmetteur B3 fputs ($this->file, $this->numero_national_emetteur); // Num<EFBFBD>ro National d'emmetteur B3
// Date d'échéance C1 // Date d'<EFBFBD>ch<EFBFBD>ance C1
fputs ($this->file, " "); fputs ($this->file, " ");
fputs ($this->file, strftime("%d%m", $this->date_echeance)); fputs ($this->file, strftime("%d%m", $this->date_echeance));
@ -1193,7 +1197,7 @@ class BonPrelevement
fputs ($this->file, substr(" ",0,24)); fputs ($this->file, substr(" ",0,24));
// Zone Réservée D2 // Zone R<EFBFBD>serv<EFBFBD>e D2
fputs ($this->file, substr(" ",0,8)); fputs ($this->file, substr(" ",0,8));
@ -1211,16 +1215,16 @@ class BonPrelevement
fputs ($this->file, substr("000000000000000".$montant, -16)); fputs ($this->file, substr("000000000000000".$montant, -16));
// Libellé F // Libell<EFBFBD> F
fputs ($this->file, substr("*".$this->ref.$rowid." ",0,13)); fputs ($this->file, substr("*".$this->ref.$rowid." ",0,13));
fputs ($this->file, substr(" ",0,18)); fputs ($this->file, substr(" ",0,18));
// Code établissement G1 // Code <EFBFBD>tablissement G1
fputs ($this->file, $rib_banque); fputs ($this->file, $rib_banque);
// Zone Réservée G2 // Zone R<EFBFBD>serv<EFBFBD>e G2
fputs ($this->file, substr(" ",0,5)); fputs ($this->file, substr(" ",0,5));
@ -1236,13 +1240,13 @@ class BonPrelevement
function EnregDestinataireVersion1($fac) function EnregDestinataireVersion1($fac)
{ {
fputs ($this->file, "06"); fputs ($this->file, "06");
fputs ($this->file, "08"); // Prélèvement ordinaire fputs ($this->file, "08"); // Pr<EFBFBD>l<EFBFBD>vement ordinaire
fputs ($this->file, " "); // Zone Réservée B2 fputs ($this->file, " "); // Zone R<EFBFBD>serv<EFBFBD>e B2
fputs ($this->file, $this->numero_national_emetteur); // Numéro National d'emmetteur B3 fputs ($this->file, $this->numero_national_emetteur); // Num<EFBFBD>ro National d'emmetteur B3
// Date d'échéance C1 // Date d'<EFBFBD>ch<EFBFBD>ance C1
fputs ($this->file, " "); fputs ($this->file, " ");
fputs ($this->file, strftime("%d%m", $this->date_echeance)); fputs ($this->file, strftime("%d%m", $this->date_echeance));
@ -1252,11 +1256,11 @@ class BonPrelevement
fputs ($this->file, substr($fac->client->nom. " ",0,24)); fputs ($this->file, substr($fac->client->nom. " ",0,24));
// Reference de la remise créancier D1 // Reference de la remise cr<EFBFBD>ancier D1
fputs ($this->file, substr(" ",0,24)); fputs ($this->file, substr(" ",0,24));
// Zone Réservée D2 // Zone R<EFBFBD>serv<EFBFBD>e D2
fputs ($this->file, substr(" ",0,8)); fputs ($this->file, substr(" ",0,8));
@ -1274,16 +1278,16 @@ class BonPrelevement
fputs ($this->file, substr("000000000000000".$montant, -16)); fputs ($this->file, substr("000000000000000".$montant, -16));
// Libellé F // Libell<EFBFBD> F
fputs ($this->file, substr("*".$fac->ref." ",0,13)); fputs ($this->file, substr("*".$fac->ref." ",0,13));
fputs ($this->file, substr(" ",0,18)); fputs ($this->file, substr(" ",0,18));
// Code établissement G1 // Code <EFBFBD>tablissement G1
fputs ($this->file, $fac->client->bank_account->code_banque); fputs ($this->file, $fac->client->bank_account->code_banque);
// Zone Réservée G2 // Zone R<EFBFBD>serv<EFBFBD>e G2
fputs ($this->file, substr(" ",0,5)); fputs ($this->file, substr(" ",0,5));
@ -1297,13 +1301,13 @@ class BonPrelevement
function EnregEmetteur() function EnregEmetteur()
{ {
fputs ($this->file, "03"); fputs ($this->file, "03");
fputs ($this->file, "08"); // Prélèvement ordinaire fputs ($this->file, "08"); // Pr<EFBFBD>l<EFBFBD>vement ordinaire
fputs ($this->file, " "); // Zone Réservée B2 fputs ($this->file, " "); // Zone R<EFBFBD>serv<EFBFBD>e B2
fputs ($this->file, $this->numero_national_emetteur); // Numéro National d'emmetteur B3 fputs ($this->file, $this->numero_national_emetteur); // Num<EFBFBD>ro National d'emmetteur B3
// Date d'échéance C1 // Date d'<EFBFBD>ch<EFBFBD>ance C1
fputs ($this->file, " "); fputs ($this->file, " ");
fputs ($this->file, strftime("%d%m", $this->date_echeance)); fputs ($this->file, strftime("%d%m", $this->date_echeance));
@ -1313,15 +1317,15 @@ class BonPrelevement
fputs ($this->file, substr($this->raison_sociale. " ",0,24)); fputs ($this->file, substr($this->raison_sociale. " ",0,24));
// Reference de la remise créancier D1 sur 7 caractéres // Reference de la remise cr<EFBFBD>ancier D1 sur 7 caract<63>res
fputs ($this->file, substr($this->reference_remise. " ",0,7)); fputs ($this->file, substr($this->reference_remise. " ",0,7));
// Zone Réservée D1-2 // Zone R<EFBFBD>serv<EFBFBD>e D1-2
fputs ($this->file, substr(" ",0,17)); fputs ($this->file, substr(" ",0,17));
// Zone Réservée D2 // Zone R<EFBFBD>serv<EFBFBD>e D2
fputs ($this->file, substr(" ",0,2)); fputs ($this->file, substr(" ",0,2));
fputs ($this->file, "E"); fputs ($this->file, "E");
@ -1335,19 +1339,19 @@ class BonPrelevement
fputs ($this->file, substr("000000000000000".$this->emetteur_numero_compte, -11)); fputs ($this->file, substr("000000000000000".$this->emetteur_numero_compte, -11));
// Zone Réservée E // Zone R<EFBFBD>serv<EFBFBD>e E
fputs ($this->file, substr(" ",0,16)); fputs ($this->file, substr(" ",0,16));
// Zone Réservée F // Zone R<EFBFBD>serv<EFBFBD>e F
fputs ($this->file, substr(" ",0,31)); fputs ($this->file, substr(" ",0,31));
// Code établissement // Code <EFBFBD>tablissement
fputs ($this->file, $this->emetteur_code_etablissement); fputs ($this->file, $this->emetteur_code_etablissement);
// Zone Réservée G // Zone R<EFBFBD>serv<EFBFBD>e G
fputs ($this->file, substr(" ",0,5)); fputs ($this->file, substr(" ",0,5));
@ -1362,13 +1366,13 @@ class BonPrelevement
function EnregTotal($total) function EnregTotal($total)
{ {
fputs ($this->file, "08"); fputs ($this->file, "08");
fputs ($this->file, "08"); // Prélèvement ordinaire fputs ($this->file, "08"); // Pr<EFBFBD>l<EFBFBD>vement ordinaire
fputs ($this->file, " "); // Zone Réservée B2 fputs ($this->file, " "); // Zone R<EFBFBD>serv<EFBFBD>e B2
fputs ($this->file, $this->numero_national_emetteur); // Numéro National d'emmetteur B3 fputs ($this->file, $this->numero_national_emetteur); // Num<EFBFBD>ro National d'emmetteur B3
// Réservé C1 // R<EFBFBD>serv<EFBFBD> C1
fputs ($this->file, substr(" ",0,12)); fputs ($this->file, substr(" ",0,12));
@ -1381,7 +1385,7 @@ class BonPrelevement
fputs ($this->file, substr(" ",0,24)); fputs ($this->file, substr(" ",0,24));
// Zone Réservée D2 // Zone R<EFBFBD>serv<EFBFBD>e D2
fputs ($this->file, substr(" ",0,8)); fputs ($this->file, substr(" ",0,8));
@ -1399,15 +1403,15 @@ class BonPrelevement
fputs ($this->file, substr("000000000000000".$montant, -16)); fputs ($this->file, substr("000000000000000".$montant, -16));
// Zone Réservée F // Zone R<EFBFBD>serv<EFBFBD>e F
fputs ($this->file, substr(" ",0,31)); fputs ($this->file, substr(" ",0,31));
// Code établissement // Code <EFBFBD>tablissement
fputs ($this->file, substr(" ",0,5)); fputs ($this->file, substr(" ",0,5));
// Zone Réservée F // Zone R<EFBFBD>serv<EFBFBD>e F
fputs ($this->file, substr(" ",0,5)); fputs ($this->file, substr(" ",0,5));

View File

@ -238,6 +238,7 @@ class Conf
// Module adherent // Module adherent
$this->adherent->enabled=defined("MAIN_MODULE_ADHERENT")?MAIN_MODULE_ADHERENT:0; $this->adherent->enabled=defined("MAIN_MODULE_ADHERENT")?MAIN_MODULE_ADHERENT:0;
$this->adherent->dir_output=DOL_DATA_ROOT."/adherent"; $this->adherent->dir_output=DOL_DATA_ROOT."/adherent";
$this->adherent->dir_tmp=DOL_DATA_ROOT."/adherent/temp";
// Module produit // Module produit
$this->produit->enabled=defined("MAIN_MODULE_PRODUIT")?MAIN_MODULE_PRODUIT:0; $this->produit->enabled=defined("MAIN_MODULE_PRODUIT")?MAIN_MODULE_PRODUIT:0;
$this->produit->dir_output=DOL_DATA_ROOT."/produit"; $this->produit->dir_output=DOL_DATA_ROOT."/produit";

View File

@ -17,357 +17,360 @@
*/ */
/** /**
\file docs/class/courrier-droit-editeur.class.php \file docs/class/courrier-droit-editeur.class.php
\ingroup editeurs \ingroup editeurs
\brief Classe de generation des courriers pour les editeurs \brief Classe de generation des courriers pour les editeurs
\version $Id$ \version $Id$
*/ */
require_once(DOL_DOCUMENT_ROOT.'/includes/fpdf/fpdfi/fpdi_protection.php'); require_once(DOL_DOCUMENT_ROOT.'/includes/fpdf/fpdfi/fpdi_protection.php');
class pdf_courrier_droit_editeur class pdf_courrier_droit_editeur
{ {
/** /**
\brief Constructeur \brief Constructeur
\param db Handler accès base de donnée \param db Handler acc<EFBFBD>s base de donn<EFBFBD>e
*/ */
function pdf_courrier_droit_editeur ($db) 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.rowid,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->rowid;
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) )
{
$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); $this->langs = $langs;
$livre->FetchCanvas($value['id']);
$pdf->AddPage(); $this->db = $db;
$qtycontrat = $value['qty'];
/*
* Adresse
*/
// 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;
// Client destinataire $this->name = "Courrier des droits ".strftime("%Y", time());
$posy=42; $this->file = '1'.strftime("%Y", time()).'.pdf';
$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.");
} }
/**
\brief G<EFBFBD>n<EFBFBD>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.rowid,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<72>taire, cr<63><72> al<61>atoirement si pas d<>fini
$pdf_all->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
}
$pdf_all->Open();
return 0; while ($obj = $this->db->fetch_object($resql) )
} {
else $id = $obj->rowid;
{
$this->error=$this->langs->trans("ErrorCanNotCreateDir",$dir); dolibarr_syslog("droits-editeurs.php id:$id", LOG_DEBUG );
return -6;
} $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<72>taire, cr<63><72> al<61>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);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
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<EFBFBD>n<EFBFBD>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<75>re donn<6E>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) )
{
$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<63>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<69> 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<EFBFBD> sign<67>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<EFBFBD> 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 <20> devoir sur les droits pour l'ann<6E>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 <20> votre enti<74>re disposition pour de plus amples renseignements dont vous pouvez avoir besoin et vous remercions de la confiance que vous nous avez accord<72>e.");
}
return 0;
}
else
{
$this->error=$this->langs->trans("ErrorCanNotCreateDir",$dir);
return -6;
}
}
} }
?> ?>

View File

@ -22,286 +22,289 @@
*/ */
/** /**
\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<EFBFBD>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<EFBFBD>re de num<EFBFBD>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<EFBFBD>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) function Active($statut)
{ {
// Mise a jour du statut // Mise a jour du statut
$sql = "UPDATE ".MAIN_DB_PREFIX."expedition_methode set statut = $statut "; $sql = "UPDATE ".MAIN_DB_PREFIX."expedition_methode set statut = $statut ";
$sql.= " WHERE rowid = ".$this->id; $sql.= " WHERE rowid = ".$this->id;
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
if ($resql) if ($resql)
{ {
$af = $this->db->affected_rows($resql); $af = $this->db->affected_rows($resql);
if ($af == 0 && $statut == 1) if ($af == 0 && $statut == 1)
{ {
// On créé la méthode dans la base // On cr<63><72> la m<>thode dans la base
$sql = "INSERT INTO ".MAIN_DB_PREFIX."expedition_methode"; $sql = "INSERT INTO ".MAIN_DB_PREFIX."expedition_methode";
$sql .= " (rowid, statut, code, libelle, description)"; $sql .= " (rowid, statut, code, libelle, description)";
$sql .= " VALUES (".$this->id.",1,'$this->code','$this->name','$this->description')"; $sql .= " VALUES (".$this->id.",1,'$this->code','$this->name','$this->description')";
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
if (! $resql) if (! $resql)
{ {
dolibarr_syslog("methode_expedition::Active Erreur 2"); dolibarr_syslog("methode_expedition::Active Erreur 2");
} }
} }
} }
else else
{ {
dolibarr_syslog("methode_expedition::Active Erreur 1"); 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";
if (file_exists($dir))
{
// Protection et encryption du pdf
if ($conf->global->PDF_SECURITY_ENCRYPTION)
{
$pdf=new FPDI_Protection('P','mm','A4');
$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);
}
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->MultiCell(20, 5, $propale->lignes[$i]->ref, 0, 'C');
$pdf->SetXY (133, $curY );
$pdf->MultiCell(10, 5, $propale->lignes[$i]->tva_tx, 0, 'C');
$pdf->SetXY (145, $curY );
$pdf->MultiCell(10, 5, $propale->lignes[$i]->qty, 0, 'C');
$pdf->SetXY (156, $curY ); function write_file($id)
$pdf->MultiCell(18, 5, price($propale->lignes[$i]->price), 0, 'R', 0); {
global $conf, $user;
$pdf->SetXY (174, $curY );
$total = price($propale->lignes[$i]->price * $propale->lignes[$i]->qty);
$pdf->MultiCell(26, 5, $total, 0, 'R', 0);
$pdf->line(10, $curY, 200, $curY );
if ($nexY > 240 && $i < $nblignes - 1) $propale = new Propal($this->db,"",$id);
{ if ($propale->fetch($id))
$this->_tableau($pdf, $tab_top, $tab_height, $nexY); {
$pdf->AddPage();
$nexY = $iniY;
$this->_pagehead($pdf, $propale);
$pdf->SetTextColor(0,0,0);
$pdf->SetFont('Arial','', 10);
}
}
$this->_tableau($pdf, $tab_top, $tab_height, $nexY);
/*
*
*/
$tab2_top = 254;
$tab2_lh = 7;
$tab2_height = $tab2_lh * 3;
$pdf->SetFont('Arial','', 11);
$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*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(174, $tab2_top, 174, $tab2_top + $tab2_height);
$pdf->SetXY (132, $tab2_top + 0);
$pdf->MultiCell(42, $tab2_lh, "Total HT", 0, 'R', 0);
$pdf->SetXY (132, $tab2_top + $tab2_lh);
$pdf->MultiCell(42, $tab2_lh, "Total TVA", 0, 'R', 0);
$pdf->SetXY (132, $tab2_top + ($tab2_lh*2));
$pdf->MultiCell(42, $tab2_lh, "Total TTC", 1, 'R', 1);
$pdf->SetXY (174, $tab2_top + 0);
$pdf->MultiCell(26, $tab2_lh, price($propale->total_ht), 0, 'R', 0);
$pdf->SetXY (174, $tab2_top + $tab2_lh);
$pdf->MultiCell(26, $tab2_lh, price($propale->total_tva), 0, 'R', 0);
$pdf->SetXY (174, $tab2_top + ($tab2_lh*2));
$pdf->MultiCell(26, $tab2_lh, price($propale->total_ttc), 1, 'R', 1);
/*
*
*/
$pdf->Output($file);
}
}
}
function _tableau(&$pdf, $tab_top, $tab_height, $nexY)
{
$pdf->SetFont('Arial','',11);
$pdf->Text(30,$tab_top + 5,'Désignation');
$pdf->line(132, $tab_top, 132, $tab_top + $tab_height);
$pdf->Text(134,$tab_top + 5,'TVA');
$pdf->line(144, $tab_top, 144, $tab_top + $tab_height);
$pdf->Text(147,$tab_top + 5,'Qté');
$pdf->line(156, $tab_top, 156, $tab_top + $tab_height);
$pdf->Text(160,$tab_top + 5,'P.U.');
$pdf->line(174, $tab_top, 174, $tab_top + $tab_height);
$pdf->Text(187,$tab_top + 5,'Total');
// $pdf->Rect(10, $tab_top, 190, $nexY - $tab_top);
$pdf->Rect(10, $tab_top, 190, $tab_height);
$pdf->SetTextColor(0,0,0); $file = $dir . "/" . $propale->ref . ".pdf";
$pdf->SetFont('Arial','',10);
$titre = $langs->trans("AmountInCurrency",$langs->trans("Currency".$conf->monnaie));
$pdf->Text(200 - $pdf->GetStringWidth($titre), 98, $titre);
} if (file_exists($dir))
{
// Protection et encryption du pdf
if ($conf->global->PDF_SECURITY_ENCRYPTION)
{
$pdf=new FPDI_Protection('P','mm','A4');
$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<72>taire, cr<63><72> al<61>atoirement si pas d<>fini
$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
}
else
{
$pdf=new FPDI('P','mm',$this->format);
}
function _pagehead(&$pdf, $propale) $pdf->Open();
{ $pdf->AddPage();
$pdf->SetXY(10,5);
if (defined("FAC_PDF_INTITULE")) $pdf->SetTitle($propale->ref);
{ $pdf->SetSubject("Proposition commerciale");
$pdf->SetTextColor(0,0,200); $pdf->SetCreator("Dolibarr ".DOL_VERSION);
$pdf->SetFont('Times','B',14); $pdf->SetAuthor($user->fullname);
$pdf->MultiCell(76, 8, FAC_PDF_INTITULE, 0, 'L');
} $this->_pagehead($pdf, $propale);
$pdf->SetTextColor(70,70,170); $tab_top = 100;
if (defined("FAC_PDF_ADRESSE")) $tab_height = 150;
{
$pdf->SetFont('Times','',12); $pdf->SetFillColor(220,220,220);
$pdf->MultiCell(76, 5, FAC_PDF_ADRESSE);
} $pdf->SetTextColor(0,0,0);
if (defined("FAC_PDF_TEL")) $pdf->SetFont('Arial','', 10);
{
$pdf->SetFont('Times','',10); $pdf->SetXY (10, $tab_top + 10 );
$pdf->MultiCell(76, 5, "Tél : ".FAC_PDF_TEL);
} $iniY = $pdf->GetY();
if (defined("FAC_PDF_SIREN")) $curY = $pdf->GetY();
{ $nexY = $pdf->GetY();
$pdf->SetFont('Times','',10); $nblignes = sizeof($propale->lignes);
$pdf->MultiCell(76, 5, "SIREN : ".FAC_PDF_SIREN);
} for ($i = 0 ; $i < $nblignes ; $i++)
{
if (defined("FAC_PDF_INTITULE2"))
{ $curY = $nexY;
$pdf->SetXY(100,5);
$pdf->SetFont('Times','B',14); $pdf->SetXY (30, $curY );
$pdf->SetTextColor(0,0,200);
$pdf->MultiCell(100, 10, FAC_PDF_INTITULE2, '' , 'R'); $pdf->MultiCell(100, 5, $propale->lignes[$i]->desc, 0, 'J', 0);
}
/* $nexY = $pdf->GetY();
* Adresse Client
*/ $pdf->SetXY (10, $curY );
$pdf->SetTextColor(0,0,0);
$pdf->SetFont('Courier','B',12); $pdf->MultiCell(20, 5, $propale->lignes[$i]->ref, 0, 'C');
$propale->fetch_client();
$pdf->SetXY(102,42); $pdf->SetXY (133, $curY );
$pdf->MultiCell(96,5, $propale->client->nom); $pdf->MultiCell(10, 5, $propale->lignes[$i]->tva_tx, 0, 'C');
$pdf->SetFont('Courier','B',11);
$pdf->SetXY(102,47); $pdf->SetXY (145, $curY );
$pdf->MultiCell(96,5, $propale->client->adresse . "\n" . $propale->client->cp . " " . $propale->client->ville); $pdf->MultiCell(10, 5, $propale->lignes[$i]->qty, 0, 'C');
$pdf->rect(100, 40, 100, 40);
$pdf->SetXY (156, $curY );
$pdf->MultiCell(18, 5, price($propale->lignes[$i]->price), 0, 'R', 0);
$pdf->SetTextColor(200,0,0);
$pdf->SetFont('Courier','B',12); $pdf->SetXY (174, $curY );
$pdf->Text(11, 88, "Date : " . dolibarr_print_date($propale->date,'day')); $total = price($propale->lignes[$i]->price * $propale->lignes[$i]->qty);
$pdf->Text(11, 94, "Proposition commerciale : ".$propale->ref); $pdf->MultiCell(26, 5, $total, 0, 'R', 0);
$pdf->line(10, $curY, 200, $curY );
}
if ($nexY > 240 && $i < $nblignes - 1)
{
$this->_tableau($pdf, $tab_top, $tab_height, $nexY);
$pdf->AddPage();
$nexY = $iniY;
$this->_pagehead($pdf, $propale);
$pdf->SetTextColor(0,0,0);
$pdf->SetFont('Arial','', 10);
}
}
$this->_tableau($pdf, $tab_top, $tab_height, $nexY);
/*
*
*/
$tab2_top = 254;
$tab2_lh = 7;
$tab2_height = $tab2_lh * 3;
$pdf->SetFont('Arial','', 11);
$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*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(174, $tab2_top, 174, $tab2_top + $tab2_height);
$pdf->SetXY (132, $tab2_top + 0);
$pdf->MultiCell(42, $tab2_lh, "Total HT", 0, 'R', 0);
$pdf->SetXY (132, $tab2_top + $tab2_lh);
$pdf->MultiCell(42, $tab2_lh, "Total TVA", 0, 'R', 0);
$pdf->SetXY (132, $tab2_top + ($tab2_lh*2));
$pdf->MultiCell(42, $tab2_lh, "Total TTC", 1, 'R', 1);
$pdf->SetXY (174, $tab2_top + 0);
$pdf->MultiCell(26, $tab2_lh, price($propale->total_ht), 0, 'R', 0);
$pdf->SetXY (174, $tab2_top + $tab2_lh);
$pdf->MultiCell(26, $tab2_lh, price($propale->total_tva), 0, 'R', 0);
$pdf->SetXY (174, $tab2_top + ($tab2_lh*2));
$pdf->MultiCell(26, $tab2_lh, price($propale->total_ttc), 1, 'R', 1);
/*
*
*/
$pdf->Output($file);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
}
}
}
function _tableau(&$pdf, $tab_top, $tab_height, $nexY)
{
$pdf->SetFont('Arial','',11);
$pdf->Text(30,$tab_top + 5,'D<>signation');
$pdf->line(132, $tab_top, 132, $tab_top + $tab_height);
$pdf->Text(134,$tab_top + 5,'TVA');
$pdf->line(144, $tab_top, 144, $tab_top + $tab_height);
$pdf->Text(147,$tab_top + 5,'Qt<51>');
$pdf->line(156, $tab_top, 156, $tab_top + $tab_height);
$pdf->Text(160,$tab_top + 5,'P.U.');
$pdf->line(174, $tab_top, 174, $tab_top + $tab_height);
$pdf->Text(187,$tab_top + 5,'Total');
// $pdf->Rect(10, $tab_top, 190, $nexY - $tab_top);
$pdf->Rect(10, $tab_top, 190, $tab_height);
$pdf->SetTextColor(0,0,0);
$pdf->SetFont('Arial','',10);
$titre = $langs->trans("AmountInCurrency",$langs->trans("Currency".$conf->monnaie));
$pdf->Text(200 - $pdf->GetStringWidth($titre), 98, $titre);
}
function _pagehead(&$pdf, $propale)
{
$pdf->SetXY(10,5);
if (defined("FAC_PDF_INTITULE"))
{
$pdf->SetTextColor(0,0,200);
$pdf->SetFont('Times','B',14);
$pdf->MultiCell(76, 8, FAC_PDF_INTITULE, 0, 'L');
}
$pdf->SetTextColor(70,70,170);
if (defined("FAC_PDF_ADRESSE"))
{
$pdf->SetFont('Times','',12);
$pdf->MultiCell(76, 5, FAC_PDF_ADRESSE);
}
if (defined("FAC_PDF_TEL"))
{
$pdf->SetFont('Times','',10);
$pdf->MultiCell(76, 5, "T<EFBFBD>l : ".FAC_PDF_TEL);
}
if (defined("FAC_PDF_SIREN"))
{
$pdf->SetFont('Times','',10);
$pdf->MultiCell(76, 5, "SIREN : ".FAC_PDF_SIREN);
}
if (defined("FAC_PDF_INTITULE2"))
{
$pdf->SetXY(100,5);
$pdf->SetFont('Times','B',14);
$pdf->SetTextColor(0,0,200);
$pdf->MultiCell(100, 10, FAC_PDF_INTITULE2, '' , 'R');
}
/*
* Adresse Client
*/
$pdf->SetTextColor(0,0,0);
$pdf->SetFont('Courier','B',12);
$propale->fetch_client();
$pdf->SetXY(102,42);
$pdf->MultiCell(96,5, $propale->client->nom);
$pdf->SetFont('Courier','B',11);
$pdf->SetXY(102,47);
$pdf->MultiCell(96,5, $propale->client->adresse . "\n" . $propale->client->cp . " " . $propale->client->ville);
$pdf->rect(100, 40, 100, 40);
$pdf->SetTextColor(200,0,0);
$pdf->SetFont('Courier','B',12);
$pdf->Text(11, 88, "Date : " . dolibarr_print_date($propale->date,'day'));
$pdf->Text(11, 94, "Proposition commerciale : ".$propale->ref);
}
} }

View File

@ -22,7 +22,7 @@
/** /**
* \file htdocs/fourn/commande/modules/pdf_muscadet.modules.php * \file htdocs/fourn/commande/modules/pdf_muscadet.modules.php
* \ingroup fournisseur * \ingroup fournisseur
* \brief Fichier de la classe permettant de générer les commandes fournisseurs au modèle Muscadet * \brief Fichier de la classe permettant de g<EFBFBD>n<EFBFBD>rer les commandes fournisseurs au mod<EFBFBD>le Muscadet
* \author Regis Houssin * \author Regis Houssin
* \version $Id$ * \version $Id$
*/ */
@ -35,14 +35,14 @@ require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php");
/** /**
* \class pdf_muscadet * \class pdf_muscadet
* \brief Classe permettant de générer les commandes fournisseurs au modèle Muscadet * \brief Classe permettant de g<EFBFBD>n<EFBFBD>rer les commandes fournisseurs au mod<EFBFBD>le Muscadet
*/ */
class pdf_muscadet extends ModelePDFSuppliersOrders class pdf_muscadet extends ModelePDFSuppliersOrders
{ {
/** /**
* \brief Constructeur * \brief Constructeur
* \param db Handler accès base de donnée * \param db Handler acc<EFBFBD>s base de donn<EFBFBD>e
*/ */
function pdf_muscadet($db) function pdf_muscadet($db)
{ {
@ -53,7 +53,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
$this->db = $db; $this->db = $db;
$this->name = "muscadet"; $this->name = "muscadet";
$this->description = "Modèle de commandes fournisseur complet (logo...)"; $this->description = "Mod<EFBFBD>le de commandes fournisseur complet (logo...)";
// Dimension page pour format A4 // Dimension page pour format A4
$this->type = 'pdf'; $this->type = 'pdf';
@ -67,8 +67,8 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
$this->option_logo = 1; // Affiche logo $this->option_logo = 1; // Affiche logo
$this->option_tva = 1; // Gere option tva FACTURE_TVAOPTION $this->option_tva = 1; // Gere option tva FACTURE_TVAOPTION
$this->option_modereg = 1; // Affiche mode règlement $this->option_modereg = 1; // Affiche mode r<EFBFBD>glement
$this->option_condreg = 1; // Affiche conditions règlement $this->option_condreg = 1; // Affiche conditions r<EFBFBD>glement
$this->option_codeproduitservice = 1; // Affiche code produit-service $this->option_codeproduitservice = 1; // Affiche code produit-service
$this->option_multilang = 1; // Dispo en plusieurs langues $this->option_multilang = 1; // Dispo en plusieurs langues
@ -77,7 +77,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
// Recupere emmetteur // Recupere emmetteur
$this->emetteur=$mysoc; $this->emetteur=$mysoc;
if (! $this->emetteur->pays_code) $this->emetteur->pays_code=substr($langs->defaultlang,-2); // Par defaut, si n'était pas défini if (! $this->emetteur->pays_code) $this->emetteur->pays_code=substr($langs->defaultlang,-2); // Par defaut, si n'<EFBFBD>tait pas d<>fini
// Defini position des colonnes // Defini position des colonnes
$this->posxdesc=$this->marge_gauche+1; $this->posxdesc=$this->marge_gauche+1;
@ -93,8 +93,8 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
} }
/** /**
\brief Renvoi dernière erreur \brief Renvoi derni<EFBFBD>re erreur
\return string Dernière erreur \return string Derni<EFBFBD>re erreur
*/ */
function pdferror() function pdferror()
{ {
@ -102,8 +102,8 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
} }
/** /**
\brief Fonction générant la commande sur le disque \brief Fonction g<EFBFBD>n<EFBFBD>rant la commande sur le disque
\param id Id de la commande à générer \param id Id de la commande <EFBFBD> g<EFBFBD>n<EFBFBD>rer
\return int 1=ok, 0=ko \return int 1=ok, 0=ko
*/ */
function write_file($com,$outputlangs='') function write_file($com,$outputlangs='')
@ -125,7 +125,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
if ($conf->fournisseur->commande->dir_output) if ($conf->fournisseur->commande->dir_output)
{ {
// Définition de l'objet $com (pour compatibilite ascendante) // D<EFBFBD>finition de l'objet $com (pour compatibilite ascendante)
if (! is_object($com)) if (! is_object($com))
{ {
$id = $com; $id = $com;
@ -134,7 +134,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
} }
$deja_regle = ""; $deja_regle = "";
// Définition de $dir et $file // D<EFBFBD>finition de $dir et $file
if ($com->specimen) if ($com->specimen)
{ {
$dir = $conf->fournisseur->commande->dir_output; $dir = $conf->fournisseur->commande->dir_output;
@ -167,7 +167,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
$pdf=new FPDI_Protection('P','mm',$this->format); $pdf=new FPDI_Protection('P','mm',$this->format);
$pdfrights = array('print'); // Ne permet que l'impression du document $pdfrights = array('print'); // Ne permet que l'impression du document
$pdfuserpass = ''; // Mot de passe pour l'utilisateur final $pdfuserpass = ''; // Mot de passe pour l'utilisateur final
$pdfownerpass = NULL; // Mot de passe du propriétaire, créé aléatoirement si pas défini $pdfownerpass = NULL; // Mot de passe du propri<EFBFBD>taire, cr<63><72> al<61>atoirement si pas d<>fini
$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
} }
else else
@ -210,7 +210,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
{ {
$tab_top = 88; $tab_top = 88;
$pdf->SetFont('Arial','', 9); // Dans boucle pour gérer multi-page $pdf->SetFont('Arial','', 9); // Dans boucle pour g<EFBFBD>rer multi-page
$pdf->SetXY ($this->posxdesc-1, $tab_top); $pdf->SetXY ($this->posxdesc-1, $tab_top);
$pdf->MultiCell(190, 3, $com->note_public, 0, 'J'); $pdf->MultiCell(190, 3, $com->note_public, 0, 'J');
$nexY = $pdf->GetY(); $nexY = $pdf->GetY();
@ -244,22 +244,22 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
if ($libelleproduitservice) $libelleproduitservice.="<br>"; if ($libelleproduitservice) $libelleproduitservice.="<br>";
$libelleproduitservice.=dol_htmlentitiesbr($com->lignes[$i]->desc,1); $libelleproduitservice.=dol_htmlentitiesbr($com->lignes[$i]->desc,1);
} }
// Si ligne associée à un code produit // Si ligne associ<EFBFBD>e <20> un code produit
if ($com->lignes[$i]->fk_product) if ($com->lignes[$i]->fk_product)
{ {
$libelleproduitservice=$outputlangs->transnoentities("Product")." ".$com->lignes[$i]->ref_fourn." - ".$libelleproduitservice; $libelleproduitservice=$outputlangs->transnoentities("Product")." ".$com->lignes[$i]->ref_fourn." - ".$libelleproduitservice;
} }
if ($com->lignes[$i]->date_start && $com->lignes[$i]->date_end) if ($com->lignes[$i]->date_start && $com->lignes[$i]->date_end)
{ {
// Affichage durée si il y en a une // Affichage dur<EFBFBD>e si il y en a une
$libelleproduitservice.="<br>".dol_htmlentitiesbr("(".$outputlangs->transnoentities("From")." ".dolibarr_print_date($com->lignes[$i]->date_start)." ".$outputlangs->transnoentities("to")." ".dolibarr_print_date($com->lignes[$i]->date_end).")",1); $libelleproduitservice.="<br>".dol_htmlentitiesbr("(".$outputlangs->transnoentities("From")." ".dolibarr_print_date($com->lignes[$i]->date_start)." ".$outputlangs->transnoentities("to")." ".dolibarr_print_date($com->lignes[$i]->date_end).")",1);
} }
$pdf->SetFont('Arial','', 9); // Dans boucle pour gérer multi-page $pdf->SetFont('Arial','', 9); // Dans boucle pour g<EFBFBD>rer multi-page
$pdf->writeHTMLCell(108, 4, $this->posxdesc-1, $curY, $libelleproduitservice, 0, 1); $pdf->writeHTMLCell(108, 4, $this->posxdesc-1, $curY, $libelleproduitservice, 0, 1);
$pdf->SetFont('Arial','', 9); // On repositionne la police par défaut $pdf->SetFont('Arial','', 9); // On repositionne la police par d<EFBFBD>faut
$nexY = $pdf->GetY(); $nexY = $pdf->GetY();
@ -271,7 +271,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
$pdf->SetXY ($this->posxup, $curY); $pdf->SetXY ($this->posxup, $curY);
$pdf->MultiCell(18, 4, price($com->lignes[$i]->subprice), 0, 'R', 0); $pdf->MultiCell(18, 4, price($com->lignes[$i]->subprice), 0, 'R', 0);
// Quantité // Quantit<EFBFBD>
$pdf->SetXY ($this->posxqty, $curY); $pdf->SetXY ($this->posxqty, $curY);
$pdf->MultiCell(10, 4, $com->lignes[$i]->qty, 0, 'R'); $pdf->MultiCell(10, 4, $com->lignes[$i]->qty, 0, 'R');
@ -333,7 +333,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
} }
/* /*
* Mode de règlement * Mode de r<EFBFBD>glement
*/ */
if ((! defined("FACTURE_CHQ_NUMBER") || ! FACTURE_CHQ_NUMBER) && (! defined("FACTURE_RIB_NUMBER") || ! FACTURE_RIB_NUMBER)) if ((! defined("FACTURE_CHQ_NUMBER") || ! FACTURE_CHQ_NUMBER) && (! defined("FACTURE_RIB_NUMBER") || ! FACTURE_RIB_NUMBER))
{ {
@ -346,7 +346,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
} }
/* /*
* Propose mode règlement par CHQ * Propose mode r<EFBFBD>glement par CHQ
*/ */
/* /*
if (defined("FACTURE_CHQ_NUMBER")) if (defined("FACTURE_CHQ_NUMBER"))
@ -358,7 +358,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
$pdf->SetXY ($this->marge_gauche, 227); $pdf->SetXY ($this->marge_gauche, 227);
$pdf->SetFont('Arial','B',8); $pdf->SetFont('Arial','B',8);
$pdf->MultiCell(90, 3, "Règlement par chèque à l'ordre de ".$account->proprio." envoyé à:",0,'L',0); $pdf->MultiCell(90, 3, "R<EFBFBD>glement par ch<63>que <20> l'ordre de ".$account->proprio." envoy<EFBFBD> <20>:",0,'L',0);
$pdf->SetXY ($this->marge_gauche, 231); $pdf->SetXY ($this->marge_gauche, 231);
$pdf->SetFont('Arial','',8); $pdf->SetFont('Arial','',8);
$pdf->MultiCell(80, 3, $account->adresse_proprio, 0, 'L', 0); $pdf->MultiCell(80, 3, $account->adresse_proprio, 0, 'L', 0);
@ -367,7 +367,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
*/ */
/* /*
* Propose mode règlement par RIB * Propose mode r<EFBFBD>glement par RIB
*/ */
/* /*
if (defined("FACTURE_RIB_NUMBER")) if (defined("FACTURE_RIB_NUMBER"))
@ -382,7 +382,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
$cury=242; $cury=242;
$pdf->SetXY ($this->marges['g'], $cury); $pdf->SetXY ($this->marges['g'], $cury);
$pdf->SetFont('Arial','B',8); $pdf->SetFont('Arial','B',8);
$pdf->MultiCell(90, 3, "Règlement par virement sur le compte bancaire suivant:", 0, 'L', 0); $pdf->MultiCell(90, 3, "R<EFBFBD>glement par virement sur le compte bancaire suivant:", 0, 'L', 0);
$cury+=4; $cury+=4;
$pdf->SetFont('Arial','B',6); $pdf->SetFont('Arial','B',6);
$pdf->line($this->marges['g']+1, $cury, $this->marges['g']+1, $cury+10 ); $pdf->line($this->marges['g']+1, $cury, $this->marges['g']+1, $cury+10 );
@ -393,10 +393,10 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
$pdf->MultiCell(18, 3, "Code guichet", 0, 'C', 0); $pdf->MultiCell(18, 3, "Code guichet", 0, 'C', 0);
$pdf->line($this->marges['g']+36, $cury, $this->marges['g']+36, $cury+10 ); $pdf->line($this->marges['g']+36, $cury, $this->marges['g']+36, $cury+10 );
$pdf->SetXY ($this->marges['g']+36, $cury); $pdf->SetXY ($this->marges['g']+36, $cury);
$pdf->MultiCell(24, 3, "Numéro compte", 0, 'C', 0); $pdf->MultiCell(24, 3, "Num<EFBFBD>ro compte", 0, 'C', 0);
$pdf->line($this->marges['g']+60, $cury, $this->marges['g']+60, $cury+10 ); $pdf->line($this->marges['g']+60, $cury, $this->marges['g']+60, $cury+10 );
$pdf->SetXY ($this->marges['g']+60, $cury); $pdf->SetXY ($this->marges['g']+60, $cury);
$pdf->MultiCell(13, 3, "Clé RIB", 0, 'C', 0); $pdf->MultiCell(13, 3, "Cl<EFBFBD> RIB", 0, 'C', 0);
$pdf->line($this->marges['g']+73, $cury, $this->marges['g']+73, $cury+10 ); $pdf->line($this->marges['g']+73, $cury, $this->marges['g']+73, $cury+10 );
$pdf->SetFont('Arial','',8); $pdf->SetFont('Arial','',8);
@ -421,13 +421,13 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
*/ */
/* /*
* Conditions de règlements * Conditions de r<EFBFBD>glements
*/ */
/* Pour l'instant les conditions de règlement ne sont pas gérées sur les propales */ /* Pour l'instant les conditions de r<EFBFBD>glement ne sont pas g<>r<EFBFBD>es sur les propales */
/* /*
$pdf->SetFont('Arial','B',10); $pdf->SetFont('Arial','B',10);
$pdf->SetXY($this->marge_gauche, 217); $pdf->SetXY($this->marge_gauche, 217);
$titre = "Conditions de réglement:"; $titre = "Conditions de r<EFBFBD>glement:";
$pdf->MultiCell(80, 5, $titre, 0, 'L'); $pdf->MultiCell(80, 5, $titre, 0, 'L');
$pdf->SetFont('Arial','',10); $pdf->SetFont('Arial','',10);
$pdf->SetXY(54, 217); $pdf->SetXY(54, 217);
@ -443,7 +443,9 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
$pdf->Close(); $pdf->Close();
$pdf->Output($file); $pdf->Output($file);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
return 1; // Pas d'erreur return 1; // Pas d'erreur
} }
else else
@ -462,7 +464,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
} }
/** /**
* \brief Affiche le total à payer * \brief Affiche le total <EFBFBD> payer
* \param pdf Objet PDF * \param pdf Objet PDF
* \param object Objet order * \param object Objet order
* \param deja_regle Montant deja regle * \param deja_regle Montant deja regle
@ -503,7 +505,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
$pdf->MultiCell($largcol2, $tab2_hl, "-".$object->remise_percent."%", 0, 'R', 1); $pdf->MultiCell($largcol2, $tab2_hl, "-".$object->remise_percent."%", 0, 'R', 1);
$pdf->SetXY ($col1x, $tab2_top + $tab2_hl * 2); $pdf->SetXY ($col1x, $tab2_top + $tab2_hl * 2);
$pdf->MultiCell($col2x-$col1x, $tab2_hl, "Total HT après remise", 0, 'L', 1); $pdf->MultiCell($col2x-$col1x, $tab2_hl, "Total HT apr<EFBFBD>s remise", 0, 'L', 1);
$pdf->SetXY ($col2x, $tab2_top + $tab2_hl * 2); $pdf->SetXY ($col2x, $tab2_top + $tab2_hl * 2);
$pdf->MultiCell($largcol2, $tab2_hl, price($object->total_ht), 0, 'R', 0); $pdf->MultiCell($largcol2, $tab2_hl, price($object->total_ht), 0, 'R', 0);
@ -515,7 +517,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
$index = 0; $index = 0;
} }
// Affichage des totaux de TVA par taux (conformément à réglementation) // Affichage des totaux de TVA par taux (conform<EFBFBD>ment <20> r<>glementation)
$pdf->SetFillColor(248,248,248); $pdf->SetFillColor(248,248,248);
foreach( $this->tva as $tvakey => $tvaval ) foreach( $this->tva as $tvakey => $tvaval )
@ -599,7 +601,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
{ {
global $conf; global $conf;
// Montants exprimés en (en tab_top - 1) // Montants exprim<EFBFBD>s en (en tab_top - 1)
$pdf->SetTextColor(0,0,0); $pdf->SetTextColor(0,0,0);
$pdf->SetFont('Arial','',8); $pdf->SetFont('Arial','',8);
$titre = $outputlangs->transnoentities("AmountInCurrency",$outputlangs->transnoentities("Currency".$conf->monnaie)); $titre = $outputlangs->transnoentities("AmountInCurrency",$outputlangs->transnoentities("Currency".$conf->monnaie));
@ -724,7 +726,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
if (defined("FAC_PDF_SOCIETE_NOM") && FAC_PDF_SOCIETE_NOM) $pdf->MultiCell(80, 4, FAC_PDF_SOCIETE_NOM, 0, 'L'); if (defined("FAC_PDF_SOCIETE_NOM") && FAC_PDF_SOCIETE_NOM) $pdf->MultiCell(80, 4, FAC_PDF_SOCIETE_NOM, 0, 'L');
else $pdf->MultiCell(80, 4, $mysoc->nom, 0, 'L'); else $pdf->MultiCell(80, 4, $mysoc->nom, 0, 'L');
// Caractéristiques emetteur // Caract<EFBFBD>ristiques emetteur
$carac_emetteur = ''; $carac_emetteur = '';
if (defined("FAC_PDF_ADRESSE") && FAC_PDF_ADRESSE) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).FAC_PDF_ADRESSE; if (defined("FAC_PDF_ADRESSE") && FAC_PDF_ADRESSE) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).FAC_PDF_ADRESSE;
else { else {
@ -769,7 +771,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
$pdf->SetFont('Arial','B',11); $pdf->SetFont('Arial','B',11);
$pdf->MultiCell(106,4, $object->client->nom, 0, 'L'); $pdf->MultiCell(106,4, $object->client->nom, 0, 'L');
// Caractéristiques client // Caract<EFBFBD>ristiques client
$carac_client=$object->client->adresse; $carac_client=$object->client->adresse;
$carac_client.="\n".$object->client->cp . " " . $object->client->ville."\n"; $carac_client.="\n".$object->client->cp . " " . $object->client->ville."\n";
if ($object->client->tva_intra) $carac_client.="\n".$outputlangs->transnoentities("VATIntraShort").': '.$object->client->tva_intra; if ($object->client->tva_intra) $carac_client.="\n".$outputlangs->transnoentities("VATIntraShort").': '.$object->client->tva_intra;

View File

@ -270,6 +270,9 @@ class pdf_edison extends ModelePDFCommandes
$pdf->Close(); $pdf->Close();
$pdf->Output($file); $pdf->Output($file);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
$langs->setPhpLang(); // On restaure langue session $langs->setPhpLang(); // On restaure langue session
return 1; return 1;
} }

View File

@ -22,7 +22,7 @@
/** /**
\file htdocs/includes/modules/commande/pdf_einstein.modules.php \file htdocs/includes/modules/commande/pdf_einstein.modules.php
\ingroup commande \ingroup commande
\brief Fichier de la classe permettant de générer les commandes au modèle Einstein \brief Fichier de la classe permettant de g<EFBFBD>n<EFBFBD>rer les commandes au mod<EFBFBD>le Einstein
\author Laurent Destailleur \author Laurent Destailleur
\version $Id$ \version $Id$
*/ */
@ -34,7 +34,7 @@ require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php");
/** /**
\class pdf_einstein \class pdf_einstein
\brief Classe permettant de générer les commandes au modèle Einstein \brief Classe permettant de g<EFBFBD>n<EFBFBD>rer les commandes au mod<EFBFBD>le Einstein
*/ */
class pdf_einstein extends ModelePDFCommandes class pdf_einstein extends ModelePDFCommandes
@ -44,7 +44,7 @@ class pdf_einstein extends ModelePDFCommandes
/** /**
\brief Constructeur \brief Constructeur
\param db Handler accès base de donnée \param db Handler acc<EFBFBD>s base de donn<EFBFBD>e
*/ */
function pdf_einstein($db) function pdf_einstein($db)
{ {
@ -69,12 +69,12 @@ class pdf_einstein extends ModelePDFCommandes
$this->option_logo = 1; // Affiche logo $this->option_logo = 1; // Affiche logo
$this->option_tva = 1; // Gere option tva FACTURE_TVAOPTION $this->option_tva = 1; // Gere option tva FACTURE_TVAOPTION
$this->option_modereg = 1; // Affiche mode règlement $this->option_modereg = 1; // Affiche mode r<EFBFBD>glement
$this->option_condreg = 1; // Affiche conditions règlement $this->option_condreg = 1; // Affiche conditions r<EFBFBD>glement
$this->option_codeproduitservice = 1; // Affiche code produit-service $this->option_codeproduitservice = 1; // Affiche code produit-service
$this->option_multilang = 1; // Dispo en plusieurs langues $this->option_multilang = 1; // Dispo en plusieurs langues
$this->option_escompte = 1; // Affiche si il y a eu escompte $this->option_escompte = 1; // Affiche si il y a eu escompte
$this->option_credit_note = 1; // Gère les avoirs $this->option_credit_note = 1; // G<EFBFBD>re les avoirs
$this->option_freetext = 1; // Support add of a personalised text $this->option_freetext = 1; // Support add of a personalised text
$this->option_draft_watermark = 1; //Support add of a watermark on drafts $this->option_draft_watermark = 1; //Support add of a watermark on drafts
@ -83,7 +83,7 @@ class pdf_einstein extends ModelePDFCommandes
// Recupere emmetteur // Recupere emmetteur
$this->emetteur=$mysoc; $this->emetteur=$mysoc;
if (! $this->emetteur->pays_code) $this->emetteur->pays_code=substr($langs->defaultlang,-2); // Par defaut, si n'était pas défini if (! $this->emetteur->pays_code) $this->emetteur->pays_code=substr($langs->defaultlang,-2); // Par defaut, si n'<EFBFBD>tait pas d<>fini
// Defini position des colonnes // Defini position des colonnes
$this->posxdesc=$this->marge_gauche+1; $this->posxdesc=$this->marge_gauche+1;
@ -99,8 +99,8 @@ class pdf_einstein extends ModelePDFCommandes
} }
/** /**
* \brief Fonction générant la commande sur le disque * \brief Fonction g<EFBFBD>n<EFBFBD>rant la commande sur le disque
* \param com Objet commande à générer * \param com Objet commande <EFBFBD> g<EFBFBD>n<EFBFBD>rer
* \param outputlangs Lang object for output language * \param outputlangs Lang object for output language
* \return int 1=ok, 0=ko * \return int 1=ok, 0=ko
*/ */
@ -123,7 +123,7 @@ class pdf_einstein extends ModelePDFCommandes
if ($conf->commande->dir_output) if ($conf->commande->dir_output)
{ {
// Définition de l'objet $com (pour compatibilite ascendante) // D<EFBFBD>finition de l'objet $com (pour compatibilite ascendante)
if (! is_object($com)) if (! is_object($com))
{ {
$id = $com; $id = $com;
@ -132,7 +132,7 @@ class pdf_einstein extends ModelePDFCommandes
} }
$deja_regle = ""; $deja_regle = "";
// Définition de $dir et $file // D<EFBFBD>finition de $dir et $file
if ($com->specimen) if ($com->specimen)
{ {
$dir = $conf->commande->dir_output; $dir = $conf->commande->dir_output;
@ -164,7 +164,7 @@ class pdf_einstein extends ModelePDFCommandes
$pdf=new FPDI_Protection('P','mm',$this->format); $pdf=new FPDI_Protection('P','mm',$this->format);
$pdfrights = array('print'); // Ne permet que l'impression du document $pdfrights = array('print'); // Ne permet que l'impression du document
$pdfuserpass = ''; // Mot de passe pour l'utilisateur final $pdfuserpass = ''; // Mot de passe pour l'utilisateur final
$pdfownerpass = NULL; // Mot de passe du propriétaire, créé aléatoirement si pas défini $pdfownerpass = NULL; // Mot de passe du propri<EFBFBD>taire, cr<63><72> al<61>atoirement si pas d<>fini
$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
} }
else else
@ -208,7 +208,7 @@ class pdf_einstein extends ModelePDFCommandes
{ {
$tab_top = 88; $tab_top = 88;
$pdf->SetFont('Arial','', 9); // Dans boucle pour gérer multi-page $pdf->SetFont('Arial','', 9); // Dans boucle pour g<EFBFBD>rer multi-page
$pdf->SetXY ($this->posxdesc-1, $tab_top); $pdf->SetXY ($this->posxdesc-1, $tab_top);
$pdf->MultiCell(190, 3, $com->note_public, 0, 'J'); $pdf->MultiCell(190, 3, $com->note_public, 0, 'J');
$nexY = $pdf->GetY(); $nexY = $pdf->GetY();
@ -251,7 +251,7 @@ class pdf_einstein extends ModelePDFCommandes
$libelleproduitservice.=dol_htmlentitiesbr($com->lignes[$i]->desc,1); $libelleproduitservice.=dol_htmlentitiesbr($com->lignes[$i]->desc,1);
} }
} }
// Si ligne associée à un code produit // Si ligne associ<EFBFBD>e <20> un code produit
if ($com->lignes[$i]->fk_product) if ($com->lignes[$i]->fk_product)
{ {
$prodser = new Product($this->db); $prodser = new Product($this->db);
@ -282,7 +282,7 @@ class pdf_einstein extends ModelePDFCommandes
// Description // Description
$pdf->writeHTMLCell($this->posxtva-$this->posxdesc-1, 3, $this->posxdesc-1, $curY, $libelleproduitservice, 0, 1); $pdf->writeHTMLCell($this->posxtva-$this->posxdesc-1, 3, $this->posxdesc-1, $curY, $libelleproduitservice, 0, 1);
$pdf->SetFont('Arial','', 9); // On repositionne la police par défaut $pdf->SetFont('Arial','', 9); // On repositionne la police par d<EFBFBD>faut
$nexY = $pdf->GetY(); $nexY = $pdf->GetY();
@ -322,9 +322,9 @@ class pdf_einstein extends ModelePDFCommandes
// cherche nombre de lignes a venir pour savoir si place suffisante // cherche nombre de lignes a venir pour savoir si place suffisante
if ($i < ($nblignes - 1)) // If it's not last line if ($i < ($nblignes - 1)) // If it's not last line
{ {
//on récupère la description du produit suivant //on r<EFBFBD>cup<EFBFBD>re la description du produit suivant
$follow_descproduitservice = $com->lignes[$i+1]->desc; $follow_descproduitservice = $com->lignes[$i+1]->desc;
//on compte le nombre de ligne afin de vérifier la place disponible (largeur de ligne 52 caracteres) //on compte le nombre de ligne afin de v<EFBFBD>rifier la place disponible (largeur de ligne 52 caracteres)
$nblineFollowDesc = (num_lines($follow_descproduitservice,52)*4); $nblineFollowDesc = (num_lines($follow_descproduitservice,52)*4);
} }
else // If it's last line else // If it's last line
@ -388,7 +388,9 @@ class pdf_einstein extends ModelePDFCommandes
$pdf->Close(); $pdf->Close();
$pdf->Output($file); $pdf->Output($file);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
$langs->setPhpLang(); // On restaure langue session $langs->setPhpLang(); // On restaure langue session
return 1; // Pas d'erreur return 1; // Pas d'erreur
} }
@ -612,7 +614,7 @@ class pdf_einstein extends ModelePDFCommandes
$index = 0; $index = 0;
// Affichage des totaux de TVA par taux (conformément à réglementation) // Affichage des totaux de TVA par taux (conform<EFBFBD>ment <20> r<>glementation)
$pdf->SetFillColor(248,248,248); $pdf->SetFillColor(248,248,248);
foreach( $this->tva as $tvakey => $tvaval ) foreach( $this->tva as $tvakey => $tvaval )
@ -699,7 +701,7 @@ class pdf_einstein extends ModelePDFCommandes
{ {
global $conf; global $conf;
// Montants exprimés en (en tab_top - 1) // Montants exprim<EFBFBD>s en (en tab_top - 1)
$pdf->SetTextColor(0,0,0); $pdf->SetTextColor(0,0,0);
$pdf->SetFont('Arial','',8); $pdf->SetFont('Arial','',8);
$titre = $outputlangs->transnoentities("AmountInCurrency",$outputlangs->transnoentities("Currency".$conf->monnaie)); $titre = $outputlangs->transnoentities("AmountInCurrency",$outputlangs->transnoentities("Currency".$conf->monnaie));
@ -746,7 +748,7 @@ class pdf_einstein extends ModelePDFCommandes
} }
/* /*
* \brief Affiche en-tête commande * \brief Affiche en-t<EFBFBD>te commande
* \param pdf Objet PDF * \param pdf Objet PDF
* \param com Objet commande * \param com Objet commande
* \param showadress 0=non, 1=oui * \param showadress 0=non, 1=oui
@ -853,7 +855,7 @@ class pdf_einstein extends ModelePDFCommandes
if (defined("FAC_PDF_SOCIETE_NOM") && FAC_PDF_SOCIETE_NOM) $pdf->MultiCell(80, 4, FAC_PDF_SOCIETE_NOM, 0, 'L'); if (defined("FAC_PDF_SOCIETE_NOM") && FAC_PDF_SOCIETE_NOM) $pdf->MultiCell(80, 4, FAC_PDF_SOCIETE_NOM, 0, 'L');
else $pdf->MultiCell(80, 4, $this->emetteur->nom, 0, 'L'); else $pdf->MultiCell(80, 4, $this->emetteur->nom, 0, 'L');
// Caractéristiques emetteur // Caract<EFBFBD>ristiques emetteur
$carac_emetteur = ''; $carac_emetteur = '';
if (defined("FAC_PDF_ADRESSE") && FAC_PDF_ADRESSE) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).FAC_PDF_ADRESSE; if (defined("FAC_PDF_ADRESSE") && FAC_PDF_ADRESSE) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).FAC_PDF_ADRESSE;
else { else {
@ -915,7 +917,7 @@ class pdf_einstein extends ModelePDFCommandes
// Nom client // Nom client
$carac_client = "\n".$object->contact->getFullName($outputlangs,1,1); $carac_client = "\n".$object->contact->getFullName($outputlangs,1,1);
// Caractéristiques client // Caract<EFBFBD>ristiques client
$carac_client.="\n".$object->contact->adresse; $carac_client.="\n".$object->contact->adresse;
$carac_client.="\n".$object->contact->cp . " " . $object->contact->ville."\n"; $carac_client.="\n".$object->contact->cp . " " . $object->contact->ville."\n";
//Pays si different de l'emetteur //Pays si different de l'emetteur
@ -931,19 +933,19 @@ class pdf_einstein extends ModelePDFCommandes
$pdf->SetFont('Arial','B',11); $pdf->SetFont('Arial','B',11);
$pdf->MultiCell(96,4, $object->client->nom, 0, 'L'); $pdf->MultiCell(96,4, $object->client->nom, 0, 'L');
// Nom du contact suivi commande si c'est une société // Nom du contact suivi commande si c'est une soci<EFBFBD>t<EFBFBD>
$arrayidcontact = $object->getIdContact('external','CUSTOMER'); $arrayidcontact = $object->getIdContact('external','CUSTOMER');
if (sizeof($arrayidcontact) > 0) if (sizeof($arrayidcontact) > 0)
{ {
$object->fetch_contact($arrayidcontact[0]); $object->fetch_contact($arrayidcontact[0]);
// On vérifie si c'est une société ou un particulier // On v<EFBFBD>rifie si c'est une soci<63>t<EFBFBD> ou un particulier
if( !preg_match('#'.$object->contact->getFullName($outputlangs,1).'#isU',$object->client->nom) ) if( !preg_match('#'.$object->contact->getFullName($outputlangs,1).'#isU',$object->client->nom) )
{ {
$carac_client .= "\n".$object->contact->getFullName($outputlangs,1,1); $carac_client .= "\n".$object->contact->getFullName($outputlangs,1,1);
} }
} }
// Caractéristiques client // Caract<EFBFBD>ristiques client
$carac_client.="\n".$object->client->adresse; $carac_client.="\n".$object->client->adresse;
$carac_client.="\n".$object->client->cp . " " . $object->client->ville."\n"; $carac_client.="\n".$object->client->cp . " " . $object->client->ville."\n";
@ -953,7 +955,7 @@ class pdf_einstein extends ModelePDFCommandes
$carac_client.=dol_entity_decode($object->client->pays)."\n"; $carac_client.=dol_entity_decode($object->client->pays)."\n";
} }
} }
// Numéro TVA intracom // Num<EFBFBD>ro TVA intracom
if ($object->client->tva_intra) $carac_client.="\n".$outputlangs->transnoentities("VATIntraShort").': '.$object->client->tva_intra; if ($object->client->tva_intra) $carac_client.="\n".$outputlangs->transnoentities("VATIntraShort").': '.$object->client->tva_intra;
$pdf->SetFont('Arial','',9); $pdf->SetFont('Arial','',9);
$posy=$pdf->GetY()-9; //Auto Y coord readjust for multiline name $posy=$pdf->GetY()-9; //Auto Y coord readjust for multiline name

View File

@ -130,7 +130,9 @@ class html_cerfafr extends ModeleDon
$handle=fopen($file,"w"); $handle=fopen($file,"w");
fwrite($handle,$html); fwrite($handle,$html);
fclose($handle); fclose($handle);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
return 1; return 1;
} }
else else

View File

@ -21,30 +21,30 @@
*/ */
/** /**
\file htdocs/includes/modules/facture/modules_facture.php \file htdocs/includes/modules/facture/modules_facture.php
\ingroup facture \ingroup facture
\brief Fichier contenant la classe mère de generation des factures en PDF \brief Fichier contenant la classe m<EFBFBD>re de generation des factures en PDF
et la classe mère de numérotation des factures et la classe m<EFBFBD>re de num<EFBFBD>rotation des factures
\version $Id$ \version $Id$
*/ */
require_once(DOL_DOCUMENT_ROOT.'/lib/functions.lib.php'); require_once(DOL_DOCUMENT_ROOT.'/lib/functions.lib.php');
require_once(DOL_DOCUMENT_ROOT.'/includes/fpdf/fpdfi/fpdi_protection.php'); require_once(DOL_DOCUMENT_ROOT.'/includes/fpdf/fpdfi/fpdi_protection.php');
require_once(DOL_DOCUMENT_ROOT."/product.class.php"); require_once(DOL_DOCUMENT_ROOT."/product.class.php");
require_once(DOL_DOCUMENT_ROOT."/compta/bank/account.class.php"); // Requis car utilisé dans les classes qui héritent require_once(DOL_DOCUMENT_ROOT."/compta/bank/account.class.php"); // Requis car utilis<EFBFBD> dans les classes qui h<>ritent
/** /**
\class ModelePDFFactures \class ModelePDFFactures
\brief Classe mère des modèles de facture \brief Classe m<EFBFBD>re des mod<EFBFBD>les de facture
*/ */
class ModelePDFFactures extends FPDF class ModelePDFFactures extends FPDF
{ {
var $error=''; var $error='';
/** /**
* \brief Renvoi le dernier message d'erreur de création de facture * \brief Renvoi le dernier message d'erreur de cr<EFBFBD>ation de facture
*/ */
function pdferror() function pdferror()
{ {
@ -52,16 +52,16 @@ class ModelePDFFactures extends FPDF
} }
/** /**
* \brief Renvoi la liste des modèles actifs * \brief Renvoi la liste des mod<EFBFBD>les actifs
* \param db Handler de base * \param db Handler de base
*/ */
function liste_modeles($db) function liste_modeles($db)
{ {
$type='invoice'; $type='invoice';
$liste=array(); $liste=array();
$sql ="SELECT nom as id, nom as lib"; $sql ="SELECT nom as id, nom as lib";
$sql.=" FROM ".MAIN_DB_PREFIX."document_model"; $sql.=" FROM ".MAIN_DB_PREFIX."document_model";
$sql.=" WHERE type = '".$type."'"; $sql.=" WHERE type = '".$type."'";
$resql = $db->query($sql); $resql = $db->query($sql);
if ($resql) if ($resql)
@ -86,64 +86,64 @@ class ModelePDFFactures extends FPDF
} }
/** /**
\class ModeleNumRefFactures \class ModeleNumRefFactures
\brief Classe mère des modèles de numérotation des références de facture \brief Classe m<EFBFBD>re des mod<EFBFBD>les de num<EFBFBD>rotation des r<EFBFBD>f<EFBFBD>rences de factur
*/ */
class ModeleNumRefFactures class ModeleNumRefFactures
{ {
var $error=''; var $error='';
/** \brief Return if a module can be used or not /** \brief Return if a module can be used or not
* \return boolean true if module can be used * \return boolean true if module can be used
*/ */
function isEnabled() function isEnabled()
{ {
return true; return true;
} }
/** \brief Renvoi la description par defaut du modele de numérotation /** \brief Renvoi la description par defaut du modele de num<EFBFBD>rotation
* \return string Texte descripif * \return string Texte descripif
*/ */
function info() function info()
{ {
global $langs; global $langs;
$langs->load("bills"); $langs->load("bills");
return $langs->trans("NoDescription"); return $langs->trans("NoDescription");
} }
/** \brief Renvoi un exemple de numérotation /** \brief Renvoi un exemple de num<EFBFBD>rotation
* \return string Example * \return string Example
*/ */
function getExample() function getExample()
{ {
global $langs; global $langs;
$langs->load("bills"); $langs->load("bills");
return $langs->trans("NoExample"); return $langs->trans("NoExample");
} }
/** \brief Test si les numéros déjà en vigueur dans la base ne provoquent pas de /** \brief Test si les num<EFBFBD>ros d<EFBFBD>j<EFBFBD> en vigueur dans la base ne provoquent pas d
* de conflits qui empechera cette numérotation de fonctionner. * de conflits qui empechera cette num<EFBFBD>rotation de fonctionner.
* \return boolean false si conflit, true si ok * \return boolean false si conflit, true si ok
*/ */
function canBeActivated() function canBeActivated()
{ {
return true; return true;
} }
/** \brief Renvoi prochaine valeur attribuée /** \brief Renvoi prochaine valeur attribu<EFBFBD>e
* \param objsoc Objet societe * \param objsoc Objet societe
* \param facture Objet facture * \param facture Objet facture
* \return string Valeur * \return string Valeur
*/ */
function getNextValue($objsoc,$facture) function getNextValue($objsoc,$facture)
{ {
global $langs; global $langs;
return $langs->trans("NotAvailable"); return $langs->trans("NotAvailable");
} }
/** \brief Renvoi version du module numerotation /** \brief Renvoi version du module numerotation
* \return string Valeur * \return string Valeur
*/ */
function getVersion() function getVersion()
{ {
global $langs; global $langs;
@ -153,19 +153,19 @@ class ModeleNumRefFactures
if ($this->version == 'experimental') return $langs->trans("VersionExperimental"); if ($this->version == 'experimental') return $langs->trans("VersionExperimental");
if ($this->version == 'dolibarr') return DOL_VERSION; if ($this->version == 'dolibarr') return DOL_VERSION;
return $langs->trans("NotAvailable"); return $langs->trans("NotAvailable");
} }
} }
/** /**
\brief Crée un facture sur disque en fonction du modèle de FACTURE_ADDON_PDF \brief Cree un facture sur disque en fonction du modele de FACTURE_ADDON_PDF
\param db objet base de donnée \param db objet base de donnee
\param id id de la facture à créer \param id id de la facture a creer
\param message message \param message message
\param modele force le modele à utiliser ('' par defaut) \param modele force le modele a utiliser ('' par defaut)
\param outputlangs objet lang a utiliser pour traduction \param outputlangs objet lang a utiliser pour traduction
\return int <0 si KO, >0 si OK \return int <0 si KO, >0 si OK
*/ */
function facture_pdf_create($db, $id, $message='', $modele='', $outputlangs='') function facture_pdf_create($db, $id, $message='', $modele='', $outputlangs='')
{ {
global $conf,$langs; global $conf,$langs;
@ -173,7 +173,7 @@ function facture_pdf_create($db, $id, $message='', $modele='', $outputlangs='')
$dir = DOL_DOCUMENT_ROOT . "/includes/modules/facture/"; $dir = DOL_DOCUMENT_ROOT . "/includes/modules/facture/";
// Positionne modele sur le nom du modele à utiliser // Positionne modele sur le nom du modele a utiliser
if (! strlen($modele)) if (! strlen($modele))
{ {
if ($conf->global->FACTURE_ADDON_PDF) if ($conf->global->FACTURE_ADDON_PDF)
@ -199,7 +199,7 @@ function facture_pdf_create($db, $id, $message='', $modele='', $outputlangs='')
if ($obj->write_file($id, $outputlangs) > 0) if ($obj->write_file($id, $outputlangs) > 0)
{ {
// Succès de la création de la facture. On génère le fichier meta // Success in building document. We build meta file.
facture_meta_create($db, $id); facture_meta_create($db, $id);
// et on supprime l'image correspondant au preview // et on supprime l'image correspondant au preview
@ -216,17 +216,17 @@ function facture_pdf_create($db, $id, $message='', $modele='', $outputlangs='')
} }
else else
{ {
dolibarr_print_error('',$langs->trans("Error")." ".$langs->trans("ErrorFileDoesNotExists",$dir.$file)); dolibarr_print_error('',$langs->trans("Error")." ".$langs->trans("ErrorFileDoesNotExists",$dir.$file));
return -1; return -1;
} }
} }
/** /**
\brief Créé un meta fichier à côté de la facture sur le disque pour faciliter les recherches en texte plein. Pourquoi ? tout simplement parcequ'en fin d'exercice quand je suis avec mon comptable je n'ai pas de connexion internet "rapide" pour retrouver en 2 secondes une facture non payée ou compliquée à gérer ... avec un rgrep c'est vite fait bien fait [eric seigne] \brief Cr<EFBFBD><EFBFBD> un meta fichier <EFBFBD> c<EFBFBD>t<EFBFBD> de la facture sur le disque pour faciliter les recherches en texte plein. Pourquoi ? tout simplement parcequ'en fin d'exercice quand je suis avec mon comptable je n'ai pas de connexion internet "rapide" pour retrouver en 2 secondes une facture non pay<EFBFBD>e ou compliqu<71>e <20> g<>rer ... avec un rgrep c'est vite fait bien fait [eric seigne
\param db Objet base de donnée \param db Objet base de donn<EFBFBD>e
\param facid Id de la facture à créer \param facid Id de la facture <EFBFBD> cr<EFBFBD>er
\param message Message \param message Message
*/ */
function facture_meta_create($db, $facid, $message="") function facture_meta_create($db, $facid, $message="")
{ {
global $langs,$conf; global $langs,$conf;
@ -234,71 +234,75 @@ function facture_meta_create($db, $facid, $message="")
$fac = new Facture($db,"",$facid); $fac = new Facture($db,"",$facid);
$fac->fetch($facid); $fac->fetch($facid);
$fac->fetch_client(); $fac->fetch_client();
if ($conf->facture->dir_output) if ($conf->facture->dir_output)
{ {
$facref = sanitize_string($fac->ref); $facref = sanitize_string($fac->ref);
$dir = $conf->facture->dir_output . "/" . $facref ; $dir = $conf->facture->dir_output . "/" . $facref ;
$file = $dir . "/" . $facref . ".meta"; $file = $dir . "/" . $facref . ".meta";
if (! is_dir($dir)) if (! is_dir($dir))
{ {
create_exdir($dir); create_exdir($dir);
} }
if (is_dir($dir)) if (is_dir($dir))
{ {
$nblignes = sizeof($fac->lignes); $nblignes = sizeof($fac->lignes);
$client = $fac->client->nom . " " . $fac->client->adresse . " " . $fac->client->cp . " " . $fac->client->ville; $client = $fac->client->nom . " " . $fac->client->adresse . " " . $fac->client->cp . " " . $fac->client->ville;
$meta = "REFERENCE=\"" . $fac->ref . "\" $meta = "REFERENCE=\"" . $fac->ref . "\"
DATE=\"" . dolibarr_print_date($fac->date) . "\" DATE=\"" . dolibarr_print_date($fac->date) . "\"
NB_ITEMS=\"" . $nblignes . "\" NB_ITEMS=\"" . $nblignes . "\"
CLIENT=\"" . $client . "\" CLIENT=\"" . $client . "\"
TOTAL_HT=\"" . $fac->total_ht . "\" TOTAL_HT=\"" . $fac->total_ht . "\"
TOTAL_TTC=\"" . $fac->total_ttc . "\"\n"; TOTAL_TTC=\"" . $fac->total_ttc . "\"\n";
for ($i = 0 ; $i < $nblignes ; $i++) { for ($i = 0 ; $i < $nblignes ; $i++)
//Pour les articles {
$meta .= "ITEM_" . $i . "_QUANTITY=\"" . $fac->lignes[$i]->qty . "\" //Pour les articles
$meta .= "ITEM_" . $i . "_QUANTITY=\"" . $fac->lignes[$i]->qty . "\"
ITEM_" . $i . "_UNIT_PRICE=\"" . $fac->lignes[$i]->price . "\" ITEM_" . $i . "_UNIT_PRICE=\"" . $fac->lignes[$i]->price . "\"
ITEM_" . $i . "_TVA=\"" .$fac->lignes[$i]->tva_tx . "\" ITEM_" . $i . "_TVA=\"" .$fac->lignes[$i]->tva_tx . "\"
ITEM_" . $i . "_DESCRIPTION=\"" . str_replace("\r\n","",nl2br($fac->lignes[$i]->desc)) . "\" ITEM_" . $i . "_DESCRIPTION=\"" . str_replace("\r\n","",nl2br($fac->lignes[$i]->desc)) . "\"
"; ";
} }
}
$fp = fopen ($file,"w");
fputs($fp,$meta);
fclose($fp);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
} }
$fp = fopen ($file,"w");
fputs($fp,$meta);
fclose($fp);
}
} }
/** /**
\brief Supprime l'image de prévisualitation, pour le cas de régénération de facture \brief Supprime l'image de pr<EFBFBD>visualitation, pour le cas de r<EFBFBD>g<EFBFBD>n<EFBFBD>ration de facture
\param db objet base de donnée \param db objet base de donn<EFBFBD>e
\param facid id de la facture à créer \param facid id de la facture <EFBFBD> cr<EFBFBD>er
*/ */
function facture_delete_preview($db, $facid) function facture_delete_preview($db, $facid)
{ {
global $langs,$conf; global $langs,$conf;
$fac = new Facture($db,"",$facid); $fac = new Facture($db,"",$facid);
$fac->fetch($facid); $fac->fetch($facid);
if ($conf->facture->dir_output) if ($conf->facture->dir_output)
{
$facref = sanitize_string($fac->ref);
$dir = $conf->facture->dir_output . "/" . $facref ;
$file = $dir . "/" . $facref . ".pdf.png";
if ( file_exists( $file ) && is_writable( $file ) )
{ {
$facref = sanitize_string($fac->ref);
$dir = $conf->facture->dir_output . "/" . $facref ;
$file = $dir . "/" . $facref . ".pdf.png";
if ( file_exists( $file ) && is_writable( $file ) )
{
if ( ! unlink($file) ) if ( ! unlink($file) )
{ {
return 0; return 0;
} }
}
} }
}
} }
?> ?>

View File

@ -412,7 +412,9 @@ class pdf_crabe extends ModelePDFFactures
$pdf->Close(); $pdf->Close();
$pdf->Output($file); $pdf->Output($file);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
$langs->setPhpLang(); // On restaure langue session $langs->setPhpLang(); // On restaure langue session
return 1; // Pas d'erreur return 1; // Pas d'erreur
} }

View File

@ -22,7 +22,7 @@
/** /**
\file htdocs/includes/modules/facture/pdf_huitre.modules.php \file htdocs/includes/modules/facture/pdf_huitre.modules.php
\ingroup facture \ingroup facture
\brief Fichier de la classe permettant de générer les factures au modèle Huitre \brief Fichier de la classe permettant de g<EFBFBD>n<EFBFBD>rer les factures au mod<EFBFBD>le Huitre
\author Laurent Destailleur \author Laurent Destailleur
\version $Id$ \version $Id$
*/ */
@ -33,7 +33,7 @@ require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php");
/** /**
\class pdf_huitre \class pdf_huitre
\brief Classe permettant de générer les factures au modèle Huitre \brief Classe permettant de g<EFBFBD>n<EFBFBD>rer les factures au mod<EFBFBD>le Huitre
*/ */
class pdf_huitre extends ModelePDFFactures class pdf_huitre extends ModelePDFFactures
@ -42,7 +42,7 @@ class pdf_huitre extends ModelePDFFactures
/** \brief Constructeur /** \brief Constructeur
\param db handler accès base de donnée \param db handler acc<EFBFBD>s base de donn<EFBFBD>e
*/ */
function pdf_huitre($db) function pdf_huitre($db)
{ {
@ -69,23 +69,23 @@ class pdf_huitre extends ModelePDFFactures
$this->option_logo = 1; // Affiche logo FAC_PDF_LOGO $this->option_logo = 1; // Affiche logo FAC_PDF_LOGO
$this->option_tva = 0; // Gere option tva FACTURE_TVAOPTION $this->option_tva = 0; // Gere option tva FACTURE_TVAOPTION
$this->option_modereg = 0; // Gere choix mode règlement FACTURE_CHQ_NUMBER, FACTURE_RIB_NUMBER $this->option_modereg = 0; // Gere choix mode r<EFBFBD>glement FACTURE_CHQ_NUMBER, FACTURE_RIB_NUMBER
$this->option_condreg = 1; // Affiche conditions règlement $this->option_condreg = 1; // Affiche conditions r<EFBFBD>glement
$this->option_codeproduitservice = 0; // Affiche code produit-service $this->option_codeproduitservice = 0; // Affiche code produit-service
$this->option_multilang = 1; // Dispo en plusieurs langues $this->option_multilang = 1; // Dispo en plusieurs langues
$this->option_escompte = 0; // Affiche si il y a eu escompte $this->option_escompte = 0; // Affiche si il y a eu escompte
$this->option_credit_note = 0; // Gère les avoirs $this->option_credit_note = 0; // G<EFBFBD>re les avoirs
$this->option_draft_watermark = 1; //Support add of a watermark on drafts $this->option_draft_watermark = 1; //Support add of a watermark on drafts
// Recupere emmetteur // Recupere emmetteur
$this->emetteur=$mysoc; $this->emetteur=$mysoc;
if (! $this->emetteur->pays_code) $this->emetteur->pays_code=substr($langs->defaultlang,-2); // Par defaut, si n'était pas défini if (! $this->emetteur->pays_code) $this->emetteur->pays_code=substr($langs->defaultlang,-2); // Par defaut, si n'<EFBFBD>tait pas d<>fini
} }
/** /**
* \brief Fonction générant la facture sur le disque * \brief Fonction g<EFBFBD>n<EFBFBD>rant la facture sur le disque
* \param fac Objet facture à générer (ou id si ancienne methode) * \param fac Objet facture <EFBFBD> g<EFBFBD>n<EFBFBD>rer (ou id si ancienne methode)
* \param outputlangs Lang object for output language * \param outputlangs Lang object for output language
* \return int 1=ok, 0=ko * \return int 1=ok, 0=ko
*/ */
@ -106,7 +106,7 @@ class pdf_huitre extends ModelePDFFactures
if ($conf->facture->dir_output) if ($conf->facture->dir_output)
{ {
// Définition de l'objet $fac (pour compatibilite ascendante) // D<EFBFBD>finition de l'objet $fac (pour compatibilite ascendante)
if (! is_object($fac)) if (! is_object($fac))
{ {
$id = $fac; $id = $fac;
@ -114,7 +114,7 @@ class pdf_huitre extends ModelePDFFactures
$ret=$fac->fetch($id); $ret=$fac->fetch($id);
} }
// Définition de $dir et $file // D<EFBFBD>finition de $dir et $file
if ($fac->specimen) if ($fac->specimen)
{ {
$dir = $conf->facture->dir_output; $dir = $conf->facture->dir_output;
@ -145,7 +145,7 @@ class pdf_huitre extends ModelePDFFactures
$pdf=new FPDI_Protection('P','mm','A4'); $pdf=new FPDI_Protection('P','mm','A4');
$pdfrights = array('print'); // Ne permet que l'impression du document $pdfrights = array('print'); // Ne permet que l'impression du document
$pdfuserpass = ''; // Mot de passe pour l'utilisateur final $pdfuserpass = ''; // Mot de passe pour l'utilisateur final
$pdfownerpass = NULL; // Mot de passe du propriétaire, créé aléatoirement si pas défini $pdfownerpass = NULL; // Mot de passe du propri<EFBFBD>taire, cr<63><72> al<61>atoirement si pas d<>fini
$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
} }
else else
@ -271,13 +271,12 @@ class pdf_huitre extends ModelePDFFactures
$pdf->SetLineWidth(0.5); $pdf->SetLineWidth(0.5);
$pdf->Close(); $pdf->Close();
$pdf->Output($file); $pdf->Output($file);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
$langs->setPhpLang(); // On restaure langue session $langs->setPhpLang(); // On restaure langue session
return 1; // Pas d'erreur return 1; // Pas d'erreur
} }
@ -373,7 +372,7 @@ class pdf_huitre extends ModelePDFFactures
} }
/* /*
* \brief Affiche le total à payer * \brief Affiche le total <EFBFBD> payer
* \param pdf objet PDF * \param pdf objet PDF
* \param fac objet facture * \param fac objet facture
*/ */
@ -463,7 +462,7 @@ class pdf_huitre extends ModelePDFFactures
} }
/* /*
* \brief Affiche en-tête facture * \brief Affiche en-t<EFBFBD>te facture
* \param pdf objet PDF * \param pdf objet PDF
* \param fac objet facture * \param fac objet facture
*/ */

View File

@ -23,8 +23,8 @@
/** /**
\file htdocs/includes/modules/facture/pdf_oursin.modules.php \file htdocs/includes/modules/facture/pdf_oursin.modules.php
\ingroup facture \ingroup facture
\brief Fichier de la classe permettant de générer les factures au modèle oursin \brief Fichier de la classe permettant de g<EFBFBD>n<EFBFBD>rer les factures au mod<EFBFBD>le oursin
\author Sylvain SCATTOLINI basé sur un modèle de Laurent Destailleur \author Sylvain SCATTOLINI bas<EFBFBD> sur un mod<EFBFBD>le de Laurent Destailleur
\version $Id$ \version $Id$
*/ */
@ -34,7 +34,7 @@ require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php");
/** /**
\class pdf_oursin \class pdf_oursin
\brief Classe permettant de générer les factures au modèle oursin \brief Classe permettant de g<EFBFBD>n<EFBFBD>rer les factures au mod<EFBFBD>le oursin
*/ */
class pdf_oursin extends ModelePDFFactures class pdf_oursin extends ModelePDFFactures
@ -44,7 +44,7 @@ class pdf_oursin extends ModelePDFFactures
/** /**
\brief Constructeur \brief Constructeur
\param db handler accès base de donnée \param db handler acc<EFBFBD>s base de donn<EFBFBD>e
*/ */
function pdf_oursin($db) function pdf_oursin($db)
{ {
@ -70,12 +70,12 @@ class pdf_oursin extends ModelePDFFactures
$this->option_logo = 1; // Affiche logo FAC_PDF_LOGO $this->option_logo = 1; // Affiche logo FAC_PDF_LOGO
$this->option_tva = 1; // Gere option tva FACTURE_TVAOPTION $this->option_tva = 1; // Gere option tva FACTURE_TVAOPTION
$this->option_modereg = 1; // Gere choix mode règlement FACTURE_CHQ_NUMBER, FACTURE_RIB_NUMBER $this->option_modereg = 1; // Gere choix mode r<EFBFBD>glement FACTURE_CHQ_NUMBER, FACTURE_RIB_NUMBER
$this->option_condreg = 1; // Affiche conditions règlement $this->option_condreg = 1; // Affiche conditions r<EFBFBD>glement
$this->option_codeproduitservice = 1; // Affiche code produit-service $this->option_codeproduitservice = 1; // Affiche code produit-service
$this->option_multilang = 1; // Dispo en plusieurs langues $this->option_multilang = 1; // Dispo en plusieurs langues
$this->option_escompte = 0; // Affiche si il y a eu escompte $this->option_escompte = 0; // Affiche si il y a eu escompte
$this->option_credit_note = 1; // Gère les avoirs $this->option_credit_note = 1; // G<EFBFBD>re les avoirs
$this->option_draft_watermark = 1; //Support add of a watermark on drafts $this->option_draft_watermark = 1; //Support add of a watermark on drafts
if (defined("FACTURE_TVAOPTION") && FACTURE_TVAOPTION == 'franchise') if (defined("FACTURE_TVAOPTION") && FACTURE_TVAOPTION == 'franchise')
@ -83,13 +83,13 @@ class pdf_oursin extends ModelePDFFactures
// Recupere emmetteur // Recupere emmetteur
$this->emetteur=$mysoc; $this->emetteur=$mysoc;
if (! $this->emetteur->pays_code) $this->emetteur->pays_code=substr($langs->defaultlang,-2); // Par defaut, si n'était pas défini if (! $this->emetteur->pays_code) $this->emetteur->pays_code=substr($langs->defaultlang,-2); // Par defaut, si n'<EFBFBD>tait pas d<>fini
} }
/** /**
* \brief Fonction générant la facture sur le disque * \brief Fonction g<EFBFBD>n<EFBFBD>rant la facture sur le disque
* \param fac Objet facture à générer (ou id si ancienne methode) * \param fac Objet facture <EFBFBD> g<EFBFBD>n<EFBFBD>rer (ou id si ancienne methode)
* \param outputlangs Lang object for output language * \param outputlangs Lang object for output language
* \return int 1=ok, 0=ko * \return int 1=ok, 0=ko
*/ */
@ -110,7 +110,7 @@ class pdf_oursin extends ModelePDFFactures
if ($conf->facture->dir_output) if ($conf->facture->dir_output)
{ {
// Définition de l'objet $fac (pour compatibilite ascendante) // D<EFBFBD>finition de l'objet $fac (pour compatibilite ascendante)
if (! is_object($fac)) if (! is_object($fac))
{ {
$id = $fac; $id = $fac;
@ -122,7 +122,7 @@ class pdf_oursin extends ModelePDFFactures
$amount_credit_not_included = $fac->getSommeCreditNote(); $amount_credit_not_included = $fac->getSommeCreditNote();
// Définition de $dir et $file // D<EFBFBD>finition de $dir et $file
if ($fac->specimen) if ($fac->specimen)
{ {
$dir = $conf->facture->dir_output; $dir = $conf->facture->dir_output;
@ -154,7 +154,7 @@ class pdf_oursin extends ModelePDFFactures
$pdf=new FPDI_Protection('P','mm',$this->format); $pdf=new FPDI_Protection('P','mm',$this->format);
$pdfrights = array('print'); // Ne permet que l'impression du document $pdfrights = array('print'); // Ne permet que l'impression du document
$pdfuserpass = ''; // Mot de passe pour l'utilisateur final $pdfuserpass = ''; // Mot de passe pour l'utilisateur final
$pdfownerpass = NULL; // Mot de passe du propriétaire, créé aléatoirement si pas défini $pdfownerpass = NULL; // Mot de passe du propri<EFBFBD>taire, cr<63><72> al<61>atoirement si pas d<>fini
$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
} }
else else
@ -196,7 +196,7 @@ class pdf_oursin extends ModelePDFFactures
$codeproduitservice=""; $codeproduitservice="";
$pdf->SetXY ($this->marges['g']+ 1, $curY ); $pdf->SetXY ($this->marges['g']+ 1, $curY );
if (defined("FACTURE_CODEPRODUITSERVICE") && FACTURE_CODEPRODUITSERVICE) { if (defined("FACTURE_CODEPRODUITSERVICE") && FACTURE_CODEPRODUITSERVICE) {
// Affiche code produit si ligne associée à un code produit // Affiche code produit si ligne associ<EFBFBD>e <20> un code produit
$prodser = new Product($this->db); $prodser = new Product($this->db);
@ -206,7 +206,7 @@ class pdf_oursin extends ModelePDFFactures
} }
} }
if ($fac->lignes[$i]->date_start && $fac->lignes[$i]->date_end) { if ($fac->lignes[$i]->date_start && $fac->lignes[$i]->date_end) {
// Affichage durée si il y en a une // Affichage dur<EFBFBD>e si il y en a une
$codeproduitservice.=" (".$outputlangs->transnoentities("From")." ".dolibarr_print_date($fac->lignes[$i]->date_start)." ".$langs->transnoentities("to")." ".dolibarr_print_date($fac->lignes[$i]->date_end).")"; $codeproduitservice.=" (".$outputlangs->transnoentities("From")." ".dolibarr_print_date($fac->lignes[$i]->date_start)." ".$langs->transnoentities("to")." ".dolibarr_print_date($fac->lignes[$i]->date_end).")";
} }
$pdf->MultiCell(108, 5, $fac->lignes[$i]->desc."$codeproduitservice", 0, 'J'); $pdf->MultiCell(108, 5, $fac->lignes[$i]->desc."$codeproduitservice", 0, 'J');
@ -260,7 +260,7 @@ class pdf_oursin extends ModelePDFFactures
$posy=$this->_tableau_versements($pdf, $fac, $posy, $outputlangs); $posy=$this->_tableau_versements($pdf, $fac, $posy, $outputlangs);
} }
// Mode de règlement // Mode de r<EFBFBD>glement
if ((! defined("FACTURE_CHQ_NUMBER") || ! FACTURE_CHQ_NUMBER) && (! defined("FACTURE_RIB_NUMBER") || ! FACTURE_RIB_NUMBER)) { if ((! defined("FACTURE_CHQ_NUMBER") || ! FACTURE_CHQ_NUMBER) && (! defined("FACTURE_RIB_NUMBER") || ! FACTURE_RIB_NUMBER)) {
$pdf->SetXY ($this->marges['g'], 228); $pdf->SetXY ($this->marges['g'], 228);
$pdf->SetTextColor(200,0,0); $pdf->SetTextColor(200,0,0);
@ -270,7 +270,7 @@ class pdf_oursin extends ModelePDFFactures
$pdf->SetTextColor(0,0,0); $pdf->SetTextColor(0,0,0);
} }
// Propose mode règlement par CHQ // Propose mode r<EFBFBD>glement par CHQ
if (defined("FACTURE_CHQ_NUMBER")) if (defined("FACTURE_CHQ_NUMBER"))
{ {
if (FACTURE_CHQ_NUMBER > 0) if (FACTURE_CHQ_NUMBER > 0)
@ -287,7 +287,7 @@ class pdf_oursin extends ModelePDFFactures
} }
} }
// Propose mode règlement par RIB // Propose mode r<EFBFBD>glement par RIB
if (defined("FACTURE_RIB_NUMBER")) if (defined("FACTURE_RIB_NUMBER"))
{ {
if (FACTURE_RIB_NUMBER > 0) if (FACTURE_RIB_NUMBER > 0)
@ -334,7 +334,7 @@ class pdf_oursin extends ModelePDFFactures
} }
} }
// Conditions de règlements // Conditions de r<EFBFBD>glements
if ($fac->cond_reglement_code) if ($fac->cond_reglement_code)
{ {
$pdf->SetFont('Arial','B',10); $pdf->SetFont('Arial','B',10);
@ -354,7 +354,9 @@ class pdf_oursin extends ModelePDFFactures
$pdf->Close(); $pdf->Close();
$pdf->Output($file); $pdf->Output($file);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
$langs->setPhpLang(); // On restaure langue session $langs->setPhpLang(); // On restaure langue session
return 1; // Pas d'erreur return 1; // Pas d'erreur
} }
@ -512,7 +514,7 @@ class pdf_oursin extends ModelePDFFactures
} }
/* /*
* \brief Affiche le total à payer * \brief Affiche le total <EFBFBD> payer
* \param pdf objet PDF * \param pdf objet PDF
* \param fac objet facture * \param fac objet facture
* \param deja_regle montant deja regle * \param deja_regle montant deja regle
@ -617,7 +619,7 @@ class pdf_oursin extends ModelePDFFactures
} }
/* /*
* \brief Affiche en-tête facture * \brief Affiche en-t<EFBFBD>te facture
* \param pdf objet PDF * \param pdf objet PDF
* \param fac objet facture * \param fac objet facture
*/ */
@ -705,7 +707,7 @@ class pdf_oursin extends ModelePDFFactures
$pdf->MultiCell(80, 4, MAIN_INFO_SOCIETE_NOM, 0, 'L'); $pdf->MultiCell(80, 4, MAIN_INFO_SOCIETE_NOM, 0, 'L');
} }
// Caractéristiques emetteur // Caract<EFBFBD>ristiques emetteur
$pdf->SetFont('Arial','',9); $pdf->SetFont('Arial','',9);
if (defined("FAC_PDF_ADRESSE")) if (defined("FAC_PDF_ADRESSE"))
{ {

View File

@ -315,7 +315,9 @@ class pdf_soleil extends ModelePDFFicheinter
$pdf->Close(); $pdf->Close();
$pdf->Output($file); $pdf->Output($file);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
$langs->setPhpLang(); // On restaure langue session $langs->setPhpLang(); // On restaure langue session
return 1; return 1;
} }

View File

@ -20,7 +20,7 @@
/** /**
\file htdocs/includes/modules/mailings/peche.modules.php \file htdocs/includes/modules/mailings/peche.modules.php
\ingroup mailing \ingroup mailing
\brief Fichier de la classe permettant de générer la liste de destinataires Peche \brief Fichier de la classe permettant de g<EFBFBD>n<EFBFBD>rer la liste de destinataires Peche
\version $Id$ \version $Id$
*/ */
@ -29,13 +29,13 @@ include_once DOL_DOCUMENT_ROOT.'/includes/modules/mailings/modules_mailings.php'
/** /**
\class mailing_pomme \class mailing_pomme
\brief Classe permettant de générer la liste des destinataires Pomme \brief Classe permettant de g<EFBFBD>n<EFBFBD>rer la liste des destinataires Pomme
*/ */
class mailing_peche extends MailingTargets class mailing_peche extends MailingTargets
{ {
var $name='EmailsFromFile'; // Identifiant du module mailing var $name='EmailsFromFile'; // Identifiant du module mailing
var $desc='EMails issus d\'un fichier'; // Libellé utilisé si aucune traduction pour MailingModuleDescXXX ou XXX=name trouvée var $desc='EMails issus d\'un fichier'; // Libell<EFBFBD> utilis<69> si aucune traduction pour MailingModuleDescXXX ou XXX=name trouv<75>e
var $require_module=array(); // Module mailing actif si modules require_module actifs var $require_module=array(); // Module mailing actif si modules require_module actifs
var $require_admin=1; // Module mailing actif pour user admin ou non var $require_admin=1; // Module mailing actif pour user admin ou non
var $picto='generic'; var $picto='generic';
@ -99,7 +99,7 @@ class mailing_peche extends MailingTargets
/** /**
* \brief Ajoute destinataires dans table des cibles * \brief Ajoute destinataires dans table des cibles
* \param mailing_id Id du mailing concerné * \param mailing_id Id du mailing concern<EFBFBD>
* \param filterarray Requete sql de selection des destinataires * \param filterarray Requete sql de selection des destinataires
* \return int < 0 si erreur, nb ajout si ok * \return int < 0 si erreur, nb ajout si ok
*/ */
@ -123,7 +123,8 @@ class mailing_peche extends MailingTargets
//$mesg = '<div class="ok">'.$langs->trans("FileTransferComplete").'</div>'; //$mesg = '<div class="ok">'.$langs->trans("FileTransferComplete").'</div>';
//print_r($_FILES); //print_r($_FILES);
$handle = @fopen($upload_dir . "/" . $_FILES['username']['name'], "r"); $file=$upload_dir . "/" . $_FILES['username']['name'];
$handle = @fopen($file, "r");
if ($handle) if ($handle)
{ {
$i = 0; $i = 0;
@ -165,6 +166,7 @@ class mailing_peche extends MailingTargets
} }
} }
fclose($handle); fclose($handle);
if ($i > 0) if ($i > 0)
{ {
return -$i; return -$i;

View File

@ -340,6 +340,7 @@ class modTelephonie extends DolibarrModules
} }
} }
fclose($fp); fclose($fp);
} }
//print "<tr><td>Creation de la table $name/td>"; //print "<tr><td>Creation de la table $name/td>";

View File

@ -397,7 +397,9 @@ class pdf_propale_azur extends ModelePDFPropales
$pdf->Close(); $pdf->Close();
$pdf->Output($file); $pdf->Output($file);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
$langs->setPhpLang(); // On restaure langue session $langs->setPhpLang(); // On restaure langue session
return 1; // Pas d'erreur return 1; // Pas d'erreur
} }

View File

@ -270,7 +270,9 @@ class pdf_propale_jaune extends ModelePDFPropales
$pdf->Close(); $pdf->Close();
$pdf->Output($file); $pdf->Output($file);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
$langs->setPhpLang(); // On restaure langue session $langs->setPhpLang(); // On restaure langue session
return 1; return 1;
} }

View File

@ -16,28 +16,26 @@
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* or see http://www.gnu.org/ * or see http://www.gnu.org/
*
* $Id$
*/ */
/** /**
\file htdocs/includes/modules/rapport/pdf_paiement.class.php \file htdocs/includes/modules/rapport/pdf_paiement.class.php
\ingroup banque \ingroup banque
\brief Fichier de la classe permettant de générer les rapports de paiement \brief Fichier de la classe permettant de g<EFBFBD>n<EFBFBD>rer les rapports de paiement
\version $Revision$ \version $Id$
*/ */
require_once(DOL_DOCUMENT_ROOT.'/includes/fpdf/fpdfi/fpdi_protection.php'); require_once(DOL_DOCUMENT_ROOT.'/includes/fpdf/fpdfi/fpdi_protection.php');
/** /**
\class pdf_paiement \class pdf_paiement
\brief Classe permettant de générer les rapports de paiement \brief Classe permettant de g<EFBFBD>n<EFBFBD>rer les rapports de paiement
*/ */
class pdf_paiement extends FPDF class pdf_paiement extends FPDF
{ {
/** /**
\brief Constructeur \brief Constructeur
\param db handler accès base de donnée \param db handler acc<EFBFBD>s base de donn<EFBFBD>e
*/ */
function pdf_paiement($db) function pdf_paiement($db)
{ {
@ -160,14 +158,20 @@ class pdf_paiement extends FPDF
} }
/** /**
\brief Fonction générant le rapport sur le disque \brief Fonction generant le rapport sur le disque
\param _dir repertoire \param _dir repertoire
\param month mois du rapport \param month mois du rapport
\param year annee du rapport \param year annee du rapport
*/ */
function write_file($_dir, $month, $year) function write_file($_dir, $month, $year, $outputlangs='')
{ {
global $langs; global $user,$langs,$conf;
if (! is_object($outputlangs)) $outputlangs=$langs;
// Force output charset to ISO, because FPDF expect text to be encoded in ISO
$outputlangs->charset_output=$outputlangs->character_set_client='ISO-8859-1';
$outputlangs->setPhpLang();
$this->month=$month; $this->month=$month;
$this->year=$year; $this->year=$year;
@ -194,7 +198,7 @@ class pdf_paiement extends FPDF
$pdf = new FPDI_Protection('P','mm','A4'); $pdf = new FPDI_Protection('P','mm','A4');
$pdfrights = array('print'); // Ne permet que l'impression du document $pdfrights = array('print'); // Ne permet que l'impression du document
$pdfuserpass = ''; // Mot de passe pour l'utilisateur final $pdfuserpass = ''; // Mot de passe pour l'utilisateur final
$pdfownerpass = NULL; // Mot de passe du propriétaire, créé aléatoirement si pas défini $pdfownerpass = NULL; // Mot de passe du propri<EFBFBD>taire, cr<63><72> al<61>atoirement si pas d<>fini
$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
} }
else else
@ -256,7 +260,7 @@ class pdf_paiement extends FPDF
if ($pages == 0) if ($pages == 0)
{ {
// force à générer au moins une page si le rapport ne contient aucune ligne // force to build at least one page if report has no line
$pages = 1; $pages = 1;
} }
/* /*
@ -275,6 +279,11 @@ class pdf_paiement extends FPDF
$this->Body($pdf, 1, $lines); $this->Body($pdf, 1, $lines);
$pdf->Output($_file); $pdf->Output($_file);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
$langs->setPhpLang(); // On restaure langue session
return 1;
} }
} }

View File

@ -266,6 +266,9 @@ class CMailFile
fputs($fp, $this->eol); // This eol is added by the mail function, so we add it in log fputs($fp, $this->eol); // This eol is added by the mail function, so we add it in log
fputs($fp, $this->message); fputs($fp, $this->message);
fclose($fp); fclose($fp);
if (! empty($conf->global->MAIN_UMASK))
@chmod($outputfile, octdec($conf->global->MAIN_UMASK));
} }
} }

View File

@ -82,22 +82,22 @@ function check_mail ($mail)
function unaccent_isostring($str) function unaccent_isostring($str)
{ {
$translation = array( $translation = array(
"\xE0" => "a", "\xE0" => "a",
"\xE1" => "a", "\xE1" => "a",
"\xE2" => "a", "\xE2" => "a",
"\xE8" => "e", "\xE8" => "e",
"\xE9" => "e", "\xE9" => "e",
"\xEA" => "e", "\xEA" => "e",
"\xEB" => "e", "\xEB" => "e",
"\xEE" => "i", "\xEE" => "i",
"\xEF" => "i", "\xEF" => "i",
"\xF4" => "o", "\xF4" => "o",
"\xF6" => "o", "\xF6" => "o",
"\xFB" => "u", "\xFB" => "u",
"\xFC" => "u" "\xFC" => "u"
); );
return str_replace(array_keys($translation), array_values($translation), $str); return str_replace(array_keys($translation), array_values($translation), $str);
} }
/** /**
@ -185,6 +185,7 @@ function dolibarr_syslog($message, $level=LOG_INFO)
fwrite($file,$message."\n"); fwrite($file,$message."\n");
fclose($file); fclose($file);
// This is for log file, we do not change permissions
// If enable html log tag enabled and url parameter log defined, we show output log on HTML comments // If enable html log tag enabled and url parameter log defined, we show output log on HTML comments
if (! empty($conf->global->MAIN_ENABLE_LOG_HTML) && ! empty($_GET["log"])) if (! empty($conf->global->MAIN_ENABLE_LOG_HTML) && ! empty($_GET["log"]))
@ -300,7 +301,7 @@ function dolibarr_set_user_page_param($db, &$user, $url='', $tab)
$db->begin(); $db->begin();
// On efface anciens param<61>tres pour toutes les cl<63> dans $tab // On efface anciens param<61>tres pour toutes les cl<63> dans $ta
$sql = "DELETE FROM ".MAIN_DB_PREFIX."user_param"; $sql = "DELETE FROM ".MAIN_DB_PREFIX."user_param";
$sql.= " WHERE fk_user = ".$user->id; $sql.= " WHERE fk_user = ".$user->id;
if ($url) $sql.=" AND page='".$url."'"; if ($url) $sql.=" AND page='".$url."'";
@ -456,10 +457,10 @@ function dolibarr_print_date($time,$format='',$to_gmt=false,$convtooutput=true)
// Date is a timestamps // Date is a timestamps
$ret=adodb_strftime($format,$time,$to_gmt); $ret=adodb_strftime($format,$time,$to_gmt);
} }
// Page code for text from strftime functions // Page code for text from strftime functions
$pagecodefrom='ISO-8859-1'; $pagecodefrom='ISO-8859-1';
return ($convtooutput?$langs->convToOuptutCharset($ret,$pagecodefrom):$ret); return ($convtooutput?$langs->convToOuptutCharset($ret,$pagecodefrom):$ret);
} }
@ -760,7 +761,7 @@ function dol_phone_link($phone,$option=0)
function dolibarr_trunc($string,$size=40,$trunc='right') function dolibarr_trunc($string,$size=40,$trunc='right')
{ {
global $conf; global $conf;
if ($size==0) return $string; if ($size==0) return $string;
if (! defined('USE_SHORT_TITLE') || (defined('USE_SHORT_TITLE') && USE_SHORT_TITLE)) if (! defined('USE_SHORT_TITLE') || (defined('USE_SHORT_TITLE') && USE_SHORT_TITLE))
{ {
@ -771,9 +772,9 @@ function dolibarr_trunc($string,$size=40,$trunc='right')
//print $conf->character_set_client.'-'.mb_strlen($string).'-'.strlen($string); //print $conf->character_set_client.'-'.mb_strlen($string).'-'.strlen($string);
//print 'ee'.$string.$size.mb_strcut($string,0,$size,'UTF-8').'rr'; //print 'ee'.$string.$size.mb_strcut($string,0,$size,'UTF-8').'rr';
if (strlen($string) > $size) if (strlen($string) > $size)
return substr($string,0,$size).'...'; return substr($string,0,$size).'...';
else else
return $string; return $string;
} }
if ($trunc == 'middle') if ($trunc == 'middle')
{ {
@ -1384,12 +1385,12 @@ function restrictedArea($user, $feature='societe', $objectid=0, $dbtablename='',
else if (! empty($feature2)) // This should be used for future changes else if (! empty($feature2)) // This should be used for future changes
{ {
if (empty($user->rights->$feature->$feature2->lire) if (empty($user->rights->$feature->$feature2->lire)
&& empty($user->rights->$feature->$feature2->read)) $readok=0; && empty($user->rights->$feature->$feature2->read)) $readok=0;
} }
else if (! empty($feature)) // This is for old permissions else if (! empty($feature)) // This is for old permissions
{ {
if (empty($user->rights->$feature->lire) if (empty($user->rights->$feature->lire)
&& empty($user->rights->$feature->read)) $readok=0; && empty($user->rights->$feature->read)) $readok=0;
} }
if (! $readok) accessforbidden(); if (! $readok) accessforbidden();
//print "Read access is ok"; //print "Read access is ok";
@ -1425,12 +1426,12 @@ function restrictedArea($user, $feature='societe', $objectid=0, $dbtablename='',
else if (! empty($feature2)) // This should be used for future changes else if (! empty($feature2)) // This should be used for future changes
{ {
if (empty($user->rights->$feature->$feature2->creer) if (empty($user->rights->$feature->$feature2->creer)
&& empty($user->rights->$feature->$feature2->write)) $createok=0; && empty($user->rights->$feature->$feature2->write)) $createok=0;
} }
else if (! empty($feature)) // This is for old permissions else if (! empty($feature)) // This is for old permissions
{ {
if (empty($user->rights->$feature->creer) if (empty($user->rights->$feature->creer)
&& empty($user->rights->$feature->write)) $createok=0; && empty($user->rights->$feature->write)) $createok=0;
} }
if (! $createok) accessforbidden(); if (! $createok) accessforbidden();
//print "Write access is ok"; //print "Write access is ok";
@ -1684,8 +1685,8 @@ function dol_move_uploaded_file($src_file, $dest_file, $allowoverwrite)
// Move file // Move file
$return=move_uploaded_file($src_file, $file_name); $return=move_uploaded_file($src_file, $file_name);
if ($return) if ($return)
{ {
if (! empty($conf->global->MAIN_UMASK)) @chmod($file_name, $conf->global->MAIN_UMASK); if (! empty($conf->global->MAIN_UMASK)) @chmod($file_name, octdec($conf->global->MAIN_UMASK));
dolibarr_syslog("Functions.lib::dol_move_uploaded_file Success to move ".$src_file." to ".$file_name." - Umask=".$conf->global->MAIN_UMASK, LOG_DEBUG); dolibarr_syslog("Functions.lib::dol_move_uploaded_file Success to move ".$src_file." to ".$file_name." - Umask=".$conf->global->MAIN_UMASK, LOG_DEBUG);
return 1; return 1;
} }
@ -2001,7 +2002,7 @@ function print_fleche_navigation($page,$file,$options='',$nextpage,$betweenarrow
* \param rate Rate value to format (19.6 19,6 19.6% 19,6%,...) * \param rate Rate value to format (19.6 19,6 19.6% 19,6%,...)
* \param foundpercent Add a percent % sign in output * \param foundpercent Add a percent % sign in output
* \param info_bits Miscellanous information on vat * \param info_bits Miscellanous information on vat
* \return string Chaine avec montant format<EFBFBD> (19,6 ou 19,6% ou 8.5% *) * \return string Chaine avec montant format<EFBFBD> (19,6 ou 19,6% ou 8.5% *
*/ */
function vatrate($rate,$addpercent=false,$info_bits=0) function vatrate($rate,$addpercent=false,$info_bits=0)
{ {
@ -2109,7 +2110,7 @@ function price2num($amount,$rounding='',$alreadysqlnb=-1)
$dec=','; $thousand=' '; $dec=','; $thousand=' ';
if ($langs->trans("SeparatorDecimal") != "SeparatorDecimal") $dec=$langs->trans("SeparatorDecimal"); if ($langs->trans("SeparatorDecimal") != "SeparatorDecimal") $dec=$langs->trans("SeparatorDecimal");
if ($langs->trans("SeparatorThousand")!= "SeparatorThousand") $thousand=$langs->trans("SeparatorThousand"); if ($langs->trans("SeparatorThousand")!= "SeparatorThousand") $thousand=$langs->trans("SeparatorThousand");
//print 'x'.$dec.$thousand.'-'; //print 'x'.$dec.$thousand.'-';
if ($alreadysqlnb != 1) // If not a PHP number or unknown, we change format if ($alreadysqlnb != 1) // If not a PHP number or unknown, we change format
{ {
@ -2157,8 +2158,8 @@ function get_product_vat_for_country($idprod, $countrycode)
\remarks Si vendeur non assujeti a TVA, TVA par d<EFBFBD>faut=0. Fin de r<EFBFBD>gle. \remarks Si vendeur non assujeti a TVA, TVA par d<EFBFBD>faut=0. Fin de r<EFBFBD>gle.
Si le (pays vendeur = pays acheteur) alors TVA par d<EFBFBD>faut=TVA du produit vendu. Fin de r<EFBFBD>gle. Si le (pays vendeur = pays acheteur) alors TVA par d<EFBFBD>faut=TVA du produit vendu. Fin de r<EFBFBD>gle.
Si (vendeur et acheteur dans Communaut<EFBFBD> europ<EFBFBD>enne) et (bien vendu = moyen de transports neuf comme auto, bateau, avion) alors TVA par d<EFBFBD>faut=0 (La TVA doit <EFBFBD>tre pay<EFBFBD> par acheteur au centre d'impots de son pays et non au vendeur). Fin de r<EFBFBD>gle. Si (vendeur et acheteur dans Communaut<EFBFBD> europ<EFBFBD>enne) et (bien vendu = moyen de transports neuf comme auto, bateau, avion) alors TVA par d<EFBFBD>faut=0 (La TVA doit <EFBFBD>tre pay<EFBFBD> par acheteur au centre d'impots de son pays et non au vendeur). Fin de r<EFBFBD>gle.
Si (vendeur et acheteur dans Communaut<EFBFBD> europ<EFBFBD>enne) et (acheteur = particulier ou entreprise sans num TVA intra) alors TVA par d<EFBFBD>faut=TVA du produit vendu. Fin de r<EFBFBD>gle. Si (vendeur et acheteur dans Communaut<EFBFBD> europ<EFBFBD>enne) et (acheteur = particulier ou entreprise sans num TVA intra) alors TVA par d<EFBFBD>faut=TVA du produit vendu. Fin de r<EFBFBD>gle
Si (vendeur et acheteur dans Communaut<EFBFBD> europ<EFBFBD>enne) et (acheteur = entreprise avec num TVA) intra alors TVA par d<EFBFBD>faut=0. Fin de r<EFBFBD>gle. Si (vendeur et acheteur dans Communaut<EFBFBD> europ<EFBFBD>enne) et (acheteur = entreprise avec num TVA) intra alors TVA par d<EFBFBD>faut=0. Fin de r<EFBFBD>gle
Sinon TVA propos<EFBFBD>e par d<EFBFBD>faut=0. Fin de r<EFBFBD>gle. Sinon TVA propos<EFBFBD>e par d<EFBFBD>faut=0. Fin de r<EFBFBD>gle.
\param societe_vendeuse Objet soci<EFBFBD>t<EFBFBD> vendeuse \param societe_vendeuse Objet soci<EFBFBD>t<EFBFBD> vendeuse
\param societe_acheteuse Objet soci<EFBFBD>t<EFBFBD> acheteuse \param societe_acheteuse Objet soci<EFBFBD>t<EFBFBD> acheteuse
@ -2190,7 +2191,7 @@ function get_default_tva($societe_vendeuse, $societe_acheteuse, $taux_produit, $
// Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (bien vendu = moyen de transports neuf comme auto, bateau, avion) alors TVA par d<>faut=0 (La TVA doit <20>tre pay<61> par l'acheteur au centre d'impots de son pays et non au vendeur). Fin de r<>gle. // Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (bien vendu = moyen de transports neuf comme auto, bateau, avion) alors TVA par d<>faut=0 (La TVA doit <20>tre pay<61> par l'acheteur au centre d'impots de son pays et non au vendeur). Fin de r<>gle.
// Non g<>r<EFBFBD> // Non g<>r<EFBFBD>
// Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (acheteur = particulier ou entreprise sans num TVA intra) alors TVA par d<>faut=TVA du produit vendu. Fin de r<>gle. // Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (acheteur = particulier ou entreprise sans num TVA intra) alors TVA par d<>faut=TVA du produit vendu. Fin de r<>gle
if (($societe_vendeuse->isInEEC() && $societe_acheteuse->isInEEC()) && ! $societe_acheteuse->tva_intra) if (($societe_vendeuse->isInEEC() && $societe_acheteuse->isInEEC()) && ! $societe_acheteuse->tva_intra)
{ {
if ($idprod) return get_product_vat_for_country($idprod,$societe_vendeuse->pays_code); if ($idprod) return get_product_vat_for_country($idprod,$societe_vendeuse->pays_code);
@ -2198,7 +2199,7 @@ function get_default_tva($societe_vendeuse, $societe_acheteuse, $taux_produit, $
return $taux_produit; return $taux_produit;
} }
// Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (acheteur = entreprise avec num TVA intra) alors TVA par d<>faut=0. Fin de r<>gle. // Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (acheteur = entreprise avec num TVA intra) alors TVA par d<>faut=0. Fin de r<>gle
if (($societe_vendeuse->isInEEC() && $societe_acheteuse->isInEEC()) && $societe_acheteuse->tva_intra) if (($societe_vendeuse->isInEEC() && $societe_acheteuse->isInEEC()) && $societe_acheteuse->tva_intra)
{ {
return 0; return 0;
@ -2215,8 +2216,8 @@ function get_default_tva($societe_vendeuse, $societe_acheteuse, $taux_produit, $
\remarks Si vendeur non assujeti a TVA, TVA par d<EFBFBD>faut=0. Fin de r<EFBFBD>gle. \remarks Si vendeur non assujeti a TVA, TVA par d<EFBFBD>faut=0. Fin de r<EFBFBD>gle.
Si le (pays vendeur = pays acheteur) alors TVA par d<EFBFBD>faut=TVA du produit vendu. Fin de r<EFBFBD>gle. Si le (pays vendeur = pays acheteur) alors TVA par d<EFBFBD>faut=TVA du produit vendu. Fin de r<EFBFBD>gle.
Si (vendeur et acheteur dans Communaut<EFBFBD> europ<EFBFBD>enne) et (bien vendu = moyen de transports neuf comme auto, bateau, avion) alors TVA par d<EFBFBD>faut=0 (La TVA doit <EFBFBD>tre pay<EFBFBD> par acheteur au centre d'impots de son pays et non au vendeur). Fin de r<EFBFBD>gle. Si (vendeur et acheteur dans Communaut<EFBFBD> europ<EFBFBD>enne) et (bien vendu = moyen de transports neuf comme auto, bateau, avion) alors TVA par d<EFBFBD>faut=0 (La TVA doit <EFBFBD>tre pay<EFBFBD> par acheteur au centre d'impots de son pays et non au vendeur). Fin de r<EFBFBD>gle.
Si (vendeur et acheteur dans Communaut<EFBFBD> europ<EFBFBD>enne) et (acheteur = particulier ou entreprise sans num TVA intra) alors TVA par d<EFBFBD>faut=TVA du produit vendu. Fin de r<EFBFBD>gle. Si (vendeur et acheteur dans Communaut<EFBFBD> europ<EFBFBD>enne) et (acheteur = particulier ou entreprise sans num TVA intra) alors TVA par d<EFBFBD>faut=TVA du produit vendu. Fin de r<EFBFBD>gle
Si (vendeur et acheteur dans Communaut<EFBFBD> europ<EFBFBD>enne) et (acheteur = entreprise avec num TVA) intra alors TVA par d<EFBFBD>faut=0. Fin de r<EFBFBD>gle. Si (vendeur et acheteur dans Communaut<EFBFBD> europ<EFBFBD>enne) et (acheteur = entreprise avec num TVA) intra alors TVA par d<EFBFBD>faut=0. Fin de r<EFBFBD>gle
Sinon TVA propos<EFBFBD>e par d<EFBFBD>faut=0. Fin de r<EFBFBD>gle. Sinon TVA propos<EFBFBD>e par d<EFBFBD>faut=0. Fin de r<EFBFBD>gle.
\param societe_vendeuse Objet soci<EFBFBD>t<EFBFBD> vendeuse \param societe_vendeuse Objet soci<EFBFBD>t<EFBFBD> vendeuse
\param societe_acheteuse Objet soci<EFBFBD>t<EFBFBD> acheteuse \param societe_acheteuse Objet soci<EFBFBD>t<EFBFBD> acheteuse
@ -2289,7 +2290,7 @@ function departement_rowid($db,$code, $pays_id)
} }
/** /**
\brief Renvoi un chemin de classement r<EFBFBD>pertoire en fonction d'un id \brief Renvoi un chemin de classement r<EFBFBD>pertoire en fonction d'un i
\remarks Examples: 1->"0/0/1/", 15->"0/1/5/" \remarks Examples: 1->"0/0/1/", 15->"0/1/5/"
\param $num Id a d<EFBFBD>composer \param $num Id a d<EFBFBD>composer
\param $level Niveau de decoupage (1, 2 ou 3 niveaux) \param $level Niveau de decoupage (1, 2 ou 3 niveaux)
@ -2311,6 +2312,8 @@ function get_exdir($num,$level=3)
*/ */
function create_exdir($dir) function create_exdir($dir)
{ {
global $conf;
dolibarr_syslog("functions.lib::create_exdir: dir=".$dir,LOG_INFO); dolibarr_syslog("functions.lib::create_exdir: dir=".$dir,LOG_INFO);
if (@is_dir($dir)) return 0; if (@is_dir($dir)) return 0;
@ -2332,21 +2335,24 @@ function create_exdir($dir)
{ {
if (! @is_dir($ccdir)) if (! @is_dir($ccdir))
{ {
dolibarr_syslog("functions.lib::create_exdir: Directory '".$ccdir."' does not exists or is outside open_basedir PHP setting.",LOG_DEBUG); dolibarr_syslog("functions.lib::create_exdir: Directory '".$ccdir."' does not exists or is outside open_basedir PHP setting.",LOG_DEBUG);
umask(0); umask(0);
if (! @mkdir($ccdir, 0755)) $dirmaskdec=octdec('0755');
{ if (! empty($conf->global->MAIN_UMASK)) $dirmaskdec=octdec($conf->global->MAIN_UMASK);
// Si le is_dir a renvoye une fausse info, alors on passe ici. $dirmaskdec |= octdec('0110');
dolibarr_syslog("functions.lib::create_exdir: Fails to create directory '".$ccdir."' or directory already exists.",LOG_WARNING); if (! @mkdir($ccdir, $dirmaskdec))
$nberr++; {
} // Si le is_dir a renvoye une fausse info, alors on passe ici.
else dolibarr_syslog("functions.lib::create_exdir: Fails to create directory '".$ccdir."' or directory already exists.",LOG_WARNING);
{ $nberr++;
dolibarr_syslog("functions.lib::create_exdir: Directory '".$ccdir."' created",LOG_DEBUG); }
$nberr=0; // On remet a zero car si on arrive ici, cela veut dire que les <20>checs pr<70>c<EFBFBD>dents peuvent etre ignor<6F>s else
$nbcreated++; {
} dolibarr_syslog("functions.lib::create_exdir: Directory '".$ccdir."' created",LOG_DEBUG);
$nberr=0; // On remet a zero car si on arrive ici, cela veut dire que les <20>checs pr<70>c<EFBFBD>dents peuvent etre ignor<6F>s
$nbcreated++;
}
} }
else else
{ {
@ -3007,7 +3013,7 @@ function is_emtpy_folder($folder){
return true; return true;
else else
return false; return false;
closedir($handle); closedir($handle);
} }
else else

View File

@ -597,10 +597,8 @@ class Ldap
{ {
fputs($fp, $content); fputs($fp, $content);
fclose($fp); fclose($fp);
// We change mod to allow file to be overwritten if dump is launched if (! empty($conf->global->MAIN_UMASK))
// from command line or a web session. @chmod($outputfile, octdec($conf->global->MAIN_UMASK));
// 0666 = rw-rw-rw-
if (! empty($conf->global->MAIN_UMASK)) @chmod($file, $conf->global->MAIN_UMASK);
return 1; return 1;
} }
else else

View File

@ -38,7 +38,7 @@ function makesalt($type=CRYPT_SALT_LENGTH)
{ {
case 12: // 8 + 4 case 12: // 8 + 4
$saltlen=8; $saltprefix='$1$'; $saltsuffix='$'; break; $saltlen=8; $saltprefix='$1$'; $saltsuffix='$'; break;
case 8: // 8 + 4 (Pour compatibilite, ne devrait pas etre utilisé) case 8: // 8 + 4 (Pour compatibilite, ne devrait pas etre utilis<EFBFBD>)
$saltlen=8; $saltprefix='$1$'; $saltsuffix='$'; break; $saltlen=8; $saltprefix='$1$'; $saltsuffix='$'; break;
case 2: // 2 case 2: // 2
default: // by default, fall back on Standard DES (should work everywhere) default: // by default, fall back on Standard DES (should work everywhere)
@ -89,10 +89,14 @@ function encodedecode_dbpassconf($level=0)
} }
fclose($fp); fclose($fp);
if ($fp = @fopen(DOL_DOCUMENT_ROOT.'/conf/conf.php','w')) $file=DOL_DOCUMENT_ROOT.'/conf/conf.php';
if ($fp = @fopen($file,'w'))
{ {
fputs($fp, $config, strlen($config)); fputs($fp, $config, strlen($config));
fclose($fp); fclose($fp);
// It's config file, so we set permission for creator only
// @chmod($file, octdec('0600'));
return 1; return 1;
} }
else else
@ -109,9 +113,9 @@ function encodedecode_dbpassconf($level=0)
} }
/** /**
* \brief Encode une chaine de caractére * \brief Encode une chaine de caract<EFBFBD>re
* \param chaine chaine de caractères a encoder * \param chaine chaine de caract<EFBFBD>res a encoder
* \return string_coded chaine de caractères encodée * \return string_coded chaine de caract<EFBFBD>res encod<EFBFBD>e
*/ */
function dol_encode($chain) function dol_encode($chain)
{ {
@ -125,9 +129,9 @@ function dol_encode($chain)
} }
/** /**
* \brief Decode une chaine de caractére * \brief Decode une chaine de caract<EFBFBD>re
* \param chain chaine de caractéres a decoder * \param chain chaine de caract<EFBFBD>res a decoder
* \return string_coded chaine de caractéres decodée * \return string_coded chaine de caract<EFBFBD>res decod<EFBFBD>e
*/ */
function dol_decode($chain) function dol_decode($chain)
{ {

View File

@ -201,6 +201,8 @@ function build_calfile($format='vcal',$title,$desc,$events_array,$outputfile,$fi
fwrite($calfileh,"END:VCALENDAR"); fwrite($calfileh,"END:VCALENDAR");
fclose($calfileh); fclose($calfileh);
if (! empty($conf->global->MAIN_UMASK))
@chmod($outputfile, octdec($conf->global->MAIN_UMASK));
} }
else else
{ {
@ -312,11 +314,8 @@ function build_rssfile($format='rss',$title,$desc,$events_array,$outputfile,$fil
fwrite($fichier, '</rss>'); fwrite($fichier, '</rss>');
fclose($fichier); fclose($fichier);
if (! empty($conf->global->MAIN_UMASK))
// We change mod to allow file to be overwritten if dump is launched @chmod($outputfile, octdec($conf->global->MAIN_UMASK));
// from command line or a web session.
// 0666 = rw-rw-rw-
if (! empty($conf->global->MAIN_UMASK)) @chmod($fichier, $conf->global->MAIN_UMASK);
} }
} }

View File

@ -50,7 +50,7 @@ class pdf_sirocco extends ModelePDFDeliveryOrder
$this->db = $db; $this->db = $db;
$this->name = "sirocco"; $this->name = "sirocco";
$this->description = "Modele de bon de réception livraison simple"; $this->description = "Modele de bon de r<EFBFBD>ception livraison simple";
// Dimension page pour format A4 // Dimension page pour format A4
$this->type = 'pdf'; $this->type = 'pdf';
@ -64,7 +64,7 @@ class pdf_sirocco extends ModelePDFDeliveryOrder
// Recupere emmetteur // Recupere emmetteur
$this->emetteur=$mysoc; $this->emetteur=$mysoc;
if (! $this->emetteur->pays_code) $this->emetteur->pays_code=substr($langs->defaultlang,-2); // Par defaut, si n'était pas défini if (! $this->emetteur->pays_code) $this->emetteur->pays_code=substr($langs->defaultlang,-2); // Par defaut, si n'<EFBFBD>tait pas d<>fini
$this->error = ""; $this->error = "";
} }
@ -250,6 +250,9 @@ class pdf_sirocco extends ModelePDFDeliveryOrder
$this->_tableau($pdf, $tab_top, $tab_height, $nexY, $outputlangs); $this->_tableau($pdf, $tab_top, $tab_height, $nexY, $outputlangs);
$pdf->Output($file); $pdf->Output($file);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
return 1; return 1;
} }
} }

View File

@ -55,7 +55,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder
$this->db = $db; $this->db = $db;
$this->name = "typhon"; $this->name = "typhon";
$this->description = "Modele de bon de réception livraison complet (logo...)"; $this->description = "Modele de bon de r<EFBFBD>ception livraison complet (logo...)";
// Dimension page pour format A4 // Dimension page pour format A4
$this->type = 'pdf'; $this->type = 'pdf';
@ -76,7 +76,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder
// Recupere emmetteur // Recupere emmetteur
$this->emetteur=$mysoc; $this->emetteur=$mysoc;
if (! $this->emetteur->pays_code) $this->emetteur->pays_code=substr($langs->defaultlang,-2); // Par defaut, si n'était pas défini if (! $this->emetteur->pays_code) $this->emetteur->pays_code=substr($langs->defaultlang,-2); // Par defaut, si n'<EFBFBD>tait pas d<>fini
$this->tva=array(); $this->tva=array();
@ -321,7 +321,9 @@ class pdf_typhon extends ModelePDFDeliveryOrder
$pdf->Close(); $pdf->Close();
$pdf->Output($file); $pdf->Output($file);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
return 1; // Pas d'erreur return 1; // Pas d'erreur
} }
else else