diff --git a/build/dolibarr-doxygen-build.pl b/build/doxygen/dolibarr-doxygen-build.pl similarity index 94% rename from build/dolibarr-doxygen-build.pl rename to build/doxygen/dolibarr-doxygen-build.pl index 0dc32308585430513e81e652ab93fa95f24e626b..65fc027ca329553760e3bf3bce4916b7097dd609 100644 --- a/build/dolibarr-doxygen-build.pl +++ b/build/doxygen/dolibarr-doxygen-build.pl @@ -17,7 +17,7 @@ use Cwd; my $dir = getcwd; print "Current dir is: $dir\n"; -print "Running dir for doxygen must be: $DIR/doxygen\n"; +print "Running dir for doxygen must be: $DIR\n"; if (! -s $CONFFILE) { diff --git a/build/dolibarr-doxygen-filter.pl b/build/doxygen/dolibarr-doxygen-filter.pl similarity index 100% rename from build/dolibarr-doxygen-filter.pl rename to build/doxygen/dolibarr-doxygen-filter.pl diff --git a/build/dolibarr-doxygen-getversion.pl b/build/doxygen/dolibarr-doxygen-getversion.pl similarity index 100% rename from build/dolibarr-doxygen-getversion.pl rename to build/doxygen/dolibarr-doxygen-getversion.pl diff --git a/build/dolibarr-mysql2pgsql.pl b/dev/initdata/dolibarr-mysql2pgsql.pl similarity index 100% rename from build/dolibarr-mysql2pgsql.pl rename to dev/initdata/dolibarr-mysql2pgsql.pl diff --git a/htdocs/comm/remx.php b/htdocs/comm/remx.php index 977f9000ff24d609689fbd37f10be1074c926be2..6ee7fc1f16d8ee70f80d0e489ff634c71ee73de2 100644 --- a/htdocs/comm/remx.php +++ b/htdocs/comm/remx.php @@ -32,6 +32,8 @@ $langs->load("orders"); $langs->load("bills"); $langs->load("companies"); +$action=GETPOST('action'); + // Security check $socid = GETPOST("id"); if ($user->societe_id > 0) @@ -50,7 +52,7 @@ if (GETPOST('cancel') && GETPOST('backtopage')) exit; } -if (GETPOST("action") == 'confirm_split' && GETPOST("confirm") == 'yes') +if ($action == 'confirm_split' && GETPOST("confirm") == 'yes') { //if ($user->rights->societe->creer) //if ($user->rights->facture->creer) @@ -127,7 +129,7 @@ if (GETPOST("action") == 'confirm_split' && GETPOST("confirm") == 'yes') } } -if (GETPOST("action") == 'setremise') +if ($action == 'setremise') { //if ($user->rights->societe->creer) //if ($user->rights->facture->creer) @@ -145,13 +147,13 @@ if (GETPOST("action") == 'setremise') { $soc = new Societe($db); $soc->fetch($_GET["id"]); - $soc->set_remise_except($_POST["amount_ht"],$user,$_POST["desc"],$_POST["tva_tx"]); + $discountid=$soc->set_remise_except($_POST["amount_ht"],$user,$_POST["desc"],$_POST["tva_tx"]); - if ($result > 0) + if ($discountid > 0) { if (GETPOST("backtopage")) { - Header("Location: ".GETPOST("backtopage")); + Header("Location: ".GETPOST("backtopage").'&discountid='.$discountid); exit; } else diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index 7975dcfe656ef16971159ea86d3b3c92874472c3..85f8afd0bf5a5a4b5586d52615357ab3699c9fc4 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -2225,12 +2225,12 @@ else // Remise dispo de type remise fixe (not credit note) $filter='fk_facture_source IS NULL'; print '<br>'; - $form->form_remise_dispo($_SERVER["PHP_SELF"].'?facid='.$object->id, 0, 'remise_id',$soc->id, $absolute_discount, $filter, $resteapayer, ' ('.$addabsolutediscount.')'); + $form->form_remise_dispo($_SERVER["PHP_SELF"].'?facid='.$object->id, GETPOST('discountid'), 'remise_id', $soc->id, $absolute_discount, $filter, $resteapayer, ' ('.$addabsolutediscount.')'); } } else { - if ($absolute_creditnote > 0) // If not linke will be added later + if ($absolute_creditnote > 0) // If not, link will be added later { if ($object->statut == 0 && $object->type != 2 && $object->type != 3) print ' ('.$addabsolutediscount.')<br>'; else print '.'; diff --git a/htdocs/compta/facture/impayees.php b/htdocs/compta/facture/impayees.php index 1e12f450c09fd893171b0e4f27d27fc8e6a9e38b..472c1afcee21f9007ab6e182f5bb20b63daedd5b 100644 --- a/htdocs/compta/facture/impayees.php +++ b/htdocs/compta/facture/impayees.php @@ -144,12 +144,12 @@ $formfile = new FormFile($db); ?> <script type="text/javascript"> -jQuery(document).ready(function() { - jQuery("#checkall").click(function() { - jQuery(".checkformerge").attr('checked', true); +$(document).ready(function() { + $("#checkall").click(function() { + $(".checkformerge").attr('checked', true); }); - jQuery("#checknone").click(function() { - jQuery(".checkformerge").attr('checked', false); + $("#checknone").click(function() { + $(".checkformerge").attr('checked', false); }); }); </script> diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 696ad9b150087756e87e008b7e21e7cbf491457d..0d7e8434388a09ffffa3ee7839c0b074813e6e38 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -43,31 +43,31 @@ class Form { var $db; var $error; - + // Cache arrays var $cache_types_paiements=array(); var $cache_conditions_paiements=array(); var $cache_availability=array(); var $cache_demand_reason=array(); var $cache_type_fees=array(); - + var $tva_taux_value; var $tva_taux_libelle; - - + + /** * Constructor - * + * * @param DoliDB $db Database handler */ public function __construct($db) { $this->db = $db; } - + /** * Output key field for an editable field - * + * * @param string $text Text of label or key to translate * @param string $htmlname Name of select field * @param string $preselected Name of Value to show/edit (not used in this function) @@ -79,9 +79,9 @@ class Form function editfieldkey($text,$htmlname,$preselected,$object,$perm,$typeofdata='string') { global $conf,$langs; - + $ret=''; - + if (! empty($conf->global->MAIN_USE_JQUERY_JEDITABLE)) { if ($perm) @@ -104,13 +104,13 @@ class Form if (GETPOST('action') != 'edit'.$htmlname && $perm) $ret.='<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=edit'.$htmlname.'&id='.$object->id.'">'.img_edit($langs->trans('Edit'),1).'</a></td>'; $ret.='</tr></table>'; } - + return $ret; } - + /** * Output val field for an editable field - * + * * @param string $text Text of label (not used in this function) * @param string $htmlname Name of select field * @param string $value Value to show/edit @@ -124,9 +124,9 @@ class Form function editfieldval($text,$htmlname,$value,$object,$perm,$typeofdata='string',$editvalue='',$extObject=false) { global $conf,$langs,$db; - + $ret=''; - + // When option to edit inline is activated if (! empty($conf->global->MAIN_USE_JQUERY_JEDITABLE)) { @@ -185,7 +185,7 @@ class Form } return $ret; } - + /** * Output edit in place form * @@ -200,14 +200,14 @@ class Form private function editInPlace($object, $value, $htmlname, $condition, $inputType='textarea', $extObject=false) { global $conf; - + $out=''; - + // Check parameters if ($inputType == 'textarea') $value = dol_nl2br($value); else if (preg_match('/^numeric/',$inputType)) $value = price($value); else if ($inputType == 'datepicker') $value = dol_print_date($value, 'day'); - + if ($condition) { $element = false; @@ -218,21 +218,21 @@ class Form $ext_element = false; //$ext_table_element = false; //$ext_fk_element = false; - + if (is_object($object)) { $element = $object->element; $table_element = $object->table_element; $fk_element = $object->id; } - + if (is_object($extObject)) { $ext_element = $extObject->element; //$ext_table_element = $extObject->table_element; //$ext_fk_element = $extObject->id; } - + if (preg_match('/^(string|email|numeric)/',$inputType)) { $tmp=explode(':',$inputType); @@ -244,7 +244,7 @@ class Form $tmp=explode(':',$inputType); $inputType=$tmp[0]; $inputOption=$tmp[1]; if (! empty($tmp[2])) $savemethod=$tmp[2]; - + $out.= '<input id="timestamp" type="hidden"/>'."\n"; // Use for timestamp format } else if (preg_match('/^select/',$inputType)) @@ -260,7 +260,7 @@ class Form if (! empty($tmp[2])) $width=$tmp[2]; if (! empty($tmp[3])) $heigth=$tmp[3]; if (! empty($tmp[4])) $savemethod=$tmp[4]; - + if (! empty($conf->fckeditor->enabled)) { $out.= '<input id="ckeditor_toolbar" value="'.$toolbar.'" type="hidden"/>'."\n"; @@ -270,7 +270,7 @@ class Form $inputType = 'textarea'; } } - + $out.= '<input id="element_'.$htmlname.'" value="'.$element.'" type="hidden"/>'."\n"; $out.= '<input id="table_element_'.$htmlname.'" value="'.$table_element.'" type="hidden"/>'."\n"; $out.= '<input id="fk_element_'.$htmlname.'" value="'.$fk_element.'" type="hidden"/>'."\n"; @@ -279,17 +279,17 @@ class Form $out.= '<input id="ext_element_'.$htmlname.'" value="'.$ext_element.'" type="hidden"/>'."\n"; //$out.= '<input id="ext_table_element_'.$htmlname.'" value="'.$ext_table_element.'" type="hidden"/>'."\n"; //$out.= '<input id="ext_fk_element_'.$htmlname.'" value="'.$ext_fk_element.'" type="hidden"/>'."\n"; - + $out.= '<div id="val_'.$htmlname.'" class="editval_'.$inputType.'">'.$value.'</div>'."\n"; } else { $out = $value; } - + return $out; } - + /** * Show a text and picto with tooltip on text or picto * @@ -308,21 +308,21 @@ class Form function textwithtooltip($text,$htmltext,$tooltipon=1,$direction=0,$img='',$extracss='',$notabs=0,$incbefore='',$noencodehtmltext=0) { global $conf; - + if ($incbefore) $text = $incbefore.$text; if (! $htmltext) return $text; - + // Sanitize tooltip $htmltext=str_replace("\\","\\\\",$htmltext); $htmltext=str_replace("\r","",$htmltext); $htmltext=str_replace("\n","",$htmltext); - + $htmltext=str_replace('"',""",$htmltext); if ($tooltipon == 2 || $tooltipon == 3) $paramfortooltipimg=' class="classfortooltip'.($extracss?' '.$extracss:'').'" title="'.($noencodehtmltext?$htmltext:dol_escape_htmltag($htmltext,1)).'"'; // Attribut to put on td img tag to store tooltip else $paramfortooltipimg =($extracss?' class="'.$extracss.'"':''); // Attribut to put on td text tag if ($tooltipon == 1 || $tooltipon == 3) $paramfortooltiptd=' class="classfortooltip'.($extracss?' '.$extracss:'').'" title="'.($noencodehtmltext?$htmltext:dol_escape_htmltag($htmltext,1)).'"'; // Attribut to put on td tag to store tooltip else $paramfortooltiptd =($extracss?' class="'.$extracss.'"':''); // Attribut to put on td text tag - + $s=""; if (empty($notabs)) $s.='<table class="nobordernopadding" summary=""><tr>'; if ($direction > 0) @@ -346,7 +346,7 @@ class Form } } if (empty($notabs)) $s.='</tr></table>'; - + return $s; } @@ -2701,17 +2701,17 @@ class Form /** - * Show a select box with available absolute discounts + * Show a select box with available absolute discounts * - * @param page Page URL where form is shown - * @param selected Value pre-selected - * @param htmlname Nom du formulaire select. Si none, non modifiable - * @param socid Third party id - * @param amount Total amount available - * @param filter SQL filter on discounts - * @param maxvalue Max value for lines that can be selected - * @param more More string to add - * @return void + * @param string $page Page URL where form is shown + * @param int $selected Value pre-selected + * @param string $htmlname Nom du formulaire select. Si none, non modifiable + * @param int $socid Third party id + * @param float $amount Total amount available + * @param string $filter SQL filter on discounts + * @param int $maxvalue Max value for lines that can be selected + * @param string $more More string to add + * @return void */ function form_remise_dispo($page, $selected='', $htmlname='remise_id',$socid, $amount, $filter='', $maxvalue=0, $more='') { @@ -2725,10 +2725,9 @@ class Form print '<tr><td nowrap="nowrap">'; if (! $filter || $filter=='fk_facture_source IS NULL') print $langs->trans("CompanyHasAbsoluteDiscount",price($amount),$langs->transnoentities("Currency".$conf->monnaie)).': '; else print $langs->trans("CompanyHasCreditNote",price($amount),$langs->transnoentities("Currency".$conf->monnaie)).': '; - // print $langs->trans("AvailableGlobalDiscounts").': '; $newfilter='fk_facture IS NULL AND fk_facture_line IS NULL'; // Remises disponibles if ($filter) $newfilter.=' AND '.$filter; - $nbqualifiedlines=$this->select_remises('',$htmlname,$newfilter,$socid,$maxvalue); + $nbqualifiedlines=$this->select_remises($selected,$htmlname,$newfilter,$socid,$maxvalue); print '</td>'; print '<td>'; if ($nbqualifiedlines > 0) diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index a1a452a939dc8110364dba6d04ccd00665a2c396..b76ed8c37242666151b6e1b32ce7e28223bb51fd 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -439,12 +439,17 @@ class FormFile $file_list=dol_dir_list($filedir,'files',0,$filter,'\.meta$'.($png?'|'.$png:''),'date',SORT_DESC); // Affiche en-tete tableau si non deja affiche - if (count($file_list) && ! $headershown && !$iconPDF) + if (! empty($file_list) && ! $headershown && ! $iconPDF) { $headershown=1; $out.= '<div class="titre">'.$titletoshow.'</div>'; $out.= '<table class="border" summary="listofdocumentstable" width="100%">'; } + else if (empty($file_list) && ! empty($iconPDF)) + { + // For ajax treatment + $out.= '<div id="gen_pdf_'.$filename.'" class="linkobject hideobject">'.img_picto('', 'refresh').'</div>'."\n"; + } // Loop on each file found foreach($file_list as $file) @@ -458,15 +463,15 @@ class FormFile if ($modulepart == 'donation') { $relativepath = get_exdir($filename,2).$file["name"]; } if ($modulepart == 'export') { $relativepath = $file["name"]; } - if (!$iconPDF) $out.= "<tr ".$bc[$var].">"; + if (! $iconPDF) $out.= "<tr ".$bc[$var].">"; // Show file name with link to download - if (!$iconPDF) $out.= '<td nowrap="nowrap">'; + if (! $iconPDF) $out.= '<td nowrap="nowrap">'; $out.= '<a href="'.DOL_URL_ROOT . '/document.php?modulepart='.$modulepart.'&file='.urlencode($relativepath).'"'; $mime=dol_mimetype($relativepath,'',0); if (preg_match('/text/',$mime)) $out.= ' target="_blank"'; $out.= '>'; - if (!$iconPDF) + if (! $iconPDF) { $out.= img_mime($file["name"],$langs->trans("File").': '.$file["name"]).' '.dol_trunc($file["name"],$maxfilenamelength); } @@ -474,12 +479,15 @@ class FormFile { $out.= img_pdf($file["name"],2); } - $out.= '</a>'; - if (!$iconPDF) $out.= '</td>'; - // Affiche taille fichier - if (!$iconPDF) $out.= '<td align="right" nowrap="nowrap">'.dol_print_size(dol_filesize($filedir."/".$file["name"])).'</td>'; - // Affiche date fichier - if (!$iconPDF) $out.= '<td align="right" nowrap="nowrap">'.dol_print_date(dol_filemtime($filedir."/".$file["name"]),'dayhour').'</td>'; + $out.= '</a>'."\n"; + if (! $iconPDF) + { + $out.= '</td>'; + // Show file size + $out.= '<td align="right" nowrap="nowrap">'.dol_print_size(dol_filesize($filedir."/".$file["name"])).'</td>'; + // Show file date + $out.= '<td align="right" nowrap="nowrap">'.dol_print_date(dol_filemtime($filedir."/".$file["name"]),'dayhour').'</td>'; + } if ($delallowed) { @@ -489,7 +497,7 @@ class FormFile $out.= '">'.img_delete().'</a></td>'; } - if (!$iconPDF) $out.= '</tr>'; + if (! $iconPDF) $out.= '</tr>'; $this->numoffiles++; } diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index 4463a943486b45648c9b92734668a8eada084274..341fe8529cc786896bf979b87b107ccb5c71f1a2 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -752,11 +752,11 @@ function pdf_getlinedesc($object,$i,$outputlangs,$hideref=0,$hidedesc=0,$issuppl { if ($idprod) { - if ( empty($hidedesc) ) $libelleproduitservice.=$desc; + if ( empty($hidedesc) ) $libelleproduitservice.=dol_htmlentitiesbr($desc,1); } else { - $libelleproduitservice.=$desc; + $libelleproduitservice.=dol_htmlentitiesbr($desc,1); } } } diff --git a/htdocs/langs/HOWTO-Translation.txt b/htdocs/langs/HOWTO-Translation.txt old mode 100755 new mode 100644 diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 5a214c0466cb0e5d366fa725af376adfadb1014f..f9408b2896b5fa92be491c29b5793aa34fe1fd57 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -73,7 +73,7 @@ if (function_exists('get_magic_quotes_gpc')) // magic_quotes_* removed in PHP6 function test_sql_and_script_inject($val, $type) { $sql_inj = 0; - // For SQL Injection (onyl GET and POST are used to be included into bad escaped SQL requests) + // For SQL Injection (only GET and POST are used to be included into bad escaped SQL requests) if ($type != 2) { $sql_inj += preg_match('/delete[\s]+from/i', $val); diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index 2e00f12f5f95d137150ded9524c4aa6fe9dc08f4..f36853e6baeb99bcb7db0c84a1bb9e77fe27e0a0 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -1217,17 +1217,18 @@ class Societe extends CommonObject /** * Add a discount for third party - * @param remise Montant de la remise - * @param user Utilisateur qui accorde la remise - * @param desc Motif de l'avoir - * @param tva_tx VAT rate - * @return int <0 if KO, id or record if OK + * + * @param float $remise Amount of discount + * @param User $user User adding discount + * @param string $desc Reason of discount + * @param float $tva_tx VAT rate + * @return int <0 if KO, id of discount record if OK */ function set_remise_except($remise, $user, $desc, $tva_tx=0) { global $langs; - // Nettoyage des parametres + // Clean parameters $remise = price2num($remise); $desc = trim($desc); @@ -1269,11 +1270,12 @@ class Societe extends CommonObject } /** - * \brief Renvoie montant TTC des reductions/avoirs en cours disponibles de la societe - * \param user Filtre sur un user auteur des remises - * \param filter Filtre autre - * \param maxvalue Filter on max value for discount - * \return int <0 if KO, Credit note amount otherwise + * Renvoie montant TTC des reductions/avoirs en cours disponibles de la societe + * + * @param User $user Filtre sur un user auteur des remises + * @param string $filter Filtre autre + * @param string $maxvalue Filter on max value for discount + * @return int <0 if KO, Credit note amount otherwise */ function getAvailableDiscounts($user='',$filter='',$maxvalue=0) { @@ -1294,6 +1296,7 @@ class Societe extends CommonObject /** * Return array of sales representatives + * * @return array Array of sales representatives of third party */ function getSalesRepresentatives($user='') @@ -1331,8 +1334,8 @@ class Societe extends CommonObject /** * Set the price level * - * @param $price_level - * @param $user + * @param int $price_level Level of price + * @param User $user Use making change */ function set_price_level($price_level, $user) {