diff --git a/htdocs/includes/modules/commande/mod_commande_rubis.php b/htdocs/includes/modules/commande/mod_commande_rubis.php new file mode 100644 index 00000000000..dbdfe0c409d --- /dev/null +++ b/htdocs/includes/modules/commande/mod_commande_rubis.php @@ -0,0 +1,147 @@ + + * Copyright (C) 2005-2006 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/commande/mod_commande_rubis.php + \ingroup commande + \brief Fichier contenant la classe du modèle de numérotation de référence de commande Rubis + \version $Revision$ +*/ + +include_once("modules_commande.php"); + + +/** + \class mod_commande_rubis + \brief Classe du modèle de numérotation de référence de commande Rubis +*/ + +class mod_commande_rubis extends ModeleNumRefCommandes +{ + + /** \brief Constructeur + */ + function mod_commande_rubis() + { + $this->nom = "Rubis"; + } + + + /** \brief Renvoi la description du modele de numérotation + * \return string Texte descripif + */ + function info() + { + global $conf; + + $texte = "Renvoie le numéro sous la forme CYYNNNNN où YY est l'année et NNNNN le numéro d'incrément qui commence à 1.
\n"; + $texte.= "L'année s'incrémente de 1 SANS remise à zero en début d'année d'exercice.
\n"; + $texte.= "Définir la variable SOCIETE_FISCAL_MONTH_START avec le mois du début d'exercice, ex: 9 pour septembre.
\n"; + $texte.= "Dans cette exemple nous aurons au 1er septembre 2006 une commande nommée C0700345.
\n"; + + if ($conf->global->SOCIETE_FISCAL_MONTH_START) + { + $texte.= "SOCIETE_FISCAL_MONTH_START est définie et vaut: ".$conf->global->SOCIETE_FISCAL_MONTH_START.""; + } + else + { + $texte.= "SOCIETE_FISCAL_MONTH_START n'est pas définie."; + } + return $texte; + } + + /** \brief Renvoi un exemple de numérotation + * \return string Example + */ + function getExample() + { + return "C0600001"; + } + + + /** \brief Renvoi prochaine valeur attribuée + * \return string Valeur + */ + function getNextValue() + { + global $db,$conf; + + // D'abord on défini l'année fiscale + $prefix='C'; + $current_month = date("n"); + if($conf->global->SOCIETE_FISCAL_MONTH_START && $current_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é) + $cyy=''; + $sql = "SELECT MAX(ref)"; + $sql.= " FROM ".MAIN_DB_PREFIX."commande"; + $resql=$db->query($sql); + if ($resql) + { + $row = $db->fetch_row($resql); + if ($row) $cyy = substr($row[0],0,3); + } + + // Si au moins un champ respectant le modèle a été trouvée + if (eregi('C[0-9][0-9]',$cyy)) + { + // Recherche rapide car restreint par un like sur champ indexé + $posindice=4; + $sql = "SELECT MAX(0+SUBSTRING(ref,$posindice))"; + $sql.= " FROM ".MAIN_DB_PREFIX."commande"; + $resql=$db->query($sql); + if ($resql) + { + $row = $db->fetch_row($resql); + $max = $row[0]; + } + } + else + { + $max=0; + } + + $num = sprintf("%05s",$max+1); + + return "C$yy$num"; + } + + + /** \brief Renvoie la référence de commande suivante non utilisée + * \param objsoc Objet société + * \return string Texte descripif + */ + function commande_get_num($objsoc=0) + { + return $this->getNextValue(); + } +} +?> diff --git a/htdocs/includes/modules/facture/orion/orion.modules.php b/htdocs/includes/modules/facture/orion/orion.modules.php new file mode 100644 index 00000000000..ff4b8b38334 --- /dev/null +++ b/htdocs/includes/modules/facture/orion/orion.modules.php @@ -0,0 +1,141 @@ + + * Copyright (C) 2004-2005 Laurent Destailleur + * Copyright (C) 2005-2006 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/neptune/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$ +*/ + +require_once(DOL_DOCUMENT_ROOT ."/includes/modules/facture/modules_facture.php"); + +/** + \class mod_facture_Orion + \brief Classe du modèle de numérotation de référence de facture Orion +*/ +class mod_facture_orion 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('OrionNumRefModelDesc1')."
\n"; + $texte.= $langs->trans('OrionNumRefModelDesc2')."
\n"; + $texte.= $langs->trans('OrionNumRefModelDesc3')."
\n"; + $texte.= $langs->trans('OrionNumRefModelDesc4')."
\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 + * \return string Valeur + */ + function getNextValue() + { + global $db,$conf; + + // D'abord on défini l'année fiscale + $prefix='FA'; + $current_month = date("n"); + if($conf->global->SOCIETE_FISCAL_MONTH_START && $current_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é) + $fayy=''; + $sql = "SELECT MAX(facnumber)"; + $sql.= " FROM ".MAIN_DB_PREFIX."facture"; + $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é + $posindice=5; + $sql = "SELECT MAX(0+SUBSTRING(facnumber,$posindice))"; + $sql.= " FROM ".MAIN_DB_PREFIX."facture"; + $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é + * \return string Texte descripif + */ + function getNumRef($objsoc=0) + { + return $this->getNextValue(); + } + +} + +?> diff --git a/htdocs/includes/modules/facture/titan/titan.modules.php b/htdocs/includes/modules/facture/titan/titan.modules.php index 7b06862cc68..561e7c956d9 100644 --- a/htdocs/includes/modules/facture/titan/titan.modules.php +++ b/htdocs/includes/modules/facture/titan/titan.modules.php @@ -55,7 +55,7 @@ function info() if ($conf->global->SOCIETE_FISCAL_MONTH_START) { - $texte.= ' ('.$langs->trans('DefinedAndHasThisValue').' : '.$conf->global->SOCIETE_FISCAL_MONTH_START; + $texte.= ' ('.$langs->trans('DefinedAndHasThisValue').' : '.$conf->global->SOCIETE_FISCAL_MONTH_START.')'; } else { diff --git a/htdocs/includes/modules/propale/mod_propale_rubis.php b/htdocs/includes/modules/propale/mod_propale_rubis.php new file mode 100644 index 00000000000..6916b3425d1 --- /dev/null +++ b/htdocs/includes/modules/propale/mod_propale_rubis.php @@ -0,0 +1,138 @@ + + * Copyright (C) 2004-2006 Laurent Destailleur + * Copyright (C) 2005-2006 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/propale/mod_propale_rubis.php + \ingroup propale + \brief Fichier contenant la classe du modèle de numérotation de référence de propale Rubis + \version $Revision$ +*/ + +require_once(DOL_DOCUMENT_ROOT ."/includes/modules/propale/modules_propale.php"); + + +/** \class mod_propale_rubis + \brief Classe du modèle de numérotation de référence de propale Rubis +*/ + +class mod_propale_rubis extends ModeleNumRefPropales +{ + + /** \brief Constructeur + */ + function mod_propale_rubis() + { + $this->nom = "Rubis"; + } + + /** \brief Renvoi la description du modele de numérotation + * \return string Texte descripif + */ + function info() + { + global $conf; + + $texte = "Renvoie le numéro sous la forme PRYYNNNNN où YY est l'année et NNNNN le numéro d'incrément qui commence à 1.
\n"; + $texte.= "L'année s'incrémente de 1 SANS remise à zero en début d'année d'exercice.
\n"; + $texte.= "Définir la variable SOCIETE_FISCAL_MONTH_START avec le mois du début d'exercice, ex: 9 pour septembre.
\n"; + $texte.= "Dans cette exemple nous aurons au 1er septembre 2006 une propale nommée PR0700001.
\n"; + + if ($conf->global->SOCIETE_FISCAL_MONTH_START) + { + $texte.= "SOCIETE_FISCAL_MONTH_START est définie et vaut: ".$conf->global->SOCIETE_FISCAL_MONTH_START.""; + } + else + { + $texte.= "SOCIETE_FISCAL_MONTH_START n'est pas définie."; + } + return $texte; + } + + + /** \brief Renvoi un exemple de numérotation + * \return string Example + */ + function getExample() + { + return "PR0600001"; + } + + + /** \brief Renvoi prochaine valeur attribuée + * \return string Valeur + */ + function getNextValue($objsoc=0) + { + global $db,$conf; + + // D'abord on défini l'année fiscale + $prefix='PR'; + $current_month = date("n"); + if($conf->global->SOCIETE_FISCAL_MONTH_START && $current_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é) + $pryy=''; + $sql = "SELECT MAX(ref)"; + $sql.= " FROM ".MAIN_DB_PREFIX."propal"; + $resql=$db->query($sql); + if ($resql) + { + $row = $db->fetch_row($resql); + if ($row) $pryy = substr($row[0],0,4); + } + + // Si au moins un champ respectant le modèle a été trouvée + if (eregi('PR[0-9][0-9]',$pryy)) + { + // Recherche rapide car restreint par un like sur champ indexé + $posindice=5; + $sql = "SELECT MAX(0+SUBSTRING(ref,$posindice))"; + $sql.= " FROM ".MAIN_DB_PREFIX."propal"; + $resql=$db->query($sql); + if ($resql) + { + $row = $db->fetch_row($resql); + $max = $row[0]; + } + } + else + { + $max=0; + } + + $num = sprintf("%05s",$max+1); + + return "PR$yy$num"; + } + +} + +?> diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang index 359ed11843e..ef70b186d67 100644 --- a/htdocs/langs/en_US/bills.lang +++ b/htdocs/langs/en_US/bills.lang @@ -292,6 +292,12 @@ MercureNumRefModelDesc1=Renvoie le num NeptuneNumRefModelDesc1=Renvoie le numéro de facture sous une forme du préfix FA suivi de l'année sur 2 chiffres et d'un compteur simple sur 4 chiffres. NeptuneNumRefModelDesc2=Si la constante FACTURE_NEPTUNE_DELTA est définie, un offset est appliqué sur le compteur +# orion +OrionNumRefModelDesc1=Renvoie le numéro sous la forme FAYYNNNNN où YY est l'année et NNNNN le numéro d'incrément qui commence à 1. +OrionNumRefModelDesc2=L'année s'incrémente de 1 SANS remise à zero en début d'année d'exercice. +OrionNumRefModelDesc3=Définir la variable SOCIETE_FISCAL_MONTH_START avec le mois du début d'exercice, ex: 9 pour septembre. +OrionNumRefModelDesc4=Dans cette exemple nous aurons au 1er septembre 2006 une facture nommée FA0700354. + # terre TerreNumRefModelDesc1=Renvoie le numéro sous la forme %syymm-nnnn où yy est l'année, mm le mois et nnnn un compteur séquentiel sans rupture et sans remise à 0 TerreNumRefModelError=Une facture commençant par $fayymm existe en base et est incompatible avec cette numérotation. Supprimer la ou renommer la pour activer ce module. diff --git a/htdocs/langs/fr_FR/bills.lang b/htdocs/langs/fr_FR/bills.lang index bc2eb33ad8d..fb9637fd82f 100644 --- a/htdocs/langs/fr_FR/bills.lang +++ b/htdocs/langs/fr_FR/bills.lang @@ -292,6 +292,12 @@ MercureNumRefModelDesc1=Renvoie le num NeptuneNumRefModelDesc1=Renvoie le numéro de facture sous une forme du préfix FA suivi de l'année sur 2 chiffres et d'un compteur simple sur 4 chiffres. NeptuneNumRefModelDesc2=Si la constante FACTURE_NEPTUNE_DELTA est définie, un offset est appliqué sur le compteur +# orion +OrionNumRefModelDesc1=Renvoie le numéro sous la forme FAYYNNNNN où YY est l'année et NNNNN le numéro d'incrément qui commence à 1. +OrionNumRefModelDesc2=L'année s'incrémente de 1 SANS remise à zero en début d'année d'exercice. +OrionNumRefModelDesc3=Définir la variable SOCIETE_FISCAL_MONTH_START avec le mois du début d'exercice, ex: 9 pour septembre. +OrionNumRefModelDesc4=Dans cette exemple nous aurons au 1er septembre 2006 une facture nommée FA0700354. + # terre TerreNumRefModelDesc1=Renvoie le numéro sous la forme %syymm-nnnn où yy est l'année, mm le mois et nnnn un compteur séquentiel sans rupture et sans remise à 0 TerreNumRefModelError=Une facture commençant par $fayymm existe en base et est incompatible avec cette numérotation. Supprimer la ou renommer la pour activer ce module.