2005-04-04 21:34:03 +02:00
< ? php
/* Copyright ( C ) 2005 Rodolphe Quiedeville < rodolphe @ quiedeville . org >
*
* 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_jade . php
\ingroup commande
\brief Fichier contenant la classe du mod<EFBFBD> le de num<EFBFBD> rotation de r<EFBFBD> f<EFBFBD> rence de commande Jade
\version $Revision $
*/
include_once ( " modules_commande.php " );
/**
\class mod_commande_jade
\brief Classe du mod<EFBFBD> le de num<EFBFBD> rotation de r<EFBFBD> f<EFBFBD> rence de commande Jade
*/
class mod_commande_jade extends ModeleNumRefCommandes
{
/** \brief Constructeur
*/
function mod_commande_jade ()
{
$this -> nom = " Jade " ;
}
/** \brief Renvoi la description du modele de num<EFBFBD> rotation
* \return string Texte descripif
*/
function info ()
{
return " Renvoie le num<75> ro sous la forme num<75> rique CYY00001, CYY00002, CYY00003, ... o<> YY repr<70> sente l'ann<6E> e. Le num<75> ro d'incr<63> ment qui suit l'ann<6E> e n'est PAS remis <20> z<> ro en d<> but d'ann<6E> e. " ;
}
2006-05-03 12:22:25 +02:00
/** \brief Renvoi un exemple de num<EFBFBD> rotation
* \return string Example
*/
function getExample ()
{
return " C0600001 " ;
}
2006-05-03 11:43:51 +02:00
/** \brief Renvoi prochaine valeur attribu<EFBFBD> e
* \return string Valeur
*/
function getNextValue ()
{
global $db ;
2005-04-04 21:34:03 +02:00
2006-05-03 11:43:51 +02:00
// D'abord on r<> cup<75> re la valeur max (r<> ponse imm<6D> diate car champ ind<6E> x<EFBFBD> )
2006-05-17 11:47:48 +02:00
$cyy = 'C' . strftime ( " %y " , time ());
2006-05-03 11:43:51 +02:00
$sql = " SELECT MAX(ref) " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " commande " ;
2006-05-17 11:47:48 +02:00
$sql .= " WHERE ref like ' ${ cyy } %' " ;
2006-05-03 11:43:51 +02:00
$resql = $db -> query ( $sql );
if ( $resql )
{
$row = $db -> fetch_row ( $resql );
2006-05-17 11:47:48 +02:00
$cyy = '' ;
2006-05-03 13:05:22 +02:00
if ( $row ) $cyy = substr ( $row [ 0 ], 0 , 3 );
2006-05-03 11:43:51 +02:00
}
2005-04-04 21:34:03 +02:00
2006-05-03 11:43:51 +02:00
// Si au moins un champ respectant le mod<6F> le a <20> t<EFBFBD> trouv<75> e
if ( eregi ( 'C[0-9][0-9]' , $cyy ))
{
// Recherche rapide car restreint par un like sur champ index<65>
$posindice = 4 ;
$sql = " SELECT MAX(0+SUBSTRING(ref, $posindice )) " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " commande " ;
$sql .= " WHERE ref like ' ${ cyy } %' " ;
$resql = $db -> query ( $sql );
if ( $resql )
{
$row = $db -> fetch_row ( $resql );
$max = $row [ 0 ];
}
}
else
{
$max = 0 ;
}
$yy = strftime ( " %y " , time ());
$num = sprintf ( " %05s " , $max + 1 );
return " C $yy $num " ;
}
2005-04-04 21:34:03 +02:00
2006-05-03 11:43:51 +02:00
/** \brief Renvoie la r<EFBFBD> f<EFBFBD> rence de commande suivante non utilis<EFBFBD> e
* \param objsoc Objet soci<EFBFBD> t<EFBFBD>
* \return string Texte descripif
*/
function commande_get_num ( $objsoc = 0 )
{
return $this -> getNextValue ();
}
2005-04-04 21:34:03 +02:00
}
?>