diff --git a/htdocs/compta/dons/fiche.php b/htdocs/compta/dons/fiche.php
index 461725c1a91..9633872cfde 100644
--- a/htdocs/compta/dons/fiche.php
+++ b/htdocs/compta/dons/fiche.php
@@ -418,7 +418,30 @@ if ($_GET["rowid"] && $_GET["action"] != 'edit')
print "id&action=delete\">".$langs->trans("Delete")."";
}
- print "
";
+ print "";
+
+
+ print '
';
+
+ /*
+ * Documents générés
+ */
+ $filename=sanitize_string($don->id);
+ $filedir=$conf->don->dir_output . '/' . get_exdir($filename);
+ $urlsource=$_SERVER['PHP_SELF'].'?rowid='.$don->id;
+// $genallowed=($fac->statut == 1 && ($fac->paye == 0 || $user->admin) && $user->rights->facture->creer);
+// $delallowed=$user->rights->facture->supprimer;
+ $genallowed=0;
+ $delallowed=0;
+
+ $var=true;
+
+ print ' ';
+ $html->show_documents('don',$filename,$filedir,$urlsource,$genallowed,$delallowed);
+
+ print ' | | ';
+
+ print '
';
}
diff --git a/htdocs/compta/fiche.php b/htdocs/compta/fiche.php
index ee33ada1162..6e7cb3e86bb 100644
--- a/htdocs/compta/fiche.php
+++ b/htdocs/compta/fiche.php
@@ -339,7 +339,7 @@ if ($socid > 0)
print "".price($objp->total_ttc)." | \n";
$fac = new Facture($db);
- print "".($fac->LibStatut($objp->paye,$objp->statut))." | \n";
+ print "".($fac->LibStatut($objp->paye,$objp->statut,1))." | \n";
print "\n";
$i++;
}
diff --git a/htdocs/document.php b/htdocs/document.php
index ef6622c038b..ddd039b0d4c 100644
--- a/htdocs/document.php
+++ b/htdocs/document.php
@@ -38,8 +38,10 @@ function llxHeader() { }
$original_file = urldecode($_GET["file"]);
$modulepart = urldecode($_GET["modulepart"]);
-$type = urldecode($_GET["type"]);
-if (! $type) $type='application/pdf';
+// Défini type et attachment
+$type = urldecode($_GET["type"]); $attachment = true;
+if (eregi('\.html',$original_file)) { $type='text/html'; $attachment = false; }
+if (eregi('\.pdf',$original_file)) { $type='application/pdf'; $attachment = true; }
//Suppression de la chaine de caractère ../ dans $original_file
$original_file = str_replace("../","/", "$original_file");
@@ -171,6 +173,17 @@ if ($modulepart)
$original_file=$conf->produit->dir_output.'/'.$original_file;
}
+ // Wrapping pour les factures
+ if ($modulepart == 'don')
+ {
+ $user->getrights('don');
+ if ($user->rights->don->lire)
+ {
+ $accessallowed=1;
+ }
+ $original_file=$conf->don->dir_output.'/'.$original_file;
+ }
+
}
// Limite accès si droits non corrects
@@ -195,8 +208,8 @@ if (! file_exists($original_file))
// Les drois sont ok et fichier trouvé, on l'envoie
dolibarr_syslog("document.php download $filename content-type=$type");
-header('Content-type: '.$type);
-header('Content-Disposition: attachment; filename="'.$filename.'"');
+if ($type) header('Content-type: '.$type);
+if ($attachment) header('Content-Disposition: attachment; filename="'.$filename.'"');
// Ajout directives pour résoudre bug IE
header('Cache-Control: Public, must-revalidate');
diff --git a/htdocs/facture.class.php b/htdocs/facture.class.php
index d45d26a7704..11fa97f7584 100644
--- a/htdocs/facture.class.php
+++ b/htdocs/facture.class.php
@@ -1284,12 +1284,13 @@ class Facture
}
/**
- * \brief Retourne le libellé du statut d'une facture (brouillon, validée, abandonnée, payée)
- * \return string Libell
- */
- function getLibStatut()
+ * \brief Retourne le libellé du statut d'une facture (brouillon, validée, abandonnée, payée)
+ * \param mode 0=libellé long, 1=libellé court
+ * \return string Libelle
+ */
+ function getLibStatut($mode=0)
{
- return $this->LibStatut($this->paye,$this->statut);
+ return $this->LibStatut($this->paye,$this->statut,$mode);
}
/**
diff --git a/htdocs/html.form.class.php b/htdocs/html.form.class.php
index c23f8f24f8d..c74fb768d89 100644
--- a/htdocs/html.form.class.php
+++ b/htdocs/html.form.class.php
@@ -1748,7 +1748,7 @@ class Form
/**
* \brief Affiche la cartouche de la liste des documents d'une propale, facture...
* \param modulepart propal=propal, facture=facture, ...
- * \param filename Nom fichier
+ * \param filename Nom fichier sans extension
* \param filedir Repertoire à scanner
* \param urlsource Url page origine
* \param genallowed Génération autorisée
@@ -1765,9 +1765,12 @@ class Form
$var=true;
$filename = sanitize_string($filename);
- if ($modulepart != 'expedition') $relativepath = "${filename}/${filename}.pdf";
- else $relativepath = get_exdir("${filename}")."${filename}.pdf";
-
+ // Par defaut
+ $extension = 'pdf'; $relativepath = "${filename}/${filename}.${extension}";
+ // Autre cas
+ if ($modulepart == 'expedition') { $extension='pdf'; $relativepath = get_exdir("${filename}")."${filename}.pdf"; }
+ if ($modulepart == 'don') { $extension='html'; $relativepath = get_exdir("${filename}")."${filename}.html"; }
+
$i=0;
if (is_dir($filedir))
{
@@ -1775,9 +1778,8 @@ class Form
while (($file = readdir($handle))!==false)
{
// Si fichier non lisible ou non .pdf, on passe au suivant
- if (! is_readable($filedir."/".$file) || ! eregi('\.pdf$',$file)) continue;
+ if (! is_readable($filedir."/".$file) || ! eregi('\.'.$extension.'$',$file)) continue;
-
if ($i==0)
{
// Affiche en-tete tableau
@@ -1818,9 +1820,11 @@ class Form
}
print "";
- if (eregi('\-detail\.pdf',$file)) print '| PDF Détaillé | ';
- else print 'PDF | ';
-
+ $mimetype=strtoupper($extension);
+ if ($extension == 'pdf') $mimetype='PDF';
+ if ($extension == 'html') $mimetype='HTML';
+ if (eregi('\-detail\.pdf',$file)) $mimetype='PDF Détaillé';
+ print ''.$mimetype.' | ';
print ''.$file.' | ';
print ''.filesize($filedir."/".$file). ' bytes | ';
print ''.strftime("%d %b %Y %H:%M:%S",filemtime($filedir."/".$file)).' | ';
diff --git a/htdocs/includes/modules/dons/html_cerfafr.html b/htdocs/includes/modules/dons/html_cerfafr.html
new file mode 100644
index 00000000000..965a7f0fa45
--- /dev/null
+++ b/htdocs/includes/modules/dons/html_cerfafr.html
@@ -0,0 +1,187 @@
+
+
+
+ FSFE France - Formulaire
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | Cerfa No 11580 01 |
+
+
+ Reçu dons aux oeuvres
+
+
+ (Article 200-5 du Code Général des Impôts)
+
+
+ + article 238 bis
+
+ |
+
+
+ Numéro d'ordre du reçu
+
+
+ |
+
+
+
+
+
+
+
+
+ |
+
+ Bénéficiaire des versements
+
+ |
+
+
+ |
+
+
+
+
+
+
+
+
+ Nom ou dénomination :
+
+ Free Software Foundation Europe Chapter France (FSF France)
+ Adresse :
+
+ No 8 Rue de Valois
+ Code postal 75001 Commune Paris
+ Objet :
+ Le soutien à tous les organismes d'Etat et privés dans
+ toutes les questions de Logiciels Libres, la
+ collaboration coordonnée avec les associations
+ nationales poursuivant les mêmes objectifs et avec la
+ FSF Europe, le soutien de projets développant des
+ Logiciels Libres, la dissémination des idéaux
+ philosophiques des Logiciels Libres. La FSF France se
+ dédie aux seules et immédiates finalités scientifiques
+ et d'utilité publique.
+
+ Organisme d'intérêt général ayant un caractère
+ scientifique et éducatif.
+ |
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+ Nom :
+aaa aaa aaaa
+ Adresse :aaa
+ No ______ Rue _________________________________
+ Code postal aa Commune aa
+ |
+
+
+ |
+
+
+
+
+
+
+
+
+
+ Le bénéficiaire reconnait avoir reçu au titre des
+ versements ouvrant droit à réduction d'impôt, la
+ somme de :
+
+ Somme en toutes lettres (CurrencyEUR): Cinquante euros
+ Date du paiement : 11 novembre 2005
+ Mode de versement :
+
+
+ Numéraire |
+
+ Chèque ou virement |
+
+( Autres ) |
+
+
+
+
+
+
+ |
+ Date et signature
+ |
+
+
+ |
+
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+
+
+
+
+
+
diff --git a/htdocs/includes/modules/dons/html_cerfafr.modules.php b/htdocs/includes/modules/dons/html_cerfafr.modules.php
new file mode 100644
index 00000000000..acf860aefdf
--- /dev/null
+++ b/htdocs/includes/modules/dons/html_cerfafr.modules.php
@@ -0,0 +1,109 @@
+
+ * Copyright (C) 2005 Laurent Destailleur
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Id$
+ * $Source$
+ */
+
+/**
+ \file htdocs/includes/dons/html_cerfafr.php
+ \ingroup don
+ \brief Formulaire de don
+ \version $Revision$
+*/
+
+require_once(DOL_DOCUMENT_ROOT."/master.inc.php");
+require_once(DOL_DOCUMENT_ROOT."/projetdon.class.php");
+require_once(DOL_DOCUMENT_ROOT."/don.class.php");
+
+
+
+/**
+ \class html_cerfafr
+ \brief Classe permettant de générer les propales au modèle Azur
+*/
+
+class html_cerfafr extends ModeleDon
+{
+ /**
+ \brief Constructeur
+ \param db Handler accès base de donnée
+ */
+ function html_cerfafr($db)
+ {
+ global $conf,$langs;
+
+ $this->db = $db;
+ $this->name = "cerfafr";
+ $this->description = "Modèle de reçu de dons";
+ }
+
+
+ /**
+ \brief Renvoi dernière erreur
+ \return string Dernière erreur
+ */
+ function pdferror()
+ {
+ return $this->error;
+ }
+
+
+ /**
+ \brief Fonction générant le recu sur le disque
+ \param id Id du recu à générer
+ \return int >0 si ok, <0 si ko
+ */
+ function write_file($id)
+ {
+ global $conf,$langs,$user;
+
+ $don = new Don($this->db);
+ $don->fetch($id);
+
+ $filename = sanitize_string($don->id);
+ $dir = $conf->don->dir_output . "/" . get_exdir("${filename}");
+ $file = $dir . "/" . $filename . ".html";
+
+ if (! is_dir($dir))
+ {
+ if (create_exdir($dir) < 0)
+ {
+ $this->error=$langs->trans("ErrorCanNotCreateDir",$dir);
+ return -1;
+ }
+ }
+
+ // Defini contenu
+ $donmodel=DOL_DOCUMENT_ROOT ."/includes/modules/dons/html_cerfafr.html";
+ $html = implode('', file($donmodel));
+ $html = eregi_replace('__REF__',$this->id,$html);
+ $html = eregi_replace('__DATE__',strftime("%d/%b/%Y %H:%m:%s",mktime()),$html);
+ $html = eregi_replace('__IP__',$user->ip,$html);
+
+ // Sauve fichier sur disque
+ dolibarr_syslog("html_cerfafr::write_file $file");
+ $handle=fopen($file,"w");
+ fwrite($handle,$html);
+ fclose($handle);
+
+ return 1;
+ }
+}
+
+?>
diff --git a/htdocs/includes/modules/dons/modules_don.php b/htdocs/includes/modules/dons/modules_don.php
new file mode 100644
index 00000000000..1566cb242fe
--- /dev/null
+++ b/htdocs/includes/modules/dons/modules_don.php
@@ -0,0 +1,216 @@
+
+ * Copyright (C) 2004-2005 Laurent Destailleur
+ * Copyright (C) 2004 Eric Seigne
+ * Copyright (C) 2005 Regis Houssin
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * or see http://www.gnu.org/
+ *
+ * $Id$
+ * $Source$
+ */
+
+/**
+ \file htdocs/includes/modules/dons/modules_don.php
+ \ingroup don
+ \brief Fichier contenant la classe mère de generation des dons
+ \version $Revision$
+*/
+
+require_once(FPDF_PATH.'fpdf.php');
+require_once(DOL_DOCUMENT_ROOT."/don.class.php");
+
+
+
+/**
+ \class ModeleDon
+ \brief Classe mère des modèles de dons
+*/
+
+class ModeleDon extends FPDF
+{
+ var $error='';
+
+ /**
+ * \brief Renvoi le dernier message d'erreur de création de facture
+ */
+ function pdferror()
+ {
+ return $this->error;
+ }
+
+ /**
+ * \brief Renvoi la liste des modèles actifs
+ * \param db Handler de base
+ */
+ function liste_modeles($db)
+ {
+ $liste=array();
+ $sql ="";
+
+ $resql = $db->query($sql);
+ if ($resql)
+ {
+ $num = $db->num_rows($resql);
+ $i = 0;
+ while ($i < $num)
+ {
+ $row = $db->fetch_row($resql);
+ $liste[$row[0]]=$row[1];
+ $i++;
+ }
+ }
+ else
+ {
+ return -1;
+ }
+ return $liste;
+ }
+
+}
+
+
+/**
+ \class ModeleNumRefDons
+ \brief Classe mère des modèles de numérotation des références de facture
+*/
+
+class ModeleNumRefDons
+{
+ var $error='';
+
+ /** \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
+ */
+ 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
+ */
+ function canBeActivated()
+ {
+ return true;
+ }
+
+ /** \brief Renvoi prochaine valeur attribuée
+ * \return string Valeur
+ */
+ function getNextValue()
+ {
+ global $langs;
+ return $langs->trans("NotAvailable");
+ }
+}
+
+
+/**
+ \brief Crée un don sur disque en fonction du modèle de DON_ADDON_PDF
+ \param db objet base de donnée
+ \param donid id de la facture à créer
+ \param message message
+ \return int 0 si KO, 1 si OK
+*/
+function don_create($db, $donid, $message="")
+{
+ global $langs;
+ $langs->load("bills");
+
+ define("DON_ADDON",'html_cerfafr');
+
+ $dir = DOL_DOCUMENT_ROOT . "/includes/modules/dons/";
+
+ if (defined("DON_ADDON") && DON_ADDON)
+ {
+ $file = DON_ADDON.".modules.php";
+
+ $classname = DON_ADDON;
+ require_once($dir.$file);
+
+ $obj = new $classname($db);
+
+ $obj->message = $message;
+
+ if ( $obj->write_file($donid) > 0)
+ {
+ // Succès de la création de la facture. On génère le fichier meta
+ don_meta_create($db, $donid);
+
+ // et on supprime l'image correspondant au preview
+ don_delete_preview($db, $donid);
+
+ return 1;
+ }
+ else
+ {
+ dolibarr_syslog("Erreur dans don_create");
+ dolibarr_print_error($db,$obj->pdferror());
+ return 0;
+ }
+ }
+ else
+ {
+ print $langs->trans("Error")." ".$langs->trans("Error_DON_ADDON_PDF_NotDefined");
+ return 0;
+ }
+}
+
+/**
+ \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 donid Id du don à créer
+ \param message Message
+*/
+function don_meta_create($db, $donid, $message="")
+{
+ global $langs,$conf;
+
+ $don = new Don($db);
+ $don->id=$donid;
+ $don->fetch($donid);
+}
+
+
+/**
+ \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 donid Id du don
+*/
+function don_delete_preview($db, $donid)
+{
+ global $langs,$conf;
+
+ $don = new Don($db);
+ $don->id=$donid;
+ $don->fetch($donid);
+}
+
+?>
diff --git a/htdocs/master.inc.php b/htdocs/master.inc.php
index 62dece4c98a..4b04eb57001 100644
--- a/htdocs/master.inc.php
+++ b/htdocs/master.inc.php
@@ -244,6 +244,8 @@ $conf->banque->dir_output=DOL_DATA_ROOT."/banque";
$conf->banque->dir_images=DOL_DATA_ROOT."/banque/images";
$conf->caisse->enabled=defined("MAIN_MODULE_CAISSE")?MAIN_MODULE_CAISSE:0;
$conf->don->enabled=defined("MAIN_MODULE_DON")?MAIN_MODULE_DON:0;
+$conf->don->dir_output=DOL_DATA_ROOT."/dons";
+$conf->don->dir_images=DOL_DATA_ROOT."/dons/images";
$conf->syslog->enabled=defined("MAIN_MODULE_SYSLOG")?MAIN_MODULE_SYSLOG:0;
$conf->fournisseur->enabled=defined("MAIN_MODULE_FOURNISSEUR")?MAIN_MODULE_FOURNISSEUR:0;
$conf->fichinter->enabled=defined("MAIN_MODULE_FICHEINTER")?MAIN_MODULE_FICHEINTER:0;