Optim: Les fichiers modules de modles de numrotation de factures ont t passe en objet

et la description du modle est porte par le fichier module mme plutot que par le
fichier commun modules_facture.php.
This commit is contained in:
Laurent Destailleur 2004-08-15 15:04:24 +00:00
parent 680529cfb0
commit 4f3d25379c
8 changed files with 368 additions and 116 deletions

View File

@ -19,6 +19,13 @@
* $Id$
* $Source$
*/
/*! \file htdocs/admin/facture.php
\ingroup facture
\brief Page d'administration/configuration du module Facture
\version $Revision$
*/
require("./pre.inc.php");
if (!$user->admin)
@ -113,9 +120,15 @@ while (($file = readdir($handle))!==false)
echo "$file";
print "</td><td>\n";
$func = $file."_get_num_explain";
$filebis = $file."/".$file.".modules.php";
print $func();
$classname = "NumRefFactures".ucfirst($file);
require_once($dir.$filebis);
// $func = $file."_get_num_explain";
// print $func();
$obj = new $classname($db);
print $obj->getDesc();
print '</td><td align="center">';

View File

@ -21,6 +21,13 @@
* $Source$
*
*/
/*! \file htdocs/compta/facture.php
\ingroup facture
\brief Page de création d'une facture
\version $Revision$
*/
require("./pre.inc.php");
$user->getrights('facture');
@ -714,7 +721,7 @@ if ($_GET["action"] == 'create')
}
else
{
print $db->error();
dolibarr_print_error($db);
}
}
else
@ -776,7 +783,7 @@ else
if ($_GET["action"] == 'valid')
{
$numfa = facture_get_num($soc);
$html->form_confirm("facture.php?facid=$fac->id","Valider la facture","Etes-vous sûr de vouloir valider cette facture avec le numéro $numfa ?","confirm_valid");
$html->form_confirm("facture.php?facid=$fac->id","Valider la facture sous la référence no ".$numfa,"Etes-vous sûr de vouloir valider cette facture avec la référence no $numfa ?","confirm_valid");
}
/*

View File

@ -1,5 +1,6 @@
<?PHP
/* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004 Laurent Destailleur <eldy@users.sourceforge.net>
*
* 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
@ -21,29 +22,70 @@
*
*/
function facture_get_num($objsoc=0)
{
global $db;
/*! \file htdocs/includes/modules/facture/deneb/deneb.modules.php
\ingroup facture
\brief Fichier contenant la classe du modèle de numérotation de référence de facture Deneb
\version $Revision$
*/
$sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."facture WHERE fk_statut > 0";
if ( $db->query($sql) )
{
$row = $db->fetch_row(0);
$num = $row[0];
/*! \class NumRefFacturesDeneb
\brief Classe du modèle de numérotation de référence de facture Deneb
*/
class NumRefFacturesDeneb extends ModeleNumRefFactures
{
/*! \brief Renvoie la référence de facture suivante non utilisée
* \param objsoc Objet société
* \return string Texte descripif
*/
function getNumRef($objsoc=0)
{
global $db;
$sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."facture WHERE fk_statut > 0";
if ( $db->query($sql) )
{
$row = $db->fetch_row(0);
$num = $row[0];
}
if (!defined("FACTURE_DENEB_DELTA"))
{
define("FACTURE_DENEB_DELTA", 0);
}
$num = $num + FACTURE_DENEB_DELTA;
$y = strftime("%y",time());
return $objsoc->prefix_comm . "-" .strftime("%d-%m-%Y", time()) . "-".$num;
}
if (!defined("FACTURE_DENEB_DELTA"))
/*! \brief Renvoi la description du modele de numérotation
* \return string Texte descripif
*/
function getDesc()
{
define("FACTURE_DENEB_DELTA", 0);
$texte = '
Renvoie le numéro de facture sous la forme, PR-03-06-2004-15, PR est le préfixe commercial de la société, et est suivi de la date (ici le 14 juin 2004) et d\'un compteur général. La constante FACTURE_DENEB_DELTA sert à la correction de plage. FACTURE_DENEB_DELTA ';
if (defined("FACTURE_DENEB_DELTA"))
{
$texte .= "est défini et vaut : ".FACTURE_DENEB_DELTA;
}
else
{
$texte .= "n'est pas défini";
}
return $texte;
}
$num = $num + FACTURE_DENEB_DELTA;
$y = strftime("%y",time());
return $objsoc->prefix_comm . "-" .strftime("%d-%m-%Y", time()) . "-".$num;
}
?>

View File

@ -22,24 +22,53 @@
*
*/
function facture_get_num($objsoc=0)
{
global $db;
$prefix='F';
$date = strftime("%Y%m", time());
$num=0;
$sql = "SELECT max(0+substring(facnumber,8)) FROM ".MAIN_DB_PREFIX."facture";
$sql .= " WHERE facnumber like '$prefix".$date."%'";
/*! \file htdocs/includes/modules/facture/jupiter/jupiter.modules.php
\ingroup facture
\brief Fichier contenant la classe du modèle de numérotation de référence de facture Jupiter
\version $Revision$
*/
if ( $db->query($sql) )
{
$row = $db->fetch_row(0);
$num = $row[0];
/*! \class NumRefFacturesJupiter
\brief Classe du modèle de numérotation de référence de facture Jupiter
*/
class NumRefFacturesJupiter extends ModeleNumRefFactures
{
/*! \brief Renvoie la référence de facture suivante non utilisée
* \param objsoc Objet société
* \return string Texte descripif
*/
function getNumRef($objsoc=0)
{
global $db;
$prefix='F';
$date = strftime("%Y%m", time());
$num=0;
$sql = "SELECT max(0+substring(facnumber,8)) FROM ".MAIN_DB_PREFIX."facture";
$sql .= " WHERE facnumber like '$prefix".$date."%'";
if ( $db->query($sql) )
{
$row = $db->fetch_row(0);
$num = $row[0];
}
$num++;
return "$prefix" . $date . $num;
}
$num++;
return "$prefix" . $date . $num;
/*! \brief Renvoi la description du modele de numérotation
* \return string Texte descripif
*/
function getDesc()
{
return '
Système de numérotation mensuel sous la forme F20030715, qui correspond à la 15ème facture du mois de Juillet 2003';
}
}
?>

View File

@ -1,6 +1,6 @@
<?PHP
/* Copyright (C) 2003-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2004 Laurent Destailleur <eldy@users.sourceforge.net>
*
* 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
@ -22,72 +22,92 @@
*
*/
function deneb_get_num_explain()
/*! \file htdocs/includes/modules/facture/modules_facture.php
\ingroup facture
\brief Fichier contenant la classe mère de generation des factures en PDF
et la classe mère de numérotation des factures
\version $Revision$
*/
require_once(DOL_DOCUMENT_ROOT."/product.class.php");
/*! \class ModelePDFFactures
\brief Classe mère des modèles de facture
*/
class ModelePDFFactures extends FPDF
{
var $error='';
$texte = '
Renvoie le numéro de facture sous la forme, PR-03-06-2004-15, PR est le préfixe commercial de la société, et est suivi de la date (ici le 14 juin 2004) et d\'un compteur général. La constante FACTURE_DENEB_DELTA sert à la correction de plage. FACTURE_DENEB_DELTA ';
/*! \brief Constructeur
*/
function ModelePDFFactures()
{
}
if (defined("FACTURE_DENEB_DELTA"))
/*!
\brief Renvoi le dernier message d'erreur de création de facture
*/
function pdferror()
{
$texte .= "est défini et vaut : ".FACTURE_DENEB_DELTA;
return $this->error;
}
else
{
$texte .= "n'est pas défini";
}
return $texte;
}
function venus_get_num_explain()
/*! \class ModeleNumRefFactures
\brief Classe mère des modèles de numérotation des références de facture
*/
class ModeleNumRefFactures
{
var $error='';
return '
Renvoie le numéro de facture sous la forme, F-PR-030202, PR est le préfixe commercial de la société, et est suivi de la date sur un format de 6 digits avec Année, Mois et Jour';
}
function pluton_get_num_explain()
{
return '
Renvoie le numéro de facture sous une forme numérique simple, la première facture porte le numéro 1, la quinzième facture ayant le numéro 15.';
}
function neptune_get_num_explain()
{
$texte = '
Identique à pluton, avec un correcteur au moyen de la constante FACTURE_NEPTUNE_DELTA.';
if (defined("FACTURE_NEPTUNE_DELTA"))
/*! \brief Constructeur
*/
function ModeleNumRefFactures()
{
$texte .= "Défini et vaut : ".FACTURE_NEPTUNE_DELTA;
}
else
/*! \brief Renvoi la description par defaut du modele de numérotation
* \return string Texte descripif
*/
function getDesc()
{
$texte .= "N'est pas défini";
global $langs;
$langs->load("bills");
return $langs->trans("NoDescription");
}
return $texte;
}
/*!
\brief Renvoi le dernier message d'erreur de création de facture
*/
function numreferror()
{
return $this->error;
}
function jupiter_get_num_explain()
{
return '
Système de numérotation mensuel sous la forme F20030715, qui correspond à la 15ème facture du mois de Juillet 2003';
}
/*!
\brief Crée un facture sur disque en fonction du modèle de FACTURE_ADDON_PDF
\param db objet base de donnée
\param facid id de la facture à créer
\brief Crée un facture sur disque en fonction du modèle de FACTURE_ADDON_PDF
\param db objet base de donnée
\param facid id de la facture à créer
*/
function facture_pdf_create($db, $facid)
{
global $langs;
$langs->load("bills");
$dir = DOL_DOCUMENT_ROOT . "/includes/modules/facture/";
if (defined("FACTURE_ADDON_PDF"))
if (defined("FACTURE_ADDON_PDF") && FACTURE_ADDON_PDF)
{
$file = "pdf_".FACTURE_ADDON_PDF.".modules.php";
@ -103,15 +123,56 @@ function facture_pdf_create($db, $facid)
}
else
{
print $obj->error();
dolibarr_print_error($db,$obj->pdferror());
return 0;
}
}
else
{
print "Erreur FACTURE_ADDON_PDF non définit !";
print $langs->trans("Error")." ".$langs->trans("Error_FACTURE_ADDON_PDF_NotDefined");
return 0;
}
}
/*!
\brief Renvoie la référence de facture suivante non utilisé en fonction du module
de numérotation actif défini dans FACTURE_ADDON
\param soc objet societe
\return string reference libre pour la facture
*/
function facture_get_num($soc)
{
global $db, $langs;
$langs->load("bills");
$dir = DOL_DOCUMENT_ROOT . "/includes/modules/facture/";
if (defined("FACTURE_ADDON") && FACTURE_ADDON)
{
$file = FACTURE_ADDON."/".FACTURE_ADDON.".modules.php";
$classname = "NumRefFactures".ucfirst(FACTURE_ADDON);
require_once($dir.$file);
$obj = new $classname();
if ( $obj->getNumRef($soc) != "")
{
return $obj->getNumRef($soc);
}
else
{
dolibarr_print_error($db,$obj->numreferror());
return "";
}
}
else
{
print $langs->trans("Error")." ".$langs->trans("Error_FACTURE_ADDON_NotDefined");
return "";
}
}
?>

View File

@ -1,5 +1,6 @@
<?PHP
/* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004 Laurent Destailleur <eldy@users.sourceforge.net>
*
* 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
@ -21,30 +22,67 @@
*
*/
function facture_get_num($objsoc=0)
{
global $db;
/*! \file htdocs/includes/modules/facture/neptune/neptune.modules.php
\ingroup facture
\brief Fichier contenant la classe du modèle de numérotation de référence de facture Neptune
\version $Revision$
*/
$sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."facture WHERE fk_statut > 0";
if ( $db->query($sql) )
/*! \class NumRefFacturesNeptune
\brief Classe du modèle de numérotation de référence de facture Neptune
*/
class NumRefFacturesNeptune extends ModeleNumRefFactures
{
/*! \brief Renvoie la référence de facture suivante non utilisée
* \param objsoc Objet société
* \return string Texte descripif
*/
function getNumRef($objsoc=0)
{
global $db;
$sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."facture WHERE fk_statut > 0";
if ( $db->query($sql) )
{
$row = $db->fetch_row(0);
$num = $row[0];
}
if (!defined("FACTURE_NEPTUNE_DELTA"))
{
define("FACTURE_NEPTUNE_DELTA", 0);
}
$num = $num + FACTURE_NEPTUNE_DELTA;
$y = strftime("%y",time());
return "FA" . "$y" . substr("000".$num, strlen("000".$num)-4,4);
}
/*! \brief Renvoi la description du modele de numérotation
* \return string Texte descripif
*/
function getDesc()
{
$row = $db->fetch_row(0);
$num = $row[0];
$texte = '
Identique à pluton, avec un correcteur au moyen de la constante FACTURE_NEPTUNE_DELTA.';
if (defined("FACTURE_NEPTUNE_DELTA"))
{
$texte .= "Défini et vaut : ".FACTURE_NEPTUNE_DELTA;
}
else
{
$texte .= "N'est pas défini";
}
return $texte;
}
if (!defined("FACTURE_NEPTUNE_DELTA"))
{
define("FACTURE_NEPTUNE_DELTA", 0);
}
$num = $num + FACTURE_NEPTUNE_DELTA;
$y = strftime("%y",time());
return "FA" . "$y" . substr("000".$num, strlen("000".$num)-4,4);
}
}
?>

View File

@ -1,5 +1,6 @@
<?PHP
/* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004 Laurent Destailleur <eldy@users.sourceforge.net>
*
* 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
@ -21,23 +22,52 @@
*
*/
function facture_get_num($objsoc=0)
{
global $db;
/*! \file htdocs/includes/modules/facture/pluton/pluton.modules.php
\ingroup facture
\brief Fichier contenant la classe du modèle de numérotation de référence de facture Pluton
\version $Revision$
*/
$sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."facture WHERE fk_statut > 0";
if ( $db->query($sql) )
{
$row = $db->fetch_row(0);
$num = $row[0];
/*! \class NumRefFacturesPluton
\brief Classe du modèle de numérotation de référence de facture Pluton
*/
class NumRefFacturesPluton extends ModeleNumRefFactures
{
/*! \brief Renvoie la référence de facture suivante non utilisée
* \param objsoc Objet société
* \return string Texte descripif
*/
function getNumRef($objsoc=0)
{
global $db;
$sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."facture WHERE fk_statut > 0";
if ( $db->query($sql) )
{
$row = $db->fetch_row(0);
$num = $row[0];
}
$y = strftime("%y",time());
return "FA" . "$y" . substr("000".$num, strlen("000".$num)-4,4);
}
/*! \brief Renvoi la description du modele de numérotation
* \return string Texte descripif
*/
function getDesc()
{
return '
Renvoie le numéro de facture sous une forme numérique simple, la première facture porte le numéro 1, la quinzième facture ayant le numéro 15.';
}
$y = strftime("%y",time());
return "FA" . "$y" . substr("000".$num, strlen("000".$num)-4,4);
}

View File

@ -1,5 +1,6 @@
<?PHP
/* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004 Laurent Destailleur <eldy@users.sourceforge.net>
*
* 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
@ -21,10 +22,41 @@
*
*/
function facture_get_num($objsoc=0)
{
/*! \file htdocs/includes/modules/facture/venus/venus.modules.php
\ingroup facture
\brief Fichier contenant la classe du modèle de numérotation de référence de facture Venus
\version $Revision$
*/
return "FA-" . $objsoc->prefix_comm . "-" .strftime("%y%m%d", time());
/*! \class NumRefFacturesVenus
\brief Classe du modèle de numérotation de référence de facture Venus
*/
class NumRefFacturesVenus extends ModeleNumRefFactures
{
/*! \brief Renvoie la référence de facture suivante non utilisée
* \param objsoc Objet société
* \return string Texte descripif
*/
function getNumRef($objsoc=0)
{
return "FA-" . $objsoc->prefix_comm . "-" .strftime("%y%m%d", time());
}
/*! \brief Renvoi la description du modele de numérotation
* \return string Texte descripif
*/
function getDesc()
{
return '
Renvoie le numéro de facture sous la forme, F-PR-030202, PR est le préfixe commercial de la société, et est suivi de la date sur un format de 6 digits avec Année, Mois et Jour';
}
}