2006-02-12 16:59:54 +01:00
< ? php
2008-07-09 00:29:34 +02:00
/* Copyright ( C ) 2005 - 2008 Laurent Destailleur < eldy @ users . sourceforge . net >
2007-11-01 21:39:36 +01:00
* Copyright ( C ) 2005 - 2006 Regis Houssin < regis @ dolibarr . fr >
2006-02-12 16:59:54 +01:00
*
* 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 /
*/
/**
\file htdocs / includes / modules / commande / mod_commande_marbre . php
\ingroup commande
2008-10-08 21:55:44 +02:00
\brief Fichier contenant la classe du mod<EFBFBD> le de num<EFBFBD> rotation de r<EFBFBD> f<EFBFBD> rence de commande Marbre
2008-03-05 23:20:30 +01:00
\version $Id $
2006-02-12 16:59:54 +01:00
*/
require_once ( DOL_DOCUMENT_ROOT . " /includes/modules/commande/modules_commande.php " );
/** \class mod_commande_marbre
2008-10-08 21:55:44 +02:00
\brief Classe du mod<EFBFBD> le de num<EFBFBD> rotation de r<EFBFBD> f<EFBFBD> rence de commande Marbre
2006-02-12 16:59:54 +01:00
*/
class mod_commande_marbre extends ModeleNumRefCommandes
{
2008-03-05 23:20:30 +01:00
var $version = 'dolibarr' ; // 'development', 'experimental', 'dolibarr'
2006-05-08 21:49:15 +02:00
var $prefix = 'CO' ;
2006-02-12 16:59:54 +01:00
var $error = '' ;
2008-03-05 23:20:30 +01:00
var $nom = 'Marbre' ;
2006-02-12 17:03:58 +01:00
2008-10-08 21:55:44 +02:00
/** \brief Renvoi la description du modele de num<EFBFBD> rotation
2006-02-12 16:59:54 +01:00
* \return string Texte descripif
*/
function info ()
{
2008-10-08 21:55:44 +02:00
return " Renvoie le num<75> ro sous la forme " . $this -> prefix . " yymm-nnnn ou yy est l'annee, mm le mois et nnnn un compteur sequentiel sans rupture et sans remise e 0 " ;
2006-02-12 16:59:54 +01:00
}
2008-10-08 21:55:44 +02:00
/** \brief Renvoi un exemple de numerotation
2006-02-12 16:59:54 +01:00
* \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
}
2008-10-08 21:55:44 +02:00
/** \brief Test si les numeros deje en vigueur dans la base ne provoquent pas de
* de conflits qui empechera cette numerotation de fonctionner .
2006-02-12 16:59:54 +01:00
* \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 " ;
2007-01-07 21:17:36 +01:00
$sql .= " WHERE ref like ' " . $this -> prefix . " %' " ;
2006-02-12 16:59:54 +01:00
$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
}
2007-01-07 21:17:36 +01:00
if ( $coyymm && ! eregi ( $this -> prefix . '[0-9][0-9][0-9][0-9]' , $coyymm ))
2006-02-12 16:59:54 +01:00
{
2008-10-08 21:55:44 +02:00
$this -> error = 'Une commande commeneant par $coyymm existe en base et est incompatible avec cette numerotation. Supprimer la ou renommer la pour activer ce module.' ;
2006-02-12 16:59:54 +01:00
return false ;
}
2007-01-07 21:17:36 +01:00
return true ;
2006-02-12 16:59:54 +01:00
}
2008-03-05 23:20:30 +01:00
/** \brief Return next value
* \param objsoc Objet third party
* \param commande Object order
* \return string Value if OK , 0 if KO
*/
2008-07-05 16:20:03 +02:00
function getNextValue ( $objsoc , $commande )
2006-02-12 16:59:54 +01:00
{
2008-07-05 16:20:03 +02:00
global $db ;
2006-02-12 16:59:54 +01:00
2008-10-08 21:55:44 +02:00
// D'abord on recupere la valeur max (reponse immediate car champ indexe)
2008-07-09 00:29:34 +02:00
$posindice = 8 ;
$sql = " SELECT MAX(0+SUBSTRING(ref, " . $posindice . " )) as max " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " commande " ;
2007-01-07 21:17:36 +01:00
$sql .= " WHERE ref like ' " . $this -> prefix . " %' " ;
2006-02-12 16:59:54 +01:00
$resql = $db -> query ( $sql );
if ( $resql )
{
2008-07-09 00:29:34 +02:00
$obj = $db -> fetch_object ( $resql );
if ( $obj ) $max = $obj -> max ;
else $max = 0 ;
2006-02-12 16:59:54 +01:00
}
2006-10-07 13:20:25 +02:00
else
{
dolibarr_syslog ( " mod_commande_marbre::getNextValue sql= " . $sql );
return - 1 ;
}
2006-02-12 16:59:54 +01:00
2008-07-05 16:20:03 +02:00
//$date=time();
$date = $commande -> date ;
$yymm = strftime ( " %y%m " , $date );
2006-02-12 16:59:54 +01:00
$num = sprintf ( " %04s " , $max + 1 );
2008-07-05 16:20:03 +02:00
dolibarr_syslog ( " mod_commande_marbre::getNextValue return " . $this -> prefix . $yymm . " - " . $num );
return $this -> prefix . $yymm . " - " . $num ;
2006-02-12 16:59:54 +01:00
}
2008-07-05 16:20:03 +02:00
/** \brief Return next free value
* \param objsoc Object third party
* \param objforref Object for number to search
* \return string Next free value
*/
function commande_get_num ( $objsoc , $objforref )
2006-02-12 16:59:54 +01:00
{
2008-07-05 16:20:03 +02:00
return $this -> getNextValue ( $objsoc , $objforref );
2006-02-12 16:59:54 +01:00
}
2008-07-05 16:20:03 +02:00
2006-02-12 16:59:54 +01:00
}
?>