From 6a259176a4f50defec1da0fad32faf2a9cadf525 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 21 Oct 2008 21:27:20 +0000 Subject: [PATCH] Add option to set mask on new files --- htdocs/adherents/cartes/carte.php | 115 +-- htdocs/adherents/cartes/etiquette.php | 55 +- htdocs/admin/tools/export.php | 3 + htdocs/comm/action/rapport/rapport.pdf.php | 6 +- htdocs/compta/facture/impayees.php | 13 +- .../paiement/cheque/pdf/pdf_blochet.class.php | 150 ++-- .../prelevement/bon-prelevement.class.php | 150 ++-- htdocs/conf/conf.class.php | 1 + .../class/courrier-droit-editeur.class.php | 677 +++++++++--------- .../mods/methode_expedition.modules.php | 533 +++++++------- .../modules/pdf/pdf_muscadet.modules.php | 76 +- .../modules/commande/pdf_edison.modules.php | 3 + .../modules/commande/pdf_einstein.modules.php | 56 +- .../modules/dons/html_cerfafr.modules.php | 4 +- .../modules/facture/modules_facture.php | 188 ++--- .../modules/facture/pdf_crabe.modules.php | 4 +- .../modules/facture/pdf_huitre.modules.php | 35 +- .../modules/facture/pdf_oursin.modules.php | 48 +- .../modules/fichinter/pdf_soleil.modules.php | 4 +- .../modules/mailings/peche.modules.php | 12 +- .../includes/modules/modTelephonie.class.php | 1 + .../propale/pdf_propale_azur.modules.php | 4 +- .../propale/pdf_propale_jaune.modules.php | 4 +- .../modules/rapport/pdf_paiement.class.php | 31 +- htdocs/lib/CMailFile.class.php | 3 + htdocs/lib/functions.lib.php | 110 +-- htdocs/lib/ldap.class.php | 6 +- htdocs/lib/security.lib.php | 20 +- htdocs/lib/xcal.lib.php | 9 +- .../mods/pdf/pdf_sirocco.modules.php | 7 +- .../livraison/mods/pdf/pdf_typhon.modules.php | 8 +- 31 files changed, 1206 insertions(+), 1130 deletions(-) diff --git a/htdocs/adherents/cartes/carte.php b/htdocs/adherents/cartes/carte.php index 57acd24dc55..3d2d301fe98 100755 --- a/htdocs/adherents/cartes/carte.php +++ b/htdocs/adherents/cartes/carte.php @@ -19,11 +19,11 @@ */ /** - \file htdocs/adherents/cartes/carte.php - \ingroup adherent - \brief Page de creation d'une carte PDF - \version $Id$ -*/ + \file htdocs/adherents/cartes/carte.php + \ingroup adherent + \brief Page de creation d'une carte PDF + \version $Id$ + */ require("./pre.inc.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 $patterns = array ( - '/%PRENOM%/', - '/%NOM%/', - '/%SERVEUR%/', - '/%SOCIETE%/', - '/%ADRESSE%/', - '/%CP%/', - '/%VILLE%/', - '/%PAYS%/', - '/%EMAIL%/', - '/%NAISS%/', - '/%PHOTO%/', - '/%TYPE%/', - '/%ID%/', - '/%ANNEE%/' +'/%PRENOM%/', +'/%NOM%/', +'/%SERVEUR%/', +'/%SOCIETE%/', +'/%ADRESSE%/', +'/%CP%/', +'/%VILLE%/', +'/%PAYS%/', +'/%EMAIL%/', +'/%NAISS%/', +'/%PHOTO%/', +'/%TYPE%/', +'/%ID%/', +'/%ANNEE%/' ); /* *------------------------------------------------- - * Pour créer l'objet on a 2 moyens : + * Pour cr�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 le type d'étiquette au format AVERY + * Soit on donne le type d'�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_card('CARD', 1, 1); @@ -64,8 +64,8 @@ $pdf->AddPage(); // Choix de l'annee d'impression ou annee courante. if (!isset($annee)){ - $now = getdate(); - $annee=$now['year']; + $now = getdate(); + $annee=$now['year']; } // 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"; $result = $db->query($sql); -if ($result) +if ($result) { - $num = $db->num_rows($result); - $i = 0; - while ($i < $num) - { - $objp = $db->fetch_object($result); - // attribut a remplacer - $replace = array ( - ucfirst(strtolower($objp->prenom)), - strtoupper($objp->nom), - "http://".$_SERVER["SERVER_NAME"]."/", - $objp->societe, - ucwords(strtolower($objp->adresse)), - $objp->cp, - strtoupper($objp->ville), - ucfirst(strtolower($objp->pays)), - $objp->email, - $objp->naiss, - $objp->photo, - $objp->type, - $objp->rowid, - $annee - ); + $num = $db->num_rows($result); + $i = 0; + while ($i < $num) + { + $objp = $db->fetch_object($result); + // attribut a remplacer + $replace = array ( + ucfirst(strtolower($objp->prenom)), + strtoupper($objp->nom), + "http://".$_SERVER["SERVER_NAME"]."/", + $objp->societe, + ucwords(strtolower($objp->adresse)), + $objp->cp, + strtoupper($objp->ville), + ucfirst(strtolower($objp->pays)), + $objp->email, + $objp->naiss, + $objp->photo, + $objp->type, + $objp->rowid, + $annee + ); - // 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), - preg_replace ($patterns, $replace, $conf->global->ADHERENT_CARD_HEADER_TEXT), - preg_replace ($patterns, $replace, $conf->global->ADHERENT_CARD_FOOTER_TEXT)); - $i++; - } + // imprime le texte specifique sur la carte + $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_FOOTER_TEXT)); + $i++; + } - $db->close(); - $pdf->Output(); + $db->close(); + + // Output to http strem + $pdf->Output(); } else { @@ -122,4 +123,4 @@ else llxFooter('$Date$ - $Revision$'); } -?> +?> diff --git a/htdocs/adherents/cartes/etiquette.php b/htdocs/adherents/cartes/etiquette.php index a9c1f147019..e5ab07cfee0 100755 --- a/htdocs/adherents/cartes/etiquette.php +++ b/htdocs/adherents/cartes/etiquette.php @@ -16,17 +16,14 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * $Id$ - * $Source$ */ /** - \file htdocs/adherents/cartes/etiquette.php - \ingroup adherent - \brief Page de creation d'etiquettes - \version $Revision$ -*/ + \file htdocs/adherents/cartes/etiquette.php + \ingroup adherent + \brief Page de creation d'etiquettes + \version $Id$ + */ require("./pre.inc.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�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 le type d'étiquette au format AVERY + * Soit on donne le type d'�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_card('CARD', 1, 1); 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{ - $pdf = new PDF_card('L7163', 1, 1); + $pdf = new PDF_card('L7163', 1, 1); } $pdf->Open(); @@ -54,8 +51,8 @@ $pdf->AddPage(); // Choix de l'annee d'impression ou annee courante. if (!isset($annee)){ - $now = getdate(); - $annee=$now['year']; + $now = getdate(); + $annee=$now['year']; } // 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"; $result = $db->query($sql); -if ($result) +if ($result) { - $num = $db->num_rows(); - $i = 0; - while ($i < $num) - { - $objp = $db->fetch_object($result); - // 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))),'',''); - $i++; - } + $num = $db->num_rows(); + $i = 0; + while ($i < $num) + { + $objp = $db->fetch_object($result); + // 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))),'',''); + $i++; + } - $db->close(); - $pdf->Output(); + $db->close(); + + // Output to http strem + $pdf->Output(); } else { @@ -91,4 +90,4 @@ else llxFooter('$Date$ - $Revision$'); } -?> +?> diff --git a/htdocs/admin/tools/export.php b/htdocs/admin/tools/export.php index 25e9f380179..10a567f8199 100644 --- a/htdocs/admin/tools/export.php +++ b/htdocs/admin/tools/export.php @@ -169,6 +169,9 @@ if ($what == 'mysql') if ($compression == 'none') fclose($handle); if ($compression == 'gz') gzclose($handle); if ($compression == 'bz') bzclose($handle); + + if (! empty($conf->global->MAIN_UMASK)) + @chmod($outputfile, octdec($conf->global->MAIN_UMASK)); } else { diff --git a/htdocs/comm/action/rapport/rapport.pdf.php b/htdocs/comm/action/rapport/rapport.pdf.php index cf1b6f4f991..a64aab9d642 100644 --- a/htdocs/comm/action/rapport/rapport.pdf.php +++ b/htdocs/comm/action/rapport/rapport.pdf.php @@ -110,7 +110,7 @@ class CommActionRapport $pdf=new FPDI_Protection('P','mm',$this->format); $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étire, crée aléatoirement si pas défini + $pdfownerpass = NULL; // Mot de passe du propri�tire, cr�e al�atoirement si pas d�fini $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); } else @@ -138,7 +138,9 @@ class CommActionRapport $pdf->Close(); $pdf->Output($file); - + if (! empty($conf->global->MAIN_UMASK)) + @chmod($file, octdec($conf->global->MAIN_UMASK)); + return 1; } } diff --git a/htdocs/compta/facture/impayees.php b/htdocs/compta/facture/impayees.php index 2d6c9881312..3cfa6a0768b 100644 --- a/htdocs/compta/facture/impayees.php +++ b/htdocs/compta/facture/impayees.php @@ -94,8 +94,17 @@ if ($_POST["action"] == "builddoc" && $user->rights->facture->lire) // enregistre le fichier pdf concatene $filename=sanitize_string(strtolower($langs->transnoentities("Unpayed"))); if ($option=='late') $filename.='_'.sanitize_string(strtolower($langs->transnoentities("Late"))); - if ($pagecount) $pdf->Output($diroutputpdf.'/'.$filename.'_'.dolibarr_print_date(mktime(),'dayhourlog').'.pdf'); - else $mesg='
'.$langs->trans('NoPDFAvailableForChecked').'
'; + if ($pagecount) + { + $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='
'.$langs->trans('NoPDFAvailableForChecked').'
'; + } } else { diff --git a/htdocs/compta/paiement/cheque/pdf/pdf_blochet.class.php b/htdocs/compta/paiement/cheque/pdf/pdf_blochet.class.php index 8309fbc9f9a..5c3497b8de2 100644 --- a/htdocs/compta/paiement/cheque/pdf/pdf_blochet.class.php +++ b/htdocs/compta/paiement/cheque/pdf/pdf_blochet.class.php @@ -21,74 +21,74 @@ */ /** - \file htdocs/compta/paiement/cheque/pdf/pdf_blochet.class.php - \ingroup banque - \brief Fichier de la classe permettant de générer les bordereau de remise de cheque - \version $Revision$ -*/ + \file htdocs/compta/paiement/cheque/pdf/pdf_blochet.class.php + \ingroup banque + \brief Fichier de la classe permettant de g�n�rer les bordereau de remise de cheque + \version $Revision$ + */ -/** - \class BordereauChequeBlochet - \brief Classe permettant de générer les bordereau de remise de cheque -*/ +/** + \class BordereauChequeBlochet + \brief Classe permettant de g�n�rer les bordereau de remise de cheque + */ class BordereauChequeBlochet { var $emetteur; // Objet societe qui emet - /** - \brief Constructeur - */ + /** + \brief Constructeur + */ function BordereauChequeBlochet($db) - { - global $conf,$langs,$mysoc; + { + global $conf,$langs,$mysoc; $langs->load("main"); $langs->load("bills"); - + $this->db = $db; - $this->name = "blochet"; + $this->name = "blochet"; $this->description = $langs->transnoentities("CheckReceipt"); - + $this->tab_top = 60; - - // 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=20; - $this->marge_haute=10; - $this->marge_basse=10; + + // 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=20; + $this->marge_haute=10; + $this->marge_basse=10; $this->line_height = 5; $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 \param pdf pdf object \param page current page number \param pages number of pages - */ + */ function Header(&$pdf, $page, $pages) { global $langs; - + $title = $this->description; $pdf->SetFont('Arial','B',10); $pdf->Text(10, 10, $title); $pdf->SetFont('Arial','',10); $pdf->Text(10, 19, $langs->transnoentities("Numero")); - + $pdf->SetFont('Arial','',10); $pdf->Text(10, 27, $langs->transnoentities("Date") ); - + $pdf->SetFont('Arial','',10); $pdf->Text(10, 35, $langs->transnoentities("Owner")); @@ -120,7 +120,7 @@ class BordereauChequeBlochet $pdf->line(170, 47, 170, 54); $pdf->SetFont('Arial','',10); - $pdf->Text(10, 52, "Nombre de chèque"); + $pdf->Text(10, 52, "Nombre de ch�que"); $pdf->SetFont('Arial','B',10); $pdf->Text(57, 52, $this->nbcheque); @@ -131,7 +131,7 @@ class BordereauChequeBlochet $pdf->SetFont('Arial','B',10); $pdf->SetXY (170, 47); $pdf->MultiCell(31, 7, price($this->amount), 0, 'C', 0); - + // Tableau $pdf->SetFont('Arial','',8); $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->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->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->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->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�n�rant le rapport sur le disque \param _dir repertoire \param month mois du rapport \param year annee du rapport - */ + */ function write_file($_dir, $number) { global $langs; - + $dir = $_dir . "/".get_exdir($number); - + if (! is_dir($dir)) { $result=create_exdir($dir); @@ -210,54 +210,56 @@ class BordereauChequeBlochet if ($result < 0) { $this->error=$langs->transnoentities("ErrorCanNotCreateDir",$dir); - return -1; - } + return -1; + } } - + $month = sprintf("%02d",$month); $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�paration provisoire, ajout de 2 zero + // Protection et encryption du pdf - if ($conf->global->PDF_SECURITY_ENCRYPTION) - { - require_once(FPDFI_PATH.'fpdi_protection.php'); - $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 - { - require_once(FPDFI_PATH.'fpdi.php'); - $pdf=new FPDI('P','mm',$this->format); - } + if ($conf->global->PDF_SECURITY_ENCRYPTION) + { + require_once(FPDFI_PATH.'fpdi_protection.php'); + $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 + { + require_once(FPDFI_PATH.'fpdi.php'); + $pdf=new FPDI('P','mm',$this->format); + } $pdf->Open(); - - + + $pages = intval($lignes / $this->line_per_page); - + if (($lignes % $this->line_per_page)>0) { $pages++; } - + 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; } - + $pdf->AddPage(); - + $this->Header($pdf, 1, $pages); - + $this->Body($pdf, 1); - + $pdf->Output($_file); - } + if (! empty($conf->global->MAIN_UMASK)) + @chmod($file, octdec($conf->global->MAIN_UMASK)); + } } ?> diff --git a/htdocs/compta/prelevement/bon-prelevement.class.php b/htdocs/compta/prelevement/bon-prelevement.class.php index 23679be5072..0998e361e23 100644 --- a/htdocs/compta/prelevement/bon-prelevement.class.php +++ b/htdocs/compta/prelevement/bon-prelevement.class.php @@ -22,7 +22,7 @@ /** \file htdocs/bon-prelevement.class.php \ingroup prelevement - \brief Fichier de la classe des bons de prélévements + \brief Fichier de la classe des bons de pr�l�vements \version $Revision$ */ @@ -129,7 +129,7 @@ class BonPrelevement if ($concat == 1) { /* - * On aggrège les lignes + * On aggr�ge les lignes */ $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."prelevement_lignes"; $sql .= " WHERE fk_prelevement_bons".$this->id; @@ -150,7 +150,7 @@ class BonPrelevement else { /* - * Pas de d'agrégation + * Pas de d'agr�gation */ $sql = "INSERT INTO ".MAIN_DB_PREFIX."prelevement_lignes (fk_prelevement_bons"; $sql .= " , fk_soc , client_nom "; @@ -237,7 +237,7 @@ class BonPrelevement } else { - dolibarr_syslog("BonPrelevement::Fetch Erreur aucune ligne retournée"); + dolibarr_syslog("BonPrelevement::Fetch Erreur aucune ligne retourn�e"); return -1; } } @@ -279,7 +279,7 @@ class BonPrelevement for ($i = 0 ; $i < sizeof($facs) ; $i++) { - /* Tag la facture comme impayée */ + /* Tag la facture comme impay�e */ dolibarr_syslog("BonPrelevement::set_credite set_payed fac ".$facs[$i]); $fac = new Facture($this->db); $fac->fetch($facs[$i]); @@ -302,7 +302,7 @@ class BonPrelevement } /* - * Fin de la procédure + * Fin de la proc�dure * */ if ($error == 0) @@ -352,10 +352,10 @@ class BonPrelevement if ($this->db->query($sql)) { - $subject = "Crédit prélèvement ".$this->ref." à la banque"; - $message = "Le bon de prélèvement ".$this->ref; - $message .= " a été crédité par la banque.\n"; - $message .= "Date crédit : ".dolibarr_print_date($date,'dayhour'); + $subject = "Cr�dit pr�l�vement ".$this->ref." � la banque"; + $message = "Le bon de pr�l�vement ".$this->ref; + $message .= " a �t� cr�dit� par la banque.\n"; + $message .= "Date cr�dit : ".dolibarr_print_date($date,'dayhour'); $this->Notify($user, "cr", $subject, $message); } @@ -366,7 +366,7 @@ class BonPrelevement } /* - * Fin de la procédure + * Fin de la proc�dure * */ if ($error == 0) @@ -421,12 +421,12 @@ class BonPrelevement { $this->method_trans = $method; - $subject = "Transmission du prélèvement ".$this->ref." à la banque"; - $message = "Le bon de prélèvement ".$this->ref; - $message .= " a été transmis à la banque par ".$user->prenom. " ".$user->nom; + $subject = "Transmission du pr�l�vement ".$this->ref." � la banque"; + $message = "Le bon de pr�l�vement ".$this->ref; + $message .= " a �t� transmis � la banque par ".$user->prenom. " ".$user->nom; $message .= "\n\n"; $message .= "\nMontant : ".price($this->amount); - $message .= "\nMéthode : ".$this->methodes_trans[$this->method_trans]; + $message .= "\nM�thode : ".$this->methodes_trans[$this->method_trans]; $message .= "\nDate : ".dolibarr_print_date($date,'day'); $this->Notify($user,"tr", $subject, $message, 1); @@ -439,7 +439,7 @@ class BonPrelevement } /* - * Fin de la procédure + * Fin de la proc�dure * */ if ($error == 0) @@ -470,7 +470,7 @@ class BonPrelevement function Notify($user, $action, $subject, $message, $joinfile=0) { $message .= "\n\n--\n"; - $message .= "Ceci est un message automatique envoyé par Dolibarr"; + $message .= "Ceci est un message automatique envoy� par Dolibarr"; $sql = "SELECT u.name, u.firstname, u.email"; $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�re la liste des factures concern�es */ function _get_list_factures() { $arr = array(); /* - * Renvoie toutes les factures présente - * dans un bon de prélèvement + * Renvoie toutes les factures pr�sente + * dans un bon de pr�l�vement */ $sql = "SELECT fk_facture"; $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�lever * \param banque bank * \param agence agence * \return int db->free($resql); - dolibarr_syslog("$i factures à prélever"); + dolibarr_syslog("$i factures � pr�lever"); } else { @@ -737,11 +737,11 @@ class BonPrelevement if (! $error) { /* - * Vérification des RIB + * V�rification des RIB * */ $i = 0; - dolibarr_syslog("Début vérification des RIB"); + dolibarr_syslog("D�but v�rification des RIB"); if (sizeof($factures) > 0) { @@ -769,7 +769,7 @@ class BonPrelevement } else { - dolibarr_syslog("Impossible de lire la société"); + dolibarr_syslog("Impossible de lire la soci�t�"); } } 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�lev�es"); if (sizeof($factures_prev) > 0) { @@ -855,7 +855,7 @@ class BonPrelevement else { $error++; - dolibarr_syslog("Erreur création du bon de prelevement"); + dolibarr_syslog("Erreur cr�ation du bon de prelevement"); } } @@ -865,7 +865,7 @@ class BonPrelevement */ if (!$error) { - dolibarr_syslog("Début génération des paiements"); + dolibarr_syslog("D�but g�n�ration des paiements"); dolibarr_syslog("Nombre de factures ".sizeof($factures_prev)); if (sizeof($factures_prev) > 0) @@ -880,7 +880,7 @@ class BonPrelevement $pai->amounts = array(); $pai->amounts[$fac[0]] = $fact->total_ttc; $pai->datepaye = $this->db->idate($datetimeprev); - $pai->paiementid = 3; // prélèvement + $pai->paiementid = 3; // pr�l�vement $pai->num_paiement = $ref; if ($pai->create($user, 1) == -1) // on appelle en no_commit @@ -896,7 +896,7 @@ class BonPrelevement $pai->valide(); /* - * Ajout d'une ligne de prélèvement + * Ajout d'une ligne de pr�l�vement * * * $fac[3] : banque @@ -916,7 +916,7 @@ class BonPrelevement } /* - * Mise à jour des demandes + * Mise � jour des demandes * */ $sql = "UPDATE ".MAIN_DB_PREFIX."prelevement_facture_demande"; @@ -976,7 +976,7 @@ class BonPrelevement } /* - * Mise à jour du total + * Mise � jour du total * */ @@ -988,7 +988,7 @@ class BonPrelevement if (! $resql) { $error++; - dolibarr_syslog("Erreur mise à jour du total - $sql"); + dolibarr_syslog("Erreur mise � jour du total - $sql"); } /* @@ -1086,11 +1086,13 @@ class BonPrelevement } /** - * Génération d'un bon de prélèvement + * G�n�ration d'un bon de pr�l�vement * */ function Generate() { + global $conf; + $result = -1; $this->file = fopen ($this->filename,"w"); @@ -1160,7 +1162,9 @@ class BonPrelevement $this->EnregTotal($this->total); fclose($this->file); - + if (! empty($conf->global->MAIN_UMASK)) + @chmod($this->file, octdec($conf->global->MAIN_UMASK)); + return $result; } @@ -1173,13 +1177,13 @@ class BonPrelevement function EnregDestinataire($rowid, $client_nom, $rib_banque, $rib_guichet, $rib_number, $amount) { fputs ($this->file, "06"); - fputs ($this->file, "08"); // Prélèvement ordinaire + fputs ($this->file, "08"); // Pr�l�vement ordinaire - fputs ($this->file, " "); // Zone Réservée B2 + fputs ($this->file, " "); // Zone R�serv�e B2 - fputs ($this->file, $this->numero_national_emetteur); // Numéro National d'emmetteur B3 + fputs ($this->file, $this->numero_national_emetteur); // Num�ro National d'emmetteur B3 - // Date d'échéance C1 + // Date d'�ch�ance C1 fputs ($this->file, " "); fputs ($this->file, strftime("%d%m", $this->date_echeance)); @@ -1193,7 +1197,7 @@ class BonPrelevement fputs ($this->file, substr(" ",0,24)); - // Zone Réservée D2 + // Zone R�serv�e D2 fputs ($this->file, substr(" ",0,8)); @@ -1211,16 +1215,16 @@ class BonPrelevement fputs ($this->file, substr("000000000000000".$montant, -16)); - // Libellé F + // Libell� F fputs ($this->file, substr("*".$this->ref.$rowid." ",0,13)); fputs ($this->file, substr(" ",0,18)); - // Code établissement G1 + // Code �tablissement G1 fputs ($this->file, $rib_banque); - // Zone Réservée G2 + // Zone R�serv�e G2 fputs ($this->file, substr(" ",0,5)); @@ -1236,13 +1240,13 @@ class BonPrelevement function EnregDestinataireVersion1($fac) { fputs ($this->file, "06"); - fputs ($this->file, "08"); // Prélèvement ordinaire + fputs ($this->file, "08"); // Pr�l�vement ordinaire - fputs ($this->file, " "); // Zone Réservée B2 + fputs ($this->file, " "); // Zone R�serv�e B2 - fputs ($this->file, $this->numero_national_emetteur); // Numéro National d'emmetteur B3 + fputs ($this->file, $this->numero_national_emetteur); // Num�ro National d'emmetteur B3 - // Date d'échéance C1 + // Date d'�ch�ance C1 fputs ($this->file, " "); fputs ($this->file, strftime("%d%m", $this->date_echeance)); @@ -1252,11 +1256,11 @@ class BonPrelevement fputs ($this->file, substr($fac->client->nom. " ",0,24)); - // Reference de la remise créancier D1 + // Reference de la remise cr�ancier D1 fputs ($this->file, substr(" ",0,24)); - // Zone Réservée D2 + // Zone R�serv�e D2 fputs ($this->file, substr(" ",0,8)); @@ -1274,16 +1278,16 @@ class BonPrelevement fputs ($this->file, substr("000000000000000".$montant, -16)); - // Libellé F + // Libell� F fputs ($this->file, substr("*".$fac->ref." ",0,13)); fputs ($this->file, substr(" ",0,18)); - // Code établissement G1 + // Code �tablissement G1 fputs ($this->file, $fac->client->bank_account->code_banque); - // Zone Réservée G2 + // Zone R�serv�e G2 fputs ($this->file, substr(" ",0,5)); @@ -1297,13 +1301,13 @@ class BonPrelevement function EnregEmetteur() { fputs ($this->file, "03"); - fputs ($this->file, "08"); // Prélèvement ordinaire + fputs ($this->file, "08"); // Pr�l�vement ordinaire - fputs ($this->file, " "); // Zone Réservée B2 + fputs ($this->file, " "); // Zone R�serv�e B2 - fputs ($this->file, $this->numero_national_emetteur); // Numéro National d'emmetteur B3 + fputs ($this->file, $this->numero_national_emetteur); // Num�ro National d'emmetteur B3 - // Date d'échéance C1 + // Date d'�ch�ance C1 fputs ($this->file, " "); fputs ($this->file, strftime("%d%m", $this->date_echeance)); @@ -1313,15 +1317,15 @@ class BonPrelevement 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�ancier D1 sur 7 caract�res fputs ($this->file, substr($this->reference_remise. " ",0,7)); - // Zone Réservée D1-2 + // Zone R�serv�e D1-2 fputs ($this->file, substr(" ",0,17)); - // Zone Réservée D2 + // Zone R�serv�e D2 fputs ($this->file, substr(" ",0,2)); fputs ($this->file, "E"); @@ -1335,19 +1339,19 @@ class BonPrelevement fputs ($this->file, substr("000000000000000".$this->emetteur_numero_compte, -11)); - // Zone Réservée E + // Zone R�serv�e E fputs ($this->file, substr(" ",0,16)); - // Zone Réservée F + // Zone R�serv�e F fputs ($this->file, substr(" ",0,31)); - // Code établissement + // Code �tablissement fputs ($this->file, $this->emetteur_code_etablissement); - // Zone Réservée G + // Zone R�serv�e G fputs ($this->file, substr(" ",0,5)); @@ -1362,13 +1366,13 @@ class BonPrelevement function EnregTotal($total) { fputs ($this->file, "08"); - fputs ($this->file, "08"); // Prélèvement ordinaire + fputs ($this->file, "08"); // Pr�l�vement ordinaire - fputs ($this->file, " "); // Zone Réservée B2 + fputs ($this->file, " "); // Zone R�serv�e B2 - fputs ($this->file, $this->numero_national_emetteur); // Numéro National d'emmetteur B3 + fputs ($this->file, $this->numero_national_emetteur); // Num�ro National d'emmetteur B3 - // Réservé C1 + // R�serv� C1 fputs ($this->file, substr(" ",0,12)); @@ -1381,7 +1385,7 @@ class BonPrelevement fputs ($this->file, substr(" ",0,24)); - // Zone Réservée D2 + // Zone R�serv�e D2 fputs ($this->file, substr(" ",0,8)); @@ -1399,15 +1403,15 @@ class BonPrelevement fputs ($this->file, substr("000000000000000".$montant, -16)); - // Zone Réservée F + // Zone R�serv�e F fputs ($this->file, substr(" ",0,31)); - // Code établissement + // Code �tablissement fputs ($this->file, substr(" ",0,5)); - // Zone Réservée F + // Zone R�serv�e F fputs ($this->file, substr(" ",0,5)); diff --git a/htdocs/conf/conf.class.php b/htdocs/conf/conf.class.php index dcbfe9231e1..e72fad4a370 100644 --- a/htdocs/conf/conf.class.php +++ b/htdocs/conf/conf.class.php @@ -238,6 +238,7 @@ class Conf // Module adherent $this->adherent->enabled=defined("MAIN_MODULE_ADHERENT")?MAIN_MODULE_ADHERENT:0; $this->adherent->dir_output=DOL_DATA_ROOT."/adherent"; + $this->adherent->dir_tmp=DOL_DATA_ROOT."/adherent/temp"; // Module produit $this->produit->enabled=defined("MAIN_MODULE_PRODUIT")?MAIN_MODULE_PRODUIT:0; $this->produit->dir_output=DOL_DATA_ROOT."/produit"; diff --git a/htdocs/docs/class/courrier-droit-editeur.class.php b/htdocs/docs/class/courrier-droit-editeur.class.php index 786e474c235..4824a18cbe1 100644 --- a/htdocs/docs/class/courrier-droit-editeur.class.php +++ b/htdocs/docs/class/courrier-droit-editeur.class.php @@ -17,357 +17,360 @@ */ /** - \file docs/class/courrier-droit-editeur.class.php - \ingroup editeurs - \brief Classe de generation des courriers pour les editeurs - \version $Id$ -*/ + \file docs/class/courrier-droit-editeur.class.php + \ingroup editeurs + \brief Classe de generation des courriers pour les editeurs + \version $Id$ + */ require_once(DOL_DOCUMENT_ROOT.'/includes/fpdf/fpdfi/fpdi_protection.php'); -class pdf_courrier_droit_editeur +class pdf_courrier_droit_editeur { - /** - \brief Constructeur - \param db Handler accès base de donnée + /** + \brief Constructeur + \param db Handler acc�s base de donn�e */ - function pdf_courrier_droit_editeur ($db) - { - $this->langs = $langs; - - $this->db = $db; - - // Dimension page pour format A4 - $this->type = 'pdf'; - $this->page_largeur = 210; - $this->page_hauteur = 297; - $this->format = array($this->page_largeur,$this->page_hauteur); - $this->marge_gauche=10; - $this->marge_droite=10; - $this->marge_haute=10; - $this->marge_basse=10; - - $this->name = "Courrier des droits ".strftime("%Y", time()); - $this->file = '1'.strftime("%Y", time()).'.pdf'; - } - - /** - \brief Génère le document - \return int 0 = ok, <> 0 = ko - */ - function Generate($numero) - { - global $conf; - - $this->file = $numero.strftime("%Y", time()); - $this->extension = "pdf"; - - dolibarr_syslog("pdf_courrier_droit_editeur::Generate ", LOG_DEBUG ); - - require_once(FPDF_PATH.'fpdf.php'); - require_once(DOL_DOCUMENT_ROOT."/product.class.php"); - require_once(DOL_DOCUMENT_ROOT."/product/canvas/product.livre.class.php"); - $error = 0; - $year = strftime("%Y", time()); - - // - $sql = "SELECT s.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) + function pdf_courrier_droit_editeur ($db) { - $livre = new ProductLivre($this->db); - $livre->FetchCanvas($value['id']); + $this->langs = $langs; - $pdf->AddPage(); - $qtycontrat = $value['qty']; - /* - * Adresse - */ + $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; - // Client destinataire - $posy=42; - $pdf->SetTextColor(0,0,0); - $pdf->SetFont('Arial','',8); - $pdf->SetXY(102,$posy-5); - - // Nom client - $pdf->SetXY(102,$posy+3); - $pdf->SetFont('Arial','B',11); - $pdf->MultiCell(106,4, $soc->nom, 0, 'L'); - - // Caractéristiques client - $carac_client=$soc->adresse; - $carac_client.="\n".$soc->cp . " " . $soc->ville."\n"; - $carac_client.=$soc->pays."\n"; - - $pdf->SetFont('Arial','',9); - $pdf->SetXY(102,$posy+8); - $pdf->MultiCell(86,4, $carac_client); - /* - * - * - */ - $pdf->SetTextColor(0,0,0); - $pdf->SetFont('Arial','',10); - - $pdf->SetXY(10,100); - - $pdf->MultiCell(190,5,"Je vous prie de trouver ci-dessous le récapitulatif des ventes du titre cité pour la période du 1er janvier au 31 décembre $year_data."); - - $pdf->SetXY(10,120); - $pdf->MultiCell(25,5,"Nom du titre : "); - $pdf->SetFont('Arial','B',10); - $pdf->SetXY(35,120); - $pdf->MultiCell(140,5,$value['title']); - - $pdf->SetFont('Arial','',10); - $pdf->SetXY(10,140); - $pdf->MultiCell(46,5,"Quantité signée au contrat : "); - - $pdf->SetFont('Arial','B',10); - $pdf->SetXY(56,140); - $pdf->MultiCell(14,5,$qtycontrat,0,'R'); - - $sql = "SELECT p.label, sum(fd.qty), date_format(f.datef,'%Y')"; - $sql .= " FROM ".MAIN_DB_PREFIX."facture as f"; - $sql .= " , ".MAIN_DB_PREFIX."facturedet as fd"; - $sql .= " , ".MAIN_DB_PREFIX."product as p"; - $sql .= " WHERE fd.fk_facture = f.rowid"; - $sql .= " AND p.rowid = '".$value['id']."'"; - $sql .= " AND fd.fk_product = p.rowid"; - $sql .= " AND p.canvas = 'livre'"; - $sql .= " GROUP BY p.rowid, date_format(f.datef,'%Y') ORDER BY date_format(f.datef,'%Y') ASC"; - - $resql=$this->db->query($sql); - - $qtysell = 0; - - if ($resql) - { - $i = 0; - while ($row = $this->db->fetch_row($resql) ) - { - $i++; - - $pdf->SetFont('Arial','',10); - $pdf->SetXY(10,140 + ($i * 8) ); - $pdf->MultiCell(44,5,"Quantité vendue en ".$row[2]." : ",0); - $pdf->SetFont('Arial','B',10); - $pdf->SetXY(54,140 + ($i * 8) ); - $pdf->MultiCell(16,5,$row[1],0,'R'); - - $qtysell += $row[1]; - - } - $this->db->free($resql); - } - else - { - print $this->db->error(); - } - - - $pdf->SetFont('Arial','',10); - $pdf->SetXY(100,140 + ($i * 8) ); - $pdf->MultiCell(15,5,"Solde : ",0); - $pdf->SetFont('Arial','B',10); - $pdf->SetXY(115,140 + ($i * 8) ); - $pdf->MultiCell(16,5,($qtycontrat - $qtysell),0,'R'); - - $i++; - $pdf->SetFont('Arial','',10); - $pdf->SetXY(10,140 + ($i * 10) ); - $pdf->MultiCell(50,5,"Taux des droits d'auteurs : ",0); - $pdf->SetFont('Arial','B',10); - $pdf->SetXY(60,140 + ($i * 10) ); - $pdf->MultiCell(16,5, $value['taux']." %",0,'R'); - - $i++; - $pdf->SetFont('Arial','',10); - $pdf->SetXY(10,140 + ($i * 10) ); - $pdf->MultiCell(50,5,"Prix de vente des livres HT : ",0); - $pdf->SetFont('Arial','B',10); - $pdf->SetXY(60,140 + ($i * 10) ); - $pdf->MultiCell(16,5, sprintf("%.2f",$livre->price),0,'R'); - - $i++; - $pdf->SetFont('Arial','',10); - $pdf->SetXY(10,140 + ($i * 10) ); - $pdf->MultiCell(50,5,"Prix de vente des livres TTC : ",0); - $pdf->SetFont('Arial','B',10); - $pdf->SetXY(60,140 + ($i * 10) ); - $pdf->MultiCell(16,5, sprintf("%.2f",$livre->price_ttc),0,'R'); - - $i++; - $pdf->SetFont('Arial','',10); - $pdf->SetXY(10,150 + ($i * 10) ); - $pdf->MultiCell(80,5,"Reste à devoir sur les droits pour l'année ".($year-1)." : ",0); - $pdf->SetFont('Arial','B',10); - $pdf->SetXY(90,140 + ($i * 10) ); - $pdf->MultiCell(16,5, $pu_ttc,0,'R'); - - $i++; - $pdf->SetFont('Arial','',10); - $pdf->SetXY(10,150 + ($i * 10) + 20); - $pdf->MultiCell(190,5,"Nous restons à votre entière disposition pour de plus amples renseignements dont vous pouvez avoir besoin et vous remercions de la confiance que vous nous avez accordée."); - - + $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(); - return 0; - } - else - { - $this->error=$this->langs->trans("ErrorCanNotCreateDir",$dir); - return -6; - } - } + 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); + 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�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); + $livre->FetchCanvas($value['id']); + + $pdf->AddPage(); + $qtycontrat = $value['qty']; + /* + * Adresse + */ + + + // Client destinataire + $posy=42; + $pdf->SetTextColor(0,0,0); + $pdf->SetFont('Arial','',8); + $pdf->SetXY(102,$posy-5); + + // Nom client + $pdf->SetXY(102,$posy+3); + $pdf->SetFont('Arial','B',11); + $pdf->MultiCell(106,4, $soc->nom, 0, 'L'); + + // Caract�ristiques client + $carac_client=$soc->adresse; + $carac_client.="\n".$soc->cp . " " . $soc->ville."\n"; + $carac_client.=$soc->pays."\n"; + + $pdf->SetFont('Arial','',9); + $pdf->SetXY(102,$posy+8); + $pdf->MultiCell(86,4, $carac_client); + /* + * + * + */ + $pdf->SetTextColor(0,0,0); + $pdf->SetFont('Arial','',10); + + $pdf->SetXY(10,100); + + $pdf->MultiCell(190,5,"Je vous prie de trouver ci-dessous le r�capitulatif des ventes du titre cit� pour la p�riode du 1er janvier au 31 d�cembre $year_data."); + + $pdf->SetXY(10,120); + $pdf->MultiCell(25,5,"Nom du titre : "); + $pdf->SetFont('Arial','B',10); + $pdf->SetXY(35,120); + $pdf->MultiCell(140,5,$value['title']); + + $pdf->SetFont('Arial','',10); + $pdf->SetXY(10,140); + $pdf->MultiCell(46,5,"Quantit� sign�e au contrat : "); + + $pdf->SetFont('Arial','B',10); + $pdf->SetXY(56,140); + $pdf->MultiCell(14,5,$qtycontrat,0,'R'); + + $sql = "SELECT p.label, sum(fd.qty), date_format(f.datef,'%Y')"; + $sql .= " FROM ".MAIN_DB_PREFIX."facture as f"; + $sql .= " , ".MAIN_DB_PREFIX."facturedet as fd"; + $sql .= " , ".MAIN_DB_PREFIX."product as p"; + $sql .= " WHERE fd.fk_facture = f.rowid"; + $sql .= " AND p.rowid = '".$value['id']."'"; + $sql .= " AND fd.fk_product = p.rowid"; + $sql .= " AND p.canvas = 'livre'"; + $sql .= " GROUP BY p.rowid, date_format(f.datef,'%Y') ORDER BY date_format(f.datef,'%Y') ASC"; + + $resql=$this->db->query($sql); + + $qtysell = 0; + + if ($resql) + { + $i = 0; + while ($row = $this->db->fetch_row($resql) ) + { + $i++; + + $pdf->SetFont('Arial','',10); + $pdf->SetXY(10,140 + ($i * 8) ); + $pdf->MultiCell(44,5,"Quantit� vendue en ".$row[2]." : ",0); + $pdf->SetFont('Arial','B',10); + $pdf->SetXY(54,140 + ($i * 8) ); + $pdf->MultiCell(16,5,$row[1],0,'R'); + + $qtysell += $row[1]; + + } + $this->db->free($resql); + } + else + { + print $this->db->error(); + } + + + $pdf->SetFont('Arial','',10); + $pdf->SetXY(100,140 + ($i * 8) ); + $pdf->MultiCell(15,5,"Solde : ",0); + $pdf->SetFont('Arial','B',10); + $pdf->SetXY(115,140 + ($i * 8) ); + $pdf->MultiCell(16,5,($qtycontrat - $qtysell),0,'R'); + + $i++; + $pdf->SetFont('Arial','',10); + $pdf->SetXY(10,140 + ($i * 10) ); + $pdf->MultiCell(50,5,"Taux des droits d'auteurs : ",0); + $pdf->SetFont('Arial','B',10); + $pdf->SetXY(60,140 + ($i * 10) ); + $pdf->MultiCell(16,5, $value['taux']." %",0,'R'); + + $i++; + $pdf->SetFont('Arial','',10); + $pdf->SetXY(10,140 + ($i * 10) ); + $pdf->MultiCell(50,5,"Prix de vente des livres HT : ",0); + $pdf->SetFont('Arial','B',10); + $pdf->SetXY(60,140 + ($i * 10) ); + $pdf->MultiCell(16,5, sprintf("%.2f",$livre->price),0,'R'); + + $i++; + $pdf->SetFont('Arial','',10); + $pdf->SetXY(10,140 + ($i * 10) ); + $pdf->MultiCell(50,5,"Prix de vente des livres TTC : ",0); + $pdf->SetFont('Arial','B',10); + $pdf->SetXY(60,140 + ($i * 10) ); + $pdf->MultiCell(16,5, sprintf("%.2f",$livre->price_ttc),0,'R'); + + $i++; + $pdf->SetFont('Arial','',10); + $pdf->SetXY(10,150 + ($i * 10) ); + $pdf->MultiCell(80,5,"Reste � devoir sur les droits pour l'ann�e ".($year-1)." : ",0); + $pdf->SetFont('Arial','B',10); + $pdf->SetXY(90,140 + ($i * 10) ); + $pdf->MultiCell(16,5, $pu_ttc,0,'R'); + + $i++; + $pdf->SetFont('Arial','',10); + $pdf->SetXY(10,150 + ($i * 10) + 20); + $pdf->MultiCell(190,5,"Nous restons � votre enti�re disposition pour de plus amples renseignements dont vous pouvez avoir besoin et vous remercions de la confiance que vous nous avez accord�e."); + + + } + + + + return 0; + } + else + { + $this->error=$this->langs->trans("ErrorCanNotCreateDir",$dir); + return -6; + } + } + - } ?> diff --git a/htdocs/expedition/mods/methode_expedition.modules.php b/htdocs/expedition/mods/methode_expedition.modules.php index e22972f7343..66b39efc020 100644 --- a/htdocs/expedition/mods/methode_expedition.modules.php +++ b/htdocs/expedition/mods/methode_expedition.modules.php @@ -22,286 +22,289 @@ */ /** - \file htdocs/expedition/mods/methode_expedition.modules.php - \ingroup expedition - \brief Fichier contenant la classe mère de generation de bon de livraison en PDF - et la classe mère de numérotation des bons de livraisons - \version $Revision$ -*/ + \file htdocs/expedition/mods/methode_expedition.modules.php + \ingroup expedition + \brief Fichier contenant la classe m�re de generation de bon de livraison en PDF + et la classe m�re de num�rotation des bons de livraisons + \version $Revision$ + */ require_once(DOL_DOCUMENT_ROOT.'/includes/fpdf/fpdfi/fpdi_protection.php'); /** - \class methode_expedition - \brief Classe mère des methodes expeditions -*/ + \class methode_expedition + \brief Classe m�re des methodes expeditions + */ class methode_expedition { - function methode_expedition($db=0) - { - $this->db = $db; - $this->name = "NON DEFINIT"; - $this->description = "ERREUR DANS LA DEFINITION DU MODULE."; - } - - function Active($statut) - { - // Mise a jour du statut - $sql = "UPDATE ".MAIN_DB_PREFIX."expedition_methode set statut = $statut "; - $sql.= " WHERE rowid = ".$this->id; - - $resql = $this->db->query($sql); - - if ($resql) - { - $af = $this->db->affected_rows($resql); - - if ($af == 0 && $statut == 1) + function methode_expedition($db=0) + { + $this->db = $db; + $this->name = "NON DEFINIT"; + $this->description = "ERREUR DANS LA DEFINITION DU MODULE."; + } + + function Active($statut) + { + // Mise a jour du statut + $sql = "UPDATE ".MAIN_DB_PREFIX."expedition_methode set statut = $statut "; + $sql.= " WHERE rowid = ".$this->id; + + $resql = $this->db->query($sql); + + if ($resql) + { + $af = $this->db->affected_rows($resql); + + if ($af == 0 && $statut == 1) { - // On créé la méthode dans la base - - $sql = "INSERT INTO ".MAIN_DB_PREFIX."expedition_methode"; - $sql .= " (rowid, statut, code, libelle, description)"; - $sql .= " VALUES (".$this->id.",1,'$this->code','$this->name','$this->description')"; - - $resql = $this->db->query($sql); - - if (! $resql) - { - dolibarr_syslog("methode_expedition::Active Erreur 2"); - } + // On cr�� la m�thode dans la base + + $sql = "INSERT INTO ".MAIN_DB_PREFIX."expedition_methode"; + $sql .= " (rowid, statut, code, libelle, description)"; + $sql .= " VALUES (".$this->id.",1,'$this->code','$this->name','$this->description')"; + + $resql = $this->db->query($sql); + + if (! $resql) + { + dolibarr_syslog("methode_expedition::Active Erreur 2"); + } } - } - else - { - dolibarr_syslog("methode_expedition::Active Erreur 1"); - } - } - - function write_file($id) - { - global $user; - $propale = new Propal($this->db,"",$id); - if ($propale->fetch($id)) - { - - - $file = $dir . "/" . $propale->ref . ".pdf"; - - 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'); + } + else + { + dolibarr_syslog("methode_expedition::Active Erreur 1"); + } + } - $pdf->SetXY (156, $curY ); - $pdf->MultiCell(18, 5, price($propale->lignes[$i]->price), 0, 'R', 0); - - $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 ); + function write_file($id) + { + global $conf, $user; - 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); - - } - } - } - - 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); + $propale = new Propal($this->db,"",$id); + if ($propale->fetch($id)) + { - $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); + $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); + } - 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é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); - - - } + $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 ); + $pdf->MultiCell(18, 5, price($propale->lignes[$i]->price), 0, 'R', 0); + + $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) + { + $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�'); + + $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�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); + + + } } diff --git a/htdocs/fourn/commande/modules/pdf/pdf_muscadet.modules.php b/htdocs/fourn/commande/modules/pdf/pdf_muscadet.modules.php index 638db50c203..c1c528c9263 100644 --- a/htdocs/fourn/commande/modules/pdf/pdf_muscadet.modules.php +++ b/htdocs/fourn/commande/modules/pdf/pdf_muscadet.modules.php @@ -22,7 +22,7 @@ /** * \file htdocs/fourn/commande/modules/pdf_muscadet.modules.php * \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�n�rer les commandes fournisseurs au mod�le Muscadet * \author Regis Houssin * \version $Id$ */ @@ -35,14 +35,14 @@ require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php"); /** * \class pdf_muscadet - * \brief Classe permettant de générer les commandes fournisseurs au modèle Muscadet + * \brief Classe permettant de g�n�rer les commandes fournisseurs au mod�le Muscadet */ class pdf_muscadet extends ModelePDFSuppliersOrders { /** * \brief Constructeur - * \param db Handler accès base de donnée + * \param db Handler acc�s base de donn�e */ function pdf_muscadet($db) { @@ -53,7 +53,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $this->db = $db; $this->name = "muscadet"; - $this->description = "Modèle de commandes fournisseur complet (logo...)"; + $this->description = "Mod�le de commandes fournisseur complet (logo...)"; // Dimension page pour format A4 $this->type = 'pdf'; @@ -67,8 +67,8 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $this->option_logo = 1; // Affiche logo $this->option_tva = 1; // Gere option tva FACTURE_TVAOPTION - $this->option_modereg = 1; // Affiche mode règlement - $this->option_condreg = 1; // Affiche conditions règlement + $this->option_modereg = 1; // Affiche mode r�glement + $this->option_condreg = 1; // Affiche conditions r�glement $this->option_codeproduitservice = 1; // Affiche code produit-service $this->option_multilang = 1; // Dispo en plusieurs langues @@ -77,7 +77,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders // Recupere emmetteur $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'�tait pas d�fini // Defini position des colonnes $this->posxdesc=$this->marge_gauche+1; @@ -93,8 +93,8 @@ class pdf_muscadet extends ModelePDFSuppliersOrders } /** - \brief Renvoi dernière erreur - \return string Dernière erreur + \brief Renvoi derni�re erreur + \return string Derni�re erreur */ function pdferror() { @@ -102,8 +102,8 @@ class pdf_muscadet extends ModelePDFSuppliersOrders } /** - \brief Fonction générant la commande sur le disque - \param id Id de la commande à générer + \brief Fonction g�n�rant la commande sur le disque + \param id Id de la commande � g�n�rer \return int 1=ok, 0=ko */ function write_file($com,$outputlangs='') @@ -125,7 +125,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders if ($conf->fournisseur->commande->dir_output) { - // Définition de l'objet $com (pour compatibilite ascendante) + // D�finition de l'objet $com (pour compatibilite ascendante) if (! is_object($com)) { $id = $com; @@ -134,7 +134,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders } $deja_regle = ""; - // Définition de $dir et $file + // D�finition de $dir et $file if ($com->specimen) { $dir = $conf->fournisseur->commande->dir_output; @@ -167,7 +167,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $pdf=new FPDI_Protection('P','mm',$this->format); $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 + $pdfownerpass = NULL; // Mot de passe du propri�taire, cr�� al�atoirement si pas d�fini $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); } else @@ -210,7 +210,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders { $tab_top = 88; - $pdf->SetFont('Arial','', 9); // Dans boucle pour gérer multi-page + $pdf->SetFont('Arial','', 9); // Dans boucle pour g�rer multi-page $pdf->SetXY ($this->posxdesc-1, $tab_top); $pdf->MultiCell(190, 3, $com->note_public, 0, 'J'); $nexY = $pdf->GetY(); @@ -244,22 +244,22 @@ class pdf_muscadet extends ModelePDFSuppliersOrders if ($libelleproduitservice) $libelleproduitservice.="
"; $libelleproduitservice.=dol_htmlentitiesbr($com->lignes[$i]->desc,1); } - // Si ligne associée à un code produit + // Si ligne associ�e � un code produit if ($com->lignes[$i]->fk_product) { $libelleproduitservice=$outputlangs->transnoentities("Product")." ".$com->lignes[$i]->ref_fourn." - ".$libelleproduitservice; } if ($com->lignes[$i]->date_start && $com->lignes[$i]->date_end) { - // Affichage durée si il y en a une + // Affichage dur�e si il y en a une $libelleproduitservice.="
".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�rer multi-page $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�faut $nexY = $pdf->GetY(); @@ -271,7 +271,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $pdf->SetXY ($this->posxup, $curY); $pdf->MultiCell(18, 4, price($com->lignes[$i]->subprice), 0, 'R', 0); - // Quantité + // Quantit� $pdf->SetXY ($this->posxqty, $curY); $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�glement */ 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�glement par CHQ */ /* if (defined("FACTURE_CHQ_NUMBER")) @@ -358,7 +358,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $pdf->SetXY ($this->marge_gauche, 227); $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�glement par ch�que � l'ordre de ".$account->proprio." envoy� �:",0,'L',0); $pdf->SetXY ($this->marge_gauche, 231); $pdf->SetFont('Arial','',8); $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�glement par RIB */ /* if (defined("FACTURE_RIB_NUMBER")) @@ -382,7 +382,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $cury=242; $pdf->SetXY ($this->marges['g'], $cury); $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�glement par virement sur le compte bancaire suivant:", 0, 'L', 0); $cury+=4; $pdf->SetFont('Arial','B',6); $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->line($this->marges['g']+36, $cury, $this->marges['g']+36, $cury+10 ); $pdf->SetXY ($this->marges['g']+36, $cury); - $pdf->MultiCell(24, 3, "Numéro compte", 0, 'C', 0); + $pdf->MultiCell(24, 3, "Num�ro compte", 0, 'C', 0); $pdf->line($this->marges['g']+60, $cury, $this->marges['g']+60, $cury+10 ); $pdf->SetXY ($this->marges['g']+60, $cury); - $pdf->MultiCell(13, 3, "Clé RIB", 0, 'C', 0); + $pdf->MultiCell(13, 3, "Cl� RIB", 0, 'C', 0); $pdf->line($this->marges['g']+73, $cury, $this->marges['g']+73, $cury+10 ); $pdf->SetFont('Arial','',8); @@ -421,13 +421,13 @@ class pdf_muscadet extends ModelePDFSuppliersOrders */ /* - * Conditions de règlements + * Conditions de r�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�glement ne sont pas g�r�es sur les propales */ /* $pdf->SetFont('Arial','B',10); $pdf->SetXY($this->marge_gauche, 217); - $titre = "Conditions de réglement:"; + $titre = "Conditions de r�glement:"; $pdf->MultiCell(80, 5, $titre, 0, 'L'); $pdf->SetFont('Arial','',10); $pdf->SetXY(54, 217); @@ -443,7 +443,9 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $pdf->Close(); $pdf->Output($file); - + if (! empty($conf->global->MAIN_UMASK)) + @chmod($file, octdec($conf->global->MAIN_UMASK)); + return 1; // Pas d'erreur } else @@ -462,7 +464,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders } /** - * \brief Affiche le total à payer + * \brief Affiche le total � payer * \param pdf Objet PDF * \param object Objet order * \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->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�s remise", 0, 'L', 1); $pdf->SetXY ($col2x, $tab2_top + $tab2_hl * 2); $pdf->MultiCell($largcol2, $tab2_hl, price($object->total_ht), 0, 'R', 0); @@ -515,7 +517,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $index = 0; } - // Affichage des totaux de TVA par taux (conformément à réglementation) + // Affichage des totaux de TVA par taux (conform�ment � r�glementation) $pdf->SetFillColor(248,248,248); foreach( $this->tva as $tvakey => $tvaval ) @@ -599,7 +601,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders { global $conf; - // Montants exprimés en (en tab_top - 1) + // Montants exprim�s en (en tab_top - 1) $pdf->SetTextColor(0,0,0); $pdf->SetFont('Arial','',8); $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'); else $pdf->MultiCell(80, 4, $mysoc->nom, 0, 'L'); - // Caractéristiques emetteur + // Caract�ristiques emetteur $carac_emetteur = ''; if (defined("FAC_PDF_ADRESSE") && FAC_PDF_ADRESSE) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).FAC_PDF_ADRESSE; else { @@ -769,7 +771,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $pdf->SetFont('Arial','B',11); $pdf->MultiCell(106,4, $object->client->nom, 0, 'L'); - // Caractéristiques client + // Caract�ristiques client $carac_client=$object->client->adresse; $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; diff --git a/htdocs/includes/modules/commande/pdf_edison.modules.php b/htdocs/includes/modules/commande/pdf_edison.modules.php index 8f955aec260..b5b3970cfc4 100644 --- a/htdocs/includes/modules/commande/pdf_edison.modules.php +++ b/htdocs/includes/modules/commande/pdf_edison.modules.php @@ -270,6 +270,9 @@ class pdf_edison extends ModelePDFCommandes $pdf->Close(); $pdf->Output($file); + if (! empty($conf->global->MAIN_UMASK)) + @chmod($file, octdec($conf->global->MAIN_UMASK)); + $langs->setPhpLang(); // On restaure langue session return 1; } diff --git a/htdocs/includes/modules/commande/pdf_einstein.modules.php b/htdocs/includes/modules/commande/pdf_einstein.modules.php index 0a0d4d30c31..916545043d1 100644 --- a/htdocs/includes/modules/commande/pdf_einstein.modules.php +++ b/htdocs/includes/modules/commande/pdf_einstein.modules.php @@ -22,7 +22,7 @@ /** \file htdocs/includes/modules/commande/pdf_einstein.modules.php \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�n�rer les commandes au mod�le Einstein \author Laurent Destailleur \version $Id$ */ @@ -34,7 +34,7 @@ require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php"); /** \class pdf_einstein - \brief Classe permettant de générer les commandes au modèle Einstein + \brief Classe permettant de g�n�rer les commandes au mod�le Einstein */ class pdf_einstein extends ModelePDFCommandes @@ -44,7 +44,7 @@ class pdf_einstein extends ModelePDFCommandes /** \brief Constructeur - \param db Handler accès base de donnée + \param db Handler acc�s base de donn�e */ function pdf_einstein($db) { @@ -69,12 +69,12 @@ class pdf_einstein extends ModelePDFCommandes $this->option_logo = 1; // Affiche logo $this->option_tva = 1; // Gere option tva FACTURE_TVAOPTION - $this->option_modereg = 1; // Affiche mode règlement - $this->option_condreg = 1; // Affiche conditions règlement + $this->option_modereg = 1; // Affiche mode r�glement + $this->option_condreg = 1; // Affiche conditions r�glement $this->option_codeproduitservice = 1; // Affiche code produit-service $this->option_multilang = 1; // Dispo en plusieurs langues $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�re les avoirs $this->option_freetext = 1; // Support add of a personalised text $this->option_draft_watermark = 1; //Support add of a watermark on drafts @@ -83,7 +83,7 @@ class pdf_einstein extends ModelePDFCommandes // Recupere emmetteur $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'�tait pas d�fini // Defini position des colonnes $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 - * \param com Objet commande à générer + * \brief Fonction g�n�rant la commande sur le disque + * \param com Objet commande � g�n�rer * \param outputlangs Lang object for output language * \return int 1=ok, 0=ko */ @@ -123,7 +123,7 @@ class pdf_einstein extends ModelePDFCommandes if ($conf->commande->dir_output) { - // Définition de l'objet $com (pour compatibilite ascendante) + // D�finition de l'objet $com (pour compatibilite ascendante) if (! is_object($com)) { $id = $com; @@ -132,7 +132,7 @@ class pdf_einstein extends ModelePDFCommandes } $deja_regle = ""; - // Définition de $dir et $file + // D�finition de $dir et $file if ($com->specimen) { $dir = $conf->commande->dir_output; @@ -164,7 +164,7 @@ class pdf_einstein extends ModelePDFCommandes $pdf=new FPDI_Protection('P','mm',$this->format); $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 + $pdfownerpass = NULL; // Mot de passe du propri�taire, cr�� al�atoirement si pas d�fini $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); } else @@ -208,7 +208,7 @@ class pdf_einstein extends ModelePDFCommandes { $tab_top = 88; - $pdf->SetFont('Arial','', 9); // Dans boucle pour gérer multi-page + $pdf->SetFont('Arial','', 9); // Dans boucle pour g�rer multi-page $pdf->SetXY ($this->posxdesc-1, $tab_top); $pdf->MultiCell(190, 3, $com->note_public, 0, 'J'); $nexY = $pdf->GetY(); @@ -251,7 +251,7 @@ class pdf_einstein extends ModelePDFCommandes $libelleproduitservice.=dol_htmlentitiesbr($com->lignes[$i]->desc,1); } } - // Si ligne associée à un code produit + // Si ligne associ�e � un code produit if ($com->lignes[$i]->fk_product) { $prodser = new Product($this->db); @@ -282,7 +282,7 @@ class pdf_einstein extends ModelePDFCommandes // Description $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�faut $nexY = $pdf->GetY(); @@ -322,9 +322,9 @@ class pdf_einstein extends ModelePDFCommandes // cherche nombre de lignes a venir pour savoir si place suffisante if ($i < ($nblignes - 1)) // If it's not last line { - //on récupère la description du produit suivant + //on r�cup�re la description du produit suivant $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�rifier la place disponible (largeur de ligne 52 caracteres) $nblineFollowDesc = (num_lines($follow_descproduitservice,52)*4); } else // If it's last line @@ -388,7 +388,9 @@ class pdf_einstein extends ModelePDFCommandes $pdf->Close(); $pdf->Output($file); - + if (! empty($conf->global->MAIN_UMASK)) + @chmod($file, octdec($conf->global->MAIN_UMASK)); + $langs->setPhpLang(); // On restaure langue session return 1; // Pas d'erreur } @@ -612,7 +614,7 @@ class pdf_einstein extends ModelePDFCommandes $index = 0; - // Affichage des totaux de TVA par taux (conformément à réglementation) + // Affichage des totaux de TVA par taux (conform�ment � r�glementation) $pdf->SetFillColor(248,248,248); foreach( $this->tva as $tvakey => $tvaval ) @@ -699,7 +701,7 @@ class pdf_einstein extends ModelePDFCommandes { global $conf; - // Montants exprimés en (en tab_top - 1) + // Montants exprim�s en (en tab_top - 1) $pdf->SetTextColor(0,0,0); $pdf->SetFont('Arial','',8); $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�te commande * \param pdf Objet PDF * \param com Objet commande * \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'); else $pdf->MultiCell(80, 4, $this->emetteur->nom, 0, 'L'); - // Caractéristiques emetteur + // Caract�ristiques emetteur $carac_emetteur = ''; if (defined("FAC_PDF_ADRESSE") && FAC_PDF_ADRESSE) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).FAC_PDF_ADRESSE; else { @@ -915,7 +917,7 @@ class pdf_einstein extends ModelePDFCommandes // Nom client $carac_client = "\n".$object->contact->getFullName($outputlangs,1,1); - // Caractéristiques client + // Caract�ristiques client $carac_client.="\n".$object->contact->adresse; $carac_client.="\n".$object->contact->cp . " " . $object->contact->ville."\n"; //Pays si different de l'emetteur @@ -931,19 +933,19 @@ class pdf_einstein extends ModelePDFCommandes $pdf->SetFont('Arial','B',11); $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�t� $arrayidcontact = $object->getIdContact('external','CUSTOMER'); if (sizeof($arrayidcontact) > 0) { $object->fetch_contact($arrayidcontact[0]); - // On vérifie si c'est une société ou un particulier + // On v�rifie si c'est une soci�t� ou un particulier if( !preg_match('#'.$object->contact->getFullName($outputlangs,1).'#isU',$object->client->nom) ) { $carac_client .= "\n".$object->contact->getFullName($outputlangs,1,1); } } - // Caractéristiques client + // Caract�ristiques client $carac_client.="\n".$object->client->adresse; $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"; } } - // Numéro TVA intracom + // Num�ro TVA intracom if ($object->client->tva_intra) $carac_client.="\n".$outputlangs->transnoentities("VATIntraShort").': '.$object->client->tva_intra; $pdf->SetFont('Arial','',9); $posy=$pdf->GetY()-9; //Auto Y coord readjust for multiline name diff --git a/htdocs/includes/modules/dons/html_cerfafr.modules.php b/htdocs/includes/modules/dons/html_cerfafr.modules.php index 60bc8b4c58c..380c5f7326f 100644 --- a/htdocs/includes/modules/dons/html_cerfafr.modules.php +++ b/htdocs/includes/modules/dons/html_cerfafr.modules.php @@ -130,7 +130,9 @@ class html_cerfafr extends ModeleDon $handle=fopen($file,"w"); fwrite($handle,$html); fclose($handle); - + if (! empty($conf->global->MAIN_UMASK)) + @chmod($file, octdec($conf->global->MAIN_UMASK)); + return 1; } else diff --git a/htdocs/includes/modules/facture/modules_facture.php b/htdocs/includes/modules/facture/modules_facture.php index c43ece74ba8..d9ea1413cea 100644 --- a/htdocs/includes/modules/facture/modules_facture.php +++ b/htdocs/includes/modules/facture/modules_facture.php @@ -21,30 +21,30 @@ */ /** - \file htdocs/includes/modules/facture/modules_facture.php - \ingroup facture - \brief Fichier contenant la classe mère de generation des factures en PDF - et la classe mère de numérotation des factures - \version $Id$ -*/ + \file htdocs/includes/modules/facture/modules_facture.php + \ingroup facture + \brief Fichier contenant la classe m�re de generation des factures en PDF + et la classe m�re de num�rotation des factures + \version $Id$ + */ 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."/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� dans les classes qui h�ritent /** - \class ModelePDFFactures - \brief Classe mère des modèles de facture -*/ + \class ModelePDFFactures + \brief Classe m�re des mod�les de facture + */ class ModelePDFFactures extends FPDF { var $error=''; /** - * \brief Renvoi le dernier message d'erreur de création de facture + * \brief Renvoi le dernier message d'erreur de cr�ation de facture */ function pdferror() { @@ -52,16 +52,16 @@ class ModelePDFFactures extends FPDF } /** - * \brief Renvoi la liste des modèles actifs + * \brief Renvoi la liste des mod�les actifs * \param db Handler de base */ function liste_modeles($db) { - $type='invoice'; - $liste=array(); - $sql ="SELECT nom as id, nom as lib"; - $sql.=" FROM ".MAIN_DB_PREFIX."document_model"; - $sql.=" WHERE type = '".$type."'"; + $type='invoice'; + $liste=array(); + $sql ="SELECT nom as id, nom as lib"; + $sql.=" FROM ".MAIN_DB_PREFIX."document_model"; + $sql.=" WHERE type = '".$type."'"; $resql = $db->query($sql); if ($resql) @@ -86,64 +86,64 @@ class ModelePDFFactures extends FPDF } /** - \class ModeleNumRefFactures - \brief Classe mère des modèles de numérotation des références de facture -*/ + \class ModeleNumRefFactures + \brief Classe m�re des mod�les de num�rotation des r�f�rences de factur + */ class ModeleNumRefFactures { var $error=''; - + /** \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() { return true; } - /** \brief Renvoi la description par defaut du modele de numérotation - * \return string Texte descripif - */ + /** \brief Renvoi la description par defaut du modele de num�rotation + * \return string Texte descripif + */ function info() { global $langs; $langs->load("bills"); return $langs->trans("NoDescription"); } - - /** \brief Renvoi un exemple de numérotation - * \return string Example - */ + + /** \brief Renvoi un exemple de num�rotation + * \return string Example + */ function getExample() { global $langs; $langs->load("bills"); return $langs->trans("NoExample"); } - - /** \brief Test si les numéros déjà en vigueur dans la base ne provoquent pas de - * de conflits qui empechera cette numérotation de fonctionner. - * \return boolean false si conflit, true si ok - */ + + /** \brief Test si les num�ros d�j� en vigueur dans la base ne provoquent pas d + * de conflits qui empechera cette num�rotation de fonctionner. + * \return boolean false si conflit, true si ok + */ function canBeActivated() { return true; } - - /** \brief Renvoi prochaine valeur attribuée - * \param objsoc Objet societe - * \param facture Objet facture - * \return string Valeur - */ + + /** \brief Renvoi prochaine valeur attribu�e + * \param objsoc Objet societe + * \param facture Objet facture + * \return string Valeur + */ function getNextValue($objsoc,$facture) { global $langs; return $langs->trans("NotAvailable"); } - + /** \brief Renvoi version du module numerotation - * \return string Valeur - */ + * \return string Valeur + */ function getVersion() { global $langs; @@ -153,19 +153,19 @@ class ModeleNumRefFactures if ($this->version == 'experimental') return $langs->trans("VersionExperimental"); if ($this->version == 'dolibarr') return DOL_VERSION; return $langs->trans("NotAvailable"); - } + } } /** - \brief Crée un facture sur disque en fonction du modèle de FACTURE_ADDON_PDF - \param db objet base de donnée - \param id id de la facture à créer - \param message message - \param modele force le modele à utiliser ('' par defaut) - \param outputlangs objet lang a utiliser pour traduction - \return int <0 si KO, >0 si OK -*/ + \brief Cree un facture sur disque en fonction du modele de FACTURE_ADDON_PDF + \param db objet base de donnee + \param id id de la facture a creer + \param message message + \param modele force le modele a utiliser ('' par defaut) + \param outputlangs objet lang a utiliser pour traduction + \return int <0 si KO, >0 si OK + */ function facture_pdf_create($db, $id, $message='', $modele='', $outputlangs='') { global $conf,$langs; @@ -173,7 +173,7 @@ function facture_pdf_create($db, $id, $message='', $modele='', $outputlangs='') $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 ($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) { - // 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); // et on supprime l'image correspondant au preview @@ -216,17 +216,17 @@ function facture_pdf_create($db, $id, $message='', $modele='', $outputlangs='') } 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; } } /** - \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] - \param db Objet base de donnée - \param facid Id de la facture à créer - \param message Message -*/ + \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 + \param db Objet base de donn�e + \param facid Id de la facture � cr�er + \param message Message + */ function facture_meta_create($db, $facid, $message="") { global $langs,$conf; @@ -234,71 +234,75 @@ function facture_meta_create($db, $facid, $message="") $fac = new Facture($db,"",$facid); $fac->fetch($facid); $fac->fetch_client(); - + if ($conf->facture->dir_output) { $facref = sanitize_string($fac->ref); $dir = $conf->facture->dir_output . "/" . $facref ; $file = $dir . "/" . $facref . ".meta"; - + if (! is_dir($dir)) { create_exdir($dir); } - if (is_dir($dir)) + if (is_dir($dir)) { - $nblignes = sizeof($fac->lignes); - $client = $fac->client->nom . " " . $fac->client->adresse . " " . $fac->client->cp . " " . $fac->client->ville; - $meta = "REFERENCE=\"" . $fac->ref . "\" + $nblignes = sizeof($fac->lignes); + $client = $fac->client->nom . " " . $fac->client->adresse . " " . $fac->client->cp . " " . $fac->client->ville; + $meta = "REFERENCE=\"" . $fac->ref . "\" DATE=\"" . dolibarr_print_date($fac->date) . "\" NB_ITEMS=\"" . $nblignes . "\" CLIENT=\"" . $client . "\" TOTAL_HT=\"" . $fac->total_ht . "\" TOTAL_TTC=\"" . $fac->total_ttc . "\"\n"; - for ($i = 0 ; $i < $nblignes ; $i++) { - //Pour les articles - $meta .= "ITEM_" . $i . "_QUANTITY=\"" . $fac->lignes[$i]->qty . "\" + for ($i = 0 ; $i < $nblignes ; $i++) + { + //Pour les articles + $meta .= "ITEM_" . $i . "_QUANTITY=\"" . $fac->lignes[$i]->qty . "\" ITEM_" . $i . "_UNIT_PRICE=\"" . $fac->lignes[$i]->price . "\" ITEM_" . $i . "_TVA=\"" .$fac->lignes[$i]->tva_tx . "\" 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 - \param db objet base de donnée - \param facid id de la facture à créer -*/ + \brief Supprime l'image de pr�visualitation, pour le cas de r�g�n�ration de facture + \param db objet base de donn�e + \param facid id de la facture � cr�er + */ function facture_delete_preview($db, $facid) { - global $langs,$conf; + global $langs,$conf; - $fac = new Facture($db,"",$facid); - $fac->fetch($facid); + $fac = new Facture($db,"",$facid); + $fac->fetch($facid); - 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 ) ) + 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 ) ) + { if ( ! unlink($file) ) - { - return 0; - } + { + return 0; + } + } } - } } ?> diff --git a/htdocs/includes/modules/facture/pdf_crabe.modules.php b/htdocs/includes/modules/facture/pdf_crabe.modules.php index 398d1c0dd41..7aaf64aa3bf 100644 --- a/htdocs/includes/modules/facture/pdf_crabe.modules.php +++ b/htdocs/includes/modules/facture/pdf_crabe.modules.php @@ -412,7 +412,9 @@ class pdf_crabe extends ModelePDFFactures $pdf->Close(); $pdf->Output($file); - + if (! empty($conf->global->MAIN_UMASK)) + @chmod($file, octdec($conf->global->MAIN_UMASK)); + $langs->setPhpLang(); // On restaure langue session return 1; // Pas d'erreur } diff --git a/htdocs/includes/modules/facture/pdf_huitre.modules.php b/htdocs/includes/modules/facture/pdf_huitre.modules.php index c0f0a3db55b..0048a7df02c 100644 --- a/htdocs/includes/modules/facture/pdf_huitre.modules.php +++ b/htdocs/includes/modules/facture/pdf_huitre.modules.php @@ -22,7 +22,7 @@ /** \file htdocs/includes/modules/facture/pdf_huitre.modules.php \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�n�rer les factures au mod�le Huitre \author Laurent Destailleur \version $Id$ */ @@ -33,7 +33,7 @@ require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php"); /** \class pdf_huitre - \brief Classe permettant de générer les factures au modèle Huitre + \brief Classe permettant de g�n�rer les factures au mod�le Huitre */ class pdf_huitre extends ModelePDFFactures @@ -42,7 +42,7 @@ class pdf_huitre extends ModelePDFFactures /** \brief Constructeur - \param db handler accès base de donnée + \param db handler acc�s base de donn�e */ function pdf_huitre($db) { @@ -69,23 +69,23 @@ class pdf_huitre extends ModelePDFFactures $this->option_logo = 1; // Affiche logo FAC_PDF_LOGO $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_condreg = 1; // Affiche conditions règlement + $this->option_modereg = 0; // Gere choix mode r�glement FACTURE_CHQ_NUMBER, FACTURE_RIB_NUMBER + $this->option_condreg = 1; // Affiche conditions r�glement $this->option_codeproduitservice = 0; // Affiche code produit-service $this->option_multilang = 1; // Dispo en plusieurs langues $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�re les avoirs $this->option_draft_watermark = 1; //Support add of a watermark on drafts // Recupere emmetteur $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'�tait pas d�fini } /** - * \brief Fonction générant la facture sur le disque - * \param fac Objet facture à générer (ou id si ancienne methode) + * \brief Fonction g�n�rant la facture sur le disque + * \param fac Objet facture � g�n�rer (ou id si ancienne methode) * \param outputlangs Lang object for output language * \return int 1=ok, 0=ko */ @@ -106,7 +106,7 @@ class pdf_huitre extends ModelePDFFactures if ($conf->facture->dir_output) { - // Définition de l'objet $fac (pour compatibilite ascendante) + // D�finition de l'objet $fac (pour compatibilite ascendante) if (! is_object($fac)) { $id = $fac; @@ -114,7 +114,7 @@ class pdf_huitre extends ModelePDFFactures $ret=$fac->fetch($id); } - // Définition de $dir et $file + // D�finition de $dir et $file if ($fac->specimen) { $dir = $conf->facture->dir_output; @@ -145,7 +145,7 @@ class pdf_huitre extends ModelePDFFactures $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 + $pdfownerpass = NULL; // Mot de passe du propri�taire, cr�� al�atoirement si pas d�fini $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); } else @@ -271,13 +271,12 @@ class pdf_huitre extends ModelePDFFactures $pdf->SetLineWidth(0.5); - - - $pdf->Close(); $pdf->Output($file); - + if (! empty($conf->global->MAIN_UMASK)) + @chmod($file, octdec($conf->global->MAIN_UMASK)); + $langs->setPhpLang(); // On restaure langue session return 1; // Pas d'erreur } @@ -373,7 +372,7 @@ class pdf_huitre extends ModelePDFFactures } /* - * \brief Affiche le total à payer + * \brief Affiche le total � payer * \param pdf objet PDF * \param fac objet facture */ @@ -463,7 +462,7 @@ class pdf_huitre extends ModelePDFFactures } /* - * \brief Affiche en-tête facture + * \brief Affiche en-t�te facture * \param pdf objet PDF * \param fac objet facture */ diff --git a/htdocs/includes/modules/facture/pdf_oursin.modules.php b/htdocs/includes/modules/facture/pdf_oursin.modules.php index 7fd91c992b0..30e90368e17 100644 --- a/htdocs/includes/modules/facture/pdf_oursin.modules.php +++ b/htdocs/includes/modules/facture/pdf_oursin.modules.php @@ -23,8 +23,8 @@ /** \file htdocs/includes/modules/facture/pdf_oursin.modules.php \ingroup facture - \brief Fichier de la classe permettant de générer les factures au modèle oursin - \author Sylvain SCATTOLINI basé sur un modèle de Laurent Destailleur + \brief Fichier de la classe permettant de g�n�rer les factures au mod�le oursin + \author Sylvain SCATTOLINI bas� sur un mod�le de Laurent Destailleur \version $Id$ */ @@ -34,7 +34,7 @@ require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php"); /** \class pdf_oursin - \brief Classe permettant de générer les factures au modèle oursin + \brief Classe permettant de g�n�rer les factures au mod�le oursin */ class pdf_oursin extends ModelePDFFactures @@ -44,7 +44,7 @@ class pdf_oursin extends ModelePDFFactures /** \brief Constructeur - \param db handler accès base de donnée + \param db handler acc�s base de donn�e */ function pdf_oursin($db) { @@ -70,12 +70,12 @@ class pdf_oursin extends ModelePDFFactures $this->option_logo = 1; // Affiche logo FAC_PDF_LOGO $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_condreg = 1; // Affiche conditions règlement + $this->option_modereg = 1; // Gere choix mode r�glement FACTURE_CHQ_NUMBER, FACTURE_RIB_NUMBER + $this->option_condreg = 1; // Affiche conditions r�glement $this->option_codeproduitservice = 1; // Affiche code produit-service $this->option_multilang = 1; // Dispo en plusieurs langues $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�re les avoirs $this->option_draft_watermark = 1; //Support add of a watermark on drafts if (defined("FACTURE_TVAOPTION") && FACTURE_TVAOPTION == 'franchise') @@ -83,13 +83,13 @@ class pdf_oursin extends ModelePDFFactures // Recupere emmetteur $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'�tait pas d�fini } /** - * \brief Fonction générant la facture sur le disque - * \param fac Objet facture à générer (ou id si ancienne methode) + * \brief Fonction g�n�rant la facture sur le disque + * \param fac Objet facture � g�n�rer (ou id si ancienne methode) * \param outputlangs Lang object for output language * \return int 1=ok, 0=ko */ @@ -110,7 +110,7 @@ class pdf_oursin extends ModelePDFFactures if ($conf->facture->dir_output) { - // Définition de l'objet $fac (pour compatibilite ascendante) + // D�finition de l'objet $fac (pour compatibilite ascendante) if (! is_object($fac)) { $id = $fac; @@ -122,7 +122,7 @@ class pdf_oursin extends ModelePDFFactures $amount_credit_not_included = $fac->getSommeCreditNote(); - // Définition de $dir et $file + // D�finition de $dir et $file if ($fac->specimen) { $dir = $conf->facture->dir_output; @@ -154,7 +154,7 @@ class pdf_oursin extends ModelePDFFactures $pdf=new FPDI_Protection('P','mm',$this->format); $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 + $pdfownerpass = NULL; // Mot de passe du propri�taire, cr�� al�atoirement si pas d�fini $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); } else @@ -196,7 +196,7 @@ class pdf_oursin extends ModelePDFFactures $codeproduitservice=""; $pdf->SetXY ($this->marges['g']+ 1, $curY ); if (defined("FACTURE_CODEPRODUITSERVICE") && FACTURE_CODEPRODUITSERVICE) { - // Affiche code produit si ligne associée à un code produit + // Affiche code produit si ligne associ�e � un code produit $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) { - // Affichage durée si il y en a une + // Affichage dur�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).")"; } $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); } - // Mode de règlement + // Mode de r�glement if ((! defined("FACTURE_CHQ_NUMBER") || ! FACTURE_CHQ_NUMBER) && (! defined("FACTURE_RIB_NUMBER") || ! FACTURE_RIB_NUMBER)) { $pdf->SetXY ($this->marges['g'], 228); $pdf->SetTextColor(200,0,0); @@ -270,7 +270,7 @@ class pdf_oursin extends ModelePDFFactures $pdf->SetTextColor(0,0,0); } - // Propose mode règlement par CHQ + // Propose mode r�glement par CHQ if (defined("FACTURE_CHQ_NUMBER")) { if (FACTURE_CHQ_NUMBER > 0) @@ -287,7 +287,7 @@ class pdf_oursin extends ModelePDFFactures } } - // Propose mode règlement par RIB + // Propose mode r�glement par RIB if (defined("FACTURE_RIB_NUMBER")) { if (FACTURE_RIB_NUMBER > 0) @@ -334,7 +334,7 @@ class pdf_oursin extends ModelePDFFactures } } - // Conditions de règlements + // Conditions de r�glements if ($fac->cond_reglement_code) { $pdf->SetFont('Arial','B',10); @@ -354,7 +354,9 @@ class pdf_oursin extends ModelePDFFactures $pdf->Close(); $pdf->Output($file); - + if (! empty($conf->global->MAIN_UMASK)) + @chmod($file, octdec($conf->global->MAIN_UMASK)); + $langs->setPhpLang(); // On restaure langue session return 1; // Pas d'erreur } @@ -512,7 +514,7 @@ class pdf_oursin extends ModelePDFFactures } /* - * \brief Affiche le total à payer + * \brief Affiche le total � payer * \param pdf objet PDF * \param fac objet facture * \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�te facture * \param pdf objet PDF * \param fac objet facture */ @@ -705,7 +707,7 @@ class pdf_oursin extends ModelePDFFactures $pdf->MultiCell(80, 4, MAIN_INFO_SOCIETE_NOM, 0, 'L'); } - // Caractéristiques emetteur + // Caract�ristiques emetteur $pdf->SetFont('Arial','',9); if (defined("FAC_PDF_ADRESSE")) { diff --git a/htdocs/includes/modules/fichinter/pdf_soleil.modules.php b/htdocs/includes/modules/fichinter/pdf_soleil.modules.php index 8a1b10f782d..abeb4e66178 100644 --- a/htdocs/includes/modules/fichinter/pdf_soleil.modules.php +++ b/htdocs/includes/modules/fichinter/pdf_soleil.modules.php @@ -315,7 +315,9 @@ class pdf_soleil extends ModelePDFFicheinter $pdf->Close(); $pdf->Output($file); - + if (! empty($conf->global->MAIN_UMASK)) + @chmod($file, octdec($conf->global->MAIN_UMASK)); + $langs->setPhpLang(); // On restaure langue session return 1; } diff --git a/htdocs/includes/modules/mailings/peche.modules.php b/htdocs/includes/modules/mailings/peche.modules.php index a76dbafb9c8..84563a0f719 100644 --- a/htdocs/includes/modules/mailings/peche.modules.php +++ b/htdocs/includes/modules/mailings/peche.modules.php @@ -20,7 +20,7 @@ /** \file htdocs/includes/modules/mailings/peche.modules.php \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�n�rer la liste de destinataires Peche \version $Id$ */ @@ -29,13 +29,13 @@ include_once DOL_DOCUMENT_ROOT.'/includes/modules/mailings/modules_mailings.php' /** \class mailing_pomme - \brief Classe permettant de générer la liste des destinataires Pomme + \brief Classe permettant de g�n�rer la liste des destinataires Pomme */ class mailing_peche extends MailingTargets { 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� utilis� si aucune traduction pour MailingModuleDescXXX ou XXX=name trouv�e 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 $picto='generic'; @@ -99,7 +99,7 @@ class mailing_peche extends MailingTargets /** * \brief Ajoute destinataires dans table des cibles - * \param mailing_id Id du mailing concerné + * \param mailing_id Id du mailing concern� * \param filterarray Requete sql de selection des destinataires * \return int < 0 si erreur, nb ajout si ok */ @@ -123,7 +123,8 @@ class mailing_peche extends MailingTargets //$mesg = '
'.$langs->trans("FileTransferComplete").'
'; //print_r($_FILES); - $handle = @fopen($upload_dir . "/" . $_FILES['username']['name'], "r"); + $file=$upload_dir . "/" . $_FILES['username']['name']; + $handle = @fopen($file, "r"); if ($handle) { $i = 0; @@ -165,6 +166,7 @@ class mailing_peche extends MailingTargets } } fclose($handle); + if ($i > 0) { return -$i; diff --git a/htdocs/includes/modules/modTelephonie.class.php b/htdocs/includes/modules/modTelephonie.class.php index 127fe44aef3..103327fc0a9 100644 --- a/htdocs/includes/modules/modTelephonie.class.php +++ b/htdocs/includes/modules/modTelephonie.class.php @@ -340,6 +340,7 @@ class modTelephonie extends DolibarrModules } } fclose($fp); + } //print "Creation de la table $name/td>"; diff --git a/htdocs/includes/modules/propale/pdf_propale_azur.modules.php b/htdocs/includes/modules/propale/pdf_propale_azur.modules.php index 736a311696b..87afdeb1ce1 100644 --- a/htdocs/includes/modules/propale/pdf_propale_azur.modules.php +++ b/htdocs/includes/modules/propale/pdf_propale_azur.modules.php @@ -397,7 +397,9 @@ class pdf_propale_azur extends ModelePDFPropales $pdf->Close(); $pdf->Output($file); - + if (! empty($conf->global->MAIN_UMASK)) + @chmod($file, octdec($conf->global->MAIN_UMASK)); + $langs->setPhpLang(); // On restaure langue session return 1; // Pas d'erreur } diff --git a/htdocs/includes/modules/propale/pdf_propale_jaune.modules.php b/htdocs/includes/modules/propale/pdf_propale_jaune.modules.php index 02f1bda6120..cff6ece6c10 100644 --- a/htdocs/includes/modules/propale/pdf_propale_jaune.modules.php +++ b/htdocs/includes/modules/propale/pdf_propale_jaune.modules.php @@ -270,7 +270,9 @@ class pdf_propale_jaune extends ModelePDFPropales $pdf->Close(); $pdf->Output($file); - + if (! empty($conf->global->MAIN_UMASK)) + @chmod($file, octdec($conf->global->MAIN_UMASK)); + $langs->setPhpLang(); // On restaure langue session return 1; } diff --git a/htdocs/includes/modules/rapport/pdf_paiement.class.php b/htdocs/includes/modules/rapport/pdf_paiement.class.php index 691a3d0d4cb..4eb44775eae 100644 --- a/htdocs/includes/modules/rapport/pdf_paiement.class.php +++ b/htdocs/includes/modules/rapport/pdf_paiement.class.php @@ -16,28 +16,26 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * or see http://www.gnu.org/ - * - * $Id$ */ /** \file htdocs/includes/modules/rapport/pdf_paiement.class.php \ingroup banque - \brief Fichier de la classe permettant de générer les rapports de paiement - \version $Revision$ + \brief Fichier de la classe permettant de g�n�rer les rapports de paiement + \version $Id$ */ require_once(DOL_DOCUMENT_ROOT.'/includes/fpdf/fpdfi/fpdi_protection.php'); /** \class pdf_paiement - \brief Classe permettant de générer les rapports de paiement + \brief Classe permettant de g�n�rer les rapports de paiement */ class pdf_paiement extends FPDF { /** \brief Constructeur - \param db handler accès base de donnée + \param db handler acc�s base de donn�e */ 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 month mois 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->year=$year; @@ -194,7 +198,7 @@ class pdf_paiement extends FPDF $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 + $pdfownerpass = NULL; // Mot de passe du propri�taire, cr�� al�atoirement si pas d�fini $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); } else @@ -256,7 +260,7 @@ class pdf_paiement extends FPDF 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; } /* @@ -275,6 +279,11 @@ class pdf_paiement extends FPDF $this->Body($pdf, 1, $lines); $pdf->Output($_file); + if (! empty($conf->global->MAIN_UMASK)) + @chmod($file, octdec($conf->global->MAIN_UMASK)); + + $langs->setPhpLang(); // On restaure langue session + return 1; } } diff --git a/htdocs/lib/CMailFile.class.php b/htdocs/lib/CMailFile.class.php index 7f07325df96..2456f02fb0e 100644 --- a/htdocs/lib/CMailFile.class.php +++ b/htdocs/lib/CMailFile.class.php @@ -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->message); fclose($fp); + if (! empty($conf->global->MAIN_UMASK)) + @chmod($outputfile, octdec($conf->global->MAIN_UMASK)); + } } diff --git a/htdocs/lib/functions.lib.php b/htdocs/lib/functions.lib.php index 81ec79564ae..a17e9037eb9 100644 --- a/htdocs/lib/functions.lib.php +++ b/htdocs/lib/functions.lib.php @@ -82,22 +82,22 @@ function check_mail ($mail) function unaccent_isostring($str) { $translation = array( - "\xE0" => "a", - "\xE1" => "a", - "\xE2" => "a", - "\xE8" => "e", - "\xE9" => "e", - "\xEA" => "e", - "\xEB" => "e", - "\xEE" => "i", - "\xEF" => "i", - "\xF4" => "o", - "\xF6" => "o", - "\xFB" => "u", - "\xFC" => "u" + "\xE0" => "a", + "\xE1" => "a", + "\xE2" => "a", + "\xE8" => "e", + "\xE9" => "e", + "\xEA" => "e", + "\xEB" => "e", + "\xEE" => "i", + "\xEF" => "i", + "\xF4" => "o", + "\xF6" => "o", + "\xFB" => "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"); 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 (! 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(); - // On efface anciens param�tres pour toutes les cl� dans $tab + // On efface anciens param�tres pour toutes les cl� dans $ta $sql = "DELETE FROM ".MAIN_DB_PREFIX."user_param"; $sql.= " WHERE fk_user = ".$user->id; 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 $ret=adodb_strftime($format,$time,$to_gmt); } - + // Page code for text from strftime functions $pagecodefrom='ISO-8859-1'; - + 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') { global $conf; - + if ($size==0) return $string; 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 'ee'.$string.$size.mb_strcut($string,0,$size,'UTF-8').'rr'; if (strlen($string) > $size) - return substr($string,0,$size).'...'; + return substr($string,0,$size).'...'; else - return $string; + return $string; } 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 { 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 { - if (empty($user->rights->$feature->lire) - && empty($user->rights->$feature->read)) $readok=0; + if (empty($user->rights->$feature->lire) + && empty($user->rights->$feature->read)) $readok=0; } if (! $readok) accessforbidden(); //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 { 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 { - if (empty($user->rights->$feature->creer) - && empty($user->rights->$feature->write)) $createok=0; + if (empty($user->rights->$feature->creer) + && empty($user->rights->$feature->write)) $createok=0; } if (! $createok) accessforbidden(); //print "Write access is ok"; @@ -1684,8 +1685,8 @@ function dol_move_uploaded_file($src_file, $dest_file, $allowoverwrite) // Move file $return=move_uploaded_file($src_file, $file_name); 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); 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 foundpercent Add a percent % sign in output * \param info_bits Miscellanous information on vat - * \return string Chaine avec montant format� (19,6 ou 19,6% ou 8.5% *) + * \return string Chaine avec montant format� (19,6 ou 19,6% ou 8.5% * */ function vatrate($rate,$addpercent=false,$info_bits=0) { @@ -2109,7 +2110,7 @@ function price2num($amount,$rounding='',$alreadysqlnb=-1) $dec=','; $thousand=' '; if ($langs->trans("SeparatorDecimal") != "SeparatorDecimal") $dec=$langs->trans("SeparatorDecimal"); if ($langs->trans("SeparatorThousand")!= "SeparatorThousand") $thousand=$langs->trans("SeparatorThousand"); - + //print 'x'.$dec.$thousand.'-'; 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�faut=0. Fin de r�gle. Si le (pays vendeur = pays acheteur) alors TVA par d�faut=TVA du produit vendu. Fin de r�gle. Si (vendeur et acheteur dans Communaut� europ�enne) et (bien vendu = moyen de transports neuf comme auto, bateau, avion) alors TVA par d�faut=0 (La TVA doit �tre pay� par acheteur au centre d'impots de son pays et non au vendeur). Fin de r�gle. - Si (vendeur et acheteur dans Communaut� europ�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� europ�enne) et (acheteur = entreprise avec num TVA) intra alors TVA par d�faut=0. Fin de r�gle. + Si (vendeur et acheteur dans Communaut� europ�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� europ�enne) et (acheteur = entreprise avec num TVA) intra alors TVA par d�faut=0. Fin de r�gle Sinon TVA propos�e par d�faut=0. Fin de r�gle. \param societe_vendeuse Objet soci�t� vendeuse \param societe_acheteuse Objet soci�t� acheteuse @@ -2190,7 +2191,7 @@ function get_default_tva($societe_vendeuse, $societe_acheteuse, $taux_produit, $ // Si (vendeur et acheteur dans Communaut� europ�enne) et (bien vendu = moyen de transports neuf comme auto, bateau, avion) alors TVA par d�faut=0 (La TVA doit �tre pay� par l'acheteur au centre d'impots de son pays et non au vendeur). Fin de r�gle. // Non g�r� - // Si (vendeur et acheteur dans Communaut� europ�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� europ�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 ($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; } - // Si (vendeur et acheteur dans Communaut� europ�enne) et (acheteur = entreprise avec num TVA intra) alors TVA par d�faut=0. Fin de r�gle. + // Si (vendeur et acheteur dans Communaut� europ�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) { 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�faut=0. Fin de r�gle. Si le (pays vendeur = pays acheteur) alors TVA par d�faut=TVA du produit vendu. Fin de r�gle. Si (vendeur et acheteur dans Communaut� europ�enne) et (bien vendu = moyen de transports neuf comme auto, bateau, avion) alors TVA par d�faut=0 (La TVA doit �tre pay� par acheteur au centre d'impots de son pays et non au vendeur). Fin de r�gle. - Si (vendeur et acheteur dans Communaut� europ�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� europ�enne) et (acheteur = entreprise avec num TVA) intra alors TVA par d�faut=0. Fin de r�gle. + Si (vendeur et acheteur dans Communaut� europ�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� europ�enne) et (acheteur = entreprise avec num TVA) intra alors TVA par d�faut=0. Fin de r�gle Sinon TVA propos�e par d�faut=0. Fin de r�gle. \param societe_vendeuse Objet soci�t� vendeuse \param societe_acheteuse Objet soci�t� acheteuse @@ -2289,7 +2290,7 @@ function departement_rowid($db,$code, $pays_id) } /** - \brief Renvoi un chemin de classement r�pertoire en fonction d'un id + \brief Renvoi un chemin de classement r�pertoire en fonction d'un i \remarks Examples: 1->"0/0/1/", 15->"0/1/5/" \param $num Id a d�composer \param $level Niveau de decoupage (1, 2 ou 3 niveaux) @@ -2311,6 +2312,8 @@ function get_exdir($num,$level=3) */ function create_exdir($dir) { + global $conf; + dolibarr_syslog("functions.lib::create_exdir: dir=".$dir,LOG_INFO); if (@is_dir($dir)) return 0; @@ -2332,21 +2335,24 @@ function create_exdir($dir) { 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); - if (! @mkdir($ccdir, 0755)) - { - // Si le is_dir a renvoye une fausse info, alors on passe ici. - dolibarr_syslog("functions.lib::create_exdir: Fails to create directory '".$ccdir."' or directory already exists.",LOG_WARNING); - $nberr++; - } - else - { - 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 �checs pr�c�dents peuvent etre ignor�s - $nbcreated++; - } + umask(0); + $dirmaskdec=octdec('0755'); + if (! empty($conf->global->MAIN_UMASK)) $dirmaskdec=octdec($conf->global->MAIN_UMASK); + $dirmaskdec |= octdec('0110'); + if (! @mkdir($ccdir, $dirmaskdec)) + { + // Si le is_dir a renvoye une fausse info, alors on passe ici. + dolibarr_syslog("functions.lib::create_exdir: Fails to create directory '".$ccdir."' or directory already exists.",LOG_WARNING); + $nberr++; + } + else + { + 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 �checs pr�c�dents peuvent etre ignor�s + $nbcreated++; + } } else { @@ -3007,7 +3013,7 @@ function is_emtpy_folder($folder){ return true; else return false; - + closedir($handle); } else diff --git a/htdocs/lib/ldap.class.php b/htdocs/lib/ldap.class.php index c14b966ef5a..973969bf3da 100644 --- a/htdocs/lib/ldap.class.php +++ b/htdocs/lib/ldap.class.php @@ -597,10 +597,8 @@ class Ldap { fputs($fp, $content); fclose($fp); - // We change mod to allow file to be overwritten if dump is launched - // from command line or a web session. - // 0666 = rw-rw-rw- - if (! empty($conf->global->MAIN_UMASK)) @chmod($file, $conf->global->MAIN_UMASK); + if (! empty($conf->global->MAIN_UMASK)) + @chmod($outputfile, octdec($conf->global->MAIN_UMASK)); return 1; } else diff --git a/htdocs/lib/security.lib.php b/htdocs/lib/security.lib.php index 2d2195f9586..9e11393de5a 100644 --- a/htdocs/lib/security.lib.php +++ b/htdocs/lib/security.lib.php @@ -38,7 +38,7 @@ function makesalt($type=CRYPT_SALT_LENGTH) { case 12: // 8 + 4 $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�) $saltlen=8; $saltprefix='$1$'; $saltsuffix='$'; break; case 2: // 2 default: // by default, fall back on Standard DES (should work everywhere) @@ -89,10 +89,14 @@ function encodedecode_dbpassconf($level=0) } 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)); fclose($fp); + // It's config file, so we set permission for creator only + // @chmod($file, octdec('0600')); + return 1; } else @@ -109,9 +113,9 @@ function encodedecode_dbpassconf($level=0) } /** - * \brief Encode une chaine de caractére - * \param chaine chaine de caractères a encoder - * \return string_coded chaine de caractères encodée + * \brief Encode une chaine de caract�re + * \param chaine chaine de caract�res a encoder + * \return string_coded chaine de caract�res encod�e */ function dol_encode($chain) { @@ -125,9 +129,9 @@ function dol_encode($chain) } /** - * \brief Decode une chaine de caractére - * \param chain chaine de caractéres a decoder - * \return string_coded chaine de caractéres decodée + * \brief Decode une chaine de caract�re + * \param chain chaine de caract�res a decoder + * \return string_coded chaine de caract�res decod�e */ function dol_decode($chain) { diff --git a/htdocs/lib/xcal.lib.php b/htdocs/lib/xcal.lib.php index 2ace3e542ce..05b71673f9c 100644 --- a/htdocs/lib/xcal.lib.php +++ b/htdocs/lib/xcal.lib.php @@ -201,6 +201,8 @@ function build_calfile($format='vcal',$title,$desc,$events_array,$outputfile,$fi fwrite($calfileh,"END:VCALENDAR"); fclose($calfileh); + if (! empty($conf->global->MAIN_UMASK)) + @chmod($outputfile, octdec($conf->global->MAIN_UMASK)); } else { @@ -312,11 +314,8 @@ function build_rssfile($format='rss',$title,$desc,$events_array,$outputfile,$fil fwrite($fichier, ''); fclose($fichier); - - // We change mod to allow file to be overwritten if dump is launched - // from command line or a web session. - // 0666 = rw-rw-rw- - if (! empty($conf->global->MAIN_UMASK)) @chmod($fichier, $conf->global->MAIN_UMASK); + if (! empty($conf->global->MAIN_UMASK)) + @chmod($outputfile, octdec($conf->global->MAIN_UMASK)); } } diff --git a/htdocs/livraison/mods/pdf/pdf_sirocco.modules.php b/htdocs/livraison/mods/pdf/pdf_sirocco.modules.php index 522737af296..05f6cdb245e 100644 --- a/htdocs/livraison/mods/pdf/pdf_sirocco.modules.php +++ b/htdocs/livraison/mods/pdf/pdf_sirocco.modules.php @@ -50,7 +50,7 @@ class pdf_sirocco extends ModelePDFDeliveryOrder $this->db = $db; $this->name = "sirocco"; - $this->description = "Modele de bon de réception livraison simple"; + $this->description = "Modele de bon de r�ception livraison simple"; // Dimension page pour format A4 $this->type = 'pdf'; @@ -64,7 +64,7 @@ class pdf_sirocco extends ModelePDFDeliveryOrder // Recupere emmetteur $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'�tait pas d�fini $this->error = ""; } @@ -250,6 +250,9 @@ class pdf_sirocco extends ModelePDFDeliveryOrder $this->_tableau($pdf, $tab_top, $tab_height, $nexY, $outputlangs); $pdf->Output($file); + if (! empty($conf->global->MAIN_UMASK)) + @chmod($file, octdec($conf->global->MAIN_UMASK)); + return 1; } } diff --git a/htdocs/livraison/mods/pdf/pdf_typhon.modules.php b/htdocs/livraison/mods/pdf/pdf_typhon.modules.php index b87b3b6f726..f860c1e0483 100644 --- a/htdocs/livraison/mods/pdf/pdf_typhon.modules.php +++ b/htdocs/livraison/mods/pdf/pdf_typhon.modules.php @@ -55,7 +55,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder $this->db = $db; $this->name = "typhon"; - $this->description = "Modele de bon de réception livraison complet (logo...)"; + $this->description = "Modele de bon de r�ception livraison complet (logo...)"; // Dimension page pour format A4 $this->type = 'pdf'; @@ -76,7 +76,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder // Recupere emmetteur $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'�tait pas d�fini $this->tva=array(); @@ -321,7 +321,9 @@ class pdf_typhon extends ModelePDFDeliveryOrder $pdf->Close(); $pdf->Output($file); - + if (! empty($conf->global->MAIN_UMASK)) + @chmod($file, octdec($conf->global->MAIN_UMASK)); + return 1; // Pas d'erreur } else