From 7c31b54621905654b85bb8e5c6f6f1b06afa3b59 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Tue, 6 Feb 2007 13:41:47 +0000 Subject: [PATCH] =?UTF-8?q?D=E9but=20ajout=20d'un=20mod=E8le=20de=20num=E9?= =?UTF-8?q?rotation=20param=E9trable?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/facture/orion/orion.modules.php | 4 +- .../modules/facture/pluton/pluton.modules.php | 155 ++++++++++++++++++ .../modules/facture/titan/titan.modules.php | 4 +- htdocs/langs/en_US/bills.lang | 3 + htdocs/langs/fr_FR/bills.lang | 2 + 5 files changed, 164 insertions(+), 4 deletions(-) create mode 100644 htdocs/includes/modules/facture/pluton/pluton.modules.php diff --git a/htdocs/includes/modules/facture/orion/orion.modules.php b/htdocs/includes/modules/facture/orion/orion.modules.php index 1556f5086a7..59ccd22b14e 100644 --- a/htdocs/includes/modules/facture/orion/orion.modules.php +++ b/htdocs/includes/modules/facture/orion/orion.modules.php @@ -1,7 +1,7 @@ * Copyright (C) 2004-2005 Laurent Destailleur - * Copyright (C) 2005-2006 Regis Houssin + * Copyright (C) 2005-2007 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 @@ -23,7 +23,7 @@ */ /** - \file htdocs/includes/modules/facture/neptune/orion.modules.php + \file htdocs/includes/modules/facture/orion/orion.modules.php \ingroup facture \brief Fichier contenant la classe du modèle de numérotation de référence de facture Orion \version $Revision$ diff --git a/htdocs/includes/modules/facture/pluton/pluton.modules.php b/htdocs/includes/modules/facture/pluton/pluton.modules.php new file mode 100644 index 00000000000..b869b7b25a7 --- /dev/null +++ b/htdocs/includes/modules/facture/pluton/pluton.modules.php @@ -0,0 +1,155 @@ + + * Copyright (C) 2004-2005 Laurent Destailleur + * Copyright (C) 2005-2007 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/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$ +*/ + +require_once(DOL_DOCUMENT_ROOT ."/includes/modules/facture/modules_facture.php"); + +/** + \class mod_facture_pluton + \brief Classe du modèle de numérotation de référence de facture Pluton +*/ +class mod_facture_pluton extends ModeleNumRefFactures +{ + + /** \brief Renvoi la description du modele de numérotation + * \return string Texte descripif + */ +function info() + { + global $conf,$langs; + + $langs->load("bills"); + + $texte = $langs->trans('PlutonNumRefModelDesc1')."
\n"; + + if ($conf->global->SOCIETE_FISCAL_MONTH_START) + { + $texte.= ' ('.$langs->trans('DefinedAndHasThisValue').' : '.$conf->global->SOCIETE_FISCAL_MONTH_START.')'; + } + else + { + $texte.= ' ('.$langs->trans('IsNotDefined').')'; + } + return $texte; + } + + /** \brief Renvoi un exemple de numérotation + * \return string Example + */ + function getExample() + { + return "FA0600001"; + } + + /** \brief Renvoi prochaine valeur attribuée + * \param objsoc Objet société + * \param facture Objet facture + * \return string Valeur + */ + function getNextValue($objsoc,$facture) + { + global $db,$conf; + + // On défini l'année fiscale + $prefix='FA'; + $current_month = date("n"); + + if (is_object($facture) && $facture->date) + { + $create_month = strftime("%m",$facture->date); + } + else + { + $create_month = $current_month; + } + + if($conf->global->SOCIETE_FISCAL_MONTH_START && $current_month >= $conf->global->SOCIETE_FISCAL_MONTH_START && $create_month >= $conf->global->SOCIETE_FISCAL_MONTH_START) + { + $yy = strftime("%y",mktime(0,0,0,date("m"),date("d"),date("Y")+1)); + } + else + { + $yy = strftime("%y",time()); + } + + // On récupère la valeur max (réponse immédiate car champ indéxé) + $fisc=$prefix.$yy; + $fayy=''; + $sql = "SELECT MAX(facnumber)"; + $sql.= " FROM ".MAIN_DB_PREFIX."facture"; + $sql.= " WHERE facnumber like '${fisc}%'"; + $resql=$db->query($sql); + if ($resql) + { + $row = $db->fetch_row($resql); + if ($row) $fayy = substr($row[0],0,4); + } + + // Si au moins un champ respectant le modèle a été trouvée + if (eregi('FA[0-9][0-9]',$fayy)) + { + // Recherche rapide car restreint par un like sur champ indexé + $date = strftime("%Y%m", time()); + $posindice=5; + $sql = "SELECT MAX(0+SUBSTRING(facnumber,$posindice))"; + $sql.= " FROM ".MAIN_DB_PREFIX."facture"; + $sql.= " WHERE facnumber like '${fayy}%'"; + $resql=$db->query($sql); + if ($resql) + { + $row = $db->fetch_row($resql); + $max = $row[0]; + } + } + else + { + $max=0; + } + + $num = sprintf("%05s",$max+1); + + return "FA$yy$num"; + } + + + /** \brief Renvoie la référence de commande suivante non utilisée + * \param objsoc Objet société + * \param facture Objet facture + * \return string Texte descripif + */ + function getNumRef($objsoc=0,$facture) + { + return $this->getNextValue($objsoc,$facture); + } + +} + +?> diff --git a/htdocs/includes/modules/facture/titan/titan.modules.php b/htdocs/includes/modules/facture/titan/titan.modules.php index ff48287a27d..b4327a1432e 100644 --- a/htdocs/includes/modules/facture/titan/titan.modules.php +++ b/htdocs/includes/modules/facture/titan/titan.modules.php @@ -1,7 +1,7 @@ * Copyright (C) 2004-2005 Laurent Destailleur - * Copyright (C) 2005-2006 Regis Houssin + * Copyright (C) 2005-2007 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 @@ -24,7 +24,7 @@ */ /** - \file htdocs/includes/modules/facture/neptune/titan.modules.php + \file htdocs/includes/modules/facture/titan/titan.modules.php \ingroup facture \brief Fichier contenant la classe du modèle de numérotation de référence de facture Titan \version $Revision$ diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang index 510152da8ad..e3f01fcfbe6 100644 --- a/htdocs/langs/en_US/bills.lang +++ b/htdocs/langs/en_US/bills.lang @@ -344,3 +344,6 @@ UranusNumRefModelDesc1=Renvoie le num # venus VenusNumRefModelDesc1=Renvoie le numéro de facture sous la forme, FA-PREF-030202, où PREF 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 + +# pluton +PlutonNumRefModelDesc1=Modèle de numérotation paramétrable - EN PHASE DE TEST !!! \ No newline at end of file diff --git a/htdocs/langs/fr_FR/bills.lang b/htdocs/langs/fr_FR/bills.lang index 5c4abeeb32e..439088eea7e 100644 --- a/htdocs/langs/fr_FR/bills.lang +++ b/htdocs/langs/fr_FR/bills.lang @@ -345,3 +345,5 @@ UranusNumRefModelDesc1=Renvoie le num # venus VenusNumRefModelDesc1=Renvoie le numéro de facture sous la forme, FA-PREF-030202, où PREF 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 +# pluton +PlutonNumRefModelDesc1=Modèle de numérotation paramétrable - EN PHASE DE TEST !!! \ No newline at end of file