diff --git a/htdocs/includes/modules/propale/mod_propale_ivoire.php b/htdocs/includes/modules/propale/mod_propale_ivoire.php index 403965637ce..53a44da133c 100644 --- a/htdocs/includes/modules/propale/mod_propale_ivoire.php +++ b/htdocs/includes/modules/propale/mod_propale_ivoire.php @@ -1,6 +1,6 @@ - * Copyright (C) 2004 Laurent Destailleur +/* Copyright (C) 2003 Rodolphe Quiedeville + * Copyright (C) 2004-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 @@ -19,11 +19,11 @@ * * $Id$ * $Source$ - * */ -/** \file htdocs/includes/modules/propale/mod_propale_ivoire.php +/** + \file htdocs/includes/modules/propale/mod_propale_ivoire.php \ingroup propale \brief Fichier contenant la classe du modèle de numérotation de référence de propale Ivoire \version $Revision$ @@ -51,10 +51,19 @@ class mod_propale_ivoire extends ModeleNumRefPropales */ function getExample() { - return "PR040001"; + return "PR050001"; } + /** \brief Renvoi prochaine valeur attribuée + * \return string Valeur + */ + function getNextValue() + { + return $this->propale_get_num(); + } + + /** \brief Renvoie la référence de propale suivante non utilisée * \param objsoc Objet société * \return string Texte descripif diff --git a/htdocs/includes/modules/propale/mod_propale_jade.php b/htdocs/includes/modules/propale/mod_propale_jade.php index 5381967e649..9a2c45ff3e1 100644 --- a/htdocs/includes/modules/propale/mod_propale_jade.php +++ b/htdocs/includes/modules/propale/mod_propale_jade.php @@ -22,14 +22,16 @@ * */ -/** \file htdocs/includes/modules/propale/mod_propale_jade.php +/** + \file htdocs/includes/modules/propale/mod_propale_jade.php \ingroup propale \brief Fichier contenant la classe du modèle de numérotation de référence de propale Jade \version $Revision$ */ -/** \class mod_propale_jade +/** + \class mod_propale_jade \brief Classe du modèle de numérotation de référence de propale Jade */ @@ -41,7 +43,7 @@ class mod_propale_jade extends ModeleNumRefPropales */ function info() { - return "Renvoie le numéro sous la forme PROPn"; + return "Renvoie le numéro sous la forme PROPn ou n est un compteur continue sans remise à 0"; } @@ -54,26 +56,35 @@ class mod_propale_jade extends ModeleNumRefPropales } + /** \brief Renvoi prochaine valeur attribuée + * \return string Valeur + */ + function getNextValue() + { + return $this->propale_get_num(); + } + + /** \brief Renvoie la référence de propale suivante non utilisée * \param objsoc Objet société * \return string Texte descripif */ function propale_get_num($objsoc=0) - { - global $db; - - $sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."propal"; - - if ( $db->query($sql) ) - { - $row = $db->fetch_row(0); - - $num = $row[0]; - } - - $y = strftime("%y",time()); - - return "PROP" . $num; + { + global $db; + + $sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."propal"; + + if ( $db->query($sql) ) + { + $row = $db->fetch_row(0); + + $num = $row[0]; + } + + $y = strftime("%y",time()); + + return "PROP" . ($num+1); } } diff --git a/htdocs/includes/modules/propale/mod_propale_marbre.php b/htdocs/includes/modules/propale/mod_propale_marbre.php new file mode 100644 index 00000000000..d22761174a2 --- /dev/null +++ b/htdocs/includes/modules/propale/mod_propale_marbre.php @@ -0,0 +1,151 @@ + + * + * 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/propale/mod_propale_marbre.php + \ingroup propale + \brief Fichier contenant la classe du modèle de numérotation de référence de propale Marbre + \version $Revision$ +*/ + + +/** \class mod_propale_marbre + \brief Classe du modèle de numérotation de référence de propale Marbre +*/ + +class mod_propale_marbre extends ModeleNumRefPropales +{ + var $error=''; + + /** \brief Renvoi la description du modele de numérotation + * \return string Texte descripif + */ + function info() + { + return "Renvoie le numéro sous la forme PRyymm-nnnn où yy est l'année, mm le mois et nnnn un compteur séquentiel sans rupture et sans remise à 0"; + } + + + /** \brief Renvoi un exemple de numérotation + * \return string Example + */ + function getExample() + { + return "PR0501-0001"; + } + + + /** \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() + { + $pryymm=''; + + $sql = "SELECT MAX(ref)"; + $sql.= " FROM ".MAIN_DB_PREFIX."propal"; + $resql=$db->query($sql); + if ($resql) + { + $row = $db->fetch_row($resql); + if ($row) $pryymm = substr($row[0],0,6); + } + if (! $pryymm || eregi('PR[0-9][0-9][0-9][0-9]',$pryymm)) + { + return true; + } + else + { + $this->error='Une propal commençant par $pryymm existe en base et est incompatible avec cette numérotation. Supprimer la ou renommer la pour activer ce module.'; + return false; + } + } + + /** \brief Renvoi prochaine valeur attribuée + * \return string Valeur + */ + function getNextValue() + { + global $db; + + // D'abord on récupère la valeur max (réponse immédiate car champ indéxé) + $pryymm=''; + $sql = "SELECT MAX(ref)"; + $sql.= " FROM ".MAIN_DB_PREFIX."propal"; + $resql=$db->query($sql); + if ($resql) + { + $row = $db->fetch_row($resql); + if ($row) $pryymm = substr($row[0],0,6); + } + + // Si au moins un champ respectant le modèle a été trouvée + if (eregi('PR[0-9][0-9][0-9][0-9]',$pryymm)) + { + // Recherche rapide car restreint par un like sur champ indexé + $posindice=8; + $sql = "SELECT MAX(0+SUBSTR(ref,$posindice))"; + $sql.= " FROM ".MAIN_DB_PREFIX."propal"; + $sql.= " WHERE ref like '${pryymm}%'"; + $resql=$db->query($sql); + if ($resql) + { + $row = $db->fetch_row($resql); + $max = $row[0]; + } + } + else + { + $max=0; + } + $yymm = strftime("%y%m",time()); + $num = sprintf("%04s",$max+1); + + return "PR$yymm-$num"; + } + + + /** \brief Renvoie la référence de propale suivante non utilisée + * \param objsoc Objet société + * \return string Texte descripif + */ + function propale_get_num($objsoc=0) + { + global $db; + + $sql = "SELECT MAX(ref) as nb FROM ".MAIN_DB_PREFIX."propal"; + $resql=$db->query($sql); + if ($resql) + { + $row = $db->fetch_row($resql); + $num = $row[0]; + } + + $yymm = strftime("%y%m",time()); + + return "PR$yymm-".$obj->prefix.'-'.substr("000".$num, 0,-4); + + } +} + +?> diff --git a/htdocs/includes/modules/propale/modules_propale.php b/htdocs/includes/modules/propale/modules_propale.php index c06922c50f9..176906b5d08 100644 --- a/htdocs/includes/modules/propale/modules_propale.php +++ b/htdocs/includes/modules/propale/modules_propale.php @@ -22,24 +22,25 @@ * */ -/*! \file htdocs/includes/modules/propale/modules_propale.php +/** + \file htdocs/includes/modules/propale/modules_propale.php \ingroup propale \brief Fichier contenant la classe mère de generation des propales en PDF - et la classe mère de numérotation des propales + et la classe mère de numérotation des propales \version $Revision$ */ - -/*! \class ModelePDFPropales - \brief Classe mère des modèles de propale +/** + \class ModelePDFPropales + \brief Classe mère des modèles de propale */ class ModelePDFPropales extends FPDF { var $error=''; - /*! + /** \brief Renvoi le dernier message d'erreur de création de propale */ function pdferror() @@ -50,7 +51,7 @@ class ModelePDFPropales extends FPDF } -/*!\class ModeleNumRefPropales +/**\class ModeleNumRefPropales \brief Classe mère des modèles de numérotation des références de propales */ @@ -58,7 +59,7 @@ class ModeleNumRefPropales { var $error=''; - /*! \brief Renvoi la description par defaut du modele de numérotation + /** \brief Renvoi la description par defaut du modele de numérotation * \return string Texte descripif */ function info() @@ -68,7 +69,7 @@ class ModeleNumRefPropales return $langs->trans("NoDescription"); } - /*! \brief Renvoi un exemple de numérotation + /** \brief Renvoi un exemple de numérotation * \return string Example */ function getExample() @@ -78,18 +79,19 @@ class ModeleNumRefPropales return $langs->trans("NoExample"); } - /*! - \brief Renvoi le dernier message d'erreur de création de propale - */ - function numreferror() + /** \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 $this->error; + return true; } } -/*! +/** \brief Crée une propale sur disque en fonction du modèle de PROPALE_ADDON_PDF \param db objet base de donnée \param facid id de la facture à créer