diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php index dc212fe38db..9eeb3d40b88 100644 --- a/htdocs/comm/propal.php +++ b/htdocs/comm/propal.php @@ -52,6 +52,10 @@ $action=GETPOST('action'); $confirm=GETPOST('confirm'); $lineid=GETPOST('lineid'); +$search_ref=GETPOST('sf_ref')?GETPOST('sf_ref','alpha'):GETPOST('search_ref','alpha'); +$search_societe=GETPOST('search_societe','alpha'); +$search_montant_ht=GETPOST('search_montant_ht','alpha'); + $sall=GETPOST("sall"); $mesg=(GETPOST("msg") ? GETPOST("msg") : GETPOST("mesg")); $year=GETPOST("year"); @@ -1744,23 +1748,23 @@ else { $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; } - if (GETPOST('search_ref')) + if ($search_ref) { - $sql.= " AND p.ref LIKE '%".$db->escape(GETPOST('search_ref'))."%'"; + $sql.= " AND p.ref LIKE '%".$db->escape(trim($search_ref))."%'"; } - if (!empty($_GET['search_societe'])) + if ($search_societe) { - $sql.= " AND s.nom LIKE '%".$db->escape(GETPOST('search_societe'))."%'"; + $sql.= " AND s.nom LIKE '%".$db->escape(trim($search_societe))."%'"; } - if (!empty($_GET['search_montant_ht'])) + if ($search_montant_ht) { - $sql.= " AND p.total_ht='".$db->escape(GETPOST('search_montant_ht'))."'"; + $sql.= " AND p.total_ht='".$db->escape(trim($search_montant_ht))."'"; } - if ($sall) $sql.= " AND (s.nom like '%".$db->escape($sall)."%' OR p.note like '%".$db->escape($sall)."%' OR pd.description like '%".$db->escape($sall)."%')"; + if ($sall) $sql.= " AND (s.nom LIKE '%".$db->escape($sall)."%' OR p.note LIKE '%".$db->escape($sall)."%' OR pd.description LIKE '%".$db->escape($sall)."%')"; if ($socid) $sql.= ' AND s.rowid = '.$socid; if ($viewstatut <> '') { - $sql.= ' AND p.fk_statut in ('.$viewstatut.')'; + $sql.= ' AND p.fk_statut IN ('.$viewstatut.')'; } if ($month > 0) { @@ -1773,10 +1777,6 @@ else { $sql.= " AND date_format(p.datep, '%Y') = '".$year."'"; } - if (dol_strlen($_POST['sf_ref']) > 0) - { - $sql.= " AND p.ref like '%".$db->escape($_POST["sf_ref"]) . "%'"; - } $sql.= ' ORDER BY '.$sortfield.' '.$sortorder.', p.ref DESC'; $sql.= $db->plimit($limit + 1,$offset); @@ -1817,10 +1817,10 @@ else print ''; print ''; - print ''; + print ''; print ''; print ''; - print ''; + print ''; print ''; print ''; print $langs->trans('Month').': '; @@ -1831,7 +1831,7 @@ else print ''; print ' '; print ''; - print ''; + print ''; print ''; print ' '; print ''; diff --git a/htdocs/commande/liste.php b/htdocs/commande/liste.php index 054499be001..ff35059d812 100644 --- a/htdocs/commande/liste.php +++ b/htdocs/commande/liste.php @@ -37,16 +37,16 @@ $orderyear=GETPOST("orderyear","int"); $ordermonth=GETPOST("ordermonth","int"); $deliveryyear=GETPOST("deliveryyear","int"); $deliverymonth=GETPOST("deliverymonth","int"); -$sref=GETPOST('sref'); -$sref_client=GETPOST('sref_client'); -$snom=GETPOST('snom'); +$sref=GETPOST('sref','alpha'); +$sref_client=GETPOST('sref_client','alpha'); +$snom=GETPOST('snom','alpha'); $sall=GETPOST('sall'); $socid=GETPOST('socid','int'); // Security check -$orderid = isset($_GET["orderid"])?$_GET["orderid"]:''; +$id = (GETPOST('orderid')?GETPOST('orderid'):GETPOST('id')); if ($user->societe_id) $socid=$user->societe_id; -$result = restrictedArea($user, 'commande', $orderid,''); +$result = restrictedArea($user, 'commande', $id,''); $sortfield = GETPOST("sortfield",'alpha'); $sortorder = GETPOST("sortorder",'alpha'); @@ -111,19 +111,19 @@ if ($viewstatut <> '') $sql .= ' AND c.fk_statut IN (1,2,3) AND c.facture = 0'; } } -if ($_GET['ordermonth'] > 0) +if ($ordermonth > 0) { $sql.= " AND date_format(c.date_valid, '%Y-%m') = '".$orderyear."-".$ordermonth."'"; } -if ($_GET['orderyear'] > 0) +if ($orderyear > 0) { $sql.= " AND date_format(c.date_valid, '%Y') = '".$orderyear."'"; } -if ($_GET['deliverymonth'] > 0) +if ($deliverymonth > 0) { $sql.= " AND date_format(c.date_livraison, '%Y-%m') = '".$deliveryyear."-".$deliverymonth."'"; } -if ($_GET['deliveryyear'] > 0) +if ($deliveryyear > 0) { $sql.= " AND date_format(c.date_livraison, '%Y') = '".$deliveryyear."'"; } @@ -153,23 +153,23 @@ if ($resql) { $title = $langs->trans('ListOfOrders'); } - if (strval($_GET['viewstatut']) == '0') + if (strval($viewstatut) == '0') $title.=' - '.$langs->trans('StatusOrderDraftShort'); - if ($_GET['viewstatut'] == 1) + if ($viewstatut == 1) $title.=' - '.$langs->trans('StatusOrderValidatedShort'); - if ($_GET['viewstatut'] == 2) + if ($viewstatut == 2) $title.=' - '.$langs->trans('StatusOrderOnProcessShort'); - if ($_GET['viewstatut'] == 3) + if ($viewstatut == 3) $title.=' - '.$langs->trans('StatusOrderToBillShort'); - if ($_GET['viewstatut'] == 4) + if ($viewstatut == 4) $title.=' - '.$langs->trans('StatusOrderProcessedShort'); - if ($_GET['viewstatut'] == -1) + if ($viewstatut == -1) $title.=' - '.$langs->trans('StatusOrderCanceledShort'); - if ($_GET['viewstatut'] == -2) + if ($viewstatut == -2) $title.=' - '.$langs->trans('StatusOrderToProcessShort'); $num = $db->num_rows($resql); - print_barre_liste($title, $_GET['page'], 'liste.php','&socid='.$socid.'&viewstatut='.$viewstatut,$sortfield,$sortorder,'',$num); + print_barre_liste($title, $page, 'liste.php','&socid='.$socid.'&viewstatut='.$viewstatut,$sortfield,$sortorder,'',$num); $i = 0; print ''; print ''; diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index 86ced4f957d..bc4eafb9ca1 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -50,19 +50,22 @@ $langs->load('main'); if (GETPOST('mesg','int',1) && isset($_SESSION['message'])) $mesg=$_SESSION['message']; $sall=trim(GETPOST('sall')); -$projectid=isset($_GET['projectid'])?$_GET['projectid']:0; +$projectid=(GETPOST('projectid')?GETPOST('projectid','int'):0); -$id=(GETPOST('id')?GETPOST("id"):GETPOST("facid")); // For backward compatibility -$ref=GETPOST('ref'); -$socid=GETPOST('socid'); -$action=GETPOST('action'); -$confirm=GETPOST('confirm'); -$lineid=GETPOST('lineid'); -$userid=GETPOST('userid'); -$search_ref=GETPOST('sf_ref')?GETPOST('sf_ref'):GETPOST('search_ref'); +$id=(GETPOST('id')?GETPOST('id','int'):GETPOST('facid','int')); // For backward compatibility +$ref=GETPOST('ref','alpha'); +$socid=GETPOST('socid','int'); +$action=GETPOST('action','alpha'); +$confirm=GETPOST('confirm','alpha'); +$lineid=GETPOST('lineid','int'); +$userid=GETPOST('userid','int'); +$search_ref=GETPOST('sf_ref')?GETPOST('sf_ref','alpha'):GETPOST('search_ref','alpha'); +$search_societe=GETPOST('search_societe','alpha'); +$search_montant_ht=GETPOST('search_montant_ht','alpha'); +$search_montant_ttc=GETPOST('search_montant_ttc','alpha'); // Security check -$fieldid = isset($_GET["ref"])?'facnumber':'rowid'; +$fieldid = (! empty($ref)?'facnumber':'rowid'); if ($user->societe_id) $socid=$user->societe_id; $result = restrictedArea($user, 'facture', $id,'','','fk_soc',$fieldid); @@ -3055,8 +3058,8 @@ else $pageprev = $page - 1; $pagenext = $page + 1; - $month =GETPOST('month','int'); - $year =GETPOST('year','int'); + $month = GETPOST('month','int'); + $year = GETPOST('year','int'); $facturestatic=new Facture($db); @@ -3090,21 +3093,21 @@ else $sql .= ' AND ' . trim($filt[0]) . ' = ' . trim($filt[1]); } } - if ($_GET['search_ref']) + if ($search_ref) { - $sql.= ' AND f.facnumber LIKE \'%'.$db->escape(trim($_GET['search_ref'])).'%\''; + $sql.= ' AND f.facnumber LIKE \'%'.$db->escape(trim($search_ref)).'%\''; } - if ($_GET['search_societe']) + if ($search_societe) { - $sql.= ' AND s.nom LIKE \'%'.$db->escape(trim($_GET['search_societe'])).'%\''; + $sql.= ' AND s.nom LIKE \'%'.$db->escape(trim($search_societe)).'%\''; } - if ($_GET['search_montant_ht']) + if ($search_montant_ht) { - $sql.= ' AND f.total = \''.$db->escape(trim($_GET['search_montant_ht'])).'\''; + $sql.= ' AND f.total = \''.$db->escape(trim($search_montant_ht)).'\''; } - if ($_GET['search_montant_ttc']) + if ($search_montant_ttc) { - $sql.= ' AND f.total_ttc = \''.$db->escape(trim($_GET['search_montant_ttc'])).'\''; + $sql.= ' AND f.total_ttc = \''.$db->escape(trim($search_montant_ttc)).'\''; } if ($month > 0) { @@ -3117,10 +3120,6 @@ else { $sql.= " AND f.datef BETWEEN '".$db->idate(dol_get_first_day($year,1,false))."' AND '".$db->idate(dol_get_last_day($year,12,false))."'"; } - if (trim($search_ref) != '') - { - $sql.= ' AND f.facnumber LIKE \'%'.$db->escape(trim($search_ref)) . '%\''; - } if (! $sall) { $sql.= ' GROUP BY f.rowid, f.facnumber, f.type, f.increment, f.total, f.total_ttc,'; @@ -3185,11 +3184,11 @@ else print ''; print ''; print ''; print '"; $requestnb++; if ($conf->file->character_set_client == "UTF-8") @@ -538,6 +550,12 @@ if ($action == "set") // We loop on each requests foreach($arrayofrequests as $buffer) { + // Replace the prefix tables + if ($dolibarr_main_db_prefix != 'llx_') + { + $buffer=preg_replace('/llx_/i',$dolibarr_main_db_prefix,$buffer); + } + //dolibarr_install_syslog("Request: ".$buffer,LOG_DEBUG); $resql=$db->query($buffer); if ($resql) diff --git a/htdocs/install/etape5.php b/htdocs/install/etape5.php index 2f49092703b..89859bff6ea 100644 --- a/htdocs/install/etape5.php +++ b/htdocs/install/etape5.php @@ -197,18 +197,18 @@ if ($action == "set" || preg_match('/upgrade/i',$action)) $db->begin(); dolibarr_install_syslog('install/etape5.php set MAIN_VERSION_LAST_INSTALL const to '.$targetversion, LOG_DEBUG); - $resql=$db->query("DELETE FROM llx_const WHERE ".$db->decrypt('name')."='MAIN_VERSION_LAST_INSTALL'"); + $resql=$db->query("DELETE FROM ".MAIN_DB_PREFIX."const WHERE ".$db->decrypt('name')."='MAIN_VERSION_LAST_INSTALL'"); if (! $resql) dol_print_error($db,'Error in setup program'); - $resql=$db->query("INSERT INTO llx_const(name,value,type,visible,note,entity) values(".$db->encrypt('MAIN_VERSION_LAST_INSTALL',1).",".$db->encrypt($targetversion,1).",'chaine',0,'Dolibarr version when install',0)"); + $resql=$db->query("INSERT INTO ".MAIN_DB_PREFIX."const(name,value,type,visible,note,entity) values(".$db->encrypt('MAIN_VERSION_LAST_INSTALL',1).",".$db->encrypt($targetversion,1).",'chaine',0,'Dolibarr version when install',0)"); if (! $resql) dol_print_error($db,'Error in setup program'); $conf->global->MAIN_VERSION_LAST_INSTALL=$targetversion; if ($useforcedwizard) { dolibarr_install_syslog('install/etape5.php set MAIN_REMOVE_INSTALL_WARNING const to 1', LOG_DEBUG); - $resql=$db->query("DELETE FROM llx_const WHERE ".$db->decrypt('name')."='MAIN_REMOVE_INSTALL_WARNING'"); + $resql=$db->query("DELETE FROM ".MAIN_DB_PREFIX."const WHERE ".$db->decrypt('name')."='MAIN_REMOVE_INSTALL_WARNING'"); if (! $resql) dol_print_error($db,'Error in setup program'); - $resql=$db->query("INSERT INTO llx_const(name,value,type,visible,note,entity) values(".$db->encrypt('MAIN_REMOVE_INSTALL_WARNING',1).",".$db->encrypt(1,1).",'chaine',1,'Disable install warnings',0)"); + $resql=$db->query("INSERT INTO ".MAIN_DB_PREFIX."const(name,value,type,visible,note,entity) values(".$db->encrypt('MAIN_REMOVE_INSTALL_WARNING',1).",".$db->encrypt(1,1).",'chaine',1,'Disable install warnings',0)"); if (! $resql) dol_print_error($db,'Error in setup program'); $conf->global->MAIN_REMOVE_INSTALL_WARNING=1; } @@ -235,7 +235,7 @@ if ($action == "set" || preg_match('/upgrade/i',$action)) } dolibarr_install_syslog('install/etape5.php Remove MAIN_NOT_INSTALLED const', LOG_DEBUG); - $resql=$db->query("DELETE FROM llx_const WHERE ".$db->decrypt('name')."='MAIN_NOT_INSTALLED'"); + $resql=$db->query("DELETE FROM ".MAIN_DB_PREFIX."const WHERE ".$db->decrypt('name')."='MAIN_NOT_INSTALLED'"); if (! $resql) dol_print_error($db,'Error in setup program'); $db->commit(); @@ -266,9 +266,9 @@ if ($action == "set" || preg_match('/upgrade/i',$action)) if ($tagdatabase) { dolibarr_install_syslog('install/etape5.php set MAIN_VERSION_LAST_UPGRADE const to value '.$targetversion, LOG_DEBUG); - $resql=$db->query("DELETE FROM llx_const WHERE ".$db->decrypt('name')."='MAIN_VERSION_LAST_UPGRADE'"); + $resql=$db->query("DELETE FROM ".MAIN_DB_PREFIX."const WHERE ".$db->decrypt('name')."='MAIN_VERSION_LAST_UPGRADE'"); if (! $resql) dol_print_error($db,'Error in setup program'); - $resql=$db->query("INSERT INTO llx_const(name,value,type,visible,note,entity) values(".$db->encrypt('MAIN_VERSION_LAST_UPGRADE',1).",".$db->encrypt($targetversion,1).",'chaine',0,'Dolibarr version for last upgrade',0)"); + $resql=$db->query("INSERT INTO ".MAIN_DB_PREFIX."const(name,value,type,visible,note,entity) VALUES (".$db->encrypt('MAIN_VERSION_LAST_UPGRADE',1).",".$db->encrypt($targetversion,1).",'chaine',0,'Dolibarr version for last upgrade',0)"); if (! $resql) dol_print_error($db,'Error in setup program'); $conf->global->MAIN_VERSION_LAST_UPGRADE=$targetversion; } @@ -288,7 +288,7 @@ if ($action == "set" || preg_match('/upgrade/i',$action)) } // May fail if parameter already defined - $resql=$db->query("INSERT INTO llx_const(name,value,type,visible,note,entity) values(".$db->encrypt('MAIN_LANG_DEFAULT',1).",".$db->encrypt($setuplang,1).",'chaine',0,'Default language',1)"); + $resql=$db->query("INSERT INTO ".MAIN_DB_PREFIX."const(name,value,type,visible,note,entity) VALUES (".$db->encrypt('MAIN_LANG_DEFAULT',1).",".$db->encrypt($setuplang,1).",'chaine',0,'Default language',1)"); //if (! $resql) dol_print_error($db,'Error in setup program'); print '
 '; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; print ' '; diff --git a/htdocs/compta/sociales/class/paymentsocialcontribution.class.php b/htdocs/compta/sociales/class/paymentsocialcontribution.class.php index f481755a6d4..ab3dc275892 100644 --- a/htdocs/compta/sociales/class/paymentsocialcontribution.class.php +++ b/htdocs/compta/sociales/class/paymentsocialcontribution.class.php @@ -78,7 +78,7 @@ class PaymentSocialContribution extends CommonObject // Validate parametres if (! $this->datepaye) { - $this->error='ErrorBadValueForParameters'; + $this->error='ErrorBadValueForParameter'; return -1; } diff --git a/htdocs/conf/conf.php.example b/htdocs/conf/conf.php.example index ff1cce52ee7..26ed4bb8c92 100644 --- a/htdocs/conf/conf.php.example +++ b/htdocs/conf/conf.php.example @@ -96,6 +96,14 @@ $dolibarr_main_db_port=''; $dolibarr_main_db_name=''; +# dolibarr_main_db_prefix +# This parameter contains prefix of Dolibarr database. +# Examples: +# $dolibarr_main_db_prefix='llx_'; +# +$dolibarr_main_db_prefix=''; + + # dolibarr_main_db_user # This parameter contains user name used to read and write into # Dolibarr database. diff --git a/htdocs/core/lib/admin.lib.php b/htdocs/core/lib/admin.lib.php index b79072b0ada..c8bf01a17c9 100644 --- a/htdocs/core/lib/admin.lib.php +++ b/htdocs/core/lib/admin.lib.php @@ -220,6 +220,12 @@ function run_sql($sqlfile,$silent=1,$entity='',$usesavepoint=1,$handler='') { if ($sql) { + // Replace the prefix tables + if (MAIN_DB_PREFIX != 'llx_') + { + $sql=preg_replace('/llx_/i',MAIN_DB_PREFIX,$sql); + } + if (!empty($handler)) $sql=preg_replace('/__HANDLER__/i',"'".$handler."'",$sql); $newsql=preg_replace('/__ENTITY__/i',(!empty($entity)?$entity:$conf->entity),$sql); diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index eafd2c9cb22..39fc2b599d9 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -185,22 +185,22 @@ function dol_shutdown() */ function GETPOST($paramname,$check='',$method=0) { - if (empty($method)) $out = isset($_GET[$paramname])?$_GET[$paramname]:(isset($_POST[$paramname])?$_POST[$paramname]:''); - elseif ($method==1) $out = isset($_GET[$paramname])?$_GET[$paramname]:''; - elseif ($method==2) $out = isset($_POST[$paramname])?$_POST[$paramname]:''; - elseif ($method==3) $out = isset($_POST[$paramname])?$_POST[$paramname]:(isset($_GET[$paramname])?$_GET[$paramname]:''); - - if (!empty($check)) - { - // Check if numeric - if ($check == 'int' && ! preg_match('/^[\.,0-9]+$/i',trim($out))) $out=''; - // Check if alpha - //if ($check == 'alpha' && ! preg_match('/^[ =:@#\/\\\(\)\-\._a-z0-9]+$/i',trim($out))) $out=''; - // '"' is dangerous because param in url can close the href= or src= and add javascript functions. - if ($check == 'alpha' && preg_match('/"/',trim($out))) $out=''; - } - - return $out; + if (empty($method)) $out = isset($_GET[$paramname])?$_GET[$paramname]:(isset($_POST[$paramname])?$_POST[$paramname]:''); + elseif ($method==1) $out = isset($_GET[$paramname])?$_GET[$paramname]:''; + elseif ($method==2) $out = isset($_POST[$paramname])?$_POST[$paramname]:''; + elseif ($method==3) $out = isset($_POST[$paramname])?$_POST[$paramname]:(isset($_GET[$paramname])?$_GET[$paramname]:''); + + if (! empty($check)) + { + // Check if numeric + if ($check == 'int' && ! preg_match('/^[\.,0-9]+$/i',trim($out))) $out=''; + // Check if alpha + //if ($check == 'alpha' && ! preg_match('/^[ =:@#\/\\\(\)\-\._a-z0-9]+$/i',trim($out))) $out=''; + // '"' is dangerous because param in url can close the href= or src= and add javascript functions. + if ($check == 'alpha' && preg_match('/"/',trim($out))) $out=''; + } + + return $out; } diff --git a/htdocs/core/modules/DolibarrModules.class.php b/htdocs/core/modules/DolibarrModules.class.php index 463ae3c172f..59673f7971c 100644 --- a/htdocs/core/modules/DolibarrModules.class.php +++ b/htdocs/core/modules/DolibarrModules.class.php @@ -408,7 +408,7 @@ abstract class DolibarrModules $sql = "DELETE FROM ".MAIN_DB_PREFIX."dolibarr_modules"; $sql.= " WHERE numero = ".$this->numero; - $sql.= " AND entity in (0, ".$conf->entity.")"; + $sql.= " AND entity IN (0, ".$conf->entity.")"; dol_syslog(get_class($this)."::_dbunactive sql=".$sql, LOG_DEBUG); $this->db->query($sql); diff --git a/htdocs/core/modules/mailings/contacts3.modules.php b/htdocs/core/modules/mailings/contacts3.modules.php index 7bbb2c0c9c5..81d59d137b3 100755 --- a/htdocs/core/modules/mailings/contacts3.modules.php +++ b/htdocs/core/modules/mailings/contacts3.modules.php @@ -77,15 +77,15 @@ class mailing_contacts3 extends MailingTargets $sql.= " sp.name as name, sp.firstname as firstname, sp.civilite,"; $sql.= " s.nom as companyname"; $sql.= " FROM ".MAIN_DB_PREFIX."socpeople as sp,"; - $sql.= " ".MAIN_DB_PREFIX."societe as s,"; - $sql.= " ".MAIN_DB_PREFIX."categorie as c,"; - $sql.= " ".MAIN_DB_PREFIX."categorie_societe as cs"; + $sql.= " ".MAIN_DB_PREFIX."societe as s"; + if ($filtersarray[0] <> 'all') $sql.= ", ".MAIN_DB_PREFIX."categorie as c,"; + if ($filtersarray[0] <> 'all') $sql.= " ".MAIN_DB_PREFIX."categorie_societe as cs"; $sql.= " WHERE s.rowid = sp.fk_soc"; $sql.= " AND sp.email != ''"; // Note that null != '' is false $sql.= " AND sp.entity = ".$conf->entity; - $sql.= " AND cs.fk_categorie = c.rowid"; - $sql.= " AND cs.fk_societe = sp.fk_soc"; - if ($filtersarray[0] <> 'all') $sql.= " AND c.label = '".$filtersarray[0]."'"; + if ($filtersarray[0] <> 'all') $sql.= " AND cs.fk_categorie = c.rowid"; + if ($filtersarray[0] <> 'all') $sql.= " AND cs.fk_societe = sp.fk_soc"; + if ($filtersarray[0] <> 'all') $sql.= " AND c.label = '".$this->db->escape($filtersarray[0])."'"; $sql.= " ORDER BY sp.name, sp.firstname"; $resql = $this->db->query($sql); diff --git a/htdocs/core/tpl/freeproductline_view.tpl.php b/htdocs/core/tpl/freeproductline_view.tpl.php index 4d581d707d9..3039a9cf15f 100644 --- a/htdocs/core/tpl/freeproductline_view.tpl.php +++ b/htdocs/core/tpl/freeproductline_view.tpl.php @@ -50,7 +50,7 @@ } else { - echo ($txt?' - ':'').dol_htmlentitiesbr($line->description,1,true); + echo ($txt?' - ':'').dol_htmlentitiesbr($line->description); } } } @@ -59,7 +59,7 @@ if (! empty($line->fk_parent_line)) echo img_picto('', 'rightarrow'); if ($type==1) $text = img_object($langs->trans('Service'),'service'); else $text = img_object($langs->trans('Product'),'product'); - echo $text.' '.dol_htmlentitiesbr($line->description,1,true); + echo $text.' '.dol_htmlentitiesbr($line->description); // Show range print_date_range($line->date_start,$line->date_end); } diff --git a/htdocs/install/etape1.php b/htdocs/install/etape1.php index f1da07fa947..f10362dff79 100644 --- a/htdocs/install/etape1.php +++ b/htdocs/install/etape1.php @@ -35,6 +35,7 @@ $langs->setDefaultLang($setuplang); $langs->load("admin"); $langs->load("install"); +$langs->load("errors"); // Recuparation des information de connexion $userroot=isset($_POST["db_user_root"])?$_POST["db_user_root"]:""; @@ -94,6 +95,11 @@ if (! empty($_POST["db_port"]) && ! is_numeric($_POST["db_port"])) print '
'.$langs->trans("ErrorBadValueForParameter",$_POST["db_port"],$langs->transnoentities("Port")).'
'; $error++; } +if (! empty($_POST["db_prefix"]) && ! preg_match('/^[a-z0-9]+_$/i', $_POST["db_prefix"])) +{ + print '
'.$langs->trans("ErrorBadValueForParameter",$_POST["db_prefix"],$langs->transnoentities("DatabasePrefix")).'
'; + $error++; +} // Remove last / into dans main_dir @@ -365,12 +371,15 @@ if (! $error && $db->connected && $action == "set") } } } + + // Table prefix + $main_db_prefix = ((GETPOST("db_prefix") && GETPOST("db_prefix") != '') ? GETPOST("db_prefix") : 'llx_'); // Force https - $main_force_https = ((GETPOST("main_force_https") && ( GETPOST("main_force_https") == "on" || GETPOST("main_force_https") == 1) ) ? '1' : '0'); + $main_force_https = ((GETPOST("main_force_https") && (GETPOST("main_force_https") == "on" || GETPOST("main_force_https") == 1)) ? '1' : '0'); // Use alternative directory - $main_use_alt_dir = ((GETPOST("main_use_alt_dir") && ( GETPOST("main_use_alt_dir") == "on" || GETPOST("main_use_alt_dir") == 1) ) ? '' : '#'); + $main_use_alt_dir = ((GETPOST("main_use_alt_dir") && (GETPOST("main_use_alt_dir") == "on" || GETPOST("main_use_alt_dir") == 1)) ? '' : '#'); // Alternative root directory name $main_alt_dir_name = ((GETPOST("main_alt_dir_name") && GETPOST("main_alt_dir_name") != '') ? GETPOST("main_alt_dir_name") : 'custom'); @@ -724,7 +733,7 @@ function write_master_file($masterfile,$main_dir) function write_conf_file($conffile) { global $conf,$langs; - global $_POST,$main_dir,$main_data_dir,$main_force_https,$main_use_alt_dir,$main_alt_dir_name; + global $_POST,$main_dir,$main_data_dir,$main_force_https,$main_use_alt_dir,$main_alt_dir_name,$main_db_prefix; global $dolibarr_main_url_root,$dolibarr_main_document_root,$dolibarr_main_data_root,$dolibarr_main_db_host; global $dolibarr_main_db_port,$dolibarr_main_db_name,$dolibarr_main_db_user,$dolibarr_main_db_pass; global $dolibarr_main_db_type,$dolibarr_main_db_character_set,$dolibarr_main_db_collation,$dolibarr_main_authentication; @@ -777,6 +786,9 @@ function write_conf_file($conffile) fputs($fp, '$dolibarr_main_db_name=\''.addslashes($_POST["db_name"]).'\';'); fputs($fp,"\n"); + + fputs($fp, '$dolibarr_main_db_prefix=\''.addslashes($main_db_prefix).'\';'); + fputs($fp,"\n"); fputs($fp, '$dolibarr_main_db_user=\''.addslashes($_POST["db_user"]).'\';'); fputs($fp,"\n"); diff --git a/htdocs/install/etape2.php b/htdocs/install/etape2.php index 865989f9e61..8f81e55614c 100644 --- a/htdocs/install/etape2.php +++ b/htdocs/install/etape2.php @@ -188,6 +188,12 @@ if ($action == "set") { $buffer=preg_replace('/type=innodb/i','ENGINE=innodb',$buffer); } + + // Replace the prefix tables + if ($dolibarr_main_db_prefix != 'llx_') + { + $buffer=preg_replace('/llx_/i',$dolibarr_main_db_prefix,$buffer); + } //print "
Creation de la table $name/td>"; $requestnb++; @@ -330,6 +336,12 @@ if ($action == "set") $buffer=trim($req); if ($buffer) { + // Replace the prefix tables + if ($dolibarr_main_db_prefix != 'llx_') + { + $buffer=preg_replace('/llx_/i',$dolibarr_main_db_prefix,$buffer); + } + //print "
Creation des cles et index de la table $name: '$buffer'
'; diff --git a/htdocs/install/fileconf.php b/htdocs/install/fileconf.php index 9c5e21fbf3e..4b2caef19dd 100644 --- a/htdocs/install/fileconf.php +++ b/htdocs/install/fileconf.php @@ -40,16 +40,17 @@ $langs->load("errors"); // install.forced.php into directory htdocs/install (This is the case with some wizard // installer like DoliWamp, DoliMamp or DoliBuntu). // We first init "forced values" to nothing. -if (! isset($force_install_noedit)) $force_install_noedit=''; -if (! isset($force_install_type)) $force_install_type=''; -if (! isset($force_install_dbserver)) $force_install_dbserver=''; -if (! isset($force_install_port)) $force_install_port=''; -if (! isset($force_install_database)) $force_install_database=''; -if (! isset($force_install_createdatabase)) $force_install_createdatabase=''; -if (! isset($force_install_databaselogin)) $force_install_databaselogin=''; -if (! isset($force_install_databasepass)) $force_install_databasepass=''; -if (! isset($force_install_databaserootlogin)) $force_install_databaserootlogin=''; -if (! isset($force_install_databaserootpass)) $force_install_databaserootpass=''; +if (! isset($force_install_noedit)) $force_install_noedit=''; +if (! isset($force_install_type)) $force_install_type=''; +if (! isset($force_install_dbserver)) $force_install_dbserver=''; +if (! isset($force_install_port)) $force_install_port=''; +if (! isset($force_install_database)) $force_install_database=''; +if (! isset($force_install_prefix)) $force_install_prefix=''; +if (! isset($force_install_createdatabase)) $force_install_createdatabase=''; +if (! isset($force_install_databaselogin)) $force_install_databaselogin=''; +if (! isset($force_install_databasepass)) $force_install_databasepass=''; +if (! isset($force_install_databaserootlogin)) $force_install_databaserootlogin=''; +if (! isset($force_install_databaserootpass)) $force_install_databaserootpass=''; // Now we load forced value from install.forced.php file. $useforcedwizard=false; if (file_exists("./install.forced.php")) { $useforcedwizard=true; include_once("./install.forced.php"); } @@ -80,8 +81,7 @@ if (! empty($force_install_message)) } ?> - +
+ + + + + + +
@@ -348,6 +348,16 @@ if (! empty($force_install_message)) value=""> trans("DatabaseName"); ?>
trans("DatabasePrefix"); ?> + trans("DatabasePrefix"); ?>
trans("CreateDatabase"); ?> diff --git a/htdocs/langs/ca_ES/bills.lang b/htdocs/langs/ca_ES/bills.lang index 0bed48fefee..0c2333182d3 100644 --- a/htdocs/langs/ca_ES/bills.lang +++ b/htdocs/langs/ca_ES/bills.lang @@ -231,6 +231,7 @@ ReductionsShort=Dto. Discount=Descompte Discounts=Descomptes ShowDiscount=Veure el abonament +ShowReduc=Visualitzar la deducció RelativeDiscount=Descompte relatiu GlobalDiscount=Descompte fixe CreditNote=Abonament @@ -342,6 +343,7 @@ LawApplicationPart2=les mercaderies romanen en propietat de LawApplicationPart3=venedor fins al cobrament de LawApplicationPart4=els seus preus LimitedLiabilityCompanyCapital=SRL amb capital de +UseLine=Aplicar UseDiscount=Aplicar descompte UseCredit=Utilitzar crèdit UseCreditNoteInInvoicePayment=Reduir el pagament amb aquest crèdit @@ -384,4 +386,4 @@ PDFCrabeDescription=Model de factura complet (model recomanat per defecte) # oursin PDF Model PDFOursinDescription=Model de factura complet (model alternatiu) # NumRef Modules -TerreNumRefModelDesc1=Retorna el nombre sota el format %syymm-nnnn per a les factures i %syymm-nnnn per als abonaments on yy és l'any, mm. el mes i nnnn un comptador seqüencial sense ruptura i sense permanència a 0 +TerreNumRefModelDesc1=Retorna el nombre sota el format %syymm-nnnn per a les factures i %syymm-nnnn per als abonaments on yy és l'any, mm. el mes i nnnn un comptador seqüencial sense ruptura i sense permanència a 0 \ No newline at end of file diff --git a/htdocs/langs/ca_ES/boxes.lang b/htdocs/langs/ca_ES/boxes.lang index 5c1e38c97b7..f87373490c4 100644 --- a/htdocs/langs/ca_ES/boxes.lang +++ b/htdocs/langs/ca_ES/boxes.lang @@ -46,16 +46,18 @@ BoxTitleTotalUnpaidSuppliersBills=Pendent a proveïdors BoxTitleLastModifiedContacts=Els últims %s contactes/adreçes modificades BoxTitleLastModifiedMembers=Els %s últims membres modificats BoxMyLastBookmarks=Els meus %s darrers marcadors +BoxOldestExpiredServices=Serveis antics expirats +BoxLastExpiredServices=Els %s contractes més antics amb serveis actius expirats +BoxTitleLastActionsToDo=Les %s últims esdeveniments a realitzar +BoxTitleLastContracts=Els %s últims contractes +BoxTitleLastModifiedDonations=Les %s últimes subvencions modificades +BoxTitleLastModifiedExpenses=Els %s últims honoraris modificats FailedToRefreshDataInfoNotUpToDate=Error en el refresc del flux RSS. Data de l'últim refresc :%s LastRefreshDate=Data darrera actualització NoRecordedBookmarks=No hi ha marcadors personals. ClickToAdd=Haga feu clic aquí per afegir. NoRecordedCustomers=Cap client registrat NoRecordedContacts=Cap contacte registrat -BoxTitleLastActionsToDo=Les %s últims esdeveniments a realitzar -BoxTitleLastContracts=Els %s últims contractes -BoxTitleLastModifiedDonations=Les %s últimes subvencions modificades -BoxTitleLastModifiedExpenses=Els %s últims honoraris modificats NoActionsToDo=Sense esdeveniments a realitzar NoRecordedOrders=Sense comandes de clients registrats NoRecordedProposals=Sense pressupostos registrats diff --git a/htdocs/langs/ca_ES/contracts.lang b/htdocs/langs/ca_ES/contracts.lang index bfd921fc256..fdfb72003a4 100644 --- a/htdocs/langs/ca_ES/contracts.lang +++ b/htdocs/langs/ca_ES/contracts.lang @@ -1,4 +1,4 @@ -# Dolibarr language file - ca_ES - contracts +# Dolibarr language file - ca_ES - contracts CHARSET=UTF-8 ContractsArea=Àrea contractes ListOfContracts=Llistat de contractes @@ -84,6 +84,7 @@ ConfirmMoveToAnotherContractQuestion=Escolliu qualsevol altre contracte del mate PaymentRenewContractId=Renovació servei (número %s) ExpiredSince=Expirat des del RelatedContracts=Contractes associats +NoExpiredServices=Sense serveis actius expirats ##### Types de contacts ##### TypeContact_contrat_internal_SALESREPSIGN=Comercial signant del contracte TypeContact_contrat_internal_SALESREPFOLL=Comercial seguiment del contracte diff --git a/htdocs/langs/ca_ES/errors.lang b/htdocs/langs/ca_ES/errors.lang index 08be00bafa6..dd2057d7bd2 100644 --- a/htdocs/langs/ca_ES/errors.lang +++ b/htdocs/langs/ca_ES/errors.lang @@ -1,8 +1,7 @@ -# Dolibarr language file - ca_ES - errors +# Dolibarr language file - ca_ES - errors CHARSET=UTF-8 MenuManager=Gestor de menú - -# Errors +# Errors=undefined= Error=Error Errors=Errors ErrorBadEMail=e-mail %s incorrecte @@ -71,7 +70,7 @@ ErrorFileIsInfectedWithAVirus=L'antivirus no ha pogut validar aquest arxiu (és ErrorSpecialCharNotAllowedForField=Els caràcters especials no són admesos pel camp "%s" ErrorDatabaseParameterWrong=El paràmetre de configuració de la base de dades '%s' té un valor no compatible per una instal lació de Dolibarr (ha de tenir el valor '%s'). ErrorNumRefModel=Hi ha una referència a la base de dades (%s) i és incompatible amb aquesta numeració. Elimineu la línia o renomeneu la referència per activar aquest mòdul. -ErrorQtyTooLowForThisSupplier= Quantitat insuficient per aquest proveïdor +ErrorQtyTooLowForThisSupplier=Quantitat insuficient per aquest proveïdor ErrorModuleSetupNotComplete=La configuració del mòdul sembla incompleta. Aneu al àrea Configuració - Mòduls per corregir ErrorBadMask=Error en la màscara ErrorBadMaskFailedToLocatePosOfSequence=Error, sense número de seqüència en la màscara @@ -98,15 +97,15 @@ ErrorFailedToChangePassword=Error en la modificació de la contrasenya ErrorLoginDoesNotExists=El compte d'usuari de %s no s'ha trobat. ErrorLoginHasNoEmail=Aquest usuari no té e-mail. Impossible continuar. ErrorBadValueForCode=Valor no vàlid per al codi. Torneu a intentar-ho amb un nou valor ... - +ErrorBothFieldCantBeNegative=Els camps %s i %s no poden ser negatius # Warnings -WarningNoDocumentModelActivated=No hi ha cap model per a la generació del document activat. Es prendrà un model per defecte fins que es configuri el mòdul. -WarningsOnXLines=Alertes a %s línies font -WarningConfFileMustBeReadOnly=Atenció, el seu fitxer (htdocs/conf/conf.php) és accessible en escriptura al servidor web. Això representa un error seriós de seguretat. Modifiqueu els permisos per ser llegit únicament pel compte que executa el servidor Web.Si està executant Windows en undisco amb format FAT, sigui conscient que aquest sistema d'arxius no protegeix els arxius i no ofereix cap solució per reduir els riscos de manipulació d'aquest fitxer. WarningSafeModeOnCheckExecDir=Atenció, està activada l'opció PHP safe_mode, la comanda ha d'estar dins d'un directori declarat dins del paràmetre php safe_mode_exec_dir. WarningAllowUrlFopenMustBeOn=El paràmetre allow_url_fopen ha de ser especificat a on a l'arxiu php.ini per disposar d'aquest mòdul completament actiu. Ha de modificar aquest arxiu manualment WarningBuildScriptNotRunned=L'script %s encara no ha executat la construcció de gràfics. WarningBookmarkAlreadyExists=Ja existeix un marcador amb aquest títol o aquest URL. WarningPassIsEmpty=Atenció: La contrasenya de la base de dades està buida. Això és un forat de seguretat. Cal afegir una contrasenya a la seva base de dades i canviar el seu arxiu conf.php per reflectir això. +WarningConfFileMustBeReadOnly=Atenció, el seu fitxer (htdocs/conf/conf.php) és accessible en escriptura al servidor web. Això representa un error seriós de seguretat. Modifiqueu els permisos per ser llegit únicament pel compte que executa el servidor Web.Si està executant Windows en undisco amb format FAT, sigui conscient que aquest sistema d'arxius no protegeix els arxius i no ofereix cap solució per reduir els riscos de manipulació d'aquest fitxer. +WarningsOnXLines=Alertes a %s línies font +WarningNoDocumentModelActivated=No hi ha cap model per a la generació del document activat. Es prendrà un model per defecte fins que es configuri el mòdul. WarningInstallDirExists=Atenció: La carpeta install (htdocs/install) encara existeix. Una vegada finalitzada la instal·lació la seva presència no és necessària, i representa un error seriós de seguretat. Hauríeu eliminar-la el més aviat possible. WarningUntilDirRemoved=Aquesta alerta seguirà activa mentre la carpeta existeixi (alerta visible per als usuaris admin solament). \ No newline at end of file diff --git a/htdocs/langs/ca_ES/install.lang b/htdocs/langs/ca_ES/install.lang index c3ac01b7081..1a6b3862337 100644 --- a/htdocs/langs/ca_ES/install.lang +++ b/htdocs/langs/ca_ES/install.lang @@ -1,4 +1,4 @@ -# Dolibarr language file - ca_ES - install +# Dolibarr language file - ca_ES - install CHARSET=UTF-8 InstallEasy=Hem procurat que la instal·lació sigui el més simple possible, vostè només ha de seguir els passos un a un. MiscellanousChecks=Comprovació dels Prerequisits @@ -51,6 +51,7 @@ ServerAddressDescription=Nom o adreça IP del servidor de base de dades, general ServerPortDescription=Port del servidor de la base de dades. Deixar en blanc si ho desconeix. DatabaseServer=Servidor de la base de dades DatabaseName=Nom de la base de dades +DatabasePrefix=Prefixe per a les taules Login=Usuari AdminLogin=Usuari de l'administrador de la base de dades Dolibarr. Deixi buit si es connecta com a anonymous Password=Contrasenya @@ -152,8 +153,9 @@ MigrationShippingDelivery=Actualització de les dades de expedicions MigrationShippingDelivery2=Actualització de les dades expedicions 2 MigrationFinished=Acabada l'actualització LastStepDesc=Últim pas: Indiqueu aquí el compte i la contrasenya del primer usuari que fareu servir per connectar-se a l'aplicació. No perdi aquests identificadors, és el compte que permet administrar la resta. -######### -# upgrade +ActivateModule=Activació del mòdul %s +#########=undefined +# upgrade=undefined MigrationFixData=Correcció de dades desnormalitzades MigrationOrder=Migració de dades de les comandes clients MigrationSupplierOrder=Migració de dades de les comandes a proveïdors @@ -163,56 +165,56 @@ MigrationContract=Migració de dades dels contractes MigrationSuccessfullUpdate=Actualització finalitzada MigrationUpdateFailed=L'actualització ha fallat MigrationRelationshipTables=Migració de les taules de relació (%s) -# Payments Update +# Payments Update MigrationPaymentsUpdate=Actualització dels pagaments (vincle nn pagaments-factures) MigrationPaymentsNumberToUpdate=%s pagament(s) a actualitzar MigrationProcessPaymentUpdate=Actualització pagament(s) %s MigrationPaymentsNothingToUpdate=No hi ha més pagaments orfes que hagin de corregir. MigrationPaymentsNothingUpdatable=Cap pagament orfe de correcció. -# Contracts Update +# Contracts Update MigrationContractsUpdate=Actualització dels contractes sense detalls (gestió del contracte + detall de contracte) MigrationContractsNumberToUpdate=%s contracte(s) a actualitzar MigrationContractsLineCreation=Creació linia contracte per contracte Ref. %s MigrationContractsNothingToUpdate=No hi ha més contractes (vinculats a un producte) sense línies de detalls que hagin de corregir. MigrationContractsFieldDontExist=Els camps fk_facture no existeixen ja. No hi ha operació pendent. -# Contracts Empty Dates Update +# Contracts Empty Dates Update MigrationContractsEmptyDatesUpdate=Actualització de les dades de contractes no indicades MigrationContractsEmptyDatesUpdateSuccess=Ok per data de contracte MigrationContractsEmptyDatesNothingToUpdate=No hi ha més properes dates de contractes. MigrationContractsEmptyCreationDatesUpdateSuccess=Ok per la data de creació MigrationContractsEmptyCreationDatesNothingToUpdate=No hi ha més properes dates de creació. -# Contracts Invalid Dates Update +# Contracts Invalid Dates Update MigrationContractsInvalidDatesUpdate=Actualització dades contracte incorrectes (per contractes amb detall en servei) MigrationContractsInvalidDateFix=Corregir contracte %s (data contracte=%s, Data posada en servei min=%s) MigrationContractsInvalidDatesNumber=%s contractes modificats MigrationContractsInvalidDatesNothingToUpdate=No hi ha més de contractes que hagin de corregir-se. -# Contracts Incoherent Dates Update +# Contracts Incoherent Dates Update MigrationContractsIncoherentCreationDateUpdate=Actualització de les dades de creació de contracte que tenen un valor incoherent MigrationContractsIncoherentCreationDateUpdateSuccess=Ok MigrationContractsIncoherentCreationDateNothingToUpdate=No hi ha més dades de contractes. -# Reopening Contracts +# Reopening Contracts MigrationReopeningContracts=Reobertura dels contractes que tenen almenys un servei actiu no tancat MigrationReopenThisContract=Reobertura contracte %s MigrationReopenedContractsNumber=%s contractes modificats MigrationReopeningContractsNothingToUpdate=No hi ha més contractes que hagin de reobrirse. -# Migration transfert +# Migration transfert MigrationBankTransfertsUpdate=Actualització dels vincles entre registres bancaris i una transferència entre compte MigrationBankTransfertsNothingToUpdate=Cap vincle desfasat -# Migration delivery +# Migration delivery MigrationShipmentOrderMatching=Actualitzar notes d'expedició MigrationDeliveryOrderMatching=Actualitzar recepcions MigrationDeliveryDetail=Actualitzar recepcions -# Migration stock +# Migration stock MigrationStockDetail=Actualitzar valor en stock dels productes -# Migration menus +# Migration menus MigrationMenusDetail=Actualització de la taula de menús dinàmics -# Migration delivery address +# Migration delivery address MigrationDeliveryAddress=Actualització de les adreces d'enviament en les notes de lliurament -# Migration project task actors +# Migration project task actors MigrationProjectTaskActors=Migració de la taula llx_projet_task_actors -# Migration project user resp +# Migration project user resp MigrationProjectUserResp=Migració del camp fk_user_resp de llx_projet a llx_element_contact -# Migration project task time +# Migration project task time MigrationProjectTaskTime=Actualització de temps dedicat en segons -# Migration Acctioncom +# Migration Acctioncom=undefined MigrationActioncommElement=Actualització de les dades de accions sobre elements \ No newline at end of file diff --git a/htdocs/langs/en_US/install.lang b/htdocs/langs/en_US/install.lang index 437e11c0faa..700f4750687 100644 --- a/htdocs/langs/en_US/install.lang +++ b/htdocs/langs/en_US/install.lang @@ -51,6 +51,7 @@ ServerAddressDescription=Name or ip address for database server, usually 'localh ServerPortDescription=Database server port. Keep empty if unknown. DatabaseServer=Database server DatabaseName=Database name +DatabasePrefix=Database prefix table Login=Login AdminLogin=Login for Dolibarr database owner. Password=Password diff --git a/htdocs/langs/es_ES/bills.lang b/htdocs/langs/es_ES/bills.lang index 9501abc248f..e51b916dc7b 100644 --- a/htdocs/langs/es_ES/bills.lang +++ b/htdocs/langs/es_ES/bills.lang @@ -231,6 +231,7 @@ ReductionsShort=Dto. Discount=Descuento Discounts=Descuentos ShowDiscount=Ver el abono +ShowReduc=Visualizar la deducción RelativeDiscount=Descuento relativo GlobalDiscount=Descuento fijo CreditNote=Abono @@ -342,6 +343,7 @@ LawApplicationPart2=las mercancías permanecen en propiedad de LawApplicationPart3=vendedor hasta el completo cobro de LawApplicationPart4=sus precios LimitedLiabilityCompanyCapital=SRL con capital de +UseLine=Aplicar UseDiscount=Aplicar descuento UseCredit=Usar crédito UseCreditNoteInInvoicePayment=Reducir el pago con este crédito @@ -384,4 +386,4 @@ PDFCrabeDescription=Modelo de factura completo (modelo recomendado por defecto) # oursin PDF Model PDFOursinDescription=Modelo de factura completo (modelo alternativo) # NumRef Modules -TerreNumRefModelDesc1=Devuelve el número bajo el formato %syymm-nnnn para las facturas y %syymm-nnnn para los abonos donde yy es el año, mm. el mes y nnnn un contador secuencial sin ruptura y sin permanencia a 0 +TerreNumRefModelDesc1=Devuelve el número bajo el formato %syymm-nnnn para las facturas y %syymm-nnnn para los abonos donde yy es el año, mm. el mes y nnnn un contador secuencial sin ruptura y sin permanencia a 0 \ No newline at end of file diff --git a/htdocs/langs/es_ES/boxes.lang b/htdocs/langs/es_ES/boxes.lang index 7ff3a8d01ad..734c8e0c8cd 100644 --- a/htdocs/langs/es_ES/boxes.lang +++ b/htdocs/langs/es_ES/boxes.lang @@ -1,4 +1,4 @@ -# Dolibarr language file - es_ES - boxes +# Dolibarr language file - es_ES - boxes CHARSET=UTF-8 BoxLastRssInfos=Hilos de información RSS BoxLastProducts=Los %s últimos productos/servicios @@ -46,16 +46,18 @@ BoxTitleTotalUnpaidSuppliersBills=Pendiente a proveedores BoxTitleLastModifiedContacts=Los %s últimos contactos/direcciones modificadas BoxTitleLastModifiedMembers=Los %s últimos miembros modificados BoxMyLastBookmarks=Mis %s últimos marcadores +BoxOldestExpiredServices=Servicios antiguos expirados +BoxLastExpiredServices=Los %s contratos más antiguos con servicios activos expirados +BoxTitleLastActionsToDo=Los %s últimos eventos a realizar +BoxTitleLastContracts=Los %s últimos contratos +BoxTitleLastModifiedDonations=Las %s últimas subvenciones modificadas +BoxTitleLastModifiedExpenses=Los %s últimos honorarios modificados FailedToRefreshDataInfoNotUpToDate=Error en el refresco del flujo RSS. Fecha del último refresco: %s LastRefreshDate=Fecha última actualización NoRecordedBookmarks=No hay marcadores personales. ClickToAdd=Haga clic aquí para añadir. NoRecordedCustomers=Ningún cliente registrado NoRecordedContacts=Ningún contacto registrado -BoxTitleLastActionsToDo=Los %s últimos eventos a realizar -BoxTitleLastContracts=Los %s últimos contratos -BoxTitleLastModifiedDonations=Las %s últimas subvenciones modificadas -BoxTitleLastModifiedExpenses=Los %s últimos honorarios modificados NoActionsToDo=Sin eventos a realizar NoRecordedOrders=Sin pedidos de clientes registrados NoRecordedProposals=Sin presupuestos registrados diff --git a/htdocs/langs/es_ES/contracts.lang b/htdocs/langs/es_ES/contracts.lang index 114ba38906b..12298ce4ca6 100644 --- a/htdocs/langs/es_ES/contracts.lang +++ b/htdocs/langs/es_ES/contracts.lang @@ -1,4 +1,4 @@ -# Dolibarr language file - es_ES - contracts +# Dolibarr language file - es_ES - contracts CHARSET=UTF-8 ContractsArea=Área contratos ListOfContracts=Listado de contratos @@ -84,10 +84,11 @@ ConfirmMoveToAnotherContractQuestion=Elija cualquier otro contrato del mismo ter PaymentRenewContractId=Renovación servicio (número %s) ExpiredSince=Expirado desde el RelatedContracts=Contratos asociados +NoExpiredServices=Sin servicios activos expirados ##### Types de contacts ##### TypeContact_contrat_internal_SALESREPSIGN=Comercial firmante del contrato TypeContact_contrat_internal_SALESREPFOLL=Comercial seguimiento del contrato TypeContact_contrat_external_BILLING=Contacto cliente de facturación del contrato TypeContact_contrat_external_CUSTOMER=Contacto cliente seguimiento del contrato TypeContact_contrat_external_SALESREPSIGN=Contacto cliente firmante del contrato -Error_CONTRACT_ADDON_NotDefined=Constante CONTRACT_ADDON no definida \ No newline at end of file +Error_CONTRACT_ADDON_NotDefined=Constante CONTRACT_ADDON no definida \ No newline at end of file diff --git a/htdocs/langs/es_ES/errors.lang b/htdocs/langs/es_ES/errors.lang index 78a6d28c59e..170e20451b0 100644 --- a/htdocs/langs/es_ES/errors.lang +++ b/htdocs/langs/es_ES/errors.lang @@ -1,8 +1,7 @@ -# Dolibarr language file - es_ES - errors +# Dolibarr language file - es_ES - errors CHARSET=UTF-8 MenuManager=Gestor de menú - -# Errors +# Errors=undefined Error=Error Errors=Errores ErrorBadEMail=e-mail %s no correcto @@ -71,7 +70,7 @@ ErrorFileIsInfectedWithAVirus=¡El antivirus no ha podido validar este archivo ( ErrorSpecialCharNotAllowedForField=Los caracteres especiales no son admitidos por el campo "%s" ErrorDatabaseParameterWrong=El parámetro de configuración de la base de datos '%s' tiene un valor no compatible para una instalación de Dolibarr (debe tener el valor '%s'). ErrorNumRefModel=Hay una referencia en la base de datos (%s) y es incompatible con esta numeración. Elimine la línea o renombre la referencia para activar este módulo. -ErrorQtyTooLowForThisSupplier= Cantidad insuficiente para este proveedor +ErrorQtyTooLowForThisSupplier=Cantidad insuficiente para este proveedor ErrorModuleSetupNotComplete=La configuración del módulo parece incompleta. Vaya al área Configuración - Módulos para corregir ErrorBadMask=Error en la máscara ErrorBadMaskFailedToLocatePosOfSequence=Error, sin número de secuencia en la máscara @@ -98,7 +97,7 @@ ErrorFailedToChangePassword=Error en la modificación de la contraseña ErrorLoginDoesNotExists=La cuenta de usuario de %s no se ha encontrado. ErrorLoginHasNoEmail=Este usuario no tiene e-mail. Imposible continuar. ErrorBadValueForCode=Valor incorrecto para el código. Vuelva a intentar con un nuevo valor... - +ErrorBothFieldCantBeNegative=Los campos %s y %s no pueden ser negativos # Warnings WarningSafeModeOnCheckExecDir=Atención, está activada la opción PHP safe_mode, el comando deberá estar dentro de un directorio declarado dentro del parámetro php safe_mode_exec_dir. WarningAllowUrlFopenMustBeOn=El parámetro allow_url_fopen debe ser especificado a on en el archivo php.ini para disponer de este módulo completamente activo. Debe modificar este archivo manualmente diff --git a/htdocs/langs/es_ES/install.lang b/htdocs/langs/es_ES/install.lang index dcd1d5eeb40..1009d1a1e9f 100644 --- a/htdocs/langs/es_ES/install.lang +++ b/htdocs/langs/es_ES/install.lang @@ -51,6 +51,7 @@ ServerAddressDescription=Nombre o dirección IP del servidor de base de datos, g ServerPortDescription=Puerto del servidor de la base de datos. Dejar en blanco si lo desconoce. DatabaseServer=Servidor de la base de datos DatabaseName=Nombre de la base de datos +DatabasePrefix=Prefijo para las tablas Login=Usuario AdminLogin=Usuario del administrador de la base de datos Dolibarr. Deje vacío si se conecta en anonymous Password=Contraseña @@ -152,6 +153,7 @@ MigrationShippingDelivery=Actualización de los datos de expediciones MigrationShippingDelivery2=Actualización de los datos de expediciones 2 MigrationFinished=Actualización terminada LastStepDesc=Último paso: Indique aquí la cuenta y la contraseña del primer usuario que usted utilizará para conectarse a la aplicación. No pierda estos identificadores, es la cuenta que permite administrar el resto. +ActivateModule=Activación del módulo %s ######### # upgrade MigrationFixData=Corrección de datos desnormalizados @@ -163,56 +165,56 @@ MigrationContract=Migración de datos de los contratos MigrationSuccessfullUpdate=Actualización finalizada MigrationUpdateFailed=La actualización ha fallado MigrationRelationshipTables=Migración de las tablas de relación (%s) -# Payments Update +# Payments Update= MigrationPaymentsUpdate=Actualización de los pagos (vínculo n-n pagos-facturas) MigrationPaymentsNumberToUpdate=%s pago(s) a actualizar MigrationProcessPaymentUpdate=Actualización pago(s) %s MigrationPaymentsNothingToUpdate=No hay más pagos huérfanos que deban corregirse. MigrationPaymentsNothingUpdatable=Ningún pago huérfano corregible. -# Contracts Update +# Contracts Update= MigrationContractsUpdate=Actualización de los contratos sin detalles (gestión del contrato + detalle de contrato) MigrationContractsNumberToUpdate=%s contrato(s) a actualizar MigrationContractsLineCreation=Creación linea contrato para contrato Ref. %s MigrationContractsNothingToUpdate=No hay más contratos (vinculados a un producto) sin líneas de detalles que deban corregirse. MigrationContractsFieldDontExist=Los campos fk_facture no existen ya. No hay operación pendiente. -# Contracts Empty Dates Update +# Contracts Empty Dates Update= MigrationContractsEmptyDatesUpdate=Actualización de las fechas de contratos no indicadas MigrationContractsEmptyDatesUpdateSuccess=Ok para fecha de contrato MigrationContractsEmptyDatesNothingToUpdate=No hay más próximas fechas de contratos. MigrationContractsEmptyCreationDatesUpdateSuccess=Ok para la fecha de creación MigrationContractsEmptyCreationDatesNothingToUpdate=No hay más próximas fechas de creación. -# Contracts Invalid Dates Update +# Contracts Invalid Dates Update= MigrationContractsInvalidDatesUpdate=Actualización fechas contrato incorrectas (para contratos con detalle en servicio) MigrationContractsInvalidDateFix=Corregir contrato %s (fecha contrato=%s, Fecha puesta en servicio min=%s) MigrationContractsInvalidDatesNumber=%s contratos modificados MigrationContractsInvalidDatesNothingToUpdate=No hay más de contratos que deban corregirse. -# Contracts Incoherent Dates Update +# Contracts Incoherent Dates Update= MigrationContractsIncoherentCreationDateUpdate=Actualización de las fechas de creación de contrato que tienen un valor incoherente MigrationContractsIncoherentCreationDateUpdateSuccess=Ok MigrationContractsIncoherentCreationDateNothingToUpdate=No hay más fechas de contratos. -# Reopening Contracts +# Reopening Contracts= MigrationReopeningContracts=Reapertura de los contratos que tienen al menos un servicio activo no cerrado MigrationReopenThisContract=Reapertura contrato %s MigrationReopenedContractsNumber=%s contratos modificados MigrationReopeningContractsNothingToUpdate=No hay más contratos que deban reabrirse. -# Migration transfert +# Migration transfert= MigrationBankTransfertsUpdate=Actualización de los vínculos entre registros bancarios y una transferencia entre cuenta MigrationBankTransfertsNothingToUpdate=Ningún vínculo desfasado -# Migration delivery +# Migration delivery= MigrationShipmentOrderMatching=Actualizar notas de expedición MigrationDeliveryOrderMatching=Actualizar recepciones MigrationDeliveryDetail=Actualizar recepciones -# Migration stock +# Migration stock= MigrationStockDetail=Actualizar valor en stock de los productos -# Migration menus +# Migration menus= MigrationMenusDetail=Actualización de la tabla de menús dinámicos -# Migration delivery address +# Migration delivery address= MigrationDeliveryAddress=Actualización de las direcciones de envío en las notas de entrega -# Migration project task actors +# Migration project task actors= MigrationProjectTaskActors=Migración de la tabla llx_projet_task_actors -# Migration project user resp +# Migration project user resp= MigrationProjectUserResp=Migración del campo fk_user_resp de llx_projet a llx_element_contact -# Migration project task time +# Migration project task time= MigrationProjectTaskTime=Actualización de tiempo dedicado en segundos # Migration Acctioncom -MigrationActioncommElement=Actualización de los datos de acciones sobre elementos \ No newline at end of file +MigrationActioncommElement=Actualización de los datos de acciones sobre elementos diff --git a/htdocs/langs/fr_FR/install.lang b/htdocs/langs/fr_FR/install.lang index 83619fd68aa..55872123ef4 100644 --- a/htdocs/langs/fr_FR/install.lang +++ b/htdocs/langs/fr_FR/install.lang @@ -51,6 +51,7 @@ ServerAddressDescription=Nom ou adresse ip du serveur de base de données, gén ServerPortDescription=Port du serveur. Ne rien mettre si inconnu. DatabaseServer=Serveur de la base de données DatabaseName=Nom de la base de données +DatabasePrefix=Préfixe des tables Login=Login AdminLogin=Login du propriétaire de la base de données Dolibarr. Password=Mot de passe