2006-02-12 16:59:54 +01:00
< ? php
/* Copyright ( C ) 2005 Laurent Destailleur < eldy @ users . sourceforge . net >
* Copyright ( C ) 2005 - 2006 Regis Houssin < regis . houssin @ cap - networks . com >
*
* 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_marbre . php
\ingroup commande
\brief Fichier contenant la classe du mod<EFBFBD> le de num<EFBFBD> rotation de r<EFBFBD> f<EFBFBD> rence de commande Marbre
\version $Revision $
*/
require_once ( DOL_DOCUMENT_ROOT . " /includes/modules/commande/modules_commande.php " );
/** \class mod_commande_marbre
\brief Classe du mod<EFBFBD> le de num<EFBFBD> rotation de r<EFBFBD> f<EFBFBD> rence de commande Marbre
*/
class mod_commande_marbre extends ModeleNumRefCommandes
{
2006-05-08 21:49:15 +02:00
var $prefix = 'CO' ;
2006-02-12 16:59:54 +01:00
var $error = '' ;
2006-05-08 21:49:15 +02:00
/*
* \brief Constructeur
*/
function mod_commande_marbre ()
2006-02-12 17:03:58 +01:00
{
2006-05-08 21:49:15 +02:00
$this -> nom = " Marbre " ;
2006-02-12 17:03:58 +01:00
}
2006-05-08 21:49:15 +02:00
2006-02-12 17:03:58 +01:00
2006-02-12 16:59:54 +01:00
/** \brief Renvoi la description du modele de num<EFBFBD> rotation
* \return string Texte descripif
*/
function info ()
{
2006-05-08 21:49:15 +02:00
return " Renvoie le num<75> ro sous la forme " . $this -> prefix . " yymm-nnnn o<> yy est l'ann<6E> e, mm le mois et nnnn un compteur s<> quentiel sans rupture et sans remise <20> 0 " ;
2006-02-12 16:59:54 +01:00
}
/** \brief Renvoi un exemple de num<EFBFBD> rotation
* \return string Example
*/
function getExample ()
{
2006-05-08 21:49:15 +02:00
return $this -> prefix . " 0501-0001 " ;
2006-02-12 16:59:54 +01:00
}
/** \brief Test si les num<EFBFBD> ros d<EFBFBD> j<EFBFBD> en vigueur dans la base ne provoquent pas de
* de conflits qui empechera cette num<EFBFBD> rotation de fonctionner .
* \return boolean false si conflit , true si ok
*/
function canBeActivated ()
{
2006-05-08 21:49:15 +02:00
$coyymm = '' ;
2006-02-12 16:59:54 +01:00
$sql = " SELECT MAX(ref) " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " commande " ;
$resql = $db -> query ( $sql );
if ( $resql )
{
$row = $db -> fetch_row ( $resql );
2006-05-08 21:49:15 +02:00
if ( $row ) $coyymm = substr ( $row [ 0 ], 0 , 6 );
2006-02-12 16:59:54 +01:00
}
2006-05-08 21:49:15 +02:00
if ( ! $coyymm || eregi ( $this -> prefix . '[0-9][0-9][0-9][0-9]' , $coyymm ))
2006-02-12 16:59:54 +01:00
{
return true ;
}
else
{
2006-05-08 21:49:15 +02:00
$this -> error = 'Une commande commen<65> ant par $coyymm existe en base et est incompatible avec cette num<75> rotation. Supprimer la ou renommer la pour activer ce module.' ;
2006-02-12 16:59:54 +01:00
return false ;
}
}
/** \brief Renvoi prochaine valeur attribu<EFBFBD> e
* \return string Valeur
*/
function getNextValue ()
{
global $db ;
// D'abord on r<> cup<75> re la valeur max (r<> ponse imm<6D> diate car champ ind<6E> x<EFBFBD> )
2006-05-08 21:49:15 +02:00
$coyymm = '' ;
2006-02-12 16:59:54 +01:00
$sql = " SELECT MAX(ref) " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " commande " ;
$resql = $db -> query ( $sql );
if ( $resql )
{
$row = $db -> fetch_row ( $resql );
2006-05-08 21:49:15 +02:00
if ( $row ) $coyymm = substr ( $row [ 0 ], 0 , 6 );
2006-02-12 16:59:54 +01:00
}
2006-05-08 21:49:15 +02:00
// Si champ respectant le mod<6F> le a <20> t<EFBFBD> trouv<75> e
if ( eregi ( '^' + $this -> prefix + '[0-9][0-9][0-9][0-9]' , $coyymm ))
2006-02-12 16:59:54 +01:00
{
// Recherche rapide car restreint par un like sur champ index<65>
$posindice = 8 ;
$sql = " SELECT MAX(0+SUBSTRING(ref, $posindice )) " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " commande " ;
2006-05-08 21:49:15 +02:00
$sql .= " WHERE ref like ' ${ coyymm } %' " ;
2006-02-12 16:59:54 +01:00
$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 );
2006-05-08 21:49:15 +02:00
return $this -> prefix . " $yymm - $num " ;
2006-02-12 16:59:54 +01: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 ();
}
}
?>