L'objet socit et l'object facture brouillon sont passs a la fonction getNumRef du module de numrotation.
Cela permet d'avoir des modules qui numrotent en fonction des carac de la facture et du client.
This commit is contained in:
parent
2960758550
commit
0def64a811
@ -1139,9 +1139,8 @@ else
|
||||
|
||||
|
||||
/*
|
||||
* Confirmation de la suppression de la facture
|
||||
*
|
||||
*/
|
||||
* Confirmation de la suppression de la facture
|
||||
*/
|
||||
if ($_GET['action'] == 'delete')
|
||||
{
|
||||
$html->form_confirm($_SERVER['PHP_SELF'].'?facid='.$fac->id,$langs->trans('DeleteBill'),$langs->trans('ConfirmDeleteBill'),'confirm_delete');
|
||||
@ -1153,7 +1152,7 @@ else
|
||||
*/
|
||||
if ($_GET['action'] == 'valid')
|
||||
{
|
||||
$numfa = facture_get_num($soc);
|
||||
$numfa = $fac->getNextNumRef($soc);
|
||||
$html->form_confirm($_SERVER["PHP_SELF"].'?facid='.$fac->id,$langs->trans('ValidateBill'),$langs->trans('ConfirmValidateBill',$numfa),'confirm_valid');
|
||||
print '<br />';
|
||||
}
|
||||
|
||||
@ -293,7 +293,7 @@ class FactureRec
|
||||
{
|
||||
$action_notify = 2; // ne pas modifier cette valeur
|
||||
|
||||
$numfa = facture_get_num($soc); // définit dans includes/modules/facture
|
||||
$numfa = $this->getNextNumRef($soc);
|
||||
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."facture set facnumber='$numfa', fk_statut = 1, fk_user_valid = $user->id WHERE rowid = $rowid ;";
|
||||
$result = $this->db->query( $sql);
|
||||
@ -342,6 +342,49 @@ class FactureRec
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Renvoie la référence de facture suivante non utilisée 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 getNextNumRef($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";
|
||||
|
||||
// Chargement de la classe de numérotation
|
||||
$classname = "mod_facture_".FACTURE_ADDON;
|
||||
require_once($dir.$file);
|
||||
|
||||
$obj = new $classname();
|
||||
|
||||
$numref = "";
|
||||
$numref = $obj->getNumRef($soc,$this);
|
||||
|
||||
if ( $numref != "")
|
||||
{
|
||||
return $numref;
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_print_error($db,"modules_facture::getNextNumRef ".$obj->error);
|
||||
return "";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
print $langs->trans("Error")." ".$langs->trans("Error_FACTURE_ADDON_NotDefined");
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajoute un produit dans la facture
|
||||
*/
|
||||
|
||||
@ -56,7 +56,6 @@ class Facture
|
||||
var $paye;
|
||||
var $propalid;
|
||||
var $projetid;
|
||||
var $prefixe_facture;
|
||||
var $cond_reglement_id;
|
||||
var $cond_reglement_code;
|
||||
var $mode_reglement_id;
|
||||
@ -82,7 +81,6 @@ class Facture
|
||||
$this->total = 0;
|
||||
$this->propalid = 0;
|
||||
$this->projetid = 0;
|
||||
$this->prefixe_facture = ''; // utilisé dans le module de numérotation saturne
|
||||
$this->remise_exceptionnelle = 0;
|
||||
|
||||
$this->products = array(); // Tableau de lignes de factures
|
||||
@ -806,7 +804,7 @@ class Facture
|
||||
}
|
||||
else
|
||||
{
|
||||
$numfa = facture_get_num($soc, $this->prefixe_facture); // définit dans includes/modules/facture
|
||||
$numfa = $this->getNextNumRef($soc);
|
||||
}
|
||||
|
||||
$this->db->begin();
|
||||
@ -1346,11 +1344,54 @@ class Facture
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* \brief Renvoie la référence de facture suivante non utilisée 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 getNextNumRef($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";
|
||||
|
||||
// Chargement de la classe de numérotation
|
||||
$classname = "mod_facture_".FACTURE_ADDON;
|
||||
require_once($dir.$file);
|
||||
|
||||
$obj = new $classname();
|
||||
|
||||
$numref = "";
|
||||
$numref = $obj->getNumRef($soc,$this);
|
||||
|
||||
if ( $numref != "")
|
||||
{
|
||||
return $numref;
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_print_error($db,"modules_facture::getNextNumRef ".$obj->error);
|
||||
return "";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
print $langs->trans("Error")." ".$langs->trans("Error_FACTURE_ADDON_NotDefined");
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Mets à jour les commentaires
|
||||
* \param note note
|
||||
* \return int <0 si erreur, >0 si ok
|
||||
*/
|
||||
* \brief Mets à jour les commentaires
|
||||
* \param note note
|
||||
* \return int <0 si erreur, >0 si ok
|
||||
*/
|
||||
function update_note($note)
|
||||
{
|
||||
$sql = 'UPDATE '.MAIN_DB_PREFIX."facture SET note = '".addslashes($note)."'";
|
||||
|
||||
@ -55,6 +55,7 @@ class ModelePDFFactures extends FPDF
|
||||
|
||||
/**
|
||||
* \brief Renvoi la liste des modèles actifs
|
||||
* \param db Handler de base
|
||||
*/
|
||||
function liste_modeles($db)
|
||||
{
|
||||
@ -83,8 +84,9 @@ class ModelePDFFactures extends FPDF
|
||||
}
|
||||
|
||||
|
||||
/** \class ModeleNumRefFactures
|
||||
\brief Classe mère des modèles de numérotation des références de facture
|
||||
/**
|
||||
\class ModeleNumRefFactures
|
||||
\brief Classe mère des modèles de numérotation des références de facture
|
||||
*/
|
||||
|
||||
class ModeleNumRefFactures
|
||||
@ -140,52 +142,52 @@ class ModeleNumRefFactures
|
||||
*/
|
||||
function facture_pdf_create($db, $facid, $message="")
|
||||
{
|
||||
global $langs;
|
||||
$langs->load("bills");
|
||||
|
||||
$dir = DOL_DOCUMENT_ROOT . "/includes/modules/facture/";
|
||||
global $langs;
|
||||
$langs->load("bills");
|
||||
|
||||
if (defined("FACTURE_ADDON_PDF") && FACTURE_ADDON_PDF)
|
||||
$dir = DOL_DOCUMENT_ROOT . "/includes/modules/facture/";
|
||||
|
||||
if (defined("FACTURE_ADDON_PDF") && FACTURE_ADDON_PDF)
|
||||
{
|
||||
|
||||
$file = "pdf_".FACTURE_ADDON_PDF.".modules.php";
|
||||
$file = "pdf_".FACTURE_ADDON_PDF.".modules.php";
|
||||
|
||||
$classname = "pdf_".FACTURE_ADDON_PDF;
|
||||
require_once($dir.$file);
|
||||
$classname = "pdf_".FACTURE_ADDON_PDF;
|
||||
require_once($dir.$file);
|
||||
|
||||
$obj = new $classname($db);
|
||||
$obj = new $classname($db);
|
||||
|
||||
$obj->message = $message;
|
||||
$obj->message = $message;
|
||||
|
||||
if ( $obj->write_pdf_file($facid) > 0)
|
||||
{
|
||||
// Succès de la création de la facture. On génère le fichier meta
|
||||
facture_meta_create($db, $facid);
|
||||
|
||||
// et on supprime l'image correspondant au preview
|
||||
facture_delete_preview($db, $facid);
|
||||
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_syslog("Erreur dans facture_pdf_create");
|
||||
dolibarr_print_error($db,$obj->pdferror());
|
||||
return 0;
|
||||
}
|
||||
if ( $obj->write_pdf_file($facid) > 0)
|
||||
{
|
||||
// Succès de la création de la facture. On génère le fichier meta
|
||||
facture_meta_create($db, $facid);
|
||||
|
||||
// et on supprime l'image correspondant au preview
|
||||
facture_delete_preview($db, $facid);
|
||||
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_syslog("Erreur dans facture_pdf_create");
|
||||
dolibarr_print_error($db,$obj->pdferror());
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
print $langs->trans("Error")." ".$langs->trans("Error_FACTURE_ADDON_PDF_NotDefined");
|
||||
return 0;
|
||||
print $langs->trans("Error")." ".$langs->trans("Error_FACTURE_ADDON_PDF_NotDefined");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Créé un meta fichier à côté de la facture sur le disque pour faciliter les recherches en texte plein. Pourquoi ? tout simplement parcequ'en fin d'exercice quand je suis avec mon comptable je n'ai pas de connexion internet "rapide" pour retrouver en 2 secondes une facture non payée ou compliquée à gérer ... avec un rgrep c'est vite fait bien fait [eric seigne]
|
||||
\param db objet base de donnée
|
||||
\param facid id de la facture à créer
|
||||
\param message message
|
||||
\brief Créé un meta fichier à côté de la facture sur le disque pour faciliter les recherches en texte plein. Pourquoi ? tout simplement parcequ'en fin d'exercice quand je suis avec mon comptable je n'ai pas de connexion internet "rapide" pour retrouver en 2 secondes une facture non payée ou compliquée à gérer ... avec un rgrep c'est vite fait bien fait [eric seigne]
|
||||
\param db Objet base de donnée
|
||||
\param facid Id de la facture à créer
|
||||
\param message Message
|
||||
*/
|
||||
function facture_meta_create($db, $facid, $message="")
|
||||
{
|
||||
@ -239,52 +241,7 @@ ITEM_" . $i . "_DESCRIPTION=\"" . str_replace("\r\n","",nl2br($fac->lignes[$i]->
|
||||
|
||||
|
||||
/**
|
||||
\brief Renvoie la référence de facture suivante non utilisée en fonction du module
|
||||
de numérotation actif défini dans FACTURE_ADDON
|
||||
\param soc objet societe
|
||||
\param prefixe_additionnel prefixe additionnel
|
||||
\return string reference libre pour la facture
|
||||
*/
|
||||
function facture_get_num($soc, $prefixe_additionnel='')
|
||||
{
|
||||
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";
|
||||
|
||||
// Chargement de la classe de numérotation
|
||||
$classname = "mod_facture_".FACTURE_ADDON;
|
||||
require_once($dir.$file);
|
||||
|
||||
$obj = new $classname();
|
||||
|
||||
$numref = "";
|
||||
$numref = $obj->getNumRef($soc, $prefixe_additionnel);
|
||||
|
||||
if ( $numref != "")
|
||||
{
|
||||
return $numref;
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_print_error($db,"modules_facture::facture_get_num ".$obj->error);
|
||||
return "";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
print $langs->trans("Error")." ".$langs->trans("Error_FACTURE_ADDON_NotDefined");
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Supprime l'image de prévisualitation, pour le cas de régénération de facture
|
||||
\brief Supprime l'image de prévisualitation, pour le cas de régénération de facture
|
||||
\param db objet base de donnée
|
||||
\param facid id de la facture à créer
|
||||
*/
|
||||
@ -297,20 +254,20 @@ function facture_delete_preview($db, $facid)
|
||||
$fac->fetch_client();
|
||||
|
||||
if ($conf->facture->dir_output)
|
||||
{
|
||||
{
|
||||
$facref = sanitize_string($fac->ref);
|
||||
$dir = $conf->facture->dir_output . "/" . $facref ;
|
||||
$file = $dir . "/" . $facref . ".pdf.png";
|
||||
|
||||
if ( file_exists( $file ) && is_writable( $file ) )
|
||||
{
|
||||
{
|
||||
if ( ! unlink($file) )
|
||||
{
|
||||
{
|
||||
$this->error=$langs->trans("ErrorFailedToOpenFile",$file);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@ -49,21 +49,22 @@ class mod_facture_saturne extends ModeleNumRefFactures
|
||||
*/
|
||||
function getExample()
|
||||
{
|
||||
return "PREFIX084";
|
||||
return "FA123084";
|
||||
}
|
||||
|
||||
/*! \brief Renvoie la référence de facture suivante non utilisée
|
||||
* \param objsoc Objet société
|
||||
* \param prefixe_additionnel Prefix additionnel
|
||||
* \param objfac Objet facture
|
||||
* \return string Texte descripif
|
||||
*/
|
||||
function getNumRef($objsoc=0, $prefixe_additionnel)
|
||||
function getNumRef($objsoc=0,$objfac)
|
||||
{
|
||||
$prefix='FA';
|
||||
|
||||
$y = strftime("%y",time());
|
||||
$m = strftime("%m",time());
|
||||
|
||||
return $prefixe_additionnel . $m . substr($y, -1);
|
||||
return $prefix.$objfac->id . $m . substr($y, -1);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user