Skip to content
Snippets Groups Projects
Commit 428738e0 authored by Laurent Destailleur's avatar Laurent Destailleur
Browse files

Fix: Try a better fix for numbering modules to be more stable when using another module

parent e5548f75
Branches
Tags
No related merge requests found
...@@ -68,9 +68,10 @@ class mod_commande_marbre extends ModeleNumRefCommandes ...@@ -68,9 +68,10 @@ class mod_commande_marbre extends ModeleNumRefCommandes
$coyymm=''; $coyymm='';
$sql = "SELECT MAX(ref)"; $posindice=8;
$sql = "SELECT MAX(ref) as max";
$sql.= " FROM ".MAIN_DB_PREFIX."commande"; $sql.= " FROM ".MAIN_DB_PREFIX."commande";
$sql.= " WHERE ref like '".$this->prefix."%'"; $sql.= " WHERE ref LIKE '".$this->prefix."____-%'";
$sql.= " AND entity = ".$conf->entity; $sql.= " AND entity = ".$conf->entity;
$resql=$db->query($sql); $resql=$db->query($sql);
...@@ -81,7 +82,8 @@ class mod_commande_marbre extends ModeleNumRefCommandes ...@@ -81,7 +82,8 @@ class mod_commande_marbre extends ModeleNumRefCommandes
} }
if ($coyymm && ! preg_match('/'.$this->prefix.'[0-9][0-9][0-9][0-9]/i',$coyymm)) if ($coyymm && ! preg_match('/'.$this->prefix.'[0-9][0-9][0-9][0-9]/i',$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.'; $langs->load("errors");
$this->error=$langs->trans('ErrorNumRefModel');
return false; return false;
} }
...@@ -97,11 +99,11 @@ class mod_commande_marbre extends ModeleNumRefCommandes ...@@ -97,11 +99,11 @@ class mod_commande_marbre extends ModeleNumRefCommandes
{ {
global $db,$conf; global $db,$conf;
// D'abord on recupere la valeur max (reponse immediate car champ indexe) // D'abord on recupere la valeur max
$posindice=8; $posindice=8;
$sql = "SELECT MAX(SUBSTRING(ref,".$posindice.")) as max"; $sql = "SELECT MAX(SUBSTRING(ref FROM ".$posindice.")) as max";
$sql.= " FROM ".MAIN_DB_PREFIX."commande"; $sql.= " FROM ".MAIN_DB_PREFIX."commande";
$sql.= " WHERE ref like '".$this->prefix."%'"; $sql.= " WHERE ref like '".$this->prefix."____-%'";
$sql.= " AND entity = ".$conf->entity; $sql.= " AND entity = ".$conf->entity;
$resql=$db->query($sql); $resql=$db->query($sql);
......
...@@ -57,7 +57,7 @@ class mod_facture_terre extends ModeleNumRefFactures ...@@ -57,7 +57,7 @@ class mod_facture_terre extends ModeleNumRefFactures
} }
/** \brief Test si les numeros deja en vigueur dans la base ne provoquent pas de /** \brief Test si les numeros deja en vigueur dans la base ne provoquent pas de
* de conflits qui empechera cette numrotation de fonctionner. * de conflits qui empechera cette numerotation de fonctionner.
* \return boolean false si conflit, true si ok * \return boolean false si conflit, true si ok
*/ */
function canBeActivated() function canBeActivated()
...@@ -69,9 +69,9 @@ class mod_facture_terre extends ModeleNumRefFactures ...@@ -69,9 +69,9 @@ class mod_facture_terre extends ModeleNumRefFactures
// Check invoice num // Check invoice num
$fayymm=''; $fayymm='';
$sql = "SELECT MAX(facnumber)"; $sql = "SELECT MAX(facnumber) as max";
$sql.= " FROM ".MAIN_DB_PREFIX."facture"; $sql.= " FROM ".MAIN_DB_PREFIX."facture";
$sql.= " WHERE facnumber like '".$this->prefixinvoice."%'"; $sql.= " WHERE facnumber LIKE '".$this->prefixinvoice."____-%'";
$sql.= " AND entity = ".$conf->entity; $sql.= " AND entity = ".$conf->entity;
$resql=$db->query($sql); $resql=$db->query($sql);
...@@ -82,7 +82,8 @@ class mod_facture_terre extends ModeleNumRefFactures ...@@ -82,7 +82,8 @@ class mod_facture_terre extends ModeleNumRefFactures
} }
if ($fayymm && ! preg_match('/'.$this->prefixinvoice.'[0-9][0-9][0-9][0-9]/i',$fayymm)) if ($fayymm && ! preg_match('/'.$this->prefixinvoice.'[0-9][0-9][0-9][0-9]/i',$fayymm))
{ {
$this->error=$langs->trans('TerreNumRefModelError'); $langs->load("errors");
$this->error=$langs->trans('ErrorNumRefModel');
return false; return false;
} }
...@@ -91,7 +92,7 @@ class mod_facture_terre extends ModeleNumRefFactures ...@@ -91,7 +92,7 @@ class mod_facture_terre extends ModeleNumRefFactures
$sql = "SELECT MAX(facnumber)"; $sql = "SELECT MAX(facnumber)";
$sql.= " FROM ".MAIN_DB_PREFIX."facture"; $sql.= " FROM ".MAIN_DB_PREFIX."facture";
$sql.= " WHERE facnumber like '".$this->prefixcreditnote."%'"; $sql.= " WHERE facnumber LIKE '".$this->prefixcreditnote."____-%'";
$sql.= " AND entity = ".$conf->entity; $sql.= " AND entity = ".$conf->entity;
$resql=$db->query($sql); $resql=$db->query($sql);
...@@ -121,12 +122,11 @@ class mod_facture_terre extends ModeleNumRefFactures ...@@ -121,12 +122,11 @@ class mod_facture_terre extends ModeleNumRefFactures
if ($facture->type == 2) $prefix=$this->prefixcreditnote; if ($facture->type == 2) $prefix=$this->prefixcreditnote;
else $prefix=$this->prefixinvoice; else $prefix=$this->prefixinvoice;
// D'abord on recupere la valeur max (reponse immediate car champ ind�x�) // D'abord on recupere la valeur max
$posindice=8; $posindice=8;
$sql = "SELECT MAX(SUBSTRING(facnumber FROM ".$posindice.")) as max"; // This is standard SQL
$sql = "SELECT MAX(SUBSTRING(facnumber,".$posindice.")) as max";
$sql.= " FROM ".MAIN_DB_PREFIX."facture"; $sql.= " FROM ".MAIN_DB_PREFIX."facture";
$sql.= " WHERE facnumber like '".$prefix."%'"; $sql.= " WHERE facnumber LIKE '".$prefix."____-%'";
$sql.= " AND entity = ".$conf->entity; $sql.= " AND entity = ".$conf->entity;
$resql=$db->query($sql); $resql=$db->query($sql);
......
...@@ -28,10 +28,9 @@ ...@@ -28,10 +28,9 @@
require_once(DOL_DOCUMENT_ROOT ."/includes/modules/fichinter/modules_fichinter.php"); require_once(DOL_DOCUMENT_ROOT ."/includes/modules/fichinter/modules_fichinter.php");
/** /**
\class mod_pacific * \class mod_pacific
\brief Classe du moderotation de reference de fiche intervention Pacific * \brief Classe du moderotation de reference de fiche intervention Pacific
*/ */
class mod_pacific extends ModeleNumRefFicheinter class mod_pacific extends ModeleNumRefFicheinter
{ {
var $prefix='FI'; var $prefix='FI';
...@@ -80,6 +79,7 @@ class mod_pacific extends ModeleNumRefFicheinter ...@@ -80,6 +79,7 @@ class mod_pacific extends ModeleNumRefFicheinter
$sql = "SELECT MAX(ref)"; $sql = "SELECT MAX(ref)";
$sql.= " FROM ".MAIN_DB_PREFIX."fichinter"; $sql.= " FROM ".MAIN_DB_PREFIX."fichinter";
$sql.= " WHERE ref like '".$this->prefix."____-%'";
$sql.= " WHERE entity = ".$conf->entity; $sql.= " WHERE entity = ".$conf->entity;
$resql=$db->query($sql); $resql=$db->query($sql);
...@@ -94,7 +94,8 @@ class mod_pacific extends ModeleNumRefFicheinter ...@@ -94,7 +94,8 @@ class mod_pacific extends ModeleNumRefFicheinter
} }
else else
{ {
$this->error=$langs->trans('PacificNumRefModelError'); $langs->load("errors");
$this->error=$langs->trans('ErrorNumRefModel');
return false; return false;
} }
} }
...@@ -104,16 +105,15 @@ class mod_pacific extends ModeleNumRefFicheinter ...@@ -104,16 +105,15 @@ class mod_pacific extends ModeleNumRefFicheinter
* \param ficheinter Object ficheinter * \param ficheinter Object ficheinter
* \return string Valeur * \return string Valeur
*/ */
function getNextValue($objsoc=0,$ficheinter='') function getNextValue($objsoc=0,$object='')
{ {
global $db,$conf; global $db,$conf;
// D'abord on recupere la valeur max (reponse immediate car champ indexe) // D'abord on recupere la valeur max (reponse immediate car champ indexe)
$posindice=8; $posindice=8;
$sql = "SELECT MAX(SUBSTRING(ref FROM ".$posindice.")) as max";
$sql = "SELECT MAX(SUBSTRING(ref,".$posindice.")) as max";
$sql.= " FROM ".MAIN_DB_PREFIX."fichinter"; $sql.= " FROM ".MAIN_DB_PREFIX."fichinter";
$sql.= " WHERE ref like '".$this->prefix."%'"; $sql.= " WHERE ref LIKE '".$this->prefix."____-%'";
$sql.= " AND entity = ".$conf->entity; $sql.= " AND entity = ".$conf->entity;
$resql=$db->query($sql); $resql=$db->query($sql);
...@@ -125,7 +125,7 @@ class mod_pacific extends ModeleNumRefFicheinter ...@@ -125,7 +125,7 @@ class mod_pacific extends ModeleNumRefFicheinter
} }
//$date=time(); //$date=time();
$date=$ficheinter->date; $date=$object->date;
$yymm = strftime("%y%m",$date); $yymm = strftime("%y%m",$date);
$num = sprintf("%04s",$max+1); $num = sprintf("%04s",$max+1);
......
...@@ -59,6 +59,38 @@ class mod_project_simple extends ModeleNumRefProjects ...@@ -59,6 +59,38 @@ class mod_project_simple extends ModeleNumRefProjects
} }
/** \brief Test si les numeros deja en vigueur dans la base ne provoquent pas de
* de conflits qui empechera cette numerotation de fonctionner.
* \return boolean false si conflit, true si ok
*/
function canBeActivated()
{
global $conf;
$coyymm='';
$sql = "SELECT MAX(ref) as max";
$sql.= " FROM ".MAIN_DB_PREFIX."projet";
$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 || preg_match('/'.$this->prefix.'[0-9][0-9][0-9][0-9]/i',$coyymm))
{
return true;
}
else
{
$langs->load("errors");
$this->error=$langs->trans('ErrorNumRefModel');
return false;
}
}
/** /**
* \brief Return next value * \brief Return next value
...@@ -72,9 +104,9 @@ class mod_project_simple extends ModeleNumRefProjects ...@@ -72,9 +104,9 @@ class mod_project_simple extends ModeleNumRefProjects
// D'abord on recupere la valeur max (reponse immediate car champ indexe) // D'abord on recupere la valeur max (reponse immediate car champ indexe)
$posindice=8; $posindice=8;
$sql = "SELECT MAX(SUBSTRING(ref,".$posindice.")) as max"; $sql = "SELECT MAX(SUBSTRING(ref FROM ".$posindice.")) as max";
$sql.= " FROM ".MAIN_DB_PREFIX."projet"; $sql.= " FROM ".MAIN_DB_PREFIX."projet";
$sql.= " WHERE ref like '".$this->prefix."%'"; $sql.= " WHERE ref like '".$this->prefix."____-%'";
$sql.= " AND entity = ".$conf->entity; $sql.= " AND entity = ".$conf->entity;
$resql=$db->query($sql); $resql=$db->query($sql);
......
...@@ -68,9 +68,10 @@ class mod_propale_marbre extends ModeleNumRefPropales ...@@ -68,9 +68,10 @@ class mod_propale_marbre extends ModeleNumRefPropales
$pryymm=''; $pryymm='';
$sql = "SELECT MAX(ref)"; $sql = "SELECT MAX(ref) as max";
$sql.= " FROM ".MAIN_DB_PREFIX."propal"; $sql.= " FROM ".MAIN_DB_PREFIX."propal";
$sql.= " WHERE entity = ".$conf->entity; $sql.= " WHERE ref LIKE '".$this->prefix."____-%'";
$sql.= " AND entity = ".$conf->entity;
$resql=$db->query($sql); $resql=$db->query($sql);
if ($resql) if ($resql)
...@@ -78,13 +79,15 @@ class mod_propale_marbre extends ModeleNumRefPropales ...@@ -78,13 +79,15 @@ class mod_propale_marbre extends ModeleNumRefPropales
$row = $db->fetch_row($resql); $row = $db->fetch_row($resql);
if ($row) $pryymm = substr($row[0],0,6); if ($row) $pryymm = substr($row[0],0,6);
} }
if (! $pryymm || preg_match('/PR[0-9][0-9][0-9][0-9]/i',$pryymm))
if (! $pryymm || preg_match('/'.$this->prefix.'[0-9][0-9][0-9][0-9]/i',$pryymm))
{ {
return true; return true;
} }
else else
{ {
$this->error='Une propal commencant par $pryymm existe en base et est incompatible avec cette numerotation. Supprimer la ou renommer la pour activer ce module.'; $langs->load("errors");
$this->error=$langs->trans('ErrorNumRefModel');
return false; return false;
} }
} }
...@@ -98,12 +101,11 @@ class mod_propale_marbre extends ModeleNumRefPropales ...@@ -98,12 +101,11 @@ class mod_propale_marbre extends ModeleNumRefPropales
{ {
global $db,$conf; global $db,$conf;
// D'abord on recupere la valeur max (reponse immediate car champ indexe) // D'abord on recupere la valeur max
$posindice=8; $posindice=8;
// TODO le 0+ cree une erreur sous pgsql mais est utile sous mysql si utilisation de différent module dans le passé $sql = "SELECT MAX(SUBSTRING(ref FROM ".$posindice.")) as max"; // This is standard SQL
$sql = "SELECT MAX(0+SUBSTRING(ref FROM ".$posindice.")) as max";
$sql.= " FROM ".MAIN_DB_PREFIX."propal"; $sql.= " FROM ".MAIN_DB_PREFIX."propal";
$sql.= " WHERE ref LIKE '".$this->prefix."%'"; $sql.= " WHERE ref LIKE '".$this->prefix."____-%'";
$sql.= " AND entity = ".$conf->entity; $sql.= " AND entity = ".$conf->entity;
$resql=$db->query($sql); $resql=$db->query($sql);
......
...@@ -29,7 +29,7 @@ require_once(DOL_DOCUMENT_ROOT ."/includes/modules/supplier_order/modules_comman ...@@ -29,7 +29,7 @@ require_once(DOL_DOCUMENT_ROOT ."/includes/modules/supplier_order/modules_comman
/** \class mod_commande_fournisseur_muguet /** \class mod_commande_fournisseur_muguet
\brief Classe du modele de numerotation de reference de commande fournisseur Muguet * \brief Classe du modele de numerotation de reference de commande fournisseur Muguet
*/ */
class mod_commande_fournisseur_muguet extends ModeleNumRefSuppliersOrders class mod_commande_fournisseur_muguet extends ModeleNumRefSuppliersOrders
{ {
...@@ -67,9 +67,10 @@ class mod_commande_fournisseur_muguet extends ModeleNumRefSuppliersOrders ...@@ -67,9 +67,10 @@ class mod_commande_fournisseur_muguet extends ModeleNumRefSuppliersOrders
$coyymm=''; $coyymm='';
$sql = "SELECT MAX(ref)"; $sql = "SELECT MAX(ref) as max";
$sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur"; $sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur";
$sql.= " WHERE entity = ".$conf->entity; $sql.= " WHERE ref LIKE '".$this->prefix."____-%'";
$sql.= " AND entity = ".$conf->entity;
$resql=$db->query($sql); $resql=$db->query($sql);
if ($resql) if ($resql)
{ {
...@@ -82,7 +83,8 @@ class mod_commande_fournisseur_muguet extends ModeleNumRefSuppliersOrders ...@@ -82,7 +83,8 @@ class mod_commande_fournisseur_muguet extends ModeleNumRefSuppliersOrders
} }
else else
{ {
$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.'; $langs->load("errors");
$this->error=$langs->trans('ErrorNumRefModel');
return false; return false;
} }
} }
...@@ -96,11 +98,11 @@ class mod_commande_fournisseur_muguet extends ModeleNumRefSuppliersOrders ...@@ -96,11 +98,11 @@ class mod_commande_fournisseur_muguet extends ModeleNumRefSuppliersOrders
{ {
global $db,$conf; global $db,$conf;
// D'abord on recupere la valeur max (reponse immediate car champ indexe) // D'abord on recupere la valeur max
$posindice=8; $posindice=8;
$sql = "SELECT MAX(SUBSTRING(ref,".$posindice.")) as max"; $sql = "SELECT MAX(SUBSTRING(ref FROM ".$posindice.")) as max";
$sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur"; $sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur";
$sql.= " WHERE ref like '".$this->prefix."%'"; $sql.= " WHERE ref like '".$this->prefix."____-%'";
$sql.= " AND entity = ".$conf->entity; $sql.= " AND entity = ".$conf->entity;
$resql=$db->query($sql); $resql=$db->query($sql);
......
...@@ -70,3 +70,5 @@ ErrorFileIsInfectedWithAVirus=The antivirus program was not able to validate the ...@@ -70,3 +70,5 @@ ErrorFileIsInfectedWithAVirus=The antivirus program was not able to validate the
ErrorSpecialCharNotAllowedForField=Special characters are not allowed for field "%s" ErrorSpecialCharNotAllowedForField=Special characters are not allowed for field "%s"
WarningNoDocumentModelActivated=No model, for document generation, has been activated. A model will be choosed by default until you check your module setup. WarningNoDocumentModelActivated=No model, for document generation, has been activated. A model will be choosed by default until you check your module setup.
ErrorDatabaseParameterWrong=Database setup parameter '<b>%s</b>' has a value not compatible to use Dolibarr (must have value '<b>%s</b>'). ErrorDatabaseParameterWrong=Database setup parameter '<b>%s</b>' has a value not compatible to use Dolibarr (must have value '<b>%s</b>').
ErrorNumRefModel=A reference exists into database (%s) and is not compatible with this numbering rule. Remove record or renamed reference to activate this module.
...@@ -402,4 +402,3 @@ PDFTourteauDescription=Modèle de facture sans remise ...@@ -402,4 +402,3 @@ PDFTourteauDescription=Modèle de facture sans remise
# NumRef Modules # NumRef Modules
TerreNumRefModelDesc1=Renvoie le numéro sous la forme %syymm-nnnn pour les factures et %syymm-nnnn pour les avoirs où yy est l'année, mm le mois et nnnn un compteur séquentiel sans rupture et sans remise à 0 TerreNumRefModelDesc1=Renvoie le numéro sous la forme %syymm-nnnn pour les factures et %syymm-nnnn pour les avoirs 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 $syymm existe en base et est incompatible avec cette numérotation. Supprimez la ou renommez la pour activer ce module.
...@@ -71,3 +71,4 @@ ErrorFileIsInfectedWithAVirus=L'antivirus n'a pas pu valider ce fichier (il est ...@@ -71,3 +71,4 @@ ErrorFileIsInfectedWithAVirus=L'antivirus n'a pas pu valider ce fichier (il est
ErrorSpecialCharNotAllowedForField=Les caractères spéciaux ne sont pas admis pour le champ "%s" ErrorSpecialCharNotAllowedForField=Les caractères spéciaux ne sont pas admis pour le champ "%s"
WarningNoDocumentModelActivated=Aucun modèle, pour la génération de document, n'a été activé. Un modèle sera pris par défaut en attendant la correction de configuration du module. WarningNoDocumentModelActivated=Aucun modèle, pour la génération de document, n'a été activé. Un modèle sera pris par défaut en attendant la correction de configuration du module.
ErrorDatabaseParameterWrong=Le paramètre de configuration de la base de donnée '<b>%s</b>' a une valeur non compatible pour une utilisation de Dolibarr (doit avoir la valeur '<b>%s</b>'). ErrorDatabaseParameterWrong=Le paramètre de configuration de la base de donnée '<b>%s</b>' a une valeur non compatible pour une utilisation de Dolibarr (doit avoir la valeur '<b>%s</b>').
ErrorNumRefModel=Une référence existe en base (%s) et est incompatible avec cette numérotation. Supprimez la ligne ou renommez la référence pour activer ce module.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment