From 4f3d25379cb745ad3491625cd0fa8f1b9ebe825a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 15 Aug 2004 15:04:24 +0000 Subject: [PATCH] =?UTF-8?q?Optim:=20Les=20fichiers=20modules=20de=20mod=E8?= =?UTF-8?q?les=20de=20num=E9rotation=20de=20factures=20ont=20=E9t=E9=20pas?= =?UTF-8?q?s=E9e=20en=20objet=20et=20la=20description=20du=20mod=E8le=20es?= =?UTF-8?q?t=20port=E9e=20par=20le=20fichier=20module=20m=EAme=20plutot=20?= =?UTF-8?q?que=20par=20le=20fichier=20commun=20modules=5Ffacture.php.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/admin/facture.php | 17 +- htdocs/compta/facture.php | 11 +- .../modules/facture/deneb/deneb.modules.php | 74 +++++++-- .../facture/jupiter/jupiter.modules.php | 61 ++++++-- .../modules/facture/modules_facture.php | 147 +++++++++++++----- .../facture/neptune/neptune.modules.php | 78 +++++++--- .../modules/facture/pluton/pluton.modules.php | 58 +++++-- .../modules/facture/venus/venus.modules.php | 38 ++++- 8 files changed, 368 insertions(+), 116 deletions(-) diff --git a/htdocs/admin/facture.php b/htdocs/admin/facture.php index 54fe30b7a4c..9a16756cc60 100644 --- a/htdocs/admin/facture.php +++ b/htdocs/admin/facture.php @@ -19,6 +19,13 @@ * $Id$ * $Source$ */ + +/*! \file htdocs/admin/facture.php + \ingroup facture + \brief Page d'administration/configuration du module Facture + \version $Revision$ +*/ + require("./pre.inc.php"); if (!$user->admin) @@ -113,9 +120,15 @@ while (($file = readdir($handle))!==false) echo "$file"; print "\n"; - $func = $file."_get_num_explain"; + $filebis = $file."/".$file.".modules.php"; - print $func(); + $classname = "NumRefFactures".ucfirst($file); + require_once($dir.$filebis); + +// $func = $file."_get_num_explain"; +// print $func(); + $obj = new $classname($db); + print $obj->getDesc(); print ''; diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index d72e3875863..d185e997c8c 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -21,6 +21,13 @@ * $Source$ * */ + +/*! \file htdocs/compta/facture.php + \ingroup facture + \brief Page de création d'une facture + \version $Revision$ +*/ + require("./pre.inc.php"); $user->getrights('facture'); @@ -714,7 +721,7 @@ if ($_GET["action"] == 'create') } else { - print $db->error(); + dolibarr_print_error($db); } } else @@ -776,7 +783,7 @@ else if ($_GET["action"] == 'valid') { $numfa = facture_get_num($soc); - $html->form_confirm("facture.php?facid=$fac->id","Valider la facture","Etes-vous sûr de vouloir valider cette facture avec le numéro $numfa ?","confirm_valid"); + $html->form_confirm("facture.php?facid=$fac->id","Valider la facture sous la référence no ".$numfa,"Etes-vous sûr de vouloir valider cette facture avec la référence no $numfa ?","confirm_valid"); } /* diff --git a/htdocs/includes/modules/facture/deneb/deneb.modules.php b/htdocs/includes/modules/facture/deneb/deneb.modules.php index 95e84f15775..9b1a6b6a06c 100644 --- a/htdocs/includes/modules/facture/deneb/deneb.modules.php +++ b/htdocs/includes/modules/facture/deneb/deneb.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 @@ -21,29 +22,70 @@ * */ -function facture_get_num($objsoc=0) -{ - global $db; +/*! \file htdocs/includes/modules/facture/deneb/deneb.modules.php + \ingroup facture + \brief Fichier contenant la classe du modèle de numérotation de référence de facture Deneb + \version $Revision$ +*/ - $sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."facture WHERE fk_statut > 0"; - if ( $db->query($sql) ) - { - $row = $db->fetch_row(0); - - $num = $row[0]; +/*! \class NumRefFacturesDeneb + \brief Classe du modèle de numérotation de référence de facture Deneb +*/ +class NumRefFacturesDeneb extends ModeleNumRefFactures +{ + + /*! \brief Renvoie la référence de facture suivante non utilisée + * \param objsoc Objet société + * \return string Texte descripif + */ + function getNumRef($objsoc=0) + { + global $db; + + $sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."facture WHERE fk_statut > 0"; + + if ( $db->query($sql) ) + { + $row = $db->fetch_row(0); + + $num = $row[0]; + } + + if (!defined("FACTURE_DENEB_DELTA")) + { + define("FACTURE_DENEB_DELTA", 0); + } + + $num = $num + FACTURE_DENEB_DELTA; + + $y = strftime("%y",time()); + + return $objsoc->prefix_comm . "-" .strftime("%d-%m-%Y", time()) . "-".$num; } - if (!defined("FACTURE_DENEB_DELTA")) + + /*! \brief Renvoi la description du modele de numérotation + * \return string Texte descripif + */ + function getDesc() { - define("FACTURE_DENEB_DELTA", 0); + + $texte = ' + Renvoie le numéro de facture sous la forme, PR-03-06-2004-15, où PR est le préfixe commercial de la société, et est suivi de la date (ici le 14 juin 2004) et d\'un compteur général. La constante FACTURE_DENEB_DELTA sert à la correction de plage. FACTURE_DENEB_DELTA '; + + if (defined("FACTURE_DENEB_DELTA")) + { + $texte .= "est défini et vaut : ".FACTURE_DENEB_DELTA; + } + else + { + $texte .= "n'est pas défini"; + } + return $texte; + } - $num = $num + FACTURE_DENEB_DELTA; - - $y = strftime("%y",time()); - - return $objsoc->prefix_comm . "-" .strftime("%d-%m-%Y", time()) . "-".$num; } ?> diff --git a/htdocs/includes/modules/facture/jupiter/jupiter.modules.php b/htdocs/includes/modules/facture/jupiter/jupiter.modules.php index ddf6b36ecad..13c98c12f74 100644 --- a/htdocs/includes/modules/facture/jupiter/jupiter.modules.php +++ b/htdocs/includes/modules/facture/jupiter/jupiter.modules.php @@ -22,24 +22,53 @@ * */ -function facture_get_num($objsoc=0) -{ - global $db; - $prefix='F'; - $date = strftime("%Y%m", time()); - $num=0; - - $sql = "SELECT max(0+substring(facnumber,8)) FROM ".MAIN_DB_PREFIX."facture"; - $sql .= " WHERE facnumber like '$prefix".$date."%'"; +/*! \file htdocs/includes/modules/facture/jupiter/jupiter.modules.php + \ingroup facture + \brief Fichier contenant la classe du modèle de numérotation de référence de facture Jupiter + \version $Revision$ +*/ - if ( $db->query($sql) ) - { - $row = $db->fetch_row(0); - - $num = $row[0]; + +/*! \class NumRefFacturesJupiter + \brief Classe du modèle de numérotation de référence de facture Jupiter +*/ +class NumRefFacturesJupiter extends ModeleNumRefFactures +{ + + /*! \brief Renvoie la référence de facture suivante non utilisée + * \param objsoc Objet société + * \return string Texte descripif + */ + function getNumRef($objsoc=0) + { + global $db; + + $prefix='F'; + $date = strftime("%Y%m", time()); + $num=0; + + $sql = "SELECT max(0+substring(facnumber,8)) FROM ".MAIN_DB_PREFIX."facture"; + $sql .= " WHERE facnumber like '$prefix".$date."%'"; + + if ( $db->query($sql) ) + { + $row = $db->fetch_row(0); + + $num = $row[0]; + } + $num++; + return "$prefix" . $date . $num; } - $num++; - return "$prefix" . $date . $num; + + /*! \brief Renvoi la description du modele de numérotation + * \return string Texte descripif + */ + function getDesc() + { + return ' + Système de numérotation mensuel sous la forme F20030715, qui correspond à la 15ème facture du mois de Juillet 2003'; + } + } ?> diff --git a/htdocs/includes/modules/facture/modules_facture.php b/htdocs/includes/modules/facture/modules_facture.php index 7faeadf87c8..aace56e314a 100644 --- a/htdocs/includes/modules/facture/modules_facture.php +++ b/htdocs/includes/modules/facture/modules_facture.php @@ -1,6 +1,6 @@ - * Copyright (C) 2004 Laurent Destailleur + * 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 @@ -22,72 +22,92 @@ * */ -function deneb_get_num_explain() +/*! \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 $Revision$ +*/ + +require_once(DOL_DOCUMENT_ROOT."/product.class.php"); + + + +/*! \class ModelePDFFactures + \brief Classe mère des modèles de facture +*/ + +class ModelePDFFactures extends FPDF { + var $error=''; - $texte = ' -Renvoie le numéro de facture sous la forme, PR-03-06-2004-15, où PR est le préfixe commercial de la société, et est suivi de la date (ici le 14 juin 2004) et d\'un compteur général. La constante FACTURE_DENEB_DELTA sert à la correction de plage. FACTURE_DENEB_DELTA '; + /*! \brief Constructeur + */ + function ModelePDFFactures() + { + + } - if (defined("FACTURE_DENEB_DELTA")) + /*! + \brief Renvoi le dernier message d'erreur de création de facture + */ + function pdferror() { - $texte .= "est défini et vaut : ".FACTURE_DENEB_DELTA; + return $this->error; } - else - { - $texte .= "n'est pas défini"; - } - return $texte; } -function venus_get_num_explain() + +/*! \class ModeleNumRefFactures + \brief Classe mère des modèles de numérotation des références de facture +*/ + +class ModeleNumRefFactures { + var $error=''; - return ' -Renvoie le numéro de facture sous la forme, F-PR-030202, où PR est le préfixe commercial de la société, et est suivi de la date sur un format de 6 digits avec Année, Mois et Jour'; - -} - -function pluton_get_num_explain() -{ - return ' -Renvoie le numéro de facture sous une forme numérique simple, la première facture porte le numéro 1, la quinzième facture ayant le numéro 15.'; -} - -function neptune_get_num_explain() -{ - $texte = ' -Identique à pluton, avec un correcteur au moyen de la constante FACTURE_NEPTUNE_DELTA.'; - if (defined("FACTURE_NEPTUNE_DELTA")) + /*! \brief Constructeur + */ + function ModeleNumRefFactures() { - $texte .= "Défini et vaut : ".FACTURE_NEPTUNE_DELTA; + } - else + + /*! \brief Renvoi la description par defaut du modele de numérotation + * \return string Texte descripif + */ + function getDesc() { - $texte .= "N'est pas défini"; + global $langs; + $langs->load("bills"); + return $langs->trans("NoDescription"); } - return $texte; -} + /*! + \brief Renvoi le dernier message d'erreur de création de facture + */ + function numreferror() + { + return $this->error; + } -function jupiter_get_num_explain() -{ - return ' -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 + \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) { + global $langs; + $langs->load("bills"); $dir = DOL_DOCUMENT_ROOT . "/includes/modules/facture/"; - if (defined("FACTURE_ADDON_PDF")) + if (defined("FACTURE_ADDON_PDF") && FACTURE_ADDON_PDF) { $file = "pdf_".FACTURE_ADDON_PDF.".modules.php"; @@ -103,15 +123,56 @@ function facture_pdf_create($db, $facid) } else { - print $obj->error(); + dolibarr_print_error($db,$obj->pdferror()); return 0; } } else { - print "Erreur FACTURE_ADDON_PDF non définit !"; + print $langs->trans("Error")." ".$langs->trans("Error_FACTURE_ADDON_PDF_NotDefined"); return 0; } } + +/*! + \brief Renvoie la référence de facture suivante non utilisé en fonction du module + de numérotation actif défini dans FACTURE_ADDON + \param soc objet societe + \return string reference libre pour la facture +*/ +function facture_get_num($soc) +{ + global $db, $langs; + $langs->load("bills"); + + $dir = DOL_DOCUMENT_ROOT . "/includes/modules/facture/"; + + if (defined("FACTURE_ADDON") && FACTURE_ADDON) + { + + $file = FACTURE_ADDON."/".FACTURE_ADDON.".modules.php"; + + $classname = "NumRefFactures".ucfirst(FACTURE_ADDON); + require_once($dir.$file); + + $obj = new $classname(); + + if ( $obj->getNumRef($soc) != "") + { + return $obj->getNumRef($soc); + } + else + { + dolibarr_print_error($db,$obj->numreferror()); + return ""; + } + } + else + { + print $langs->trans("Error")." ".$langs->trans("Error_FACTURE_ADDON_NotDefined"); + return ""; + } +} + ?> diff --git a/htdocs/includes/modules/facture/neptune/neptune.modules.php b/htdocs/includes/modules/facture/neptune/neptune.modules.php index d302cc59249..92772b0d73d 100644 --- a/htdocs/includes/modules/facture/neptune/neptune.modules.php +++ b/htdocs/includes/modules/facture/neptune/neptune.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 @@ -21,30 +22,67 @@ * */ -function facture_get_num($objsoc=0) -{ - global $db; +/*! \file htdocs/includes/modules/facture/neptune/neptune.modules.php + \ingroup facture + \brief Fichier contenant la classe du modèle de numérotation de référence de facture Neptune + \version $Revision$ +*/ - $sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."facture WHERE fk_statut > 0"; - if ( $db->query($sql) ) +/*! \class NumRefFacturesNeptune + \brief Classe du modèle de numérotation de référence de facture Neptune +*/ +class NumRefFacturesNeptune extends ModeleNumRefFactures +{ + + /*! \brief Renvoie la référence de facture suivante non utilisée + * \param objsoc Objet société + * \return string Texte descripif + */ + function getNumRef($objsoc=0) + { + global $db; + + $sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."facture WHERE fk_statut > 0"; + + if ( $db->query($sql) ) + { + $row = $db->fetch_row(0); + + $num = $row[0]; + } + + if (!defined("FACTURE_NEPTUNE_DELTA")) + { + define("FACTURE_NEPTUNE_DELTA", 0); + } + + $num = $num + FACTURE_NEPTUNE_DELTA; + + $y = strftime("%y",time()); + + return "FA" . "$y" . substr("000".$num, strlen("000".$num)-4,4); + + } + + /*! \brief Renvoi la description du modele de numérotation + * \return string Texte descripif + */ + function getDesc() { - $row = $db->fetch_row(0); - - $num = $row[0]; + $texte = ' + Identique à pluton, avec un correcteur au moyen de la constante FACTURE_NEPTUNE_DELTA.'; + if (defined("FACTURE_NEPTUNE_DELTA")) + { + $texte .= "Défini et vaut : ".FACTURE_NEPTUNE_DELTA; + } + else + { + $texte .= "N'est pas défini"; + } + return $texte; } - if (!defined("FACTURE_NEPTUNE_DELTA")) - { - define("FACTURE_NEPTUNE_DELTA", 0); - } - - $num = $num + FACTURE_NEPTUNE_DELTA; - - $y = strftime("%y",time()); - - return "FA" . "$y" . substr("000".$num, strlen("000".$num)-4,4); - -} +} ?> diff --git a/htdocs/includes/modules/facture/pluton/pluton.modules.php b/htdocs/includes/modules/facture/pluton/pluton.modules.php index ed4507015fa..1af338e299e 100644 --- a/htdocs/includes/modules/facture/pluton/pluton.modules.php +++ b/htdocs/includes/modules/facture/pluton/pluton.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 @@ -21,23 +22,52 @@ * */ -function facture_get_num($objsoc=0) -{ - global $db; +/*! \file htdocs/includes/modules/facture/pluton/pluton.modules.php + \ingroup facture + \brief Fichier contenant la classe du modèle de numérotation de référence de facture Pluton + \version $Revision$ +*/ - $sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."facture WHERE fk_statut > 0"; - if ( $db->query($sql) ) - { - $row = $db->fetch_row(0); - - $num = $row[0]; +/*! \class NumRefFacturesPluton + \brief Classe du modèle de numérotation de référence de facture Pluton +*/ + +class NumRefFacturesPluton extends ModeleNumRefFactures +{ + + /*! \brief Renvoie la référence de facture suivante non utilisée + * \param objsoc Objet société + * \return string Texte descripif + */ + function getNumRef($objsoc=0) + { + global $db; + + $sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."facture WHERE fk_statut > 0"; + + if ( $db->query($sql) ) + { + $row = $db->fetch_row(0); + + $num = $row[0]; + } + + + $y = strftime("%y",time()); + + return "FA" . "$y" . substr("000".$num, strlen("000".$num)-4,4); + + } + + /*! \brief Renvoi la description du modele de numérotation + * \return string Texte descripif + */ + function getDesc() + { + return ' + Renvoie le numéro de facture sous une forme numérique simple, la première facture porte le numéro 1, la quinzième facture ayant le numéro 15.'; } - - - $y = strftime("%y",time()); - - return "FA" . "$y" . substr("000".$num, strlen("000".$num)-4,4); } diff --git a/htdocs/includes/modules/facture/venus/venus.modules.php b/htdocs/includes/modules/facture/venus/venus.modules.php index 6cce8c686f0..e6593085c04 100644 --- a/htdocs/includes/modules/facture/venus/venus.modules.php +++ b/htdocs/includes/modules/facture/venus/venus.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 @@ -21,10 +22,41 @@ * */ -function facture_get_num($objsoc=0) -{ +/*! \file htdocs/includes/modules/facture/venus/venus.modules.php + \ingroup facture + \brief Fichier contenant la classe du modèle de numérotation de référence de facture Venus + \version $Revision$ +*/ - return "FA-" . $objsoc->prefix_comm . "-" .strftime("%y%m%d", time()); + +/*! \class NumRefFacturesVenus + \brief Classe du modèle de numérotation de référence de facture Venus +*/ + +class NumRefFacturesVenus extends ModeleNumRefFactures +{ + + /*! \brief Renvoie la référence de facture suivante non utilisée + * \param objsoc Objet société + * \return string Texte descripif + */ + function getNumRef($objsoc=0) + { + + return "FA-" . $objsoc->prefix_comm . "-" .strftime("%y%m%d", time()); + + } + + /*! \brief Renvoi la description du modele de numérotation + * \return string Texte descripif + */ + function getDesc() + { + + return ' + Renvoie le numéro de facture sous la forme, F-PR-030202, où PR est le préfixe commercial de la société, et est suivi de la date sur un format de 6 digits avec Année, Mois et Jour'; + + } }