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 >
2009-04-29 20:32:22 +02:00
* Copyright ( C ) 2005 - 2009 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
2009-04-29 20:32:22 +02:00
\brief Fichier contenant la classe du modele de num<EFBFBD> rotation de reference 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
2009-04-29 20:32:22 +02:00
\brief Classe du modele de numerotation de reference 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' ;
2009-04-29 20:32:22 +02:00
var $error = '' ;
var $nom = 'Marbre' ;
2008-03-05 23:20:30 +01:00
2006-02-12 17:03:58 +01:00
2008-10-25 00:35:22 +02:00
/** \brief Renvoi la description du modele de numerotation
2006-02-12 16:59:54 +01:00
* \return string Texte descripif
*/
function info ()
{
2008-10-25 00:35:22 +02:00
global $langs ;
return $langs -> trans ( " MarbreNumRefDesc " , $this -> prefix );
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 ()
{
2009-04-29 20:32:22 +02:00
global $conf ;
$coyymm = '' ;
$sql = " SELECT MAX(ref) " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " commande " ;
$sql .= " WHERE ref like ' " . $this -> prefix . " %' " ;
$sql .= " AND entity = " . $conf -> entity ;
$resql = $db -> query ( $sql );
if ( $resql )
{
$row = $db -> fetch_row ( $resql );
if ( $row ) $coyymm = substr ( $row [ 0 ], 0 , 6 );
}
if ( $coyymm && ! eregi ( $this -> prefix . '[0-9][0-9][0-9][0-9]' , $coyymm ))
{
$this -> error = 'Une commande commencant par $coyymm existe en base et est incompatible avec cette numerotation. Supprimer la ou renommer la pour activer ce module.' ;
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
{
2009-04-30 12:31:01 +02:00
global $db , $conf ;
2009-04-29 20:32:22 +02:00
// D'abord on recupere la valeur max (reponse immediate car champ indexe)
$posindice = 8 ;
$sql = " SELECT MAX(0+SUBSTRING(ref, " . $posindice . " )) as max " ;
2008-07-09 00:29:34 +02:00
$sql .= " FROM " . MAIN_DB_PREFIX . " commande " ;
2009-04-29 20:32:22 +02:00
$sql .= " WHERE ref like ' " . $this -> prefix . " %' " ;
$sql .= " AND entity = " . $conf -> entity ;
$resql = $db -> query ( $sql );
if ( $resql )
{
$obj = $db -> fetch_object ( $resql );
if ( $obj ) $max = $obj -> max ;
else $max = 0 ;
}
else
{
dol_syslog ( " mod_commande_marbre::getNextValue sql= " . $sql );
return - 1 ;
}
//$date=time();
$date = $commande -> date ;
$yymm = strftime ( " %y%m " , $date );
$num = sprintf ( " %04s " , $max + 1 );
2006-02-12 16:59:54 +01:00
2009-04-29 20:32:22 +02:00
dol_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
}
?>