Optim: Les fichiers modules de modèles de numérotation de factures ont été passée en objet

et la description du modèle est portée par le fichier module même 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$ * $Id$
* $Source$ * $Source$
*/ */
/*! \file htdocs/admin/facture.php
\ingroup facture
\brief Page d'administration/configuration du module Facture
\version $Revision$
*/
require("./pre.inc.php"); require("./pre.inc.php");
if (!$user->admin) if (!$user->admin)
@ -113,9 +120,15 @@ while (($file = readdir($handle))!==false)
echo "$file"; echo "$file";
print "</td><td>\n"; 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">'; print '</td><td align="center">';

View File

@ -21,6 +21,13 @@
* $Source$ * $Source$
* *
*/ */
/*! \file htdocs/compta/facture.php
\ingroup facture
\brief Page de création d'une facture
\version $Revision$
*/
require("./pre.inc.php"); require("./pre.inc.php");
$user->getrights('facture'); $user->getrights('facture');
@ -714,7 +721,7 @@ if ($_GET["action"] == 'create')
} }
else else
{ {
print $db->error(); dolibarr_print_error($db);
} }
} }
else else
@ -776,7 +783,7 @@ else
if ($_GET["action"] == 'valid') if ($_GET["action"] == 'valid')
{ {
$numfa = facture_get_num($soc); $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 <?PHP
/* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* 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 * 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 * it under the terms of the GNU General Public License as published by
@ -21,29 +22,70 @@
* *
*/ */
function facture_get_num($objsoc=0) /*! \file htdocs/includes/modules/facture/deneb/deneb.modules.php
{ \ingroup facture
global $db; \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) ) /*! \class NumRefFacturesDeneb
{ \brief Classe du modèle de numérotation de référence de facture Deneb
$row = $db->fetch_row(0); */
class NumRefFacturesDeneb extends ModeleNumRefFactures
$num = $row[0]; {
/*! \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, où 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) /*! \file htdocs/includes/modules/facture/jupiter/jupiter.modules.php
{ \ingroup facture
global $db; \brief Fichier contenant la classe du modèle de numérotation de référence de facture Jupiter
$prefix='F'; \version $Revision$
$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) )
{ /*! \class NumRefFacturesJupiter
$row = $db->fetch_row(0); \brief Classe du modèle de numérotation de référence de facture Jupiter
*/
$num = $row[0]; 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 <?PHP
/* Copyright (C) 2003-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* 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 * 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 * 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 = ' /*! \brief Constructeur
Renvoie le numéro de facture sous la forme, PR-03-06-2004-15, où 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 '; */
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 ' /*! \brief Constructeur
Renvoie le numéro de facture sous la forme, F-PR-030202, où 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 ModeleNumRefFactures()
}
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"))
{ {
$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 \brief Crée un facture sur disque en fonction du modèle de FACTURE_ADDON_PDF
\param db objet base de donnée \param db objet base de donnée
\param facid id de la facture à créer \param facid id de la facture à créer
*/ */
function facture_pdf_create($db, $facid) function facture_pdf_create($db, $facid)
{ {
global $langs;
$langs->load("bills");
$dir = DOL_DOCUMENT_ROOT . "/includes/modules/facture/"; $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"; $file = "pdf_".FACTURE_ADDON_PDF.".modules.php";
@ -103,15 +123,56 @@ function facture_pdf_create($db, $facid)
} }
else else
{ {
print $obj->error(); dolibarr_print_error($db,$obj->pdferror());
return 0; return 0;
} }
} }
else else
{ {
print "Erreur FACTURE_ADDON_PDF non définit !"; print $langs->trans("Error")." ".$langs->trans("Error_FACTURE_ADDON_PDF_NotDefined");
return 0; 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 <?PHP
/* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* 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 * 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 * it under the terms of the GNU General Public License as published by
@ -21,30 +22,67 @@
* *
*/ */
function facture_get_num($objsoc=0) /*! \file htdocs/includes/modules/facture/neptune/neptune.modules.php
{ \ingroup facture
global $db; \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); $texte = '
Identique à pluton, avec un correcteur au moyen de la constante FACTURE_NEPTUNE_DELTA.';
$num = $row[0]; 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 <?PHP
/* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* 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 * 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 * it under the terms of the GNU General Public License as published by
@ -21,23 +22,52 @@
* *
*/ */
function facture_get_num($objsoc=0) /*! \file htdocs/includes/modules/facture/pluton/pluton.modules.php
{ \ingroup facture
global $db; \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) ) /*! \class NumRefFacturesPluton
{ \brief Classe du modèle de numérotation de référence de facture Pluton
$row = $db->fetch_row(0); */
$num = $row[0]; 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 <?PHP
/* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* 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 * 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 * 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, où 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';
}
} }