mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2026-01-03 23:52:24 +01:00
Fix: Bug 23775
This commit is contained in:
@@ -29,7 +29,7 @@
|
||||
\version $Id$
|
||||
*/
|
||||
|
||||
// Pour compatibilit<69> lors de l'upgrade
|
||||
// Pour compatibilit<69> lors de l'upgrade
|
||||
if (! defined('DOL_DOCUMENT_ROOT')) define('DOL_DOCUMENT_ROOT', '..');
|
||||
if (! defined('ADODB_DATE_VERSION')) include_once(DOL_DOCUMENT_ROOT."/includes/adodbtime/adodb-time.inc.php");
|
||||
|
||||
@@ -56,7 +56,7 @@ function ValidEmail($address)
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Renvoi vrai si l'email a un nom de domaine qui r<>soud via dns
|
||||
\brief Renvoi vrai si l'email a un nom de domaine qui r<>soud via dns
|
||||
\param mail adresse email (Ex: "toto@titi.com", "John Do <johndo@titi.com>")
|
||||
\return boolean true si email valide, false sinon
|
||||
*/
|
||||
@@ -114,17 +114,31 @@ function sanitize_string($str)
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* \brief Returns text escaped for inclusion in javascript code
|
||||
* \param $stringtoescape String to escape
|
||||
* \return string Escaped string
|
||||
*/
|
||||
function dol_escape_js($stringtoescape)
|
||||
{
|
||||
// escape quotes and backslashes, newlines, etc.
|
||||
return strtr($stringtoescape, array('\\'=>'\\\\',"'"=>"\\'",'"'=>'\\"',"\r"=>'\\r',"\n"=>'\\n','</'=>'<\/'));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
\brief Envoi des messages dolibarr dans un fichier ou dans syslog
|
||||
Pour fichier: fichier d<EFBFBD>fini par SYSLOG_FILE
|
||||
Pour syslog: facility d<EFBFBD>fini par SYSLOG_FACILITY
|
||||
Pour fichier: fichier defini par SYSLOG_FILE
|
||||
Pour syslog: facility defini par SYSLOG_FACILITY
|
||||
\param message Message a tracer. Ne doit pas etre traduit si level = LOG_ERR
|
||||
\param level Niveau de l'erreur
|
||||
\remarks Cette fonction n'a un effet que si le module syslog est activ<69>.
|
||||
Warning, les fonctions syslog sont buggu<67>s sous Windows et g<>n<EFBFBD>rent des
|
||||
fautes de protection m<>moire. Pour r<>soudre, utiliser le loggage fichier,
|
||||
\remarks Cette fonction n'a un effet que si le module syslog est activ<69>.
|
||||
Warning, les fonctions syslog sont buggu<67>s sous Windows et g<>n<EFBFBD>rent des
|
||||
fautes de protection m<>moire. Pour r<>soudre, utiliser le loggage fichier,
|
||||
au lieu du loggage syslog (configuration du module).
|
||||
Si SYSLOG_FILE_NO_ERROR d<>fini, on ne g<>re pas erreur ecriture log
|
||||
Si SYSLOG_FILE_NO_ERROR d<>fini, on ne g<>re pas erreur ecriture log
|
||||
\remarks On Windows LOG_ERR=4, LOG_WARNING=5, LOG_NOTICE=LOG_INFO=LOG_DEBUG=6
|
||||
On Linux LOG_ERR=3, LOG_WARNING=4, LOG_INFO=6, LOG_DEBUG=7
|
||||
*/
|
||||
@@ -185,7 +199,7 @@ function dolibarr_syslog($message, $level=LOG_INFO)
|
||||
}
|
||||
else
|
||||
{
|
||||
//define_syslog_variables(); d<>ja d<>finit dans master.inc.php
|
||||
//define_syslog_variables(); d<>ja d<>finit dans master.inc.php
|
||||
if (defined("MAIN_SYSLOG_FACILITY") && MAIN_SYSLOG_FACILITY)
|
||||
{
|
||||
$facility = MAIN_SYSLOG_FACILITY;
|
||||
@@ -269,11 +283,11 @@ function dolibarr_fiche_head($links, $active='0', $title='', $notab=0)
|
||||
|
||||
/**
|
||||
\brief Sauvegarde parametrage personnel
|
||||
\param db Handler d'acc<63>s base
|
||||
\param db Handler d'acc<63>s base
|
||||
\param user Objet utilisateur
|
||||
\param url Si defini, on sauve parametre du tableau tab dont cl<63> = (url avec sortfield, sortorder, begin et page)
|
||||
\param url Si defini, on sauve parametre du tableau tab dont cl<63> = (url avec sortfield, sortorder, begin et page)
|
||||
Si non defini on sauve tous parametres du tableau tab
|
||||
\param tab Tableau (cl<63>=>valeur) des param<61>tres a sauvegarder
|
||||
\param tab Tableau (cl<63>=>valeur) des param<61>tres a sauvegarder
|
||||
\return int <0 si ko, >0 si ok
|
||||
*/
|
||||
function dolibarr_set_user_page_param($db, &$user, $url='', $tab)
|
||||
@@ -283,7 +297,7 @@ function dolibarr_set_user_page_param($db, &$user, $url='', $tab)
|
||||
|
||||
$db->begin();
|
||||
|
||||
// On efface anciens param<61>tres pour toutes les cl<63> dans $tab
|
||||
// On efface anciens param<61>tres pour toutes les cl<63> dans $tab
|
||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."user_param";
|
||||
$sql.= " WHERE fk_user = ".$user->id;
|
||||
if ($url) $sql.=" AND page='".$url."'";
|
||||
@@ -309,7 +323,7 @@ function dolibarr_set_user_page_param($db, &$user, $url='', $tab)
|
||||
|
||||
foreach ($tab as $key => $value)
|
||||
{
|
||||
// On positionne nouveaux param<61>tres
|
||||
// On positionne nouveaux param<61>tres
|
||||
if ($value && (! $url || in_array($key,array('sortfield','sortorder','begin','page'))))
|
||||
{
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."user_param(fk_user,page,param,value)";
|
||||
@@ -339,7 +353,7 @@ function dolibarr_set_user_page_param($db, &$user, $url='', $tab)
|
||||
/**
|
||||
\brief Formattage des nombres
|
||||
\param ca valeur a formater
|
||||
\return int valeur format<61>e
|
||||
\return int valeur format<61>e
|
||||
*/
|
||||
function dolibarr_print_ca($ca)
|
||||
{
|
||||
@@ -367,10 +381,10 @@ function dolibarr_print_ca($ca)
|
||||
|
||||
|
||||
/**
|
||||
\brief Effectue un d<>calage de date par rapport a une dur<75>e
|
||||
\brief Effectue un d<>calage de date par rapport a une dur<75>e
|
||||
\param time Date timestamp ou au format YYYY-MM-DD
|
||||
\param duration_value Valeur de la dur<75>e a ajouter
|
||||
\param duration_unit Unit<69> de la dur<75>e a ajouter (d, m, y)
|
||||
\param duration_value Valeur de la dur<75>e a ajouter
|
||||
\param duration_unit Unit<69> de la dur<75>e a ajouter (d, m, y)
|
||||
\return int Nouveau timestamp
|
||||
*/
|
||||
function dolibarr_time_plus_duree($time,$duration_value,$duration_unit)
|
||||
@@ -393,13 +407,13 @@ function dolibarr_time_plus_duree($time,$duration_value,$duration_unit)
|
||||
"%d/%m/%Y %H:%M",
|
||||
"%d/%m/%Y %H:%M:%S",
|
||||
"day", "daytext", "dayhour", "dayhourldap", "dayhourtext"
|
||||
\return string Date format<61>e ou '' si time null
|
||||
\return string Date format<61>e ou '' si time null
|
||||
*/
|
||||
function dolibarr_print_date($time,$format='')
|
||||
{
|
||||
global $conf;
|
||||
|
||||
// Si format non d<>fini, on prend $conf->format_date_text_short sinon %Y-%m-%d %H:%M:%S
|
||||
// Si format non d<>fini, on prend $conf->format_date_text_short sinon %Y-%m-%d %H:%M:%S
|
||||
if (! $format) $format=(isset($conf->format_date_text_short) ? $conf->format_date_text_short : '%Y-%m-%d %H:%M:%S');
|
||||
|
||||
if ($format == 'day') $format=$conf->format_date_short;
|
||||
@@ -435,8 +449,8 @@ function dolibarr_print_date($time,$format='')
|
||||
|
||||
|
||||
/**
|
||||
\brief Retourne une date fabriqu<71>e depuis une chaine
|
||||
\param string Date format<61>e en chaine
|
||||
\brief Retourne une date fabriqu<71>e depuis une chaine
|
||||
\param string Date format<61>e en chaine
|
||||
YYYYMMDD
|
||||
YYYYMMDDHHMMSS
|
||||
DD/MM/YY ou DD/MM/YYYY
|
||||
@@ -515,14 +529,14 @@ function dolibarr_getdate($timestamp,$fast=false)
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Retourne une date fabriqu<71>e depuis infos.
|
||||
Remplace la fonction mktime non impl<70>ment<6E>e sous Windows si ann<6E>e < 1970
|
||||
\brief Retourne une date fabriqu<71>e depuis infos.
|
||||
Remplace la fonction mktime non impl<70>ment<6E>e sous Windows si ann<6E>e < 1970
|
||||
\param hour Heure
|
||||
\param minute Minute
|
||||
\param second Seconde
|
||||
\param month Mois
|
||||
\param day Jour
|
||||
\param year Ann<6E>e
|
||||
\param year Ann<6E>e
|
||||
\param gm Time gm
|
||||
\param check No check on parameters (Can use day 32, etc...)
|
||||
\return timestamp Date en timestamp, '' if error
|
||||
@@ -551,7 +565,7 @@ function dolibarr_mktime($hour,$minute,$second,$month,$day,$year,$gm=0,$check=1)
|
||||
{
|
||||
/*
|
||||
// On peut utiliser strtotime pour obtenir la traduction.
|
||||
// strtotime is ok for range: Vendredi 13 D<>cembre 1901 20:45:54 GMT au Mardi 19 Janvier 2038 03:14:07 GMT.
|
||||
// strtotime is ok for range: Vendredi 13 D<>cembre 1901 20:45:54 GMT au Mardi 19 Janvier 2038 03:14:07 GMT.
|
||||
$montharray=array(1=>'january',2=>'february',3=>'march',4=>'april',5=>'may',6=>'june',
|
||||
7=>'july',8=>'august',9=>'september',10=>'october',11=>'november',12=>'december');
|
||||
$string=$day." ".$montharray[0+$month]." ".$year." ".$hour.":".$minute.":".$second." GMT";
|
||||
@@ -636,10 +650,10 @@ function dolibarr_print_object_info($object)
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Formatage des num<75>ros de telephone en fonction du format d'un pays
|
||||
\param phone Num<75>ro de telephone a formater
|
||||
\brief Formatage des num<75>ros de telephone en fonction du format d'un pays
|
||||
\param phone Num<75>ro de telephone a formater
|
||||
\param country Pays selon lequel formatter
|
||||
\return string Num<75>ro de t<>l<EFBFBD>phone format<61>
|
||||
\return string Num<75>ro de t<>l<EFBFBD>phone format<61>
|
||||
*/
|
||||
function dolibarr_print_phone($phone,$country="FR")
|
||||
{
|
||||
@@ -712,7 +726,7 @@ function dol_phone_link($phone,$option=0)
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Tronque une chaine a une taille donn<6E>e en ajoutant les points de suspension si cela d<>passe
|
||||
\brief Tronque une chaine a une taille donn<6E>e en ajoutant les points de suspension si cela d<>passe
|
||||
\param string String to truncate
|
||||
\param size Max string size. 0 for no limit.
|
||||
\param trunc Where to trunc: right, left, middle
|
||||
@@ -758,12 +772,12 @@ function dolibarr_trunc($string,$size=40,$trunc='right')
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Compl<70>te une chaine a une taille donn<6E>e par des espaces
|
||||
\param string Chaine a compl<70>ter
|
||||
\brief Compl<70>te une chaine a une taille donn<6E>e par des espaces
|
||||
\param string Chaine a compl<70>ter
|
||||
\param size Longueur de la chaine.
|
||||
\param side 0=Compl<70>tion a droite, 1=Compl<70>tion a gauche
|
||||
\param char Chaine de compl<70>tion
|
||||
\return string Chaine compl<70>t<EFBFBD>e
|
||||
\param side 0=Compl<70>tion a droite, 1=Compl<70>tion a gauche
|
||||
\param char Chaine de compl<70>tion
|
||||
\return string Chaine compl<70>t<EFBFBD>e
|
||||
*/
|
||||
function dolibarr_pad($string,$size,$side,$char=' ')
|
||||
{
|
||||
@@ -779,7 +793,7 @@ function dolibarr_pad($string,$size,$side,$char=' ')
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Affiche picto propre a une notion/module (fonction g<>n<EFBFBD>rique)
|
||||
\brief Affiche picto propre a une notion/module (fonction g<>n<EFBFBD>rique)
|
||||
\param alt Texte sur le alt de l'image
|
||||
\param object Objet pour lequel il faut afficher le logo (exemple: user, group, action, bill, contract, propal, product, ...)
|
||||
\return string Retourne tag img
|
||||
@@ -791,10 +805,10 @@ function img_object($alt, $object)
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Affiche picto (fonction g<>n<EFBFBD>rique)
|
||||
\brief Affiche picto (fonction g<>n<EFBFBD>rique)
|
||||
\param alt Texte sur le alt de l'image
|
||||
\param picto Nom de l'image a afficher (Si pas d'extension, on met '.png')
|
||||
\param options Attribut suppl<70>mentaire a la balise img
|
||||
\param options Attribut suppl<70>mentaire a la balise img
|
||||
\param pictoisfullpath If 1, image path is a full path
|
||||
\return string Retourne tag img
|
||||
*/
|
||||
@@ -952,7 +966,7 @@ function img_delete($alt = "default")
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Affiche logo d<>sactiver
|
||||
\brief Affiche logo d<>sactiver
|
||||
\param alt Texte sur le alt de l'image
|
||||
\return string Retourne tag img
|
||||
*/
|
||||
@@ -1055,7 +1069,7 @@ function img_alerte($alt = "default")
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Affiche logo t<>l<EFBFBD>phone
|
||||
\brief Affiche logo t<>l<EFBFBD>phone
|
||||
\param alt Texte sur le alt de l'image
|
||||
\param option Choose of logo
|
||||
\return string Retourne tag img
|
||||
@@ -1086,7 +1100,7 @@ function img_next($alt = "default")
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Affiche logo pr<70>c<EFBFBD>dent
|
||||
\brief Affiche logo pr<70>c<EFBFBD>dent
|
||||
\param alt Texte sur le alt de l'image
|
||||
\return string Retourne tag img
|
||||
*/
|
||||
@@ -1365,7 +1379,7 @@ function restrictedArea($user, $feature='societe', $objectid=0, $dbtablename='',
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!$dbtablename) $dbtablename = $feature; // Si dbtable non d<>fini, meme nom que le module
|
||||
if (!$dbtablename) $dbtablename = $feature; // Si dbtable non d<>fini, meme nom que le module
|
||||
|
||||
$sql = "SELECT dbt.fk_soc";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX.$dbtablename." as dbt";
|
||||
@@ -1384,7 +1398,7 @@ function restrictedArea($user, $feature='societe', $objectid=0, $dbtablename='',
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!$dbtablename) $dbtablename = $feature; // Si dbtable non d<>fini, meme nom que le module
|
||||
if (!$dbtablename) $dbtablename = $feature; // Si dbtable non d<>fini, meme nom que le module
|
||||
|
||||
$sql = "SELECT sc.fk_soc";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX.$dbtablename." as dbt";
|
||||
@@ -1451,12 +1465,12 @@ function accessforbidden($message='',$printheader=1)
|
||||
|
||||
|
||||
/**
|
||||
\brief Affiche message erreur system avec toutes les informations pour faciliter le diagnostic et la remont<6E>e des bugs.
|
||||
On doit appeler cette fonction quand une erreur technique bloquante est rencontr<74>e.
|
||||
\brief Affiche message erreur system avec toutes les informations pour faciliter le diagnostic et la remont<6E>e des bugs.
|
||||
On doit appeler cette fonction quand une erreur technique bloquante est rencontr<74>e.
|
||||
Toutefois, il faut essayer de ne l'appeler qu'au sein de pages php, les classes devant
|
||||
renvoyer leur erreur par l'interm<72>diaire de leur propri<72>t<EFBFBD> "error".
|
||||
\param db Handler de base utilis<69>
|
||||
\param error Chaine erreur ou tableau de chaines erreur compl<70>mentaires a afficher
|
||||
renvoyer leur erreur par l'interm<72>diaire de leur propri<72>t<EFBFBD> "error".
|
||||
\param db Handler de base utilis<69>
|
||||
\param error Chaine erreur ou tableau de chaines erreur compl<70>mentaires a afficher
|
||||
*/
|
||||
function dolibarr_print_error($db='',$error='')
|
||||
{
|
||||
@@ -1539,7 +1553,7 @@ function dolibarr_print_error($db='',$error='')
|
||||
|
||||
|
||||
/**
|
||||
* \brief Deplacer les fichiers telecharg<72>s, apres quelques controles divers
|
||||
* \brief Deplacer les fichiers telecharg<72>s, apres quelques controles divers
|
||||
* \param src_file Source filename
|
||||
* \param dest_file Target filename
|
||||
* \param allowoverwrite Overwrite if exists
|
||||
@@ -1568,7 +1582,7 @@ function dol_move_uploaded_file($src_file, $dest_file, $allowoverwrite)
|
||||
}
|
||||
|
||||
// Security:
|
||||
// On interdit les remont<6E>es de repertoire ainsi que les pipes dans
|
||||
// On interdit les remont<6E>es de repertoire ainsi que les pipes dans
|
||||
// les noms de fichiers.
|
||||
if (eregi('\.\.',$src_file) || eregi('[<>|]',$src_file))
|
||||
{
|
||||
@@ -1577,7 +1591,7 @@ function dol_move_uploaded_file($src_file, $dest_file, $allowoverwrite)
|
||||
}
|
||||
|
||||
// Security:
|
||||
// On interdit les remont<6E>es de repertoire ainsi que les pipe dans
|
||||
// On interdit les remont<6E>es de repertoire ainsi que les pipe dans
|
||||
// les noms de fichiers.
|
||||
if (eregi('\.\.',$dest_file) || eregi('[<>|]',$dest_file))
|
||||
{
|
||||
@@ -1618,7 +1632,7 @@ function dol_move_uploaded_file($src_file, $dest_file, $allowoverwrite)
|
||||
\param begin ("" par defaut)
|
||||
\param options ("" par defaut)
|
||||
\param td options de l'attribut td ("" par defaut)
|
||||
\param sortfield nom du champ sur lequel est effectu<74> le tri du tableau
|
||||
\param sortfield nom du champ sur lequel est effectu<74> le tri du tableau
|
||||
\param sortorder ordre du tri
|
||||
*/
|
||||
function print_liste_field_titre($name, $file, $field, $begin="", $options="", $td="", $sortfield="", $sortorder="")
|
||||
@@ -1626,7 +1640,7 @@ function print_liste_field_titre($name, $file, $field, $begin="", $options="", $
|
||||
global $conf;
|
||||
//print "$name, $file, $field, $begin, $options, $td, $sortfield, $sortorder<br>\n";
|
||||
|
||||
// Le champ de tri est mis en <20>vidence.
|
||||
// Le champ de tri est mis en <20>vidence.
|
||||
// Exemple si (sortfield,field)=("nom","xxx.nom") ou (sortfield,field)=("nom","nom")
|
||||
if ($sortfield == $field || $sortfield == ereg_replace("^[^\.]+\.","",$field))
|
||||
{
|
||||
@@ -1681,9 +1695,9 @@ function print_titre($titre)
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Affichage d'un titre d'une fiche, align<67> a gauche
|
||||
\brief Affichage d'un titre d'une fiche, align<67> a gauche
|
||||
\param titre Le titre a afficher
|
||||
\param mesg Message supl<70>mentaire a afficher a droite
|
||||
\param mesg Message supl<70>mentaire a afficher a droite
|
||||
\param picto Picto pour ligne de titre
|
||||
\param pictoisfullpath 1=Picto is a full absolute url of image
|
||||
*/
|
||||
@@ -1720,8 +1734,8 @@ function dol_delete_file($file)
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Effacement d'un r<>pertoire
|
||||
\param file R<>pertoire a effacer
|
||||
\brief Effacement d'un r<>pertoire
|
||||
\param file R<>pertoire a effacer
|
||||
*/
|
||||
function dol_delete_dir($dir)
|
||||
{
|
||||
@@ -1729,10 +1743,10 @@ function dol_delete_dir($dir)
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Effacement d'un r<>pertoire $dir et de son arborescence
|
||||
\param file R<>pertoire a effacer
|
||||
\param count Compteur pour comptage nb elements supprim<69>s
|
||||
\return int Nombre de fichier+rep<65>rtoires supprim<69>s
|
||||
\brief Effacement d'un r<>pertoire $dir et de son arborescence
|
||||
\param file R<>pertoire a effacer
|
||||
\param count Compteur pour comptage nb elements supprim<69>s
|
||||
\return int Nombre de fichier+rep<65>rtoires supprim<69>s
|
||||
*/
|
||||
function dol_delete_dir_recursive($dir,$count=0)
|
||||
{
|
||||
@@ -1767,7 +1781,7 @@ function dol_delete_dir_recursive($dir,$count=0)
|
||||
/**
|
||||
\brief Scan les fichiers avec un anti-virus
|
||||
\param file Fichier a scanner
|
||||
\return malware Nom du virus si infect<63> sinon retourne "null"
|
||||
\return malware Nom du virus si infect<63> sinon retourne "null"
|
||||
*/
|
||||
function dol_avscan_file($file)
|
||||
{
|
||||
@@ -1792,7 +1806,7 @@ function dol_avscan_file($file)
|
||||
/**
|
||||
\brief Fonction print_barre_liste
|
||||
\param titre Titre de la page
|
||||
\param page num<75>ro de la page
|
||||
\param page num<75>ro de la page
|
||||
\param file lien
|
||||
\param options parametres complementaires lien ('' par defaut)
|
||||
\param sortfield champ de tri ('' par defaut)
|
||||
@@ -1887,7 +1901,7 @@ function print_barre_liste($titre, $page, $file, $options='', $sortfield='', $so
|
||||
|
||||
/**
|
||||
\brief Fonction servant a afficher les fleches de navigation dans les pages de listes
|
||||
\param page Num<75>ro de la page
|
||||
\param page Num<75>ro de la page
|
||||
\param file Lien
|
||||
\param options Autres parametres d'url a propager dans les liens ("" par defaut)
|
||||
\param nextpage Faut-il une page suivante
|
||||
@@ -1909,12 +1923,12 @@ function print_fleche_navigation($page,$file,$options='',$nextpage,$betweenarrow
|
||||
|
||||
|
||||
/**
|
||||
* \brief Fonction qui retourne un taux de tva format<61> pour visualisation
|
||||
* \remarks Fonction utilis<69>e dans les pdf et les pages html
|
||||
* \brief Fonction qui retourne un taux de tva format<61> pour visualisation
|
||||
* \remarks Fonction utilis<69>e dans les pdf et les pages html
|
||||
* \param rate Rate value to format (19.6 19,6 19.6% 19,6%,...)
|
||||
* \param foundpercent Add a percent % sign in output
|
||||
* \param info_bits Miscellanous information on vat
|
||||
* \return string Chaine avec montant format<61> (19,6 ou 19,6% ou 8.5% *)
|
||||
* \return string Chaine avec montant format<61> (19,6 ou 19,6% ou 8.5% *)
|
||||
*/
|
||||
function vatrate($rate,$addpercent=false,$info_bits=0)
|
||||
{
|
||||
@@ -1937,14 +1951,14 @@ function vatrate($rate,$addpercent=false,$info_bits=0)
|
||||
|
||||
|
||||
/**
|
||||
* \brief Fonction qui retourne un montant mon<6F>taire format<61> pour visualisation
|
||||
* \remarks Fonction utilis<69>e dans les pdf et les pages html
|
||||
* \brief Fonction qui retourne un montant mon<6F>taire format<61> pour visualisation
|
||||
* \remarks Fonction utilis<69>e dans les pdf et les pages html
|
||||
* \param amount Montant a formater
|
||||
* \param html Formatage html ou pas (0 par defaut)
|
||||
* \param outlangs Objet langs pour formatage text
|
||||
* \param trunc 1=Tronque affichage si trop de d<>cimales,0=Force le non troncage
|
||||
* \param trunc 1=Tronque affichage si trop de d<>cimales,0=Force le non troncage
|
||||
* \param nbdecimal Nbre decimals minimum.
|
||||
* \return string Chaine avec montant format<61>
|
||||
* \return string Chaine avec montant format<61>
|
||||
* \seealso price2num Fonction inverse de price
|
||||
*/
|
||||
function price($amount, $html=0, $outlangs='', $trunc=1, $nbdecimal=2)
|
||||
@@ -1966,11 +1980,11 @@ function price($amount, $html=0, $outlangs='', $trunc=1, $nbdecimal=2)
|
||||
//print $amount."-";
|
||||
$datas = split('\.',$amount);
|
||||
$decpart = $datas[1];
|
||||
$decpart = eregi_replace('0+$','',$decpart); // Supprime les 0 de fin de partie d<>cimale
|
||||
$decpart = eregi_replace('0+$','',$decpart); // Supprime les 0 de fin de partie d<>cimale
|
||||
//print "decpart=".$decpart."<br>";
|
||||
$end='';
|
||||
|
||||
// On augmente au besoin si il y a plus de 2 d<>cimales
|
||||
// On augmente au besoin si il y a plus de 2 d<>cimales
|
||||
if (strlen($decpart) > $nbdecimal) $nbdecimal=strlen($decpart);
|
||||
// Si on depasse max
|
||||
if ($trunc && $nbdecimal > $conf->global->MAIN_MAX_DECIMALS_SHOWN)
|
||||
@@ -1978,7 +1992,7 @@ function price($amount, $html=0, $outlangs='', $trunc=1, $nbdecimal=2)
|
||||
$nbdecimal=$conf->global->MAIN_MAX_DECIMALS_SHOWN;
|
||||
if (eregi('\.\.\.',$conf->global->MAIN_MAX_DECIMALS_SHOWN))
|
||||
{
|
||||
// Si un affichage est tronqu<71>, on montre des ...
|
||||
// Si un affichage est tronqu<71>, on montre des ...
|
||||
$end='...';
|
||||
}
|
||||
}
|
||||
@@ -1998,7 +2012,7 @@ function price($amount, $html=0, $outlangs='', $trunc=1, $nbdecimal=2)
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Fonction qui retourne un num<75>rique conforme PHP et SQL, depuis un montant au
|
||||
\brief Fonction qui retourne un num<75>rique conforme PHP et SQL, depuis un montant au
|
||||
format utilisateur.
|
||||
\remarks Fonction a appeler sur montants saisis avant un insert en base
|
||||
\param amount Montant a formater
|
||||
@@ -2006,7 +2020,7 @@ function price($amount, $html=0, $outlangs='', $trunc=1, $nbdecimal=2)
|
||||
'MT'=Round to Max with Tax (MAIN_MAX_DECIMALS_TOT)
|
||||
'MS'=Round to Max Shown (MAIN_MAX_DECIMALS_SHOWN)
|
||||
''=No rounding
|
||||
\return string Montant au format num<75>rique PHP et SQL (Exemple: '99.99999')
|
||||
\return string Montant au format num<75>rique PHP et SQL (Exemple: '99.99999')
|
||||
\seealso price Fonction inverse de price2num
|
||||
*/
|
||||
function price2num($amount,$rounding='')
|
||||
@@ -2049,17 +2063,17 @@ function get_product_vat_for_country($idprod, $countrycode)
|
||||
|
||||
/**
|
||||
\brief Fonction qui renvoie la tva d'une ligne (en fonction du vendeur, acheteur et taux du produit)
|
||||
\remarks Si vendeur non assujeti a TVA, TVA par d<>faut=0. Fin de r<>gle.
|
||||
Si le (pays vendeur = pays acheteur) alors TVA par d<>faut=TVA du produit vendu. Fin de r<>gle.
|
||||
Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (bien vendu = moyen de transports neuf comme auto, bateau, avion) alors TVA par d<>faut=0 (La TVA doit <20>tre pay<61> par acheteur au centre d'impots de son pays et non au vendeur). Fin de r<>gle.
|
||||
Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (acheteur = particulier ou entreprise sans num TVA intra) alors TVA par d<>faut=TVA du produit vendu. Fin de r<>gle.
|
||||
Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (acheteur = entreprise avec num TVA) intra alors TVA par d<>faut=0. Fin de r<>gle.
|
||||
Sinon TVA propos<6F>e par d<>faut=0. Fin de r<>gle.
|
||||
\param societe_vendeuse Objet soci<63>t<EFBFBD> vendeuse
|
||||
\param societe_acheteuse Objet soci<63>t<EFBFBD> acheteuse
|
||||
\remarks Si vendeur non assujeti a TVA, TVA par d<>faut=0. Fin de r<>gle.
|
||||
Si le (pays vendeur = pays acheteur) alors TVA par d<>faut=TVA du produit vendu. Fin de r<>gle.
|
||||
Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (bien vendu = moyen de transports neuf comme auto, bateau, avion) alors TVA par d<>faut=0 (La TVA doit <20>tre pay<61> par acheteur au centre d'impots de son pays et non au vendeur). Fin de r<>gle.
|
||||
Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (acheteur = particulier ou entreprise sans num TVA intra) alors TVA par d<>faut=TVA du produit vendu. Fin de r<>gle.
|
||||
Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (acheteur = entreprise avec num TVA) intra alors TVA par d<>faut=0. Fin de r<>gle.
|
||||
Sinon TVA propos<6F>e par d<>faut=0. Fin de r<>gle.
|
||||
\param societe_vendeuse Objet soci<63>t<EFBFBD> vendeuse
|
||||
\param societe_acheteuse Objet soci<63>t<EFBFBD> acheteuse
|
||||
\param taux_produit Taux par defaut du produit vendu (old way to get product vat rate)
|
||||
\param idprod Id product (new way to get product vat rate)
|
||||
\return float Taux de tva a appliquer, -1 si ne peut etre d<>termin<69>
|
||||
\return float Taux de tva a appliquer, -1 si ne peut etre d<>termin<69>
|
||||
*/
|
||||
function get_default_tva($societe_vendeuse, $societe_acheteuse, $taux_produit, $idprod=0)
|
||||
{
|
||||
@@ -2072,49 +2086,49 @@ function get_default_tva($societe_vendeuse, $societe_acheteuse, $taux_produit, $
|
||||
if (is_numeric($societe_vendeuse->tva_assuj) && ! $societe_vendeuse->tva_assuj) return 0;
|
||||
if (! is_numeric($societe_vendeuse->tva_assuj) && $societe_vendeuse->tva_assuj=='franchise') return 0;
|
||||
|
||||
// Si le (pays vendeur = pays acheteur) alors la TVA par d<>faut=TVA du produit vendu. Fin de r<>gle.
|
||||
// Si le (pays vendeur = pays acheteur) alors la TVA par d<>faut=TVA du produit vendu. Fin de r<>gle.
|
||||
//if (is_object($societe_acheteuse) && ($societe_vendeuse->pays_id == $societe_acheteuse->pays_id) && ($societe_acheteuse->tva_assuj == 1 || $societe_acheteuse->tva_assuj == 'reel'))
|
||||
// Le test ci-dessus ne devrait pas etre necessaire. Me signaler l'exemple du cas juridique concercn<63> si le test suivant n'est pas suffisant.
|
||||
// Le test ci-dessus ne devrait pas etre necessaire. Me signaler l'exemple du cas juridique concercn<63> si le test suivant n'est pas suffisant.
|
||||
if ($societe_vendeuse->pays_id == $societe_acheteuse->pays_id)
|
||||
{
|
||||
if ($idprod) return get_product_vat_for_country($idprod,$societe_vendeuse->pays_code);
|
||||
if (strlen($taux_produit) == 0) return -1; // Si taux produit = '', on ne peut d<>terminer taux tva
|
||||
if (strlen($taux_produit) == 0) return -1; // Si taux produit = '', on ne peut d<>terminer taux tva
|
||||
return $taux_produit;
|
||||
}
|
||||
|
||||
// Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (bien vendu = moyen de transports neuf comme auto, bateau, avion) alors TVA par d<>faut=0 (La TVA doit <20>tre pay<61> par l'acheteur au centre d'impots de son pays et non au vendeur). Fin de r<>gle.
|
||||
// Non g<>r<EFBFBD>
|
||||
// Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (bien vendu = moyen de transports neuf comme auto, bateau, avion) alors TVA par d<>faut=0 (La TVA doit <20>tre pay<61> par l'acheteur au centre d'impots de son pays et non au vendeur). Fin de r<>gle.
|
||||
// Non g<>r<EFBFBD>
|
||||
|
||||
// Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (acheteur = particulier ou entreprise sans num TVA intra) alors TVA par d<>faut=TVA du produit vendu. Fin de r<>gle.
|
||||
// Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (acheteur = particulier ou entreprise sans num TVA intra) alors TVA par d<>faut=TVA du produit vendu. Fin de r<>gle.
|
||||
if (($societe_vendeuse->isInEEC() && $societe_acheteuse->isInEEC()) && ! $societe_acheteuse->tva_intra)
|
||||
{
|
||||
if ($idprod) return get_product_vat_for_country($idprod,$societe_vendeuse->pays_code);
|
||||
if (strlen($taux_produit) == 0) return -1; // Si taux produit = '', on ne peut d<>terminer taux tva
|
||||
if (strlen($taux_produit) == 0) return -1; // Si taux produit = '', on ne peut d<>terminer taux tva
|
||||
return $taux_produit;
|
||||
}
|
||||
|
||||
// Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (acheteur = entreprise avec num TVA intra) alors TVA par d<>faut=0. Fin de r<>gle.
|
||||
// Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (acheteur = entreprise avec num TVA intra) alors TVA par d<>faut=0. Fin de r<>gle.
|
||||
if (($societe_vendeuse->isInEEC() && $societe_acheteuse->isInEEC()) && $societe_acheteuse->tva_intra)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Sinon la TVA propos<6F>e par d<>faut=0. Fin de r<>gle.
|
||||
// Rem: Cela signifie qu'au moins un des 2 est hors Communaut<75> europ<6F>enne et que le pays diff<66>re
|
||||
// Sinon la TVA propos<6F>e par d<>faut=0. Fin de r<>gle.
|
||||
// Rem: Cela signifie qu'au moins un des 2 est hors Communaut<75> europ<6F>enne et que le pays diff<66>re
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
\brief Fonction qui renvoie si tva doit etre tva percue r<>cup<75>rable
|
||||
\remarks Si vendeur non assujeti a TVA, TVA par d<>faut=0. Fin de r<>gle.
|
||||
Si le (pays vendeur = pays acheteur) alors TVA par d<>faut=TVA du produit vendu. Fin de r<>gle.
|
||||
Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (bien vendu = moyen de transports neuf comme auto, bateau, avion) alors TVA par d<>faut=0 (La TVA doit <20>tre pay<61> par acheteur au centre d'impots de son pays et non au vendeur). Fin de r<>gle.
|
||||
Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (acheteur = particulier ou entreprise sans num TVA intra) alors TVA par d<>faut=TVA du produit vendu. Fin de r<>gle.
|
||||
Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (acheteur = entreprise avec num TVA) intra alors TVA par d<>faut=0. Fin de r<>gle.
|
||||
Sinon TVA propos<6F>e par d<>faut=0. Fin de r<>gle.
|
||||
\param societe_vendeuse Objet soci<63>t<EFBFBD> vendeuse
|
||||
\param societe_acheteuse Objet soci<63>t<EFBFBD> acheteuse
|
||||
\brief Fonction qui renvoie si tva doit etre tva percue r<>cup<75>rable
|
||||
\remarks Si vendeur non assujeti a TVA, TVA par d<>faut=0. Fin de r<>gle.
|
||||
Si le (pays vendeur = pays acheteur) alors TVA par d<>faut=TVA du produit vendu. Fin de r<>gle.
|
||||
Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (bien vendu = moyen de transports neuf comme auto, bateau, avion) alors TVA par d<>faut=0 (La TVA doit <20>tre pay<61> par acheteur au centre d'impots de son pays et non au vendeur). Fin de r<>gle.
|
||||
Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (acheteur = particulier ou entreprise sans num TVA intra) alors TVA par d<>faut=TVA du produit vendu. Fin de r<>gle.
|
||||
Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (acheteur = entreprise avec num TVA) intra alors TVA par d<>faut=0. Fin de r<>gle.
|
||||
Sinon TVA propos<6F>e par d<>faut=0. Fin de r<>gle.
|
||||
\param societe_vendeuse Objet soci<63>t<EFBFBD> vendeuse
|
||||
\param societe_acheteuse Objet soci<63>t<EFBFBD> acheteuse
|
||||
\param taux_produit Taux par defaut du produit vendu
|
||||
\return float 0 or 1
|
||||
*/
|
||||
@@ -2152,8 +2166,8 @@ function yn($yesno, $case=1, $color=0)
|
||||
|
||||
/**
|
||||
\brief Fonction pour qui retourne le rowid d'un departement par son code
|
||||
\param db handler d'acc<63>s base
|
||||
\param code Code r<>gion
|
||||
\param db handler d'acc<63>s base
|
||||
\param code Code r<>gion
|
||||
\param pays_id Id du pays
|
||||
*/
|
||||
function departement_rowid($db,$code, $pays_id)
|
||||
@@ -2184,9 +2198,9 @@ function departement_rowid($db,$code, $pays_id)
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Renvoi un chemin de classement r<>pertoire en fonction d'un id
|
||||
\brief Renvoi un chemin de classement r<>pertoire en fonction d'un id
|
||||
\remarks Examples: 1->"0/0/1/", 15->"0/1/5/"
|
||||
\param $num Id a d<>composer
|
||||
\param $num Id a d<>composer
|
||||
\param $level Niveau de decoupage (1, 2 ou 3 niveaux)
|
||||
*/
|
||||
function get_exdir($num,$level=3)
|
||||
@@ -2200,9 +2214,9 @@ function get_exdir($num,$level=3)
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Cr<43>ation de r<>pertoire recursive
|
||||
\param $dir R<>pertoire a cr<63>er
|
||||
\return int < 0 si erreur, >= 0 si succ<63>s
|
||||
\brief Cr<43>ation de r<>pertoire recursive
|
||||
\param $dir R<>pertoire a cr<63>er
|
||||
\return int < 0 si erreur, >= 0 si succ<63>s
|
||||
*/
|
||||
function create_exdir($dir)
|
||||
{
|
||||
@@ -2221,7 +2235,7 @@ function create_exdir($dir)
|
||||
else $ccdir = $cdir[$i];
|
||||
if (eregi("^.:$",$ccdir,$regs)) continue; // Si chemin Windows incomplet, on poursuit par rep suivant
|
||||
|
||||
// Attention, le is_dir() peut <20>chouer bien que le rep existe.
|
||||
// Attention, le is_dir() peut <20>chouer bien que le rep existe.
|
||||
// (ex selon config de open_basedir)
|
||||
if ($ccdir)
|
||||
{
|
||||
@@ -2232,20 +2246,20 @@ function create_exdir($dir)
|
||||
umask(0);
|
||||
if (! @mkdir($ccdir, 0755))
|
||||
{
|
||||
// Si le is_dir a renvoy<6F> une fausse info, alors on passe ici.
|
||||
// Si le is_dir a renvoy<6F> une fausse info, alors on passe ici.
|
||||
dolibarr_syslog("functions.lib.php::create_exdir: Fails to create directory '".$ccdir."' or directory already exists.",LOG_WARNING);
|
||||
$nberr++;
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_syslog("functions.lib.php::create_exdir: Directory '".$ccdir."' created",LOG_DEBUG);
|
||||
$nberr=0; // On remet a z<>ro car si on arrive ici, cela veut dire que les <20>checs pr<70>c<EFBFBD>dents peuvent etre ignor<6F>s
|
||||
$nberr=0; // On remet a z<>ro car si on arrive ici, cela veut dire que les <20>checs pr<70>c<EFBFBD>dents peuvent etre ignor<6F>s
|
||||
$nbcreated++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$nberr=0; // On remet a z<>ro car si on arrive ici, cela veut dire que les <20>checs pr<70>c<EFBFBD>dents peuvent etre ignor<6F>s
|
||||
$nberr=0; // On remet a z<>ro car si on arrive ici, cela veut dire que les <20>checs pr<70>c<EFBFBD>dents peuvent etre ignor<6F>s
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2256,9 +2270,9 @@ function create_exdir($dir)
|
||||
|
||||
|
||||
/**
|
||||
\brief Retourne le num<75>ro de la semaine par rapport a une date
|
||||
\brief Retourne le num<75>ro de la semaine par rapport a une date
|
||||
\param time Date au format 'timestamp'
|
||||
\return int Num<75>ro de semaine
|
||||
\return int Num<75>ro de semaine
|
||||
*/
|
||||
function numero_semaine($time)
|
||||
{
|
||||
@@ -2274,12 +2288,12 @@ function numero_semaine($time)
|
||||
|
||||
/*
|
||||
* Norme ISO-8601:
|
||||
* - La semaine 1 de toute ann<6E>e est celle qui contient le 4 janvier ou que la semaine 1 de toute ann<6E>e est celle qui contient le 1er jeudi de janvier.
|
||||
* - La majorit<69> des ann<6E>es ont 52 semaines mais les ann<6E>es qui commence un jeudi et les ann<6E>es bissextiles commen<65>ant un mercredi en poss<73>de 53.
|
||||
* - La semaine 1 de toute ann<6E>e est celle qui contient le 4 janvier ou que la semaine 1 de toute ann<6E>e est celle qui contient le 1er jeudi de janvier.
|
||||
* - La majorit<69> des ann<6E>es ont 52 semaines mais les ann<6E>es qui commence un jeudi et les ann<6E>es bissextiles commen<65>ant un mercredi en poss<73>de 53.
|
||||
* - Le 1er jour de la semaine est le Lundi
|
||||
*/
|
||||
|
||||
// D<>finition du Jeudi de la semaine
|
||||
// D<>finition du Jeudi de la semaine
|
||||
if (date("w",mktime(12,0,0,$mois,$jour,$annee))==0) // Dimanche
|
||||
$jeudiSemaine = mktime(12,0,0,$mois,$jour,$annee)-3*24*60*60;
|
||||
else if (date("w",mktime(12,0,0,$mois,$jour,$annee))<4) // du Lundi au Mercredi
|
||||
@@ -2289,7 +2303,7 @@ function numero_semaine($time)
|
||||
else // Jeudi
|
||||
$jeudiSemaine = mktime(12,0,0,$mois,$jour,$annee);
|
||||
|
||||
// D<>finition du premier Jeudi de l'ann<6E>e
|
||||
// D<>finition du premier Jeudi de l'ann<6E>e
|
||||
if (date("w",mktime(12,0,0,1,1,date("Y",$jeudiSemaine)))==0) // Dimanche
|
||||
{
|
||||
$premierJeudiAnnee = mktime(12,0,0,1,1,date("Y",$jeudiSemaine))+4*24*60*60;
|
||||
@@ -2307,7 +2321,7 @@ function numero_semaine($time)
|
||||
$premierJeudiAnnee = mktime(12,0,0,1,1,date("Y",$jeudiSemaine));
|
||||
}
|
||||
|
||||
// D<>finition du num<75>ro de semaine: nb de jours entre "premier Jeudi de l'ann<6E>e" et "Jeudi de la semaine";
|
||||
// D<>finition du num<75>ro de semaine: nb de jours entre "premier Jeudi de l'ann<6E>e" et "Jeudi de la semaine";
|
||||
$numeroSemaine = (
|
||||
(
|
||||
date("z",mktime(12,0,0,date("m",$jeudiSemaine),date("d",$jeudiSemaine),date("Y",$jeudiSemaine)))
|
||||
@@ -2319,7 +2333,7 @@ function numero_semaine($time)
|
||||
// Cas particulier de la semaine 53
|
||||
if ($numeroSemaine==53)
|
||||
{
|
||||
// Les ann<6E>es qui commence un Jeudi et les ann<6E>es bissextiles commen<65>ant un Mercredi en poss<73>de 53
|
||||
// Les ann<6E>es qui commence un Jeudi et les ann<6E>es bissextiles commen<65>ant un Mercredi en poss<73>de 53
|
||||
if (date("w",mktime(12,0,0,1,1,date("Y",$jeudiSemaine)))==4 || (date("w",mktime(12,0,0,1,1,date("Y",$jeudiSemaine)))==3 && date("z",mktime(12,0,0,12,31,date("Y",$jeudiSemaine)))==365))
|
||||
{
|
||||
$numeroSemaine = 53;
|
||||
@@ -2382,13 +2396,13 @@ function weight_convert($weight,&$from_unit,$to_unit)
|
||||
\param int Unit
|
||||
\param measuring_style Le style de mesure : weight, volume,...
|
||||
\return string Unite
|
||||
\todo gerer les autres unit<69>s de mesure comme la livre, le gallon, le litre, ...
|
||||
\todo gerer les autres unit<69>s de mesure comme la livre, le gallon, le litre, ...
|
||||
*/
|
||||
function measuring_units_string($unit,$measuring_style='')
|
||||
{
|
||||
/* Note Rodo aux dev :)
|
||||
* Ne pas ins<6E>rer dans la base de donn<6E>es ces valeurs
|
||||
* cela surchagerait inutilement d'une requete suppl<70>mentaire
|
||||
* Ne pas ins<6E>rer dans la base de donn<6E>es ces valeurs
|
||||
* cela surchagerait inutilement d'une requete suppl<70>mentaire
|
||||
* pour quelque chose qui est somme toute peu variable
|
||||
*/
|
||||
|
||||
@@ -2488,7 +2502,7 @@ function binhex($bin, $pad=false, $upper=false){
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Convertir de l'h<>xad<61>cimal en binaire
|
||||
\brief Convertir de l'h<>xad<61>cimal en binaire
|
||||
\param string hexa
|
||||
\return string bin
|
||||
*/
|
||||
@@ -2707,7 +2721,7 @@ function num_public_holiday($timestampStart, $timestampEnd, $countrycode='FR')
|
||||
|
||||
/**
|
||||
\brief Fonction retournant le nombre de jour entre deux dates
|
||||
\param timestampStart Timestamp de d<>but
|
||||
\param timestampStart Timestamp de d<>but
|
||||
\param timestampEnd Timestamp de fin
|
||||
\param lastday On prend en compte le dernier jour, 0: non, 1:oui
|
||||
\return nbjours Nombre de jours
|
||||
@@ -2730,8 +2744,8 @@ function num_between_day($timestampStart, $timestampEnd, $lastday=0)
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Fonction retournant le nombre de jour entre deux dates sans les jours f<>ri<72>s (jours ouvr<76>s)
|
||||
\param timestampStart Timestamp de d<>but
|
||||
\brief Fonction retournant le nombre de jour entre deux dates sans les jours f<>ri<72>s (jours ouvr<76>s)
|
||||
\param timestampStart Timestamp de d<>but
|
||||
\param timestampEnd Timestamp de fin
|
||||
\param inhour 0: sort le nombre de jour , 1: sort le nombre d'heure (72 max)
|
||||
\param lastday On prend en compte le dernier jour, 0: non, 1:oui
|
||||
@@ -2757,7 +2771,7 @@ function num_open_day($timestampStart, $timestampEnd,$inhour=0,$lastday=0)
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Fonction retournant le nombre de lignes dans un texte format<61>
|
||||
\brief Fonction retournant le nombre de lignes dans un texte format<61>
|
||||
\param texte Texte
|
||||
\return nblines Nombre de lignes
|
||||
*/
|
||||
@@ -2815,10 +2829,10 @@ function dol_textishtml($msg,$option=0)
|
||||
}
|
||||
|
||||
/*
|
||||
* \brief Effectue les substitutions des mots cl<63>s par les donn<6E>es en fonction du tableau
|
||||
* \brief Effectue les substitutions des mots cl<63>s par les donn<6E>es en fonction du tableau
|
||||
* \param chaine Chaine dans laquelle faire les substitutions
|
||||
* \param substitutionarray Tableau cl<63> substitution => valeur a mettre
|
||||
* \return string Chaine avec les substitutions effectu<74>es
|
||||
* \param substitutionarray Tableau cl<63> substitution => valeur a mettre
|
||||
* \return string Chaine avec les substitutions effectu<74>es
|
||||
*/
|
||||
function make_substitutions($chaine,$substitutionarray)
|
||||
{
|
||||
@@ -2831,8 +2845,8 @@ function make_substitutions($chaine,$substitutionarray)
|
||||
|
||||
|
||||
/*
|
||||
* \brief Formate l'affichage de date de d<>but et de fin
|
||||
* \param date_start date de d<>but
|
||||
* \brief Formate l'affichage de date de d<>but et de fin
|
||||
* \param date_start date de d<>but
|
||||
* \param date_end date de fin
|
||||
*/
|
||||
function print_date_range($date_start,$date_end)
|
||||
@@ -2873,8 +2887,8 @@ function make_alpha_from_numbers($number)
|
||||
|
||||
|
||||
/**
|
||||
\brief Retourne un tableau des mois ou le mois s<>lectionn<6E>
|
||||
\param selected Mois <20> s<>lectionner ou -1
|
||||
\brief Retourne un tableau des mois ou le mois s<>lectionn<6E>
|
||||
\param selected Mois <20> s<>lectionner ou -1
|
||||
\return string or array Month string or array if selected < 0
|
||||
*/
|
||||
function monthArrayOrSelected($selected=0)
|
||||
|
||||
Reference in New Issue
Block a user