From d6b11b2848a5a050871d6dd11f5a748e821e6501 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 25 Jul 2004 13:12:15 +0000 Subject: [PATCH] =?UTF-8?q?New:=20Am=E9lioration=20de=20la=20gestion=20des?= =?UTF-8?q?=20erreurs=20sur=20la=20g=E9n=E9ration=20des=20factures.=20Fix:?= =?UTF-8?q?=20register=5Fglobals=3Doff=20sur=20la=20page=20config=20factur?= =?UTF-8?q?e=20et=20constantes=20autres.=20New:=20Toutes=20les=20contantes?= =?UTF-8?q?=20de=20config=20en=20rapport=20avec=20le=20module=20facture=20?= =?UTF-8?q?(FAC=5F)=20ont=20=E9t=E9=20sorties=20de=20la=20page=20"autres"?= =?UTF-8?q?=20et=20plac=E9es=20dans=20la=20page=20config=20du=20module=20f?= =?UTF-8?q?acture.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/admin/const.php | 45 +++-- htdocs/admin/facture.php | 163 +++++++++++++----- .../modules/facture/modules_facture.php | 8 +- .../modules/facture/pdf_adytek.modules.php | 20 ++- .../modules/facture/pdf_bernique.modules.php | 20 ++- .../modules/facture/pdf_bigorneau.modules.php | 19 +- .../modules/facture/pdf_bulot.modules.php | 20 ++- .../modules/facture/pdf_crabe.modules.php | 48 +++++- .../modules/facture/pdf_tourteau.modules.php | 18 +- htdocs/lib/functions.inc.php | 4 +- 10 files changed, 283 insertions(+), 82 deletions(-) diff --git a/htdocs/admin/const.php b/htdocs/admin/const.php index 5a370de7868..65a8b00009f 100644 --- a/htdocs/admin/const.php +++ b/htdocs/admin/const.php @@ -32,37 +32,40 @@ print_titre("Configuration autre (Dolibarr version ".DOL_VERSION.")"); //print_r(get_defined_constants()); print "
\n"; -print ''; -print ''; -print ''; -print ''; -print ''; -print ''; -print ""; -print "\n"; -$form = new Form($db); $typeconst=array('yesno','texte','chaine'); - -if ($HTTP_POST_VARS["action"] == 'update' || $HTTP_POST_VARS["action"] == 'add') +if ($_POST["action"] == 'update' || $_POST["action"] == 'add') { - if (! dolibarr_set_const($db, $HTTP_POST_VARS["constname"],$HTTP_POST_VARS["constvalue"],$typeconst[$HTTP_POST_VARS["consttype"]],1,isset($HTTP_POST_VARS["constnote"])?$HTTP_POST_VARS["constnote"]:'')); + if (! dolibarr_set_const($db, $_POST["constname"],$_POST["constvalue"],$typeconst[$_POST["consttype"]],1,isset($_POST["constnote"])?$_POST["constnote"]:'')); { print $db->error(); } } - if ($_GET["action"] == 'delete') { - if (! dolibarr_del_const($db, $HTTP_POST_VARS["constname"])); + if (! dolibarr_del_const($db, $_GET["rowid"])); { print $db->error(); } } + +print '
NomValeurTypeNoteAction
'; +print ''; +print ''; +print ''; +print ''; +print ''; +print ""; +print "\n"; + + +# Affiche lignes des constantes +$form = new Form($db); + if ($all==1){ $sql = "SELECT rowid, name, value, type, note FROM llx_const ORDER BY name ASC"; }else{ @@ -80,7 +83,7 @@ if ($result) $obj = $db->fetch_object( $i); $var=!$var; - print ''; + print ''; print ''; print ''; print ''; @@ -96,7 +99,7 @@ if ($result) } elseif ($obj->type == 'texte') { - print '\n"; print '\n"; print ''; $i++; } } -$var=!$var; -print ''; + +# Affiche ligne d'ajout +$var=!$var; +print ''; print ''; print "\n"; @@ -143,6 +148,8 @@ print ''; print ''; + + print '
NomValeurTypeNoteAction
'; @@ -113,16 +116,18 @@ if ($result) print ''; print ''; print '   '; - print ''.img_delete().''; + print ''.img_delete().''; print "
'; $db->close(); diff --git a/htdocs/admin/facture.php b/htdocs/admin/facture.php index bcc794230bc..700427e3249 100644 --- a/htdocs/admin/facture.php +++ b/htdocs/admin/facture.php @@ -24,20 +24,6 @@ require("./pre.inc.php"); if (!$user->admin) accessforbidden(); -/* -if ($HTTP_POST_VARS["action"] == 'update') -{ - dolibarr_set_const($db, "FAC_PDF_INTITULE2",$HTTP_POST_VARS["nom2"]); - dolibarr_set_const($db, "FAC_PDF_INTITULE",$HTTP_POST_VARS["nom"]); - dolibarr_set_const($db, "FAC_PDF_ADRESSE",$HTTP_POST_VARS["adresse"]); - dolibarr_set_const($db, "FAC_PDF_TEL",$HTTP_POST_VARS["tel"]); - dolibarr_set_const($db, "FAC_PDF_FAX",$HTTP_POST_VARS["fax"]); - dolibarr_set_const($db, "FAC_PDF_SIREN",$HTTP_POST_VARS["siren"]); - dolibarr_set_const($db, "FAC_PDF_SIRET",$HTTP_POST_VARS["siret"]); - - Header("Location: facture.php"); -} -*/ $facture_addon_var = FACTURE_ADDON; $facture_addon_var_pdf = FACTURE_ADDON_PDF; @@ -45,6 +31,9 @@ $facture_rib_number_var = FACTURE_RIB_NUMBER; $facture_chq_number_var = FACTURE_CHQ_NUMBER; $facture_tva_option = FACTURE_TVAOPTION; +$typeconst=array('yesno','texte','chaine'); + + if ($_GET["action"] == 'set') { if (dolibarr_set_const($db, "FACTURE_ADDON",$_GET["value"])) $facture_addon_var = $_GET["value"]; @@ -65,25 +54,44 @@ if ($_POST["action"] == 'settvaoption') { if (dolibarr_set_const($db, "FACTURE_TVAOPTION",$_POST["optiontva"])) $facture_tva_option = $_POST["optiontva"]; } + +if ($_POST["action"] == 'update' || $_POST["action"] == 'add') +{ + if (! dolibarr_set_const($db, $_POST["constname"],$_POST["constvalue"],$typeconst[$_POST["consttype"]],0,isset($_POST["constnote"])?$_POST["constnote"]:'')); + { + print $db->error(); + } +} + +if ($_GET["action"] == 'delete') +{ + if (! dolibarr_del_const($db, $_GET["rowid"])); + { + print $db->error(); + } +} + + llxHeader(); $dir = "../includes/modules/facture/"; print_titre("Configuration du module Factures"); + /* * Module numérotation */ print "
"; print_titre("Module de numérotation des factures"); -print ''; -print ''; +print '
'; +print ''; print ''; print ''; print ''; print ''; -print "\n"; +print "\n"; clearstatcache(); @@ -130,7 +138,7 @@ print '
NomDescriptionActivé 
'; print '
'; print_titre("Modèles de facture pdf"); -print ''; +print '
'; print ''; print ''; print ''; @@ -189,7 +197,8 @@ print '
NomDescription
'; print '
'; print_titre( "Mode de règlement à afficher sur les factures"); -print ''; +print '
'; +$var=True; print ''; print ''; @@ -197,11 +206,11 @@ print ''; print ''; print ''; print "\n"; -print ''; +$var=!$var; +print ''; print ""; print ""; - -print ''; +$var=!$var; +print ''; print ""; print ""; print ""; print "
Mode règlement à proposer
Proposer paiement par RIB sur le compte"; $sql = "SELECT rowid, label FROM ".MAIN_DB_PREFIX."bank_account where clos = 0"; -$var=True; if ($db->query($sql)) { $num = $db->num_rows(); @@ -230,8 +239,8 @@ if ($db->query($sql)) } } print "
Proposer paiement par chèque à l'ordre et adresse du titulaire du compte"; $sql = "SELECT rowid, label FROM ".MAIN_DB_PREFIX."bank_account where clos = 0"; @@ -267,20 +276,6 @@ if ($db->query($sql)) print "
"; -$db->close(); - -/* - * Repertoire - */ -print '
'; -print_titre("Chemins d'accés aux documents"); - -print ''; -print ''; -print ''; -print "\n"; -print ''; -print "
NomValeur
Répertoire'.FAC_OUTPUTDIR.'
"; /* @@ -289,19 +284,107 @@ print ""; print '
'; print_titre("Options fiscales de facturation de la TVA"); -print ''; +print '
'; print ''; print ''; print ''; print ''; print ''; print "\n"; -print ""; +$var=True; +$var=!$var; +print ""; print "\n"; -print ""; +$var=!$var; +print ""; print "\n"; print ""; print "
OptionDescription
Option réel
Option réelL'option 'réel' est la plus courante. Elle est à destination des entreprises et professions libérales.\nChaque produits/service vendu est soumis à la TVA (Dolibarr propose le taux standard par défaut à la création d'une facture). Cette dernière est récupérée l'année suivante suite à la déclaration TVA pour les produits/services achetés et est reversée à l'état pour les produits/services vendus.
Option franchise
Option franchiseL'option 'franchise' est utilisée par les particuliers ou professions libérales à titre occasionnel avec de petits chiffres d'affaires.\nChaque produits/service vendu est soumis à une TVA de 0 (Dolibarr propose le taux 0 par défaut à la création d'une facture cliente). Il n'y a pas de déclaration ou récupération de TVA, et les factures qui gèrent l'option affichent la mention obligatoire \"TVA non applicable - art-293B du CGI\".
"; + +/* + * Autres constantes + */ +print '
'; +print_titre("Autres constantes relatives aux factures"); + +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ""; +print "\n"; + + +# Affiche lignes des constantes +$form = new Form($db); +$exclude="'FACTURE_ADDON','FACTURE_ADDON_PDF','FACTURE_CHQ_NUMBER','FACTURE_RIB_NUMBER','FACTURE_TVAOPTION'"; # Lignes exclues car affichées précédemment + +$sql = "SELECT rowid, name, value, type, note FROM llx_const "; +$sql.= "WHERE name like 'FAC%' "; +$sql.= "AND name not in ($exclude)"; +$sql.= "ORDER BY name ASC"; +$result = $db->query($sql); + +if ($result) +{ + $num = $db->num_rows(); + $i = 0; + $var=True; + + while ($i < $num) + { + $obj = $db->fetch_object( $i); + $var=!$var; + + print ''; + print ''; + print ''; + print ''; + + print "\n"; + + print '\n"; + + print ''; + $i++; + } +} + +print "
NomValeurTypeNoteAction
$obj->name'; + if ($obj->type == 'yesno') + { + $form->selectyesnonum('constvalue',$obj->value); + print ''; + $form->select_array('consttype',array('yesno','texte','chaine'),0); + } + elseif ($obj->type == 'texte') + { + print '\n"; + print ''; + $form->select_array('consttype',array('yesno','texte','chaine'),1); + } + else + { + print ''; + print ''; + $form->select_array('consttype',array('yesno','texte','chaine'),2); + } + print ''; + + print ''; + print ''; + print '   '; + print ''.img_delete().''; + print "
\n"; + +print "
\n"; + +$db->close(); + llxFooter("Dernière modification $Date$ révision $Revision$"); ?> diff --git a/htdocs/includes/modules/facture/modules_facture.php b/htdocs/includes/modules/facture/modules_facture.php index 1cbb42adf04..734f995939a 100644 --- a/htdocs/includes/modules/facture/modules_facture.php +++ b/htdocs/includes/modules/facture/modules_facture.php @@ -58,6 +58,12 @@ function jupiter_get_num_explain() Système de numérotation mensuel sous la forme F20030715, qui correspond à la 15ème facture du mois de Juillet 2003'; } + +/*! + \brief Crée un facture sur disque en fonction du modèle de FACTURE_ADDON_PDF + \param db objet base de donnée + \param facid id de la facture à créer +*/ function facture_pdf_create($db, $facid) { @@ -79,7 +85,7 @@ function facture_pdf_create($db, $facid) } else { - print "Erreur"; + print $obj->error(); return 0; } } diff --git a/htdocs/includes/modules/facture/pdf_adytek.modules.php b/htdocs/includes/modules/facture/pdf_adytek.modules.php index 2e3024ccc55..6ef52f48f39 100644 --- a/htdocs/includes/modules/facture/pdf_adytek.modules.php +++ b/htdocs/includes/modules/facture/pdf_adytek.modules.php @@ -1,5 +1,6 @@ + * Copyright (C) 2004 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 @@ -29,6 +30,16 @@ Class pdf_adytek extends FPDF{ $this->description = "Modèle de facture avec remise et infos réglement à la mode de chez nous"; } + + /*! + \brief Renvoi le dernier message d'erreur de création de facture + */ + Function error() + { + return $this->error; + } + + Function write_pdf_file($facid) { global $user; @@ -46,7 +57,8 @@ Class pdf_adytek extends FPDF{ umask(0); if (! mkdir($dir, 0755)) { - print "Impossible de créer $dir !"; + $this->error="Erreur: Le répertoire '$dir' n'existe pas et Dolibarr n'a pu le créer."; + return 0; } } @@ -197,12 +209,14 @@ Class pdf_adytek extends FPDF{ } else { - print "Erreur : le répertoire $dir n'existe pas !"; + $this->error="Erreur: Le répertoire '$dir' n'existe pas et Dolibarr n'a pu le créer."; + return 0; } } else { - print "FAC_OUTPUTDIR non définit !"; + $this->error="Erreur: FAC_OUTPUTDIR non défini !"; + return 0; } } /* diff --git a/htdocs/includes/modules/facture/pdf_bernique.modules.php b/htdocs/includes/modules/facture/pdf_bernique.modules.php index 45a22b91f2b..f53cb20b6bf 100644 --- a/htdocs/includes/modules/facture/pdf_bernique.modules.php +++ b/htdocs/includes/modules/facture/pdf_bernique.modules.php @@ -1,5 +1,6 @@ + * Copyright (C) 2004 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 @@ -29,6 +30,16 @@ Class pdf_bernique { $this->description = "Modèle pour les factures avec plusieurs taux de tva, inclus aussi le numéro de TVA Intracommunautaire"; } + + /*! + \brief Renvoi le dernier message d'erreur de création de facture + */ + Function error() + { + return $this->error; + } + + Function write_pdf_file($facid) { global $user; @@ -46,7 +57,8 @@ Class pdf_bernique { umask(0); if (! mkdir($dir, 0755)) { - print "Impossible de créer $dir !"; + $this->error="Erreur: Le répertoire '$dir' n'existe pas et Dolibarr n'a pu le créer."; + return 0; } } @@ -162,12 +174,14 @@ Class pdf_bernique { } else { - print "Erreur : le répertoire $dir n'existe pas !"; + $this->error="Erreur: Le répertoire '$dir' n'existe pas et Dolibarr n'a pu le créer."; + return 0; } } else { - print "FAC_OUTPUTDIR non définit !"; + $this->error="Erreur: FAC_OUTPUTDIR non défini !"; + return 0; } } /* diff --git a/htdocs/includes/modules/facture/pdf_bigorneau.modules.php b/htdocs/includes/modules/facture/pdf_bigorneau.modules.php index 1253551d841..a9e4205e52e 100644 --- a/htdocs/includes/modules/facture/pdf_bigorneau.modules.php +++ b/htdocs/includes/modules/facture/pdf_bigorneau.modules.php @@ -1,5 +1,6 @@ + * Copyright (C) 2004 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 @@ -30,6 +31,15 @@ Class pdf_bigorneau { } + /*! + \brief Renvoi le dernier message d'erreur de création de facture + */ + Function error() + { + return $this->error; + } + + Function write_pdf_file($facid) { global $user; @@ -47,7 +57,8 @@ Class pdf_bigorneau { umask(0); if (! mkdir($dir, 0755)) { - print "Impossible de créer $dir !"; + $this->error="Erreur: Le répertoire '$dir' n'existe pas et Dolibarr n'a pu le créer."; + return 0; } } @@ -201,12 +212,14 @@ Class pdf_bigorneau { } else { - print "Erreur : le répertoire $dir n'existe pas !"; + $this->error="Erreur: Le répertoire '$dir' n'existe pas et Dolibarr n'a pu le créer."; + return 0; } } else { - print "FAC_OUTPUTDIR non définit !"; + $this->error="Erreur: FAC_OUTPUTDIR non défini !"; + return 0; } } /* diff --git a/htdocs/includes/modules/facture/pdf_bulot.modules.php b/htdocs/includes/modules/facture/pdf_bulot.modules.php index 3c995dda82d..2ba131e2370 100644 --- a/htdocs/includes/modules/facture/pdf_bulot.modules.php +++ b/htdocs/includes/modules/facture/pdf_bulot.modules.php @@ -1,5 +1,6 @@ + * Copyright (C) 2004 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 @@ -29,6 +30,16 @@ Class pdf_bulot { $this->description = "Modèle de facture avec remise et infos réglement"; } + + /*! + \brief Renvoi le dernier message d'erreur de création de facture + */ + Function error() + { + return $this->error; + } + + Function write_pdf_file($facid) { global $user; @@ -46,7 +57,8 @@ Class pdf_bulot { umask(0); if (! mkdir($dir, 0755)) { - print "Impossible de créer $dir !"; + $this->error="Erreur: Le répertoire '$dir' n'existe pas et Dolibarr n'a pu le créer."; + return 0; } } @@ -166,12 +178,14 @@ Class pdf_bulot { } else { - print "Erreur : le répertoire $dir n'existe pas !"; + $this->error="Erreur: Le répertoire '$dir' n'existe pas et Dolibarr n'a pu le créer."; + return 0; } } else { - print "FAC_OUTPUTDIR non définit !"; + $this->error="Erreur: FAC_OUTPUTDIR non défini !"; + return 0; } } /* diff --git a/htdocs/includes/modules/facture/pdf_crabe.modules.php b/htdocs/includes/modules/facture/pdf_crabe.modules.php index 6799c8c5f5d..615b69ed3ec 100644 --- a/htdocs/includes/modules/facture/pdf_crabe.modules.php +++ b/htdocs/includes/modules/facture/pdf_crabe.modules.php @@ -21,13 +21,47 @@ * */ + +/*! \file pdf_crabe.modules.php + \brief Classe permettant de générer lune facture au modèle Crabe + \author Laurent Destailleur + \version $Revision$ +*/ + Class pdf_crabe { + var $error=''; + + /*! + \brief Constructeur + \param db objet base de donnée + */ Function pdf_crabe($db=0) { $this->db = $db; $this->description = "Modèle de facture classique (Gère l'option fiscale de facturation TVA et le choix du mode de règlement à afficher)"; } + + /*! + \brief Renvoi le dernier message d'erreur de création de facture + */ + Function error() + { + return $this->error; + } + + + /*! + \brief Fonction générant la facture sur le disque + \param facid id de la facture à générer + \remarks Variables utilisées + \remarks FAC_OUTPUTDIR + \remarks FACTURE_CODEPRODUITSERVICE + \remarks FACTURE_CHQ_NUMBER + \remarks FACTURE_RIB_NUMBER + \remarks FAC_OUTPUTDIR + \return 1=ok, 0=ko + */ Function write_pdf_file($facid) { global $user; @@ -44,7 +78,8 @@ Class pdf_crabe { umask(0); if (! mkdir($dir, 0755)) { - print "Erreur: Impossible de créer $dir !"; + $this->error="Erreur: Le répertoire '$dir' n'existe pas et Dolibarr n'a pu le créer."; + return 0; } } @@ -212,13 +247,16 @@ Class pdf_crabe { } else { - print "Erreur : le répertoire $dir n'existe pas !"; + $this->error="Erreur: Le répertoire '$dir' n'existe pas et Dolibarr n'a pu le créer."; + return 0; } } else { - print "Erreur: FAC_OUTPUTDIR non défini !"; + $this->error="Erreur: FAC_OUTPUTDIR non défini !"; + return 0; } + $this->error="Erreur: Erreur inconnue"; return 0; // Erreur par defaut } @@ -302,8 +340,8 @@ Class pdf_crabe { } else { - print "Erreur : ".$this->db->error()."
".$sql; - return -1; + $this->error="Echec requete SQL"; + return 0; } } diff --git a/htdocs/includes/modules/facture/pdf_tourteau.modules.php b/htdocs/includes/modules/facture/pdf_tourteau.modules.php index 0a2c561a55f..afe56949bc4 100644 --- a/htdocs/includes/modules/facture/pdf_tourteau.modules.php +++ b/htdocs/includes/modules/facture/pdf_tourteau.modules.php @@ -1,5 +1,6 @@ + * Copyright (C) 2004 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 @@ -29,6 +30,14 @@ Class pdf_tourteau { $this->description = "Modèle de facture sans remise"; } + /*! + \brief Renvoi le dernier message d'erreur de création de facture + */ + Function error() + { + return $this->error; + } + Function write_pdf_file($facid) { @@ -47,7 +56,8 @@ Class pdf_tourteau { umask(0); if (! mkdir($dir, 0755)) { - print "Impossible de créer $dir !"; + $this->error="Erreur: Le répertoire '$dir' n'existe pas et Dolibarr n'a pu le créer."; + return 0; } } @@ -253,12 +263,14 @@ Class pdf_tourteau { } else { - print "Erreur : le répertoire $dir n'existe pas !"; + $this->error="Erreur: Le répertoire '$dir' n'existe pas et Dolibarr n'a pu le créer."; + return 0; } } else { - print "FAC_OUTPUTDIR non définit !"; + $this->error="Erreur: FAC_OUTPUTDIR non défini !"; + return 0; } } /* diff --git a/htdocs/lib/functions.inc.php b/htdocs/lib/functions.inc.php index 4292f68a8d1..262bc1562bd 100644 --- a/htdocs/lib/functions.inc.php +++ b/htdocs/lib/functions.inc.php @@ -122,13 +122,13 @@ function dolibarr_set_const($db, $name, $value, $type='chaine', $visible=0, $not /*! \brief effacement d'une constante dans la base de données \param db base de données - \param name nom de la constante + \param name nom ou rowid de la constante \remarks retourne 0 pour raté, 1 pour réussi */ function dolibarr_del_const($db, $name) { - $sql = "DELETE FROM llx_const WHERE name='$name'"; + $sql = "DELETE FROM llx_const WHERE name='$name' or rowid='$name'"; if ($db->query($sql)) {