From 44746c1899ceddd876f6a775a7e80455ca723691 Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Fri, 15 Apr 2016 13:46:20 +0200 Subject: [PATCH 001/212] Merge remote-tracking branch 'upstream/3.8' into 3.9 Conflicts: htdocs/compta/localtax/quadri_detail.php --- htdocs/compta/localtax/quadri_detail.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/localtax/quadri_detail.php b/htdocs/compta/localtax/quadri_detail.php index a4eaccba35b..925ca7fc592 100644 --- a/htdocs/compta/localtax/quadri_detail.php +++ b/htdocs/compta/localtax/quadri_detail.php @@ -220,9 +220,9 @@ else foreach(array_keys($x_coll) as $my_coll_rate) { $x_both[$my_coll_rate]['coll']['totalht'] = $x_coll[$my_coll_rate]['totalht']; - $x_both[$my_coll_rate]['coll']['vat'] = $x_coll[$my_coll_rate]['vat']; + $x_both[$my_coll_rate]['coll']['localtax'.$local] = $x_coll[$my_coll_rate]['localtax'.$local]; $x_both[$my_coll_rate]['paye']['totalht'] = 0; - $x_both[$my_coll_rate]['paye']['vat'] = 0; + $x_both[$my_coll_rate]['paye']['localtax'.$local] = 0; $x_both[$my_coll_rate]['coll']['links'] = ''; $x_both[$my_coll_rate]['coll']['detail'] = array(); foreach($x_coll[$my_coll_rate]['facid'] as $id=>$dummy) From 66c73015b2aa8de2f43e494fafe9a1bb84e2f7c8 Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Fri, 3 Jun 2016 23:58:54 +0200 Subject: [PATCH 002/212] Fix issues with strict mode --- htdocs/compta/index.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/index.php b/htdocs/compta/index.php index ea154303d20..37999567738 100644 --- a/htdocs/compta/index.php +++ b/htdocs/compta/index.php @@ -2,7 +2,7 @@ /* Copyright (C) 2001-2005 Rodolphe Quiedeville * Copyright (C) 2004-2013 Laurent Destailleur * Copyright (C) 2005-2015 Regis Houssin - * Copyright (C) 2015 Juanjo Menent + * Copyright (C) 2015-2016 Juanjo Menent * Copyright (C) 2015 Jean-François Ferry * Copyright (C) 2015 Raphaël Doursenaud * Copyright (C) 2016 Marcos García @@ -877,7 +877,7 @@ if (! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture- if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id; if ($socid) $sql.= " AND ff.fk_soc = ".$socid; $sql.= " GROUP BY ff.rowid, ff.ref, ff.fk_statut, ff.libelle, ff.total_ht, ff.tva, ff.total_tva, ff.total_ttc, ff.paye,"; - $sql.= " s.nom, s.rowid, s.code_client, s.code_fournisseur"; + $sql.= " s.nom, s.rowid, s.code_client, s.code_fournisseur, ff.date_lim_reglement"; $sql.= " ORDER BY ff.date_lim_reglement ASC"; $resql=$db->query($sql); From ff6daebee68dd457544e7833854bb0be15355abb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 4 Jun 2016 01:19:27 +0200 Subject: [PATCH 003/212] FIX #5203 --- htdocs/fourn/class/fournisseur.product.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fourn/class/fournisseur.product.class.php b/htdocs/fourn/class/fournisseur.product.class.php index f41a4b4e69a..30381c8c39d 100644 --- a/htdocs/fourn/class/fournisseur.product.class.php +++ b/htdocs/fourn/class/fournisseur.product.class.php @@ -277,7 +277,7 @@ class ProductFournisseur extends Product $error++; } - if (! $error && !empty($cong->global->PRODUCT_PRICE_SUPPLIER_NO_LOG)) + if (! $error && !empty($conf->global->PRODUCT_PRICE_SUPPLIER_NO_LOG)) { // Add record into log table $sql = "INSERT INTO ".MAIN_DB_PREFIX."product_fournisseur_price_log("; From a1c7632a501502efbe248f9c8d092404257af7f9 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Sat, 4 Jun 2016 01:28:51 +0200 Subject: [PATCH 004/212] Fix import mapping #5229 --- htdocs/imports/import.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/htdocs/imports/import.php b/htdocs/imports/import.php index c6fe3094b68..d2d0540ee80 100644 --- a/htdocs/imports/import.php +++ b/htdocs/imports/import.php @@ -617,6 +617,10 @@ if ($step == 4 && $datatoimport) $obj->separator = $separator; $obj->enclosure = $enclosure; } + + if(!empty(GETPOST('update'))) { + $array_match_file_to_database=array(); + } // Load source fields in input file $fieldssource=array(); @@ -738,7 +742,7 @@ if ($step == 4 && $datatoimport) print ''; print '    '.$langs->trans("Enclosure").' : '; print ''; - print ''; + print ''; print ''; print ''; } From 32b6766a7d560d7c47a042f363709588b8124ae7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 4 Jun 2016 01:50:01 +0200 Subject: [PATCH 005/212] FIX #5195 --- htdocs/fourn/commande/card.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index a0cf8bc11bb..a9a4024c3ae 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -1006,7 +1006,6 @@ if (empty($reshook)) } $idprod = $productsupplier->find_min_price_product_fournisseur($lines[$i]->fk_product, $lines[$i]->qty); - $res = $productsupplier->fetch($idProductFourn); $result = $object->addline( $desc, @@ -1017,7 +1016,7 @@ if (empty($reshook)) $lines[$i]->localtax2_tx, $lines[$i]->fk_product, $productsupplier->product_fourn_price_id, - $productsupplier->ref_fourn, + $productsupplier->fourn_ref, $lines[$i]->remise_percent, 'HT', 0, From c9834117c9999c6b2c825caea83e70d8d77e4d39 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 4 Jun 2016 02:03:30 +0200 Subject: [PATCH 006/212] Fix #5156 --- htdocs/langs/en_US/main.lang | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index a60b3ddb21b..aaa1085e377 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -149,6 +149,7 @@ Save=Save SaveAs=Save As TestConnection=Test connection ToClone=Clone +ConfirmCloneAction=Are you sure you want to clone this event ? ConfirmClone=Choose data you want to clone : NoCloneOptionsSpecified=No data to clone defined. Of=of From 01b881a0a692cb3d708c1471155b3539a40c4c96 Mon Sep 17 00:00:00 2001 From: phf Date: Sat, 4 Jun 2016 13:24:42 +0200 Subject: [PATCH 007/212] Fix builddoc with odt lost value of extrafields as "sellist" on view card --- .../modules/propale/doc/doc_generic_proposal_odt.modules.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php b/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php index d696d95c4d5..2479acaaaec 100644 --- a/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php +++ b/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php @@ -381,6 +381,7 @@ class doc_generic_proposal_odt extends ModelePDFPropales $tmparray = array_merge($array_user,$array_soc,$array_thirdparty,$array_objet,$array_other,$array_thirdparty_contact); complete_substitutions_array($tmparray, $outputlangs, $object); + $object->fetch_optionals(); // Call the ODTSubstitution hook $parameters=array('file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs,'substitutionarray'=>&$tmparray); $reshook=$hookmanager->executeHooks('ODTSubstitution',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks From bd2fe75d08dde06f130a1e8408f0992458747b4a Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Sat, 4 Jun 2016 14:45:03 +0200 Subject: [PATCH 008/212] Fix menus in dashboard links --- htdocs/comm/propal/class/propal.class.php | 2 +- htdocs/commande/class/commande.class.php | 2 +- htdocs/compta/facture/class/facture.class.php | 2 +- htdocs/core/menus/standard/eldy.lib.php | 4 ++-- htdocs/fourn/class/fournisseur.commande.class.php | 2 +- htdocs/fourn/class/fournisseur.facture.class.php | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index 939054a06eb..74ee7488f56 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -2528,7 +2528,7 @@ class Propal extends CommonObject $response = new WorkboardResponse(); $response->warning_delay = $delay_warning/60/60/24; $response->label = $label; - $response->url = DOL_URL_ROOT.'/comm/propal/list.php?viewstatut='.$statut; + $response->url = DOL_URL_ROOT.'/comm/propal/list.php?viewstatut='.$statut.'&mainmenu=commercial&leftmenu=propals'; $response->img = img_object($langs->trans("Propals"),"propal"); // This assignment in condition is not a bug. It allows walking the results. diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 47219049a91..a853ad49fec 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -2910,7 +2910,7 @@ class Commande extends CommonOrder $response = new WorkboardResponse(); $response->warning_delay=$conf->commande->client->warning_delay/60/60/24; $response->label=$langs->trans("OrdersToProcess"); - $response->url=DOL_URL_ROOT.'/commande/list.php?viewstatut=-3'; + $response->url=DOL_URL_ROOT.'/commande/list.php?viewstatut=-3&mainmenu=commercial&leftmenu=orders'; $response->img=img_object($langs->trans("Orders"),"order"); while ($obj=$this->db->fetch_object($resql)) diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index dc62189be87..6633f196eed 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -3264,7 +3264,7 @@ class Facture extends CommonInvoice $response = new WorkboardResponse(); $response->warning_delay=$conf->facture->client->warning_delay/60/60/24; $response->label=$langs->trans("CustomerBillsUnpaid"); - $response->url=DOL_URL_ROOT.'/compta/facture/list.php?search_status=1'; + $response->url=DOL_URL_ROOT.'/compta/facture/list.php?search_status=1&mainmenu=accountancy&leftmenu=customers_bills'; $response->img=img_object($langs->trans("Bills"),"bill"); while ($obj=$this->db->fetch_object($resql)) diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index a24091c4f97..361ce27a494 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -753,8 +753,8 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu if (! empty($conf->facture->enabled)) { $langs->load("bills"); - $newmenu->add("/compta/facture/list.php",$langs->trans("BillsCustomers"),0,$user->rights->facture->lire, '', $mainmenu, 'customers_bills'); - $newmenu->add("/compta/facture.php?action=create",$langs->trans("NewBill"),1,$user->rights->facture->creer); + $newmenu->add("/compta/facture/list.php?leftmenu=customers_bills",$langs->trans("BillsCustomers"),0,$user->rights->facture->lire, '', $mainmenu, 'customers_bills'); + $newmenu->add("/compta/facture.php?action=create&leftmenu=customers_bills",$langs->trans("NewBill"),1,$user->rights->facture->creer); $newmenu->add("/compta/facture/list.php?leftmenu=customers_bills",$langs->trans("List"),1,$user->rights->facture->lire); if (empty($leftmenu) || ($leftmenu == 'customers_bills')) diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index e7777f82cd5..31ff52886c6 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -2318,7 +2318,7 @@ class CommandeFournisseur extends CommonOrder $response = new WorkboardResponse(); $response->warning_delay=$conf->commande->fournisseur->warning_delay/60/60/24; $response->label=$langs->trans("SuppliersOrdersToProcess"); - $response->url=DOL_URL_ROOT.'/fourn/commande/list.php?statut=1,2,3'; + $response->url=DOL_URL_ROOT.'/fourn/commande/list.php?statut=1,2,3&mainmenu=commercial&leftmenu=orders_suppliers'; $response->img=img_object($langs->trans("Orders"),"order"); while ($obj=$this->db->fetch_object($resql)) diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index a4799bc53fe..9a57f9c0253 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -1440,7 +1440,7 @@ class FactureFournisseur extends CommonInvoice $response = new WorkboardResponse(); $response->warning_delay=$conf->facture->fournisseur->warning_delay/60/60/24; $response->label=$langs->trans("SupplierBillsToPay"); - $response->url=DOL_URL_ROOT.'/fourn/facture/list.php?filtre=fac.fk_statut:1,paye:0'; + $response->url=DOL_URL_ROOT.'/fourn/facture/list.php?filtre=fac.fk_statut:1,paye:0&mainmenu=accountancy&leftmenu=suppliers_bills'; $response->img=img_object($langs->trans("Bills"),"bill"); while ($obj=$this->db->fetch_object($resql)) From a62f5bd5b4d5729910368cc84e3f60a71d21fd44 Mon Sep 17 00:00:00 2001 From: phf Date: Sat, 4 Jun 2016 17:17:22 +0200 Subject: [PATCH 009/212] Fix #2777 --- htdocs/core/lib/admin.lib.php | 7 +++++++ htdocs/langs/en_US/admin.lang | 1 + 2 files changed, 8 insertions(+) diff --git a/htdocs/core/lib/admin.lib.php b/htdocs/core/lib/admin.lib.php index dd1615d7427..3a7485350ce 100644 --- a/htdocs/core/lib/admin.lib.php +++ b/htdocs/core/lib/admin.lib.php @@ -732,17 +732,24 @@ function activateModule($value,$withdeps=1) if (isset($objMod->depends) && is_array($objMod->depends) && ! empty($objMod->depends)) { // Activation des modules dont le module depend + $TError=array(); $num = count($objMod->depends); for ($i = 0; $i < $num; $i++) { + $activate = false; foreach ($modulesdir as $dir) { if (file_exists($dir.$objMod->depends[$i].".class.php")) { activateModule($objMod->depends[$i]); + $activate = true; } } + + if (!$activate) $TError[] = $langs->trans('activateModuleDependNotSatisfied', $objMod->name, $objMod->depends[$i]); } + + setEventMessages('', $TError, 'errors'); } if (isset($objMod->conflictwith) && is_array($objMod->conflictwith) && ! empty($objMod->conflictwith)) diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 5966578021a..925c822cfcf 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1563,3 +1563,4 @@ TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both custome IncludePath=Include path (defined into variable %s) NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. +activateModuleDependNotSatisfied=Module "%s" depends on module "%s" that is missing, so module "%1$s" may not work correclty. Please install module "%2$s" or disable module "%1$s" if you want to be safe from any surprise \ No newline at end of file From 5de8b6eee5cd5c293d4276603269d4c7870044f8 Mon Sep 17 00:00:00 2001 From: novalore Date: Sat, 4 Jun 2016 18:04:49 +0200 Subject: [PATCH 010/212] correction on banks.lang as mentioned in #5267 --- htdocs/langs/en_US/main.lang | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index 0aa839d09c2..93f12930824 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -176,7 +176,6 @@ Upload=Send file ToLink=Link Select=Select Choose=Choose -ChooseLangage=Please choose your language Resize=Resize Recenter=Recenter Author=Author From 3ef9fe2c40fed0bf33a43f96456b2d056ac24ae8 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Sat, 4 Jun 2016 18:10:40 +0200 Subject: [PATCH 011/212] Fix product supplier price modification with multicompany --- htdocs/core/class/html.form.class.php | 2 +- htdocs/fourn/class/fournisseur.product.class.php | 2 +- htdocs/product/class/product.class.php | 4 ++-- htdocs/product/fournisseurs.php | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 8fb0118cd2e..64ec3d4afdd 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -2278,7 +2278,7 @@ class Form $sql.= " FROM ".MAIN_DB_PREFIX."product as p"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON p.rowid = pfp.fk_product"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON pfp.fk_soc = s.rowid"; - $sql.= " WHERE p.entity IN (".getEntity('product', 1).")"; + $sql.= " WHERE p.entity IN (".getEntity('productprice', 1).")"; $sql.= " AND p.tobuy = 1"; $sql.= " AND s.fournisseur = 1"; $sql.= " AND p.rowid = ".$productid; diff --git a/htdocs/fourn/class/fournisseur.product.class.php b/htdocs/fourn/class/fournisseur.product.class.php index 9c889a97d97..f64ef0e1d95 100644 --- a/htdocs/fourn/class/fournisseur.product.class.php +++ b/htdocs/fourn/class/fournisseur.product.class.php @@ -433,7 +433,7 @@ class ProductFournisseur extends Product $sql.= " pfp.price, pfp.quantity, pfp.unitprice, pfp.remise_percent, pfp.remise, pfp.tva_tx, pfp.fk_availability, pfp.charges, pfp.unitcharges, pfp.info_bits, pfp.delivery_time_days"; $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp"; $sql.= ", ".MAIN_DB_PREFIX."societe as s"; - $sql.= " WHERE pfp.entity IN (".getEntity('product', 1).")"; + $sql.= " WHERE pfp.entity IN (".getEntity('productprice', 1).")"; $sql.= " AND pfp.fk_soc = s.rowid"; $sql.= " AND pfp.fk_product = ".$prodid; if (empty($sortfield)) $sql.= " ORDER BY s.nom, pfp.quantity, pfp.price"; diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index ba2eac00cd9..79c21cfcbdf 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -2631,7 +2631,7 @@ class Product extends CommonObject $sql.= " WHERE fk_soc = ".$id_fourn; $sql.= " AND ref_fourn = '".$this->db->escape($ref_fourn)."'"; $sql.= " AND fk_product != ".$this->id; - $sql.= " AND entity = ".$conf->entity; + $sql.= " AND entity IN (".getEntity('productprice', 1).")"; dol_syslog(get_class($this)."::add_fournisseur", LOG_DEBUG); $resql=$this->db->query($sql); @@ -2655,7 +2655,7 @@ class Product extends CommonObject else $sql.= " AND (ref_fourn = '' OR ref_fourn IS NULL)"; $sql.= " AND quantity = '".$quantity."'"; $sql.= " AND fk_product = ".$this->id; - $sql.= " AND entity = ".$conf->entity; + $sql.= " AND entity IN (".getEntity('productprice', 1).")"; dol_syslog(get_class($this)."::add_fournisseur", LOG_DEBUG); $resql=$this->db->query($sql); diff --git a/htdocs/product/fournisseurs.php b/htdocs/product/fournisseurs.php index 2665ae8fd1e..a03c5f5b755 100644 --- a/htdocs/product/fournisseurs.php +++ b/htdocs/product/fournisseurs.php @@ -152,7 +152,7 @@ if (empty($reshook)) { $error++; $langs->load("errors"); - setEventMessages($langs->trans("ErrorFieldMustBeANumeric",'eeee'), null, 'errors'); + setEventMessages($langs->trans("ErrorFieldMustBeANumeric",$langs->transnoentities("VATRateForSupplierProduct")), null, 'errors'); } if (empty($quantity)) { From 9ac05fa8f27a69de6e6263da40ff0ad9c996f267 Mon Sep 17 00:00:00 2001 From: cla Date: Sat, 4 Jun 2016 18:17:13 +0200 Subject: [PATCH 012/212] FIX #5134 --- htdocs/product/card.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/product/card.php b/htdocs/product/card.php index ef126a85b52..b0bab3ab3c1 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -1730,7 +1730,8 @@ if (empty($reshook)) { if ($action == '' || $action == 'view') { - if ($user->rights->produit->creer || $user->rights->service->creer) + if (($object->type == Product::TYPE_PRODUCT && $user->rights->produit->creer ) || + ($object->type == Product::TYPE_SERVICE && $user->rights->service->creer)) { if (! isset($object->no_button_edit) || $object->no_button_edit <> 1) print ''; From ff95bb164427d221935014ef780828fff0b882ce Mon Sep 17 00:00:00 2001 From: paolo Date: Sat, 4 Jun 2016 18:31:31 +0200 Subject: [PATCH 013/212] fix #4467 --- htdocs/product/stock/replenish.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/htdocs/product/stock/replenish.php b/htdocs/product/stock/replenish.php index cdbb4cafad3..25dd6728df8 100644 --- a/htdocs/product/stock/replenish.php +++ b/htdocs/product/stock/replenish.php @@ -241,7 +241,7 @@ $form = new Form($db); $title = $langs->trans('Status'); -$sql = 'SELECT p.rowid, p.ref, p.label, p.price,'; +$sql = 'SELECT p.rowid, p.ref, p.label,p.description, p.price,'; $sql.= ' p.price_ttc, p.price_base_type,p.fk_product_type,'; $sql.= ' p.tms as datem, p.duration, p.tobuy,'; $sql.= ' p.desiredstock, p.seuil_stock_alerte as alertstock,'; @@ -490,7 +490,7 @@ while ($i < ($limit ? min($num, $limit) : $num)) // Multilangs if (! empty($conf->global->MAIN_MULTILANGS)) { - $sql = 'SELECT label'; + $sql = 'SELECT label,description'; $sql .= ' FROM ' . MAIN_DB_PREFIX . 'product_lang'; $sql .= ' WHERE fk_product = ' . $objp->rowid; $sql .= ' AND lang = "' . $langs->getDefaultLang() . '"'; @@ -500,6 +500,7 @@ while ($i < ($limit ? min($num, $limit) : $num)) if ($resqlm) { $objtp = $db->fetch_object($resqlm); + if (!empty($objtp->description)) $objp->description = $objtp->description; if (!empty($objtp->label)) $objp->label = $objtp->label; } } @@ -557,7 +558,7 @@ while ($i < ($limit ? min($num, $limit) : $num)) print ''.$prod->getNomUrl(1, '').''; - print '' . $objp->label . ''; + print '' . $objp->label . ''; if (!empty($conf->service->enabled) && $type == 1) { From abe84ef991a0ddb1e84dee192360897aa1229ace Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Sat, 4 Jun 2016 18:32:00 +0200 Subject: [PATCH 014/212] Fix rights check on expense reports --- htdocs/expensereport/card.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php index fed76abed07..0c86da36936 100644 --- a/htdocs/expensereport/card.php +++ b/htdocs/expensereport/card.php @@ -805,7 +805,7 @@ if ($action == 'set_paid' && $id > 0 && $user->rights->expensereport->to_paid) } } -if ($action == "addline") +if ($action == "addline" && $user->rights->expensereport->creer) { $error = 0; @@ -896,7 +896,7 @@ if ($action == "addline") $action=''; } -if ($action == 'confirm_delete_line' && GETPOST("confirm") == "yes") +if ($action == 'confirm_delete_line' && GETPOST("confirm") == "yes" && $user->rights->expensereport->creer) { $object = new ExpenseReport($db); $object->fetch($id); @@ -939,7 +939,7 @@ if ($action == 'confirm_delete_line' && GETPOST("confirm") == "yes") } } -if ($action == "updateligne" ) +if ($action == "updateligne" && $user->rights->expensereport->creer) { $object = new ExpenseReport($db); $object->fetch($id); @@ -1647,7 +1647,7 @@ else print ''.$langs->trans('AmountTTC').''; } // Ajout des boutons de modification/suppression - if ($object->fk_statut < 2 || $object->fk_statut==99) + if (($object->fk_statut < 2 || $object->fk_statut==99) && $user->rights->expensereport->creer) { print ''; } @@ -1690,7 +1690,7 @@ else } // Ajout des boutons de modification/suppression - if($object->fk_statut<2 OR $object->fk_statut==99) + if(($object->fk_statut<2 OR $object->fk_statut==99) && $user->rights->expensereport->creer) { print ''; print 'rowid.'#'.$objp->rowid.'">'; @@ -1770,7 +1770,7 @@ else //print ''; // Add a line - if (($object->fk_statut==0 || $object->fk_statut==99) && $action != 'editline') + if (($object->fk_statut==0 || $object->fk_statut==99) && $action != 'editline' && $user->rights->expensereport->creer) { print_fiche_titre($langs->trans("AddLine"),'',''); From c2e853db41a3329bf4e4c603721cd62b4db4db85 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 4 Jun 2016 18:37:41 +0200 Subject: [PATCH 015/212] FIX A non admin user should not be able to set/unset a user as admin even if he has right to manage permission --- htdocs/user/card.php | 2 +- htdocs/user/class/user.class.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/user/card.php b/htdocs/user/card.php index acfe1c85cd7..72074c25a07 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -333,7 +333,7 @@ if (empty($reshook)) { $object->gender = GETPOST("gender", 'alpha'); $object->pass = GETPOST("password"); $object->api_key = (GETPOST("api_key", 'alpha')) ? GETPOST("api_key", 'alpha') : $object->api_key; - $object->admin = empty($user->admin) ? 0 : GETPOST("admin"); // A user can only be set admin by an admin + if (! empty($user->admin)) $object->admin = GETPOST("admin"); // admin flag can only be set/unset by an admin user. A test is also done later when forging sql request $object->address = GETPOST('address', 'alpha'); $object->zip = GETPOST('zipcode', 'alpha'); $object->town = GETPOST('town', 'alpha'); diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index 51945677694..6a19be4da1e 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -1285,7 +1285,7 @@ class User extends CommonObject $sql.= ", login = '".$this->db->escape($this->login)."'"; $sql.= ", api_key = ".($this->api_key ? "'".$this->db->escape($this->api_key)."'" : "null"); $sql.= ", gender = ".($this->gender != -1 ? "'".$this->db->escape($this->gender)."'" : "null"); // 'man' or 'woman' - $sql.= ", admin = ".$this->admin; + if (! empty($user->admin)) $sql.= ", admin = ".$this->admin; // admin flag can be set/unset only by an admin user $sql.= ", address = '".$this->db->escape($this->address)."'"; $sql.= ", zip = '".$this->db->escape($this->zip)."'"; $sql.= ", town = '".$this->db->escape($this->town)."'"; From c5ed9e723fcc5fb04fbe72c10fb33cd35a7d4d09 Mon Sep 17 00:00:00 2001 From: novalore Date: Sat, 4 Jun 2016 18:39:04 +0200 Subject: [PATCH 016/212] bills.lang: TIP payment fixed in en_US --- htdocs/langs/en_US/bills.lang | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang index ab0056dc70e..f6428f6a49a 100644 --- a/htdocs/langs/en_US/bills.lang +++ b/htdocs/langs/en_US/bills.lang @@ -356,8 +356,8 @@ PaymentTypeCB=Credit card PaymentTypeShortCB=Credit card PaymentTypeCHQ=Check PaymentTypeShortCHQ=Check -PaymentTypeTIP=Interbank Payment -PaymentTypeShortTIP=Interbank Payment +PaymentTypeTIP=TIP (Documents against Payment) +PaymentTypeShortTIP=TIP Payment PaymentTypeVAD=On line payment PaymentTypeShortVAD=On line payment PaymentTypeTRA=Bank draft From a193920ddc9fbbd27d7f53c18928bec12637934b Mon Sep 17 00:00:00 2001 From: BENKE Charlie Date: Sat, 4 Jun 2016 18:40:53 +0200 Subject: [PATCH 017/212] if socity then company requiered --- htdocs/adherents/card.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/htdocs/adherents/card.php b/htdocs/adherents/card.php index be81c9b967d..bec4156dbe0 100644 --- a/htdocs/adherents/card.php +++ b/htdocs/adherents/card.php @@ -265,6 +265,11 @@ if (empty($reshook)) $langs->load("errors"); setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Firstname")), null, 'errors'); } + if ($morphy == 'mor' && empty($societe)) { + $error++; + $langs->load("errors"); + setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Company")), null, 'errors'); + } // Test si le login existe deja if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED)) { @@ -514,6 +519,11 @@ if (empty($reshook)) setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Password")), null, 'errors'); } } + if ($morphy == 'mor' && empty($societe)) { + $error++; + $langs->load("errors"); + setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Company")), null, 'errors'); + } if ($morphy != 'mor' && empty($lastname)) { $error++; $langs->load("errors"); From b440ad4e7ba871879ac34c569d907d053bb9c5e2 Mon Sep 17 00:00:00 2001 From: cla Date: Sat, 4 Jun 2016 18:44:10 +0200 Subject: [PATCH 018/212] FIX #5134: fixed action 'edit' top page --- htdocs/product/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/product/card.php b/htdocs/product/card.php index b0bab3ab3c1..deff36ebfdf 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -1122,7 +1122,7 @@ else else if ($object->id > 0) { // Fiche en mode edition - if ($action == 'edit' && ($user->rights->produit->creer || $user->rights->service->creer)) + if ($action == 'edit' && ((($object->type == Product::TYPE_PRODUCT && $user->rights->produit->creer) || ($object->type == Product::TYPE_SERVICE && $user->rights->service->creer)))) { //WYSIWYG Editor require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; From 7866fb9dae68ddf0218b8f20005bb4c1fd1a01a0 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Sat, 4 Jun 2016 19:11:32 +0200 Subject: [PATCH 019/212] Fix #5153 --- htdocs/core/lib/functions.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index db227ae4cf6..fb577674b64 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -431,7 +431,7 @@ function dol_size($size,$type='') */ function dol_sanitizeFileName($str,$newstr='_',$unaccent=1) { - $filesystem_forbidden_chars = array('<','>',':','/','\\','?','*','|','"'); + $filesystem_forbidden_chars = array('<','>',':','/','\\','?','*','|','"','°'); return dol_string_nospecial($unaccent?dol_string_unaccent($str):$str, $newstr, $filesystem_forbidden_chars); } From 147212437b651733655ce775eba9a859e41087b5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 4 Jun 2016 19:36:28 +0200 Subject: [PATCH 020/212] FIX #4078 Edit inline of label of supplier invoice is ok. --- htdocs/fourn/facture/card.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index eb6392eba06..43e5786cbc3 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -1869,8 +1869,8 @@ else print ''; // Label - print ''.$form->editfieldkey("Label",'label',$object->label,$object,($user->rights->fournisseur->facture->creer)).''; - print ''.$form->editfieldval("Label",'label',$object->label,$object,($user->rights->fournisseur->facture->creer)).''; + print ''.$form->editfieldkey("Label",'libelle',$object->label,$object,($user->rights->fournisseur->facture->creer)).''; + print ''.$form->editfieldval("Label",'libelle',$object->label,$object,($user->rights->fournisseur->facture->creer)).''; /* * List of payments From a5472b58d1584caeae067e2bee7dc9bd6367606b Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Sun, 5 Jun 2016 00:24:00 +0200 Subject: [PATCH 021/212] FIX #5108 --- htdocs/core/ajax/ajaxdirpreview.php | 5 ++++- htdocs/ecm/index.php | 3 +-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/htdocs/core/ajax/ajaxdirpreview.php b/htdocs/core/ajax/ajaxdirpreview.php index 997e27adb20..f1352f8e933 100644 --- a/htdocs/core/ajax/ajaxdirpreview.php +++ b/htdocs/core/ajax/ajaxdirpreview.php @@ -240,7 +240,10 @@ if ($section) require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php'; $useglobalvars=1; $form = new Form($db); - $formquestion=array('urlfile'=>array('type'=>'hidden','value'=>$urlfile,'name'=>'urlfile')); + $formquestion=array( + 'urlfile'=>array('type'=>'hidden','value'=>$urlfile,'name'=>'urlfile'), + 'section'=>array('type'=>'hidden','value'=>$section,'name'=>'section') + ); print $form->formconfirm($url,$langs->trans("DeleteFile"),$langs->trans("ConfirmDeleteFile"),'confirm_deletefile',$formquestion,"no",($useajax?'deletefile':0)); } diff --git a/htdocs/ecm/index.php b/htdocs/ecm/index.php index e3fa4ece95d..797e759fb13 100644 --- a/htdocs/ecm/index.php +++ b/htdocs/ecm/index.php @@ -175,10 +175,9 @@ if ($action == 'confirm_deletefile') dol_print_error($db,$ecmdir->error); exit; } - $relativepath=$ecmdir->getRelativePath(); } else $relativepath=''; - $upload_dir = $conf->ecm->dir_output.($relativepath?'/'.$relativepath:''); + $upload_dir = $conf->ecm->dir_output; $file = $upload_dir . "/" . GETPOST('urlfile'); // Do not use urldecode here ($_GET and $_POST are already decoded by PHP). $ret=dol_delete_file($file); From 0ab4827091cd5dd181cffe7ff0eea202ed4e00f6 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Sun, 5 Jun 2016 02:06:32 +0200 Subject: [PATCH 022/212] FIX #5087 --- htdocs/core/lib/project.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index d354721332a..fa3967284d9 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -970,7 +970,7 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks= $sql2.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = p.fk_soc"; $sql2.= " LEFT JOIN ".MAIN_DB_PREFIX."projet_task as t ON p.rowid = t.fk_projet"; $sql2.= " WHERE p.rowid IN (".join(',',$arrayidofprojects).")"; - $sql2.= " GROUP BY p.rowid, p.ref, p.title, p.fk_soc, p.fk_user_creat, p.public, p.fk_statut, p.fk_opp_status, p.opp_amount"; + $sql2.= " GROUP BY p.rowid, p.ref, p.title, p.fk_soc, s.nom, p.fk_user_creat, p.public, p.fk_statut, p.fk_opp_status, p.opp_amount"; $sql2.= " ORDER BY p.title, p.ref"; $var=true; From 248ac67af239df10800a0141e854ae5220f9c7e3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 5 Jun 2016 02:24:31 +0200 Subject: [PATCH 023/212] Fix php test --- htdocs/imports/import.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/imports/import.php b/htdocs/imports/import.php index ec194e2e794..89d69974577 100644 --- a/htdocs/imports/import.php +++ b/htdocs/imports/import.php @@ -635,7 +635,7 @@ if ($step == 4 && $datatoimport) } - if(!empty(GETPOST('update'))) { + if (GETPOST('update')) { $array_match_file_to_database=array(); } From b52c441c6493c313d7a17b408e5050d43eff8fd4 Mon Sep 17 00:00:00 2001 From: novalore Date: Sun, 5 Jun 2016 02:26:10 +0200 Subject: [PATCH 024/212] english fix in accountancy for currency --- htdocs/langs/en_US/accountancy.lang | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang index 20640733cd4..993570f4790 100644 --- a/htdocs/langs/en_US/accountancy.lang +++ b/htdocs/langs/en_US/accountancy.lang @@ -3,9 +3,9 @@ ACCOUNTING_EXPORT_SEPARATORCSV=Column separator for export file ACCOUNTING_EXPORT_DATE=Date format for export file ACCOUNTING_EXPORT_PIECE=Export the number of piece ACCOUNTING_EXPORT_GLOBAL_ACCOUNT=Export with global account -ACCOUNTING_EXPORT_LABEL=Export the label -ACCOUNTING_EXPORT_AMOUNT=Export the amount -ACCOUNTING_EXPORT_DEVISE=Export the devise +ACCOUNTING_EXPORT_LABEL=Export label +ACCOUNTING_EXPORT_AMOUNT=Export amount +ACCOUNTING_EXPORT_DEVISE=Export currency Selectformat=Select the format for the file ACCOUNTING_EXPORT_PREFIX_SPEC=Specify the prefix for the file name @@ -183,4 +183,4 @@ Formula=Formula ## Error ErrorNoAccountingCategoryForThisCountry=No accounting category are available for this country -ExportNotSupported=The export format setuped is not supported into this page \ No newline at end of file +ExportNotSupported=The export format setuped is not supported into this page From caaffdb0c3b7553536fe8978571c78b023b3ea77 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Sun, 5 Jun 2016 02:54:25 +0200 Subject: [PATCH 025/212] FIX #5044 --- htdocs/core/modules/expedition/doc/pdf_rouget.modules.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php b/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php index c0e8512b06f..ae9a4300544 100644 --- a/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php +++ b/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php @@ -119,6 +119,7 @@ class pdf_rouget extends ModelePdfExpedition $outputlangs->load("propal"); $outputlangs->load("deliveries"); $outputlangs->load("sendings"); + $outputlangs->load("productbatch"); $nblignes = count($object->lines); From 466010a4121317736e41e51d06dcc52bc617a0f2 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 5 Jun 2016 14:14:20 +0200 Subject: [PATCH 026/212] Fix: Accountancy 4.0 - Right to access to fiscal year --- htdocs/accountancy/admin/fiscalyear.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/htdocs/accountancy/admin/fiscalyear.php b/htdocs/accountancy/admin/fiscalyear.php index 00cf70b9e73..e84c079a7e5 100644 --- a/htdocs/accountancy/admin/fiscalyear.php +++ b/htdocs/accountancy/admin/fiscalyear.php @@ -42,7 +42,10 @@ if (! $sortorder) $sortorder="ASC"; $langs->load("admin"); $langs->load("compta"); -if (! $user->admin) +// Security check +if ($user->societe_id > 0) + accessforbidden(); +if (! $user->rights->accounting->fiscalyear) accessforbidden(); $error = 0; From 23b748aca3774768c89b6112b2ece090724d1027 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 5 Jun 2016 14:22:13 +0200 Subject: [PATCH 027/212] Fix: Accountancy - Access rights --- htdocs/accountancy/admin/account.php | 4 +++- htdocs/accountancy/admin/fiscalyear.php | 9 ++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/htdocs/accountancy/admin/account.php b/htdocs/accountancy/admin/account.php index 3f251e0090b..99b78ff7c5c 100644 --- a/htdocs/accountancy/admin/account.php +++ b/htdocs/accountancy/admin/account.php @@ -43,7 +43,9 @@ $search_pcgtype = GETPOST("search_pcgtype"); $search_pcgsubtype = GETPOST("search_pcgsubtype"); // Security check -if (! $user->admin) +if ($user->societe_id > 0) + accessforbidden(); +if (! $user->rights->accounting->chartofaccount) accessforbidden(); $sortfield = GETPOST("sortfield", 'alpha'); diff --git a/htdocs/accountancy/admin/fiscalyear.php b/htdocs/accountancy/admin/fiscalyear.php index 75411d6402f..199e04bb856 100644 --- a/htdocs/accountancy/admin/fiscalyear.php +++ b/htdocs/accountancy/admin/fiscalyear.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2013-2016 Alexandre Spangaro * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -30,12 +30,15 @@ $action = GETPOST('action'); $langs->load("admin"); $langs->load("compta"); -if (! $user->admin) +// Security check +if ($user->societe_id > 0) + accessforbidden(); +if (! $user->rights->accounting->fiscalyear) accessforbidden(); $error = 0; -// List of statut +// List of status static $tmpstatut2label = array ( '0' => 'OpenFiscalYear', '1' => 'CloseFiscalYear' From 1d5dd0d16ed49b2f31fcc03971e96accff3fd4eb Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 5 Jun 2016 15:21:11 +0200 Subject: [PATCH 028/212] New: Loan - Add accountancy account list --- htdocs/loan/card.php | 68 +++++++++++++++++++++++++++++++------------- 1 file changed, 49 insertions(+), 19 deletions(-) diff --git a/htdocs/loan/card.php b/htdocs/loan/card.php index 116de7c561d..88bf17d5e57 100644 --- a/htdocs/loan/card.php +++ b/htdocs/loan/card.php @@ -26,6 +26,8 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/loan.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; +if (! empty($conf->accounting->enabled)) require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php'; +if (! empty($conf->accounting->enabled)) require_once DOL_DOCUMENT_ROOT.'/accountancy/class/html.formventilation.class.php'; $langs->load("compta"); $langs->load("bills"); @@ -104,19 +106,23 @@ if ($action == 'add' && $user->rights->loan->write) } else { - $object->label = $_POST["label"]; - $object->fk_bank = $_POST["accountid"]; - $object->capital = $_POST["capital"]; - $object->datestart = $datestart; - $object->dateend = $dateend; - $object->nbterm = $_POST["nbterm"]; - $object->rate = $_POST["rate"]; - $object->note_private = GETPOST('note_private'); - $object->note_public = GETPOST('note_public'); + $object->label = $_POST["label"]; + $object->fk_bank = $_POST["accountid"]; + $object->capital = $_POST["capital"]; + $object->datestart = $datestart; + $object->dateend = $dateend; + $object->nbterm = $_POST["nbterm"]; + $object->rate = $_POST["rate"]; + $object->note_private = GETPOST('note_private'); + $object->note_public = GETPOST('note_public'); - $object->account_capital = $_POST["accountancy_account_capital"]; - $object->account_insurance = $_POST["accountancy_account_insurance"]; - $object->account_interest = $_POST["accountancy_account_interest"]; + $accountancy_account_capital = GETPOST('accountancy_account_capital'); + $accountancy_account_insurance = GETPOST('accountancy_account_insurance'); + $accountancy_account_interest = GETPOST('accountancy_account_interest'); + + if ($accountancy_account_capital <= 0) { $object->account_capital = ''; } else { $object->account_capital = $accountancy_account_capital; } + if ($accountancy_account_insurance <= 0) { $object->account_insurance = ''; } else { $object->account_insurance = $accountancy_account_insurance; } + if ($accountancy_account_interest <= 0) { $object->account_interest = ''; } else { $object->account_interest = $accountancy_account_interest; } $id=$object->create($user); if ($id <= 0) @@ -172,6 +178,7 @@ else if ($action == 'update' && $user->rights->loan->write) */ $form = new Form($db); +if (! empty($conf->accounting->enabled)) $formaccountancy = New FormVentilation($db); $help_url='EN:Module_Loan|FR:Module_Emprunt'; llxHeader("",$langs->trans("Loan"),$help_url); @@ -253,27 +260,50 @@ if ($action == 'create') print ''; + print '
'; + + print ''; // Accountancy - if ($conf->accounting->enabled) + if (! empty($conf->accounting->enabled)) { - print '
'; - - print '
'; - + // Accountancy_account_capital + print ''; + print ''; + + // Accountancy_account_insurance + print ''; + print ''; + + // Accountancy_account_interest + print ''; + print ''; + } + else // For external software + { + // Accountancy_account_capital print ''; print ''; - + + // Accountancy_account_insurance print ''; print ''; - + + // Accountancy_account_interest print ''; print ''; print '
'.$langs->trans("LoanAccountancyCapitalCode").''; + print $formaccountancy->select_account($object->accountancy_account_capital, 'accountancy_account_capital', 1, '', 0, 1); + print '
'.$langs->trans("LoanAccountancyInsuranceCode").''; + print $formaccountancy->select_account($object->accountancy_account_insurance, 'accountancy_account_insurance', 1, '', 0, 1); + print '
'.$langs->trans("LoanAccountancyInterestCode").''; + print $formaccountancy->select_account($object->accountancy_account_interest, 'accountancy_account_interest', 1, '', 0, 1); + print '
'.$langs->trans("LoanAccountancyCapitalCode").''; print '
'.$langs->trans("LoanAccountancyInsuranceCode").''; print '
'.$langs->trans("LoanAccountancyInterestCode").''; print '
'; } + print ''; dol_fiche_end(); From fda07997d2b7e016821631f699e03af223fdb5c9 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 5 Jun 2016 15:25:21 +0200 Subject: [PATCH 029/212] Fix: Loan - Remove page note, already present in card --- htdocs/core/lib/loan.lib.php | 10 ---- htdocs/loan/note.php | 101 ----------------------------------- 2 files changed, 111 deletions(-) delete mode 100644 htdocs/loan/note.php diff --git a/htdocs/core/lib/loan.lib.php b/htdocs/core/lib/loan.lib.php index 9dbb2a9664b..ad578c2e7d3 100644 --- a/htdocs/core/lib/loan.lib.php +++ b/htdocs/core/lib/loan.lib.php @@ -41,16 +41,6 @@ function loan_prepare_head($object) $head[$tab][2] = 'card'; $tab++; - if (empty($conf->global->MAIN_DISABLE_NOTES_TAB)) - { - $nbNote = (empty($object->note_private)?0:1)+(empty($object->note_public)?0:1); - $head[$tab][0] = DOL_URL_ROOT."/loan/note.php?id=".$object->id; - $head[$tab][1] = $langs->trans("Notes"); - if($nbNote > 0) $head[$tab][1].= ' '.$nbNote.''; - $head[$tab][2] = 'note'; - $tab++; - } - // Show more tabs from modules // Entries must be declared in modules descriptor with line // $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab diff --git a/htdocs/loan/note.php b/htdocs/loan/note.php deleted file mode 100644 index 969d5ecb436..00000000000 --- a/htdocs/loan/note.php +++ /dev/null @@ -1,101 +0,0 @@ - - * Copyright (C) 2004-2007 Laurent Destailleur - * Copyright (C) 2005-2012 Regis Houssin - * Copyright (C) 2013 Florian Henry - * Copyright (C) 2015 Frederic France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/loan/note.php - * \brief Tab for notes on loan - * \ingroup loan - */ - -require '../main.inc.php'; -require_once(DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php'); -require_once DOL_DOCUMENT_ROOT.'/core/lib/loan.lib.php'; - -$action = GETPOST('action'); - -$langs->load('loan'); - -// Security check -$id = GETPOST('id','int'); -$result = restrictedArea($user, 'loan', $id, '&loan'); - -$object = new Loan($db); -if ($id > 0) $object->fetch($id); - -$permissionnote=$user->rights->loan->write; // Used by the include of actions_setnotes.inc.php - - -/* - * Actions - */ - -include DOL_DOCUMENT_ROOT.'/core/actions_setnotes.inc.php'; // Must be include, not include_once - - -/* - * View - */ - -$form = new Form($db); - -llxHeader('',$langs->trans("LoanArea"),''); - -if ($id > 0) -{ - /* - * Affichage onglets - */ - - $head = loan_prepare_head($object); - - dol_fiche_head($head, 'note', $langs->trans("Loan"), 0, 'bill'); - - - print '
'; - print ''; - - print ''; - - // Ref - print ''; - print ''; - // Name - print ''; - print ''; - - print "
'.$langs->trans('Ref').''; - print $form->showrefnav($object,'id','',1,'rowid','ref'); - print '
'.$langs->trans("Name").''.$object->label.'
"; - - print '
'; - - //$colwidth='25'; - $cssclass='titlefield'; - $permission = $user->rights->loan->write; // Used by the include of notes.tpl.php - include DOL_DOCUMENT_ROOT.'/core/tpl/notes.tpl.php'; - - - dol_fiche_end(); -} - -llxFooter(); -$db->close(); - From bc92818c1a491a7105313cfbc1fec36dbb591b20 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 5 Jun 2016 15:39:41 +0200 Subject: [PATCH 030/212] New: Loan - Show accounting account in card in view mode --- htdocs/loan/card.php | 33 ++++++++++++++++++++++++++++++++ htdocs/loan/class/loan.class.php | 29 ++++++++++++++++------------ 2 files changed, 50 insertions(+), 12 deletions(-) diff --git a/htdocs/loan/card.php b/htdocs/loan/card.php index 88bf17d5e57..ef1022da306 100644 --- a/htdocs/loan/card.php +++ b/htdocs/loan/card.php @@ -405,6 +405,39 @@ if ($id > 0) // Note Public print ''.$langs->trans('NotePublic').''.nl2br($object->note_public).''; + // Accountancy account capital + print ''; + print $langs->trans("LoanAccountancyCapitalCode"); + print ''; + if (! empty($conf->accounting->enabled)) { + print length_accountg($object->account_capital); + } else { + print $object->account_capital; + } + print ''; + + // Accountancy account insurance + print ''; + print $langs->trans("LoanAccountancyInsuranceCode"); + print ''; + if (! empty($conf->accounting->enabled)) { + print length_accountg($object->account_insurance); + } else { + print $object->account_insurance; + } + print ''; + + // Accountancy account interest + print ''; + print $langs->trans("LoanAccountancyInterestCode"); + print ''; + if (! empty($conf->accounting->enabled)) { + print length_accountg($object->account_interest); + } else { + print $object->account_interest; + } + print ''; + // Status print ''.$langs->trans("Status").''.$object->getLibStatut(4, $totalpaye).''; diff --git a/htdocs/loan/class/loan.class.php b/htdocs/loan/class/loan.class.php index 66809b60720..60d4050148a 100644 --- a/htdocs/loan/class/loan.class.php +++ b/htdocs/loan/class/loan.class.php @@ -72,7 +72,7 @@ class Loan extends CommonObject function fetch($id) { $sql = "SELECT l.rowid, l.label, l.capital, l.datestart, l.dateend, l.nbterm, l.rate, l.note_private, l.note_public,"; - $sql.= " l.paid"; + $sql.= " l.paid, l.accountancy_account_capital, l.accountancy_account_insurance, l.accountancy_account_interest"; $sql.= " FROM ".MAIN_DB_PREFIX."loan as l"; $sql.= " WHERE l.rowid = ".$id; @@ -84,17 +84,22 @@ class Loan extends CommonObject { $obj = $this->db->fetch_object($resql); - $this->id = $obj->rowid; - $this->ref = $obj->rowid; - $this->datestart = $this->db->jdate($obj->datestart); - $this->dateend = $this->db->jdate($obj->dateend); - $this->label = $obj->label; - $this->capital = $obj->capital; - $this->nbterm = $obj->nbterm; - $this->rate = $obj->rate; - $this->note_private = $obj->note_private; - $this->note_public = $obj->note_public; - $this->paid = $obj->paid; + $this->id = $obj->rowid; + $this->ref = $obj->rowid; + $this->datestart = $this->db->jdate($obj->datestart); + $this->dateend = $this->db->jdate($obj->dateend); + $this->label = $obj->label; + $this->capital = $obj->capital; + $this->nbterm = $obj->nbterm; + $this->rate = $obj->rate; + $this->note_private = $obj->note_private; + $this->note_public = $obj->note_public; + $this->paid = $obj->paid; + + $this->account_capital = $obj->accountancy_account_capital; + $this->account_insurance = $obj->accountancy_account_insurance; + $this->account_interest = $obj->accountancy_account_interest; + return 1; } From 3b3567a71810242f35b8da0f11bde1e59c05fdf8 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 5 Jun 2016 15:50:32 +0200 Subject: [PATCH 031/212] Fix: colspan --- htdocs/compta/tva/reglement.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/tva/reglement.php b/htdocs/compta/tva/reglement.php index f6dd0be53c2..81fc72f33ef 100644 --- a/htdocs/compta/tva/reglement.php +++ b/htdocs/compta/tva/reglement.php @@ -211,7 +211,7 @@ if ($result) $i++; } - print ''.$langs->trans("Total").''; + print ''.$langs->trans("Total").''; print "".price($total).""; print " "; From bfb212f61a9e98b4144ce0d12ba3f0be8c119444 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 5 Jun 2016 16:08:40 +0200 Subject: [PATCH 032/212] Fix: Loan - Add dol_fiche --- htdocs/loan/card.php | 2 +- htdocs/loan/index.php | 2 +- htdocs/loan/payment/payment.php | 16 ++++++++-------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/htdocs/loan/card.php b/htdocs/loan/card.php index ef1022da306..57d03556bd4 100644 --- a/htdocs/loan/card.php +++ b/htdocs/loan/card.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2014-2016 Alexandre Spangaro * Copyright (C) 2015 Frederic France * * This program is free software; you can redistribute it and/or modify diff --git a/htdocs/loan/index.php b/htdocs/loan/index.php index 51f4e74e119..655372516b9 100644 --- a/htdocs/loan/index.php +++ b/htdocs/loan/index.php @@ -2,7 +2,7 @@ /* Copyright (C) 2014 Alexandre Spangaro * Copyright (C) 2015 Frederic France * Copyright (C) 2015 Juanjo Menent - * Copyright (C) 2016 Laurent Destailleur + * Copyright (C) 2016 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/htdocs/loan/payment/payment.php b/htdocs/loan/payment/payment.php index 06061da5c22..8c9f850ebcc 100644 --- a/htdocs/loan/payment/payment.php +++ b/htdocs/loan/payment/payment.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2014-2016 Alexandre Spangaro * Copyright (C) 2015 Frederic France * * This program is free software; you can redistribute it and/or modify @@ -152,12 +152,11 @@ $form=new Form($db); // Form to create loan's payment -if ($_GET["action"] == 'create') +if ($action == 'create') { $total = $loan->capital; print load_fiche_titre($langs->trans("DoPayment")); - print "
\n"; print ''; print ''; @@ -165,6 +164,8 @@ if ($_GET["action"] == 'create') print ''; print ''; + dol_fiche_head(); + print ''; print ''; @@ -230,9 +231,10 @@ if ($_GET["action"] == 'create') print ''; print ''; print ''; + print '
'.$langs->trans("Loan").''.$langs->trans("NotePublic").'
'; - print '
'; + dol_fiche_end(); print ''; print ''; @@ -296,13 +298,11 @@ if ($_GET["action"] == 'create') print '
'; - print '
'; - + print '
'; print ''; print '   '; print ''; - - print '
'; + print ''; print "\n"; } From e911b32b838ab93d40c226c2d21f543cffad8350 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 5 Jun 2016 16:15:04 +0200 Subject: [PATCH 033/212] Fix: Loan - Totalpaid (Only the capital is deducted from the amount of loan to be paid off) --- htdocs/loan/card.php | 10 ++++------ htdocs/loan/payment/payment.php | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/htdocs/loan/card.php b/htdocs/loan/card.php index 57d03556bd4..31de81d8b9b 100644 --- a/htdocs/loan/card.php +++ b/htdocs/loan/card.php @@ -116,9 +116,9 @@ if ($action == 'add' && $user->rights->loan->write) $object->note_private = GETPOST('note_private'); $object->note_public = GETPOST('note_public'); - $accountancy_account_capital = GETPOST('accountancy_account_capital'); - $accountancy_account_insurance = GETPOST('accountancy_account_insurance'); - $accountancy_account_interest = GETPOST('accountancy_account_interest'); + $accountancy_account_capital = GETPOST('accountancy_account_capital'); + $accountancy_account_insurance = GETPOST('accountancy_account_insurance'); + $accountancy_account_interest = GETPOST('accountancy_account_interest'); if ($accountancy_account_capital <= 0) { $object->account_capital = ''; } else { $object->account_capital = $accountancy_account_capital; } if ($accountancy_account_insurance <= 0) { $object->account_insurance = ''; } else { $object->account_insurance = $accountancy_account_insurance; } @@ -507,13 +507,11 @@ if ($id > 0) print ''.price($objp->amount_interest, 0, $langs, 0, 0, -1, $conf->currency)."\n"; print ''.price($objp->amount_capital, 0, $langs, 0, 0, -1, $conf->currency)."\n"; print ""; - $total_insurance += $objp->amount_insurance; - $total_interest += $objp->amount_interest; $total_capital += $objp->amount_capital; $i++; } - $totalpaid = $total_insurance + $total_interest + $total_capital; + $totalpaid = $total_capital; if ($object->paid == 0) { diff --git a/htdocs/loan/payment/payment.php b/htdocs/loan/payment/payment.php index 8c9f850ebcc..e735480e414 100644 --- a/htdocs/loan/payment/payment.php +++ b/htdocs/loan/payment/payment.php @@ -138,7 +138,7 @@ if ($action == 'add_payment') } } - $_GET["action"]='create'; + $action = 'create'; } From ff23c825aec2e6cce5373499a3dfcff95e9eaea7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Jun 2016 10:58:23 +0200 Subject: [PATCH 034/212] Code comment --- htdocs/core/lib/functions.lib.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 34e52b3c205..5864cbfa0da 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -4128,8 +4128,7 @@ function yn($yesno, $case=1, $color=0) /** * Return a path to have a directory according to object. * New usage: $conf->product->multidir_output[$object->entity].'/'.get_exdir(0, 0, 0, 1, $object, 'modulepart') - * Old usage: '001' with level 3->"0/0/1/", '015' with level 3->"0/1/5/" - * Old usage: 'ABC-1' with level 3 ->"0/0/1/", '015' with level 1->"5/" + * Old usage: '015' with level 3->"0/1/5/", '015' with level 1->"5/", 'ABC-1' with level 3 ->"0/0/1/" * * @param string $num Id of object (deprecated, $object will be used in future) * @param int $level Level of subdirs to return (1, 2 or 3 levels). (deprecated, global option will be used in future) From 9eee61e6b7c1702c97981c4535e446c45aa4ee6a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Jun 2016 11:13:19 +0200 Subject: [PATCH 035/212] Fix trans --- htdocs/comm/mailing/cibles.php | 2 +- htdocs/langs/en_US/main.lang | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/comm/mailing/cibles.php b/htdocs/comm/mailing/cibles.php index 2ce7d5c110d..56dfd753911 100644 --- a/htdocs/comm/mailing/cibles.php +++ b/htdocs/comm/mailing/cibles.php @@ -558,7 +558,7 @@ if ($object->fetch($id) >= 0) { if ($object->statut < 2) { - print ''; + print ''; print $langs->trans("NoTargetYet"); print ''; } diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index fef4e55ad21..1ee858aa23d 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -142,7 +142,7 @@ Update=Update AddActionToDo=Add event to do AddActionDone=Add event done Close=Close -CloseBox=Remove box from your dashboard +CloseBox=Remove widget from your dashboard Confirm=Confirm ConfirmSendCardByMail=Do you really want to send content of this card by mail to %s ? Delete=Delete @@ -611,7 +611,7 @@ RecordsModified=%s records modified AutomaticCode=Automatic code NotManaged=Not managed FeatureDisabled=Feature disabled -MoveBox=Move box %s +MoveBox=Move widget Offered=Offered NotEnoughPermissions=You don't have permission for this action SessionName=Session name From a0458be943b027bf8a41c1f734b748b5391e84d5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Jun 2016 11:25:54 +0200 Subject: [PATCH 036/212] Fix object not defined --- htdocs/compta/facture/class/facture-rec.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/facture/class/facture-rec.class.php b/htdocs/compta/facture/class/facture-rec.class.php index f1cae70fec5..2bcd227827e 100644 --- a/htdocs/compta/facture/class/facture-rec.class.php +++ b/htdocs/compta/facture/class/facture-rec.class.php @@ -962,7 +962,7 @@ class FactureRec extends CommonInvoice if ($this->db->query($sql)) { $this->date_when = $date; - if ($increment_nb_gen_done>0) $_facrec->nb_gen_done++; + if ($increment_nb_gen_done>0) $this->nb_gen_done++; return 1; } else From 9c88eadbe45efbeb7a821425ad1e28825d179918 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Jun 2016 11:48:39 +0200 Subject: [PATCH 037/212] Fix: button to generate invoice manually must be disabled if we reach max number of generation. --- htdocs/compta/facture/fiche-rec.php | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/htdocs/compta/facture/fiche-rec.php b/htdocs/compta/facture/fiche-rec.php index 8118cbea1ac..0e0bc1d474b 100644 --- a/htdocs/compta/facture/fiche-rec.php +++ b/htdocs/compta/facture/fiche-rec.php @@ -1269,7 +1269,7 @@ else // Nb of generation already done print ''.$langs->trans("NbOfGenerationDone").''; print ''; - print $object->nb_gen_done?$object->nb_gen_done:''; + print $object->nb_gen_done?$object->nb_gen_done:'0'; print ''; print ''; @@ -1338,14 +1338,21 @@ else //{ if ($user->rights->facture->creer) { - if (empty($object->frequency) || $object->date_when <= $today) - { - print '
'; - } - else - { - print ''; - } + if (! empty($object->frequency) && $object->nb_gen_max > 0 && ($object->nb_gen_done >= $object->nb_gen_max)) + { + print ''; + } + else + { + if (empty($object->frequency) || $object->date_when <= $today) + { + print ''; + } + else + { + print ''; + } + } } else { From 68fa27ec03388cb41bcdf1ecd710fd663e59f0d8 Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 6 Jun 2016 12:00:24 +0200 Subject: [PATCH 038/212] Fix: Missing userid on query --- htdocs/compta/resultat/clientfourn.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/resultat/clientfourn.php b/htdocs/compta/resultat/clientfourn.php index 9b4d37d6335..df9cf03a30c 100644 --- a/htdocs/compta/resultat/clientfourn.php +++ b/htdocs/compta/resultat/clientfourn.php @@ -629,7 +629,7 @@ if (! empty($conf->expensereport->enabled)) { $langs->load('trips'); if ($modecompta == 'CREANCES-DETTES') { - $sql = "SELECT p.rowid, p.ref, u.firstname, u.lastname, date_format(date_valid,'%Y-%m') as dm, sum(p.total_ht) as amount_ht,sum(p.total_ttc) as amount_ttc"; + $sql = "SELECT p.rowid, p.ref, u.rowid as userid, u.firstname, u.lastname, date_format(date_valid,'%Y-%m') as dm, sum(p.total_ht) as amount_ht,sum(p.total_ttc) as amount_ttc"; $sql.= " FROM ".MAIN_DB_PREFIX."expensereport as p"; $sql.= " INNER JOIN ".MAIN_DB_PREFIX."user as u ON u.rowid=p.fk_user_author"; $sql.= " WHERE p.entity = ".getEntity('expensereport',1); From 681249de8a735ca0c36dba078810545bcc3742df Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Jun 2016 12:29:15 +0200 Subject: [PATCH 039/212] Debug module resource --- htdocs/core/lib/resource.lib.php | 6 ++++-- htdocs/core/lib/sendings.lib.php | 15 ++++++++++----- htdocs/install/mysql/data/llx_c_type_contact.sql | 13 ++++++++----- htdocs/install/mysql/migration/3.9.0-4.0.0.sql | 3 +++ htdocs/resource/card.php | 8 ++++---- htdocs/resource/contact.php | 2 +- htdocs/resource/document.php | 4 ++-- htdocs/resource/note.php | 4 +++- 8 files changed, 35 insertions(+), 20 deletions(-) diff --git a/htdocs/core/lib/resource.lib.php b/htdocs/core/lib/resource.lib.php index 621cf800d99..58fffbae5b7 100644 --- a/htdocs/core/lib/resource.lib.php +++ b/htdocs/core/lib/resource.lib.php @@ -42,8 +42,10 @@ function resource_prepare_head($object) if (empty($conf->global->MAIN_DISABLE_CONTACTS_TAB)) { - $head[$h][0] = DOL_URL_ROOT.'/resource/contact.php?id='.$object->id; - $head[$h][1] = $langs->trans('Contact'); + $nbContact = count($object->liste_contact(-1,'internal')) + count($object->liste_contact(-1,'external')); + $head[$h][0] = DOL_URL_ROOT.'/resource/contact.php?id='.$object->id; + $head[$h][1] = $langs->trans('ContactsAddresses'); + if ($nbContact > 0) $head[$h][1].= ' '.$nbContact.''; $head[$h][2] = 'contact'; $h++; } diff --git a/htdocs/core/lib/sendings.lib.php b/htdocs/core/lib/sendings.lib.php index 52e0b9b9e96..2c362a42c2c 100644 --- a/htdocs/core/lib/sendings.lib.php +++ b/htdocs/core/lib/sendings.lib.php @@ -62,11 +62,16 @@ function shipping_prepare_head($object) } } - $head[$h][0] = DOL_URL_ROOT."/expedition/contact.php?id=".$object->id; - $head[$h][1] = $langs->trans("ContactsAddresses"); - $head[$h][2] = 'contact'; - $h++; - + if (empty($conf->global->MAIN_DISABLE_CONTACTS_TAB)) + { + $nbContact = count($object->liste_contact(-1,'internal')) + count($object->liste_contact(-1,'external')); + $head[$h][0] = DOL_URL_ROOT."/expedition/contact.php?id=".$object->id; + $head[$h][1] = $langs->trans("ContactsAddresses"); + if ($nbContact > 0) $head[$h][1].= ' '.$nbContact.''; + $head[$h][2] = 'contact'; + $h++; + } + $nbNote = 0; if (!empty($object->note_private)) $nbNote++; if (!empty($object->note_public)) $nbNote++; diff --git a/htdocs/install/mysql/data/llx_c_type_contact.sql b/htdocs/install/mysql/data/llx_c_type_contact.sql index 4acc8e467c5..a0b36634ce1 100644 --- a/htdocs/install/mysql/data/llx_c_type_contact.sql +++ b/htdocs/install/mysql/data/llx_c_type_contact.sql @@ -64,11 +64,14 @@ insert into llx_c_type_contact(rowid, element, source, code, libelle, active ) v insert into llx_c_type_contact(rowid, element, source, code, libelle, active ) values (130, 'fichinter','external', 'BILLING', 'Contact client facturation intervention', 1); insert into llx_c_type_contact(rowid, element, source, code, libelle, active ) values (131, 'fichinter','external', 'CUSTOMER', 'Contact client suivi de l''intervention', 1); -insert into llx_c_type_contact(rowid, element, source, code, libelle, active ) values (140,'order_supplier','internal', 'SALESREPFOLL', 'Responsable suivi de la commande', 1); -insert into llx_c_type_contact(rowid, element, source, code, libelle, active ) values (141,'order_supplier','internal', 'SHIPPING', 'Responsable réception de la commande', 1); -insert into llx_c_type_contact(rowid, element, source, code, libelle, active ) values (142,'order_supplier','external', 'BILLING', 'Contact fournisseur facturation commande', 1); -insert into llx_c_type_contact(rowid, element, source, code, libelle, active ) values (143,'order_supplier','external', 'CUSTOMER', 'Contact fournisseur suivi commande', 1); -insert into llx_c_type_contact(rowid, element, source, code, libelle, active ) values (145,'order_supplier','external', 'SHIPPING', 'Contact fournisseur livraison commande', 1); +insert into llx_c_type_contact(rowid, element, source, code, libelle, active ) values (140, 'order_supplier','internal', 'SALESREPFOLL', 'Responsable suivi de la commande', 1); +insert into llx_c_type_contact(rowid, element, source, code, libelle, active ) values (141, 'order_supplier','internal', 'SHIPPING', 'Responsable réception de la commande', 1); +insert into llx_c_type_contact(rowid, element, source, code, libelle, active ) values (142, 'order_supplier','external', 'BILLING', 'Contact fournisseur facturation commande', 1); +insert into llx_c_type_contact(rowid, element, source, code, libelle, active ) values (143, 'order_supplier','external', 'CUSTOMER', 'Contact fournisseur suivi commande', 1); +insert into llx_c_type_contact(rowid, element, source, code, libelle, active ) values (145, 'order_supplier','external', 'SHIPPING', 'Contact fournisseur livraison commande', 1); + +insert into llx_c_type_contact(rowid, element, source, code, libelle, active ) values (150, 'dolresource','internal', 'USERINCHARGE', 'In charge of resource', 1); +insert into llx_c_type_contact(rowid, element, source, code, libelle, active ) values (151, 'dolresource','external', 'THIRDINCHARGE', 'In charge of resource', 1); -- All project code must start with 'PROJECT' insert into llx_c_type_contact(rowid, element, source, code, libelle, active ) values (160, 'project', 'internal', 'PROJECTLEADER', 'Chef de Projet', 1); diff --git a/htdocs/install/mysql/migration/3.9.0-4.0.0.sql b/htdocs/install/mysql/migration/3.9.0-4.0.0.sql index 4aae6de71e6..1ddc7479bcb 100644 --- a/htdocs/install/mysql/migration/3.9.0-4.0.0.sql +++ b/htdocs/install/mysql/migration/3.9.0-4.0.0.sql @@ -39,6 +39,9 @@ ALTER TABLE llx_opensurvey_sondage ADD COLUMN status integer DEFAULT 1 after dat ALTER TABLE llx_expedition ADD COLUMN billed smallint DEFAULT 0; +insert into llx_c_type_contact(rowid, element, source, code, libelle, active ) values (150, 'dolresource','internal', 'USERINCHARGE', 'In charge of resource', 1); +insert into llx_c_type_contact(rowid, element, source, code, libelle, active ) values (151, 'dolresource','external', 'THIRDINCHARGE', 'In charge of resource', 1); + -- DROP TABLE llx_product_lot; CREATE TABLE llx_product_lot ( rowid integer AUTO_INCREMENT PRIMARY KEY, diff --git a/htdocs/resource/card.php b/htdocs/resource/card.php index 163eeab13ce..d803ec774fd 100644 --- a/htdocs/resource/card.php +++ b/htdocs/resource/card.php @@ -173,17 +173,17 @@ if ( $object->fetch($id) > 0 ) print ''; // Ref - print ''; + print ''; print ''; // Type - print ''; + print ''; print ''; // Description - print ''; + print ''; print ''; @@ -215,7 +215,7 @@ if ( $object->fetch($id) > 0 ) */ print '
'.$langs->trans("ResourceFormLabel_ref").'
'.$langs->trans("ResourceFormLabel_ref").'
'.$langs->trans("ResourceType").'
'.$langs->trans("ResourceType").''; $ret = $formresource->select_types_resource($object->fk_code_type_resource,'fk_code_type_resource','',2); print '
'.$langs->trans("Description").'
'.$langs->trans("Description").''; print ''; print '
'; - print ''; diff --git a/htdocs/resource/contact.php b/htdocs/resource/contact.php index d635ee2e1e6..cadde67eba3 100644 --- a/htdocs/resource/contact.php +++ b/htdocs/resource/contact.php @@ -127,7 +127,7 @@ if ($id > 0 || ! empty($ref)) */ print '
'.$langs->trans("ResourceFormLabel_ref").''; + print '
'.$langs->trans("ResourceFormLabel_ref").''; $linkback = $objet->ref.' '.$langs->trans("BackToList").''; print $form->showrefnav($object, 'id', $linkback,1,"rowid"); print '
'; - print ''; diff --git a/htdocs/resource/document.php b/htdocs/resource/document.php index a21bc88c319..8e39c64e2c9 100644 --- a/htdocs/resource/document.php +++ b/htdocs/resource/document.php @@ -89,7 +89,7 @@ if ($object->id) $head=resource_prepare_head($object); - dol_fiche_head($head, 'documents', $langs->trans("ResourceSingular"), 0, 'resource'); + dol_fiche_head($head, 'documents', $langs->trans("ResourceSingular"), 0, 'resource@resource'); // Construit liste des fichiers @@ -104,7 +104,7 @@ if ($object->id) print '
'.$langs->trans("ResourceFormLabel_ref").''; + print '
'.$langs->trans("ResourceFormLabel_ref").''; $linkback = $objet->ref.' '.$langs->trans("BackToList").''; print $form->showrefnav($object, 'id', $linkback,1,"rowid"); print '
'; - print ''; diff --git a/htdocs/resource/note.php b/htdocs/resource/note.php index e404a3bdef8..1f277688957 100644 --- a/htdocs/resource/note.php +++ b/htdocs/resource/note.php @@ -1,8 +1,9 @@ * Copyright (C) 2011-2012 Juanjo Menent + * Copyright (C) 2016 Laurent Destailleur * Copyright (C) 2013 Florian Henry - * Copyright (C) 2016 Gilles Poirier + * Copyright (C) 2016 Gilles Poirier * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -44,6 +45,7 @@ $object->fetch($id,$ref); $permissionnote=$user->rights->resource->write; // Used by the include of actions_setnotes.inc.php + /* * Actions */ From 9b6e5196ea32cdfac734b6298613a537122f44d8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Jun 2016 13:05:36 +0200 Subject: [PATCH 040/212] Debug module resource. Filter on agenda. --- htdocs/comm/action/index.php | 8 +++++-- htdocs/comm/action/listactions.php | 8 ++++++- htdocs/comm/action/pertype.php | 9 ++++++-- htdocs/comm/action/peruser.php | 9 ++++++-- htdocs/core/lib/agenda.lib.php | 21 ++++++++++++++++--- .../class/html.formresource.class.php | 5 +++-- 6 files changed, 48 insertions(+), 12 deletions(-) diff --git a/htdocs/comm/action/index.php b/htdocs/comm/action/index.php index d9990ef7525..addcb26fe17 100644 --- a/htdocs/comm/action/index.php +++ b/htdocs/comm/action/index.php @@ -78,7 +78,7 @@ if (! $user->rights->agenda->allactions->read || $filter =='mine') // If no per } $action=GETPOST('action','alpha'); -//$year=GETPOST("year"); +$resourceid=GETPOST("resourceid","int"); $year=GETPOST("year","int")?GETPOST("year","int"):date("Y"); $month=GETPOST("month","int")?GETPOST("month","int"):date("m"); $week=GETPOST("week","int")?GETPOST("week","int"):date("W"); @@ -292,6 +292,7 @@ if ($status == 'todo') $title=$langs->trans("ToDoActions"); $param=''; if ($actioncode || isset($_GET['actioncode']) || isset($_POST['actioncode'])) $param.="&actioncode=".$actioncode; +if ($resourceid > 0) $param.="&resourceid=".$resourceid; if ($status || isset($_GET['status']) || isset($_POST['status'])) $param.="&status=".$status; if ($filter) $param.="&filter=".$filter; if ($filtert) $param.="&filtert=".$filtert; @@ -349,7 +350,7 @@ $paramnoaction=preg_replace('/action=[a-z_]+/','',$param); $head = calendars_prepare_head($paramnoaction); dol_fiche_head($head, $tabactive, $langs->trans('Agenda'), 0, 'action'); -print_actions_filter($form,$canedit,$status,$year,$month,$day,$showbirthday,0,$filtert,0,$pid,$socid,$action,$listofextcals,$actioncode,$usergroup); +print_actions_filter($form,$canedit,$status,$year,$month,$day,$showbirthday,0,$filtert,0,$pid,$socid,$action,$listofextcals,$actioncode,$usergroup,'', $resourceid); dol_fiche_end(); @@ -442,12 +443,15 @@ $sql.= ' a.fk_soc, a.fk_contact,'; $sql.= ' ca.code as type_code, ca.libelle as type_label'; $sql.= ' FROM '.MAIN_DB_PREFIX.'c_actioncomm as ca, '.MAIN_DB_PREFIX."actioncomm as a"; if (! $user->rights->societe->client->voir && ! $socid) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON a.fk_soc = sc.fk_soc"; +// We must filter on resource table +if ($resourceid > 0) $sql.=", ".MAIN_DB_PREFIX."element_resources as r"; // We must filter on assignement table if ($filtert > 0 || $usergroup > 0) $sql.=", ".MAIN_DB_PREFIX."actioncomm_resources as ar"; if ($usergroup > 0) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."usergroup_user as ugu ON ugu.fk_user = ar.fk_element"; $sql.= ' WHERE a.fk_action = ca.id'; $sql.= ' AND a.entity IN ('.getEntity('agenda', 1).')'; if ($actioncode) $sql.=" AND ca.code IN ('".implode("','", explode(',',$actioncode))."')"; +if ($resourceid > 0) $sql.=" AND r.element_type = 'action' AND r.element_id = a.id AND r.resource_id = ".$db->escape($resourceid); if ($pid) $sql.=" AND a.fk_project=".$db->escape($pid); if (! $user->rights->societe->client->voir && ! $socid) $sql.= " AND (a.fk_soc IS NULL OR sc.fk_user = " .$user->id . ")"; if ($socid > 0) $sql.= ' AND a.fk_soc = '.$socid; diff --git a/htdocs/comm/action/listactions.php b/htdocs/comm/action/listactions.php index 4cae6d5c4d0..e6ad597192a 100644 --- a/htdocs/comm/action/listactions.php +++ b/htdocs/comm/action/listactions.php @@ -36,6 +36,7 @@ $langs->load("agenda"); $langs->load("commercial"); $action=GETPOST('action','alpha'); +$resourceid=GETPOST("resourceid","int"); $year=GETPOST("year",'int'); $month=GETPOST("month",'int'); $day=GETPOST("day",'int'); @@ -156,6 +157,7 @@ $listofextcals=array(); $param=''; if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; if ($actioncode != '') $param.="&actioncode=".$actioncode; +if ($resourceid > 0) $param.="&resourceid=".$resourceid; if ($status || isset($_GET['status']) || isset($_POST['status'])) $param.="&status=".$status; if ($filter) $param.="&filter=".$filter; if ($filtert) $param.="&filtert=".$filtert; @@ -178,12 +180,15 @@ $sql.= " FROM ".MAIN_DB_PREFIX."c_actioncomm as c, ".MAIN_DB_PREFIX."actioncomm if (! $user->rights->societe->client->voir && ! $socid) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON a.fk_soc = sc.fk_soc"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON a.fk_soc = s.rowid"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."socpeople as sp ON a.fk_contact = sp.rowid"; +// We must filter on resource table +if ($resourceid > 0) $sql.=", ".MAIN_DB_PREFIX."element_resources as r"; // We must filter on assignement table if ($filtert > 0 || $usergroup > 0) $sql.=", ".MAIN_DB_PREFIX."actioncomm_resources as ar"; if ($usergroup > 0) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."usergroup_user as ugu ON ugu.fk_user = ar.fk_element"; $sql.= " WHERE c.id = a.fk_action"; $sql.= ' AND a.entity IN ('.getEntity('agenda', 1).')'; if ($actioncode) $sql.=" AND c.code IN ('".$db->escape($actioncode)."')"; +if ($resourceid > 0) $sql.=" AND r.element_type = 'action' AND r.element_id = a.id AND r.resource_id = ".$db->escape($resourceid); if ($pid) $sql.=" AND a.fk_project=".$db->escape($pid); if (! $user->rights->societe->client->voir && ! $socid) $sql.= " AND (a.fk_soc IS NULL OR sc.fk_user = " .$user->id . ")"; if ($socid > 0) $sql.= " AND s.rowid = ".$socid; @@ -242,7 +247,7 @@ if ($resql) $head = calendars_prepare_head($param); dol_fiche_head($head, $tabactive, $langs->trans('Agenda'), 0, 'action'); - print_actions_filter($form,$canedit,$status,$year,$month,$day,$showbirthday,0,$filtert,0,$pid,$socid,$action,-1,$actioncode,$usergroup); + print_actions_filter($form,$canedit,$status,$year,$month,$day,$showbirthday,0,$filtert,0,$pid,$socid,$action,-1,$actioncode,$usergroup,'',$resourceid); dol_fiche_end(); // Add link to show birthdays @@ -288,6 +293,7 @@ if ($resql) $nav=''; if ($optioncss != '') $nav.= ''; if ($actioncode) $nav.=''; + if ($resourceid) $nav.=''; if ($status || isset($_GET['status']) || isset($_POST['status'])) $nav.=''; if ($filter) $nav.=''; if ($filtert) $nav.=''; diff --git a/htdocs/comm/action/pertype.php b/htdocs/comm/action/pertype.php index 28a531c6b28..6138e79cafd 100644 --- a/htdocs/comm/action/pertype.php +++ b/htdocs/comm/action/pertype.php @@ -76,7 +76,7 @@ if (! $user->rights->agenda->allactions->read || $filter =='mine') // If no per //$action=GETPOST('action','alpha'); $action='show_pertype'; -//$year=GETPOST("year"); +$resourceid=GETPOST("resourceid","int"); $year=GETPOST("year","int")?GETPOST("year","int"):date("Y"); $month=GETPOST("month","int")?GETPOST("month","int"):date("m"); $week=GETPOST("week","int")?GETPOST("week","int"):date("W"); @@ -202,6 +202,7 @@ if ($status == 'todo') $title=$langs->trans("ToDoActions"); $param=''; if ($actioncode || isset($_GET['actioncode']) || isset($_POST['actioncode'])) $param.="&actioncode=".$actioncode; +if ($resourceid > 0) $param.="&resourceid=".$resourceid; if ($status || isset($_GET['status']) || isset($_POST['status'])) $param.="&status=".$status; if ($filter) $param.="&filter=".$filter; if ($filtert) $param.="&filtert=".$filtert; @@ -252,6 +253,7 @@ $nav.=''; $nav.=''; $nav.=''; $nav.=''; +$nav.=''; $nav.=''; $nav.=''; $nav.=''; @@ -279,7 +281,7 @@ $paramnoaction=preg_replace('/action=[a-z_]+/','',$param); $head = calendars_prepare_head($paramnoaction); dol_fiche_head($head, $tabactive, $langs->trans('Agenda'), 0, 'action'); -print_actions_filter($form, $canedit, $status, $year, $month, $day, $showbirthday, 0, $filtert, 0, $pid, $socid, $action, $listofextcals, $actioncode, $usergroup); +print_actions_filter($form, $canedit, $status, $year, $month, $day, $showbirthday, 0, $filtert, 0, $pid, $socid, $action, $listofextcals, $actioncode, $usergroup, '', $resourceid); dol_fiche_end(); $showextcals=$listofextcals; @@ -356,12 +358,15 @@ $sql.= ' a.fk_soc, a.fk_contact, a.fk_element, a.elementtype,'; $sql.= ' ca.code, ca.color'; $sql.= ' FROM '.MAIN_DB_PREFIX.'c_actioncomm as ca, '.MAIN_DB_PREFIX."actioncomm as a"; if (! $user->rights->societe->client->voir && ! $socid) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON a.fk_soc = sc.fk_soc"; +// We must filter on resource table +if ($resourceid > 0) $sql.=", ".MAIN_DB_PREFIX."element_resources as r"; // We must filter on assignement table if ($filtert > 0 || $usergroup > 0) $sql.=", ".MAIN_DB_PREFIX."actioncomm_resources as ar"; if ($usergroup > 0) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."usergroup_user as ugu ON ugu.fk_user = ar.fk_element"; $sql.= ' WHERE a.fk_action = ca.id'; $sql.= ' AND a.entity IN ('.getEntity('agenda', 1).')'; if ($actioncode) $sql.=" AND ca.code='".$db->escape($actioncode)."'"; +if ($resourceid > 0) $sql.=" AND r.element_type = 'action' AND r.element_id = a.id AND r.resource_id = ".$db->escape($resourceid); if ($pid) $sql.=" AND a.fk_project=".$db->escape($pid); if (! $user->rights->societe->client->voir && ! $socid) $sql.= " AND (a.fk_soc IS NULL OR sc.fk_user = " .$user->id . ")"; if ($socid > 0) $sql.= ' AND a.fk_soc = '.$socid; diff --git a/htdocs/comm/action/peruser.php b/htdocs/comm/action/peruser.php index 033c67839f0..cd5f7d10fa7 100644 --- a/htdocs/comm/action/peruser.php +++ b/htdocs/comm/action/peruser.php @@ -76,7 +76,7 @@ if (! $user->rights->agenda->allactions->read || $filter =='mine') // If no per //$action=GETPOST('action','alpha'); $action='show_peruser'; //We use 'show_week' mode -//$year=GETPOST("year"); +$resourceid=GETPOST("resourceid","int"); $year=GETPOST("year","int")?GETPOST("year","int"):date("Y"); $month=GETPOST("month","int")?GETPOST("month","int"):date("m"); $week=GETPOST("week","int")?GETPOST("week","int"):date("W"); @@ -202,6 +202,7 @@ if ($status == 'todo') $title=$langs->trans("ToDoActions"); $param=''; if ($actioncode || isset($_GET['actioncode']) || isset($_POST['actioncode'])) $param.="&actioncode=".$actioncode; +if ($resourceid > 0) $param.="&resourceid=".$resourceid; if ($status || isset($_GET['status']) || isset($_POST['status'])) $param.="&status=".$status; if ($filter) $param.="&filter=".$filter; if ($filtert) $param.="&filtert=".$filtert; @@ -255,6 +256,7 @@ $nav.=''; $nav.=''; $nav.=''; $nav.=''; +$nav.=''; $nav.=''; $nav.=''; $nav.=''; @@ -287,7 +289,7 @@ $paramnoaction=preg_replace('/action=[a-z_]+/','',$param); $head = calendars_prepare_head($paramnoaction); dol_fiche_head($head, $tabactive, $langs->trans('Agenda'), 0, 'action'); -print_actions_filter($form, $canedit, $status, $year, $month, $day, $showbirthday, 0, $filtert, 0, $pid, $socid, $action, $listofextcals, $actioncode, $usergroup); +print_actions_filter($form, $canedit, $status, $year, $month, $day, $showbirthday, 0, $filtert, 0, $pid, $socid, $action, $listofextcals, $actioncode, $usergroup, '', $resourceid); dol_fiche_end(); $showextcals=$listofextcals; @@ -364,12 +366,15 @@ $sql.= ' a.fk_soc, a.fk_contact, a.fk_element, a.elementtype,'; $sql.= ' ca.code, ca.color'; $sql.= ' FROM '.MAIN_DB_PREFIX.'c_actioncomm as ca, '.MAIN_DB_PREFIX."actioncomm as a"; if (! $user->rights->societe->client->voir && ! $socid) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON a.fk_soc = sc.fk_soc"; +// We must filter on resource table +if ($resourceid > 0) $sql.=", ".MAIN_DB_PREFIX."element_resources as r"; // We must filter on assignement table if ($filtert > 0 || $usergroup > 0) $sql.=", ".MAIN_DB_PREFIX."actioncomm_resources as ar"; if ($usergroup > 0) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."usergroup_user as ugu ON ugu.fk_user = ar.fk_element"; $sql.= ' WHERE a.fk_action = ca.id'; $sql.= ' AND a.entity IN ('.getEntity('agenda', 1).')'; if ($actioncode) $sql.=" AND ca.code='".$db->escape($actioncode)."'"; +if ($resourceid > 0) $sql.=" AND r.element_type = 'action' AND r.element_id = a.id AND r.resource_id = ".$db->escape($resourceid); if ($pid) $sql.=" AND a.fk_project=".$db->escape($pid); if (! $user->rights->societe->client->voir && ! $socid) $sql.= " AND (a.fk_soc IS NULL OR sc.fk_user = " .$user->id . ")"; if ($socid > 0) $sql.= ' AND a.fk_soc = '.$socid; diff --git a/htdocs/core/lib/agenda.lib.php b/htdocs/core/lib/agenda.lib.php index ad40ba84938..cdc45de825e 100644 --- a/htdocs/core/lib/agenda.lib.php +++ b/htdocs/core/lib/agenda.lib.php @@ -41,12 +41,13 @@ * @param int $socid Third party id * @param string $action Action string * @param array $showextcals Array with list of external calendars (used to show links to select calendar), or -1 to show no legend - * @param string|array $actioncode Preselected value(s) of actioncode for filter on type + * @param string|array $actioncode Preselected value(s) of actioncode for filter on event type * @param int $usergroupid Id of group to filter on users - * @param string $excludetype A type to exclude ('systemauto', 'system', '') + * @param string $excludetype A type to exclude ('systemauto', 'system', '') + * @param int $resourceid Preselected value of resource for filter on resource * @return void */ -function print_actions_filter($form, $canedit, $status, $year, $month, $day, $showbirthday, $filtera, $filtert, $filterd, $pid, $socid, $action, $showextcals=array(), $actioncode='', $usergroupid='', $excludetype='') +function print_actions_filter($form, $canedit, $status, $year, $month, $day, $showbirthday, $filtera, $filtert, $filterd, $pid, $socid, $action, $showextcals=array(), $actioncode='', $usergroupid='', $excludetype='', $resourceid=0) { global $conf, $user, $langs, $db, $hookmanager; global $begin_h, $end_h, $begin_d, $end_d; @@ -80,6 +81,20 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh print $form->select_dolgroups($usergroupid, 'usergroup', 1, '', ! $canedit); print ''; + if ($conf->resource->enabled) + { + include_once DOL_DOCUMENT_ROOT . '/resource/class/html.formresource.class.php'; + $formresource=new FormResource($db); + + // Resource + print ''; + print ''; + } + include_once DOL_DOCUMENT_ROOT . '/core/class/html.formactions.class.php'; $formactions=new FormActions($db); diff --git a/htdocs/resource/class/html.formresource.class.php b/htdocs/resource/class/html.formresource.class.php index 891ed33d1e5..b094aacd1ea 100644 --- a/htdocs/resource/class/html.formresource.class.php +++ b/htdocs/resource/class/html.formresource.class.php @@ -17,11 +17,12 @@ */ /** - * \file place/class/html.formresource.class.php + * \file resource/class/html.formresource.class.php * \ingroup core * \brief Class file to manage forms into resource module */ require_once(DOL_DOCUMENT_ROOT ."/core/class/html.form.class.php"); +require_once(DOL_DOCUMENT_ROOT ."/resource/class/dolresource.class.php"); /** @@ -56,7 +57,7 @@ class FormResource /** * Output html form to select a resource * - * @param string $selected Preselected type + * @param int $selected Preselected resource id * @param string $htmlname Name of field in form * @param string $filter Optionnal filters criteras (example: 's.rowid <> x') * @param int $showempty Add an empty field From 52fefc2d025dd3a81dfa906c6db34474c6433a92 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Jun 2016 13:14:05 +0200 Subject: [PATCH 041/212] Debug module resource --- htdocs/core/modules/modResource.class.php | 2 +- htdocs/resource/card.php | 4 ++-- htdocs/resource/class/dolresource.class.php | 2 +- htdocs/resource/contact.php | 2 +- htdocs/resource/document.php | 2 +- htdocs/resource/img/index.html | 0 htdocs/resource/img/object_resource.png | Bin 1232 -> 0 bytes htdocs/resource/img/resource.png | Bin 2473 -> 0 bytes htdocs/resource/list.php | 12 ++++-------- htdocs/resource/note.php | 2 +- 10 files changed, 11 insertions(+), 15 deletions(-) delete mode 100644 htdocs/resource/img/index.html delete mode 100644 htdocs/resource/img/object_resource.png delete mode 100644 htdocs/resource/img/resource.png diff --git a/htdocs/core/modules/modResource.class.php b/htdocs/core/modules/modResource.class.php index 82d57514623..90ff3280fee 100644 --- a/htdocs/core/modules/modResource.class.php +++ b/htdocs/core/modules/modResource.class.php @@ -119,7 +119,7 @@ class modResource extends DolibarrModules // Minimum version of PHP required by module $this->phpmin = array(5, 3); - $this->langfiles = array("resource@resource"); // langfiles@resource + $this->langfiles = array("resource"); // langfiles@resource // Constants // List of particular constants to add when module is enabled // (key, 'chaine', value, desc, visible, 'current' or 'allentities', deleteonunactive) diff --git a/htdocs/resource/card.php b/htdocs/resource/card.php index d803ec774fd..95f5cf0574b 100644 --- a/htdocs/resource/card.php +++ b/htdocs/resource/card.php @@ -168,7 +168,7 @@ if ( $object->fetch($id) > 0 ) print ''; print ''; - dol_fiche_head($head, 'resource', $langs->trans("ResourceSingular"),0,'resource@resource'); + dol_fiche_head($head, 'resource', $langs->trans("ResourceSingular"),0,'resource'); print '
'.$langs->trans("ResourceFormLabel_ref").''; + print '
'.$langs->trans("ResourceFormLabel_ref").''; $linkback = $objet->ref.' '.$langs->trans("BackToList").''; print $form->showrefnav($object, 'id', $linkback,1,"rowid"); print '
'; + print $langs->trans("Resource"); + print '  '; + print $formresource->select_resource_list($resourceid, "resourceid", '', 1, 0, 0, null, '', 2); + print '
'; @@ -201,7 +201,7 @@ if ( $object->fetch($id) > 0 ) } else { - dol_fiche_head($head, 'resource', $langs->trans("ResourceSingular"),0,'resource@resource'); + dol_fiche_head($head, 'resource', $langs->trans("ResourceSingular"),0,'resource'); // Confirm deleting resource line if ($action == 'delete') diff --git a/htdocs/resource/class/dolresource.class.php b/htdocs/resource/class/dolresource.class.php index 87794b92392..4f08e6f4209 100644 --- a/htdocs/resource/class/dolresource.class.php +++ b/htdocs/resource/class/dolresource.class.php @@ -875,7 +875,7 @@ class Dolresource extends CommonObject if ($option == '') { $link = ''; - $picto='resource@resource'; + $picto='resource'; $label=$langs->trans("ShowResource").': '.$this->ref; } diff --git a/htdocs/resource/contact.php b/htdocs/resource/contact.php index cadde67eba3..97dbb0de1be 100644 --- a/htdocs/resource/contact.php +++ b/htdocs/resource/contact.php @@ -119,7 +119,7 @@ if ($id > 0 || ! empty($ref)) $head = resource_prepare_head($object); - dol_fiche_head($head, 'contact', $langs->trans("ResourceSingular"), 0, 'resource@resource'); + dol_fiche_head($head, 'contact', $langs->trans("ResourceSingular"), 0, 'resource'); /* diff --git a/htdocs/resource/document.php b/htdocs/resource/document.php index 8e39c64e2c9..099fb4f7d2b 100644 --- a/htdocs/resource/document.php +++ b/htdocs/resource/document.php @@ -89,7 +89,7 @@ if ($object->id) $head=resource_prepare_head($object); - dol_fiche_head($head, 'documents', $langs->trans("ResourceSingular"), 0, 'resource@resource'); + dol_fiche_head($head, 'documents', $langs->trans("ResourceSingular"), 0, 'resource'); // Construit liste des fichiers diff --git a/htdocs/resource/img/index.html b/htdocs/resource/img/index.html deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/htdocs/resource/img/object_resource.png b/htdocs/resource/img/object_resource.png deleted file mode 100644 index 55f2e1bf9375acb1ca746b1fffa7ad56f7d5bf97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1232 zcmV;>1TXuEP)PDYS?V-f(k2&U@$OV3a*03(Htar<3@zJ|5t6=Y7;Y3;(O(ylM%+H%ML(hG~-*$*CRNaJfbv7ezTw zJ|jm=UXXm}>WarNE*CuhblJ>imH~f|EERfK>0wbcOXLVST+*web07Clf@*nfm2;}y z7BWa64hagX*oF=pQO+_m``s67`%PU#T$ z6#xJL32;bRa{vGf5&!@T5&_cPe*6Fc03&)-Sae}^bZBpK004N}^GZ$3({(FK%zK`n zS*+leT2xdC07*gzje6?f?f?J++DSw~R5;6ZQcXw{VHkd9c6Qd;-I;ZN+%>l(lq`#+ z6zkNfOHp`^0*N4qphI-%P|zXp5CqXB3J*bn5NL&kmmt$_5f!qgW~&>nKfAN){?E=g zKYjC=QCcs&%*XqE^Stl#JTHeWvACFt1Ojp|$8o%E+XlB09@DgBjzff=8)?SrT|+YY zzt{ zB1F**It2*Pt!)4+D_Kt0345UH1`NZZX@F9|`g#$5zl4^SCid2;Z37ToqE)Tx;J`yC z4uHwhG)8-xL8*hGV5WXz#E&G=CWjB($1NMO{N6;A0MmqVrrp zI-P+m*UvG{fCIvn`wt(-W8Uuh*)gx`djvhNp*?m4^&uaKK~OAK7=Sa0W9`byD$3=G zn~mLd>1KPZx#dhKzPl}xisZ(hq!P_bJ!sk43R#g549ZXxAMGwO?whU<;n{`*D-Q9 z6cGhUae2~Y5_8rEB(yPn%8w%MYP0Hi*(_J8L{;h^eIfwr>*QrXlhTiL$4V+m(Q1k`T69)+FE+ymxy#FRlduY z^&lKjsAmPN76{U-tC&?YnEPBxzPsIbF&K()!CPDYS?V-f(k2&U@$OV3a*03(Htar<3@zJ|5t6=Y7;Y3;(O(ylM%+H%ML(hG~-*$*CRNaJfbv7ezTw zJ|jm=UXXm}>WarNE*CuhblJ>imH~f|EERfK>0wbcOXLVST+*web07Clf@*nfm2;}y z7BWa64hagX*oF=pQO+_m``s67`%PU#T$ z6#xJL32;bRa{vGf5&!@T5&_cPe*6Fc03&)-Sae}^bZBpK004N}^GZ$3({(FK%zK`n zS*+leT2xdC07*gzje6?f?f?J>vq?ljR9M5ES6gfxXBGbDK0CW>du?y**sd?RIK&Xr z0tP9KTA`{!LTQnTkl=xb7EuXRC=xFqK_7WRJfKqXK&1$U2r85SQIPV0P}Hhbt3pU< zl(b3gHi=_9zU)OAfw-r2dz z<=oHc@bz8*NS0;%NZ0kxSF1M20umWyO=LaG!;}a@$w2ShkUkJ17-G=905G?qiYscB0UTlE#LR~p!5PjJ$v@=((&UjV03hl;vGhoQ5;Fw z!VsRvoB7);WDvTpB9+o3z&lqMMy`>10U&?y!Gct+)-f=UZM&6{i!6@zh(N^mB-%J^ zxm}>q@CaNJeSPT&(9ZB6PMZIn1N1rzn$3Wu8KGxId}J@g=gD>0-kd?RV#ClQPjrW* z<$+!SNbR_>f^J2LVm|tQ=N@CYcdrg0qpcfw;~43M^zPVFC_2CJ?IyNTrdY* zyLPMX3Er?JW}-d8Gp;u`~gj zlx^!9`4dBsJBHLZzWda#hx$fm!}9u}f0Rz5JYnPaH!t8@2VTT*dJLfmT8d)j9Y7sE z=l}>JQB^H^{^5shLJfIDX z_CM*XHleSPa-vpA$C`5&nk%p?JAutYndm7bdLD|(i(?=2emb5 zvIvBuUHxM9N);vZ7LLppU@3zr1-GD96zu6cjC9t7ByaC*uG=K>sRJrxrP^k_cxI5v zQ)|?evecYB=>Y&t_ zm1=+eqvF4AoW{AMUpVspXP$m`@7(O?&^KsNHmlnvo4WS(XOh3vtK$EwuiN&@%>J_-XwyO@Hp7-wd)j&&9#}x}sYfl>PQq8)-8G&6Kxo9s%I7 z%y)?~J8d@s8F$k#>ZCj&t*op%J99uT+<5cfDN%b%N-qqB`~LHp+YL*~YW+|sUsM_! zHwi$MlJK44pP}kfL`<9jQZ$YU=yD2&^H0DsQthE7o}QEl2+xegVlg;#<}cSSTsZq? zcL;nII#lb;(6*g`h{q=u^vdPBd;a|S;_1_`{+zyggJgrhPCUTzSO*4*xv$js zYDQD?MFSrJt1698QyJ^D?>L^#M(tFph-cw6cm1f`y z8bpQbdLeN`&}3I2nhUo`&t;By#8f+(@R4KglsXtZ%KSm&JuF?rpgxR@YDGK{$~Jt- ziIi8u0@nRyta^9Rpx?97it1m#c)O&RFWOedP<7pqD1Rg-Bu!I@vTc23WqG}&Jh(3j zdFf-pY+7J=z{w)3_aUd|v5V{#>sG!EfL#*S%1wd#U=98KHfq^56w+5= zaMCGMO4L4VTTnwGsR&fcf;t=>=~}t1a$NsL#(80AtM$6A)a&a!$+BoIt1I09@B8aX zPHH#8J4#AA=jq5)bRl#@ko&miMUs^Np n9^qSmxu0gSRVytEKlS=Ai}9picY;X*00000NkvXXu0mjfhf1ri diff --git a/htdocs/resource/list.php b/htdocs/resource/list.php index b33bbec259e..777bcb374d6 100644 --- a/htdocs/resource/list.php +++ b/htdocs/resource/list.php @@ -106,10 +106,9 @@ else print '
'."\n"; print ''; - print_liste_field_titre($langs->trans('Id'),$_SERVER['PHP_SELF'],'t.rowid','',$param,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans('Ref'),$_SERVER['PHP_SELF'],'t.ref','',$param,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans('ResourceType'),$_SERVER['PHP_SELF'],'ty.code','',$param,'',$sortfield,$sortorder); - print_liste_field_titre($langs->trans('Action'),"","","","",'width="60" align="center"',"",""); + print_liste_field_titre('',"","","","",'width="60" align="center"',"",""); print "\n"; foreach ($object->lines as $resource) @@ -117,15 +116,12 @@ else $var=!$var; $style=''; - if($resource->id == GETPOST('lineid')) - $style='style="background: orange;"'; + if ($resource->id == GETPOST('lineid')) $style='style="background: orange;"'; - print ''; + print ''; print ''; print '
'; - print ''.$resource->id.''; - print '
'; - print $resource->ref; + print $resource->getNomUrl(5); print ''; diff --git a/htdocs/resource/note.php b/htdocs/resource/note.php index 1f277688957..30e37eba77f 100644 --- a/htdocs/resource/note.php +++ b/htdocs/resource/note.php @@ -64,7 +64,7 @@ $form = new Form($db); if ($id > 0 || ! empty($ref)) { $head = resource_prepare_head($object); - dol_fiche_head($head, 'note', $langs->trans('ResourceSingular'), 0, 'resource@resource'); + dol_fiche_head($head, 'note', $langs->trans('ResourceSingular'), 0, 'resource'); print ''; print ''; - print ''; } // Title From b153ae8c6b08c2bf446c1287ae972164d8761f53 Mon Sep 17 00:00:00 2001 From: gauthier Date: Mon, 6 Jun 2016 16:12:27 +0200 Subject: [PATCH 047/212] FIX : wrong id user deplacement links --- htdocs/compta/deplacement/list.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/deplacement/list.php b/htdocs/compta/deplacement/list.php index 497de98fa72..a292c0509b4 100644 --- a/htdocs/compta/deplacement/list.php +++ b/htdocs/compta/deplacement/list.php @@ -80,7 +80,7 @@ $childids[]=$user->id; llxHeader(); -$sql = "SELECT s.nom, s.rowid as socid,"; // Ou +$sql = "SELECT s.nom, d.fk_user, s.rowid as socid,"; // Ou $sql.= " d.rowid, d.type, d.dated as dd, d.km,"; // Comment $sql.= " d.fk_statut,"; $sql.= " u.lastname, u.firstname"; // Qui @@ -188,7 +188,7 @@ if ($resql) print ''; // User print ''; - print ''; + print ''; print ''; print ''; print ''; } diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php index ff6434154c6..f046b4ea61f 100644 --- a/htdocs/expensereport/card.php +++ b/htdocs/expensereport/card.php @@ -1401,6 +1401,7 @@ else print ''; print ''; print ''; + // Amount print ''; print ''; print ''; @@ -1412,9 +1413,8 @@ else if($object->fk_statut==6) $rowspan+=2; print ''; + // Validation date print ''; print ''; - print ''; + print ''; print ''; // User to inform @@ -1515,7 +1519,11 @@ else $userfee=new User($db); $userfee->fetch($object->fk_user_validator); print $userfee->getNomUrl(1); - if (empty($userfee->email) || ! isValidEmail($userfee->email)) print img_warning($langs->trans("EmailNotValid")); + if (empty($userfee->email) || ! isValidEmail($userfee->email)) + { + $langs->load("errors"); + print img_warning($langs->trans("ErrorBadEMail", $userfee->email)); + } } print ''; } diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index 6394b977908..f0467648af8 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -1613,6 +1613,28 @@ class ExpenseReport extends CommonObject return -1; } } + + /** + * Return if an expense report is late or not + * + * @param string $option 'topay' or 'toapprove' + * @return boolean True if late, False if not late + */ + public function hasDelay($option) + { + global $conf; + + //Only valid members + if ($option == 'toapprove' && $this->status != 2) return false; + if ($option == 'topay' && $this->status != 5) return false; + + $now = dol_now(); + + if ($option == 'toapprove') + return $this->datevalid < ($now - $conf->expensereport->approve->warning_delay); + else + return $this->datevalid < ($now - $conf->expensereport->payment->warning_delay); + } } diff --git a/htdocs/expensereport/list.php b/htdocs/expensereport/list.php index b7f5be64455..8175c130ef6 100644 --- a/htdocs/expensereport/list.php +++ b/htdocs/expensereport/list.php @@ -81,7 +81,6 @@ $fieldstosearchall = array( $form = new Form($db); $formother = new FormOther($db); -$expensereporttmp=new ExpenseReport($db); llxHeader('', $langs->trans("ListOfTrips")); @@ -104,7 +103,7 @@ $pageprev = $page - 1; $pagenext = $page + 1; $sql = "SELECT d.rowid, d.ref, d.fk_user_author, d.total_ht, d.total_tva, d.total_ttc, d.fk_statut as status,"; -$sql.= " d.date_debut, d.date_fin,"; +$sql.= " d.date_debut, d.date_fin, d.date_valid,"; $sql.= " u.rowid as id_user, u.firstname, u.lastname"; $sql.= " FROM ".MAIN_DB_PREFIX."expensereport as d"; $sql.= " INNER JOIN ".MAIN_DB_PREFIX."user as u ON d.fk_user_author = u.rowid"; @@ -244,7 +243,8 @@ if ($resql) print ''; // User - if ($user->rights->expensereport->readall || $user->rights->expensereport->lire_tous){ + if ($user->rights->expensereport->readall || $user->rights->expensereport->lire_tous) + { print ''; @@ -280,7 +280,7 @@ if ($resql) $expensereportstatic=new ExpenseReport($db); - if($num > 0) + if ($num > 0) { while ($i < min($num,$limit)) { @@ -288,21 +288,27 @@ if ($resql) $expensereportstatic->id=$objp->rowid; $expensereportstatic->ref=$objp->ref; + $expensereportstatic->status=$objp->status; + $expensereportstatic->valid=$objp->date_valid; + $expensereportstatic->date_debut=$objp->date_debut; + $expensereportstatic->date_fin=$objp->date_fin; $var=!$var; print ""; - print ''; + print ''; print ''; print ''; print ''; print ''; print ''; print ''; - - $expensereporttmp->status=$objp->status; print ''; print ''; diff --git a/htdocs/index.php b/htdocs/index.php index b28038e63c9..2a524d56078 100644 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -473,7 +473,7 @@ if (! empty($conf->banque->enabled) && $user->rights->banque->lire && ! $user->s { include_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; $board=new Account($db); - $nb = $board::countAccountToReconcile(); + $nb = $board::countAccountToReconcile(); // Get nb of account to reconciliate if ($nb > 0) { $dashboardlines[] = $board->load_board($user); diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index 2ad8d972638..2e78ea94bbf 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -558,6 +558,9 @@ if ($resql) $projectstatic->user_author_id = $obj->fk_user_creat; $projectstatic->public = $obj->public; $projectstatic->ref = $obj->ref; + $projectstatic->datee = $obj->date_end; + $projectstatic->statut = $obj->fk_statut; + $projectstatic->opp_status = $obj->fk_opp_status; $userAccess = $projectstatic->restrictedProjectArea($user); // why this ? if ($userAccess >= 0) @@ -570,6 +573,7 @@ if ($resql) { print ''; } // Title diff --git a/htdocs/projet/tasks/list.php b/htdocs/projet/tasks/list.php index c37812a511f..a1c7693b4b7 100644 --- a/htdocs/projet/tasks/list.php +++ b/htdocs/projet/tasks/list.php @@ -213,7 +213,7 @@ else dol_print_error($db); if (count($listoftaskcontacttype) == 0) $listoftaskcontacttype[0]='0'; // To avoid sql syntax error if not found $distinct='DISTINCT'; // We add distinct until we are added a protection to be sure a contact of a project and task is only once. -$sql = "SELECT ".$distinct." p.rowid as projectid, p.ref as projectref, p.title as projecttitle, p.fk_statut as projectstatus, p.fk_opp_status, p.public, p.fk_user_creat as projectusercreate"; +$sql = "SELECT ".$distinct." p.rowid as projectid, p.ref as projectref, p.title as projecttitle, p.fk_statut as projectstatus, p.datee as projectdatee, p.fk_opp_status, p.public, p.fk_user_creat as projectusercreate"; $sql.= ", s.nom as name, s.rowid as socid"; $sql.= ", t.datec as date_creation, t.dateo as date_start, t.datee as date_end, t.tms as date_update"; $sql.= ", t.rowid as id, t.ref, t.label, t.planned_workload, t.duration_effective, t.progress, t.fk_statut"; @@ -550,13 +550,14 @@ if ($resql) $projectstatic->title = $obj->projecttitle; $projectstatic->public = $obj->public; $projectstatic->statut = $obj->projectstatus; - $projectstatic->datee = $obj->date_end; + $projectstatic->datee = $obj->projectdatee; $taskstatic->id = $obj->id; $taskstatic->ref = $obj->ref; $taskstatic->label = $obj->label; $taskstatic->fk_statut = $obj->fk_statut; $taskstatic->progress = $obj->progress; + $taskstatic->datee = $obj->date_end; $userAccess = $projectstatic->restrictedProjectArea($user); // why this ? if ($userAccess >= 0) @@ -607,6 +608,7 @@ if ($resql) { print ''; } // Label From 559c1aa01029c73b3f51894d732ba900b1c23a51 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Jun 2016 16:37:18 +0200 Subject: [PATCH 050/212] Fix alignetment of title in some arrays --- htdocs/comm/propal/stats/index.php | 12 ++++++------ htdocs/compta/facture/stats/index.php | 12 ++++++------ htdocs/expensereport/stats/index.php | 6 +++--- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/htdocs/comm/propal/stats/index.php b/htdocs/comm/propal/stats/index.php index 33895c2ac54..aa5a865dbf2 100644 --- a/htdocs/comm/propal/stats/index.php +++ b/htdocs/comm/propal/stats/index.php @@ -283,12 +283,12 @@ print '
'; print '
'.$langs->trans("ResourceFormLabel_ref").''; From e10db62b3ae39edb5c93eb93159b38e24609bfff Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Jun 2016 13:29:37 +0200 Subject: [PATCH 042/212] Fix a deadlock situation. If order set to billed by error, no way to solve situation. --- htdocs/commande/card.php | 16 +++++++- htdocs/commande/class/commande.class.php | 52 +++++++++++++++++++++++- 2 files changed, 65 insertions(+), 3 deletions(-) diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index 489eee73932..ee576ed48e5 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -445,7 +445,15 @@ if (empty($reshook)) setEventMessages($object->error, $object->errors, 'errors'); } } - + else if ($action == 'classifyunbilled' && $user->rights->commande->creer) + { + $ret=$object->classifyUnBilled(); + + if ($ret < 0) { + setEventMessages($object->error, $object->errors, 'errors'); + } + } + // Positionne ref commande client else if ($action == 'set_ref_client' && $user->rights->commande->creer) { $object->set_ref_client($user, GETPOST('ref_client')); @@ -2373,7 +2381,11 @@ if ($action == 'create' && $user->rights->commande->creer) print ''; } } - + if ($object->statut > Commande::STATUS_DRAFT && $object->billed) { + if ($user->rights->commande->creer && $object->statut >= Commande::STATUS_VALIDATED && empty($conf->global->WORKFLOW_DISABLE_CLASSIFY_BILLED_FROM_ORDER) && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT)) { + print ''; + } + } // Clone if ($user->rights->commande->creer) { print ''; diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 06628ee4ea5..30d22e7588e 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -2420,7 +2420,57 @@ class Commande extends CommonOrder return $this->classifyBilled(); } - + /** + * Classify the order as not invoiced + * + * @return int <0 if ko, >0 if ok + */ + function classifyUnBilled() + { + global $conf, $user, $langs; + $error = 0; + + $this->db->begin(); + + $sql = 'UPDATE '.MAIN_DB_PREFIX.'commande SET facture = 0'; + $sql.= ' WHERE rowid = '.$this->id.' AND fk_statut > '.self::STATUS_DRAFT; + + dol_syslog(get_class($this)."::classifyUnBilled", LOG_DEBUG); + if ($this->db->query($sql)) + { + // Call trigger + $result=$this->call_trigger('ORDER_CLASSIFY_UNBILLED',$user); + if ($result < 0) $error++; + // End call triggers + + if (! $error) + { + $this->facturee=0; // deprecated + $this->billed=0; + + $this->db->commit(); + return 1; + } + else + { + foreach($this->errors as $errmsg) + { + dol_syslog(get_class($this)."::classifyUnBilled ".$errmsg, LOG_ERR); + $this->error.=($this->error?', '.$errmsg:$errmsg); + } + $this->db->rollback(); + return -1*$error; + } + } + else + { + $this->error=$this->db->error(); + $this->db->rollback(); + return -1; + } + } + + /** * Update a line in database * From fb254d3287105bc5dc1b188ce0f266b4f0dbd36e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Jun 2016 13:47:46 +0200 Subject: [PATCH 043/212] Update changelog for 3.9.2 --- ChangeLog | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/ChangeLog b/ChangeLog index ef52f808ec7..052b8bcaaf1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -12,6 +12,47 @@ Upgrading to any other version or any other database system is abolutely require make a Dolibarr upgrade. + +***** ChangeLog for 3.9.2 compared to 3.9.1 ***** +FIX: #4813 Won translation for the key OppStatusWON instead OppStatusWIN +FIX: #5008 SQL error when editing the reference of a supplier invoice that already exists +FIX: #5236 Cron module activated but "Modules tools" does not appear in the left menu. +FIX: Accountancy - 3.9 - Chart of accounts are limited on only one country +FIX: bug on email template +FIX: Can't create a stock transfer from product card +FIX: can't fetch by siret or siren because of first "if" +FIX: Check stock of product by warehouse if $entrepot_id defined on shippings +FIX: Compatible with multicompany +FIX: Creation of the second ressource type fails. +FIX: end of select when no fournprice +FIX: Filter on assigned to was preselected on current user on list "All events" (instead of no filtering) +FIX: Filter on category tag for suppliers +FIX: hook on group card called but not initialized +FIX: Infinite loop on menu tree output for edition +FIX: Can show tree of entries added by external modules using fk_mainmenu and fk_leftmenu instead of fk_menu. +FIX: init var at wrong place report incorrect "shippable" flag on draft order. +FIX: It doesn't check if there is enough stock to update the lines of orders/invoices +FIX: Menu statistics was not visible if module proposal was not enabled +FIX: Merge manually PR #5161 - Bad translation key +FIX: missing column when module was installed before standard integration +FIX: Missing number total of modules +FIX: Not filtering correctly when coming from dashboard +FIX: PROPAL_MERGE_PDF with PRODUCT_USE_OLD_PATH +FIX: Remove PHP Warning: Creating default object from empty value. +FIX: same page added several times on mergepropal option +FIX: search on date into supplier invoice list dont work because of status -1 +FIX: Search supplier ref on contract +FIX: Split of credit note into discount page generates records not correctly recognised as credit note. +FIX: SQL error function on getAvailableDiscounts function, on bill create mode if socid is empty +FIX: #5087 +FIX: #5108 +FIX: #5163 +FIX: #5195 +FIX: #5203 +FIX: #5207 +FIX: #5209 +FIX: #5230 + ***** ChangeLog for 3.9.1 compared to 3.9.* ***** FIX: #3815 Call to undefined function local_by_date() FIX: #4424 Missing email of user popup in supplier orders area From 47308d27c317cbdcb76a663ce4f3476bf4458b21 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Jun 2016 14:37:06 +0200 Subject: [PATCH 044/212] Missing column import_key and import for vat payments --- .../compta/paiement/class/cpaiement.class.php | 463 ++++++++++++++++++ .../compta/paiement/class/paiement.class.php | 3 +- htdocs/core/modules/modTax.class.php | 23 +- .../install/mysql/migration/3.9.0-4.0.0.sql | 1 + htdocs/install/mysql/tables/llx_tva.sql | 13 +- htdocs/langs/en_US/compta.lang | 3 +- 6 files changed, 492 insertions(+), 14 deletions(-) create mode 100644 htdocs/compta/paiement/class/cpaiement.class.php diff --git a/htdocs/compta/paiement/class/cpaiement.class.php b/htdocs/compta/paiement/class/cpaiement.class.php new file mode 100644 index 00000000000..5428f4abdbf --- /dev/null +++ b/htdocs/compta/paiement/class/cpaiement.class.php @@ -0,0 +1,463 @@ + + * Copyright (C) 2014 Juanjo Menent + * Copyright (C) 2015 Florian Henry + * Copyright (C) 2015 Raphaël Doursenaud + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/** + * \file htdocs/compat/paiement/class/cpaiement.class.php + * \ingroup facture + * \brief This file is to manage CRUD function of type of payments + */ + + +/** + * Class Cpaiement + */ +class Cpaiement +{ + /** + * @var string Id to identify managed objects + */ + public $element = 'cpaiement'; + /** + * @var string Name of table without prefix where object is stored + */ + public $table_element = 'c_paiement'; + + /** + * @var CpaiementLine[] Lines + */ + public $lines = array(); + + /** + */ + + public $code; + public $libelle; + public $type; + public $active; + public $accountancy_code; + public $module; + + /** + */ + + + /** + * Constructor + * + * @param DoliDb $db Database handler + */ + public function __construct(DoliDB $db) + { + $this->db = $db; + } + + /** + * Create object into database + * + * @param User $user User that creates + * @param bool $notrigger false=launch triggers after, true=disable triggers + * + * @return int <0 if KO, Id of created object if OK + */ + public function create(User $user, $notrigger = false) + { + dol_syslog(__METHOD__, LOG_DEBUG); + + $error = 0; + + // Clean parameters + + if (isset($this->code)) { + $this->code = trim($this->code); + } + if (isset($this->libelle)) { + $this->libelle = trim($this->libelle); + } + if (isset($this->type)) { + $this->type = trim($this->type); + } + if (isset($this->active)) { + $this->active = trim($this->active); + } + if (isset($this->accountancy_code)) { + $this->accountancy_code = trim($this->accountancy_code); + } + if (isset($this->module)) { + $this->module = trim($this->module); + } + + + + // Check parameters + // Put here code to add control on parameters values + + // Insert request + $sql = 'INSERT INTO ' . MAIN_DB_PREFIX . $this->table_element . '('; + + $sql.= 'id,'; + $sql.= 'code,'; + $sql.= 'libelle,'; + $sql.= 'type,'; + $sql.= 'active,'; + $sql.= 'accountancy_code,'; + $sql.= 'module'; + + + $sql .= ') VALUES ('; + + $sql .= ' '.(! isset($this->id)?'NULL':$this->id).','; + $sql .= ' '.(! isset($this->code)?'NULL':"'".$this->db->escape($this->code)."'").','; + $sql .= ' '.(! isset($this->libelle)?'NULL':"'".$this->db->escape($this->libelle)."'").','; + $sql .= ' '.(! isset($this->type)?'NULL':$this->type).','; + $sql .= ' '.(! isset($this->active)?'NULL':$this->active).','; + $sql .= ' '.(! isset($this->accountancy_code)?'NULL':"'".$this->db->escape($this->accountancy_code)."'").','; + $sql .= ' '.(! isset($this->module)?'NULL':"'".$this->db->escape($this->module)."'"); + + + $sql .= ')'; + + $this->db->begin(); + + $resql = $this->db->query($sql); + if (!$resql) { + $error ++; + $this->errors[] = 'Error ' . $this->db->lasterror(); + dol_syslog(__METHOD__ . ' ' . join(',', $this->errors), LOG_ERR); + } + + if (!$error) { + $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX . $this->table_element); + + if (!$notrigger) { + // Uncomment this and change MYOBJECT to your own tag if you + // want this action to call a trigger. + + //// Call triggers + //$result=$this->call_trigger('MYOBJECT_CREATE',$user); + //if ($result < 0) $error++; + //// End call triggers + } + } + + // Commit or rollback + if ($error) { + $this->db->rollback(); + + return - 1 * $error; + } else { + $this->db->commit(); + + return $this->id; + } + } + + /** + * Load object in memory from the database + * + * @param int $id Id object + * @param string $ref Ref + * + * @return int <0 if KO, 0 if not found, >0 if OK + */ + public function fetch($id, $ref = null) + { + dol_syslog(__METHOD__, LOG_DEBUG); + + $sql = 'SELECT'; + $sql .= ' t.id,'; + $sql .= " t.code,"; + $sql .= " t.libelle,"; + $sql .= " t.type,"; + $sql .= " t.active,"; + $sql .= " t.accountancy_code,"; + $sql .= " t.module"; + $sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element . ' as t'; + if (null !== $ref) { + $sql .= ' WHERE t.code = ' . '\'' . $ref . '\''; + } else { + $sql .= ' WHERE t.id = ' . $id; + } + + $resql = $this->db->query($sql); + if ($resql) { + $numrows = $this->db->num_rows($resql); + if ($numrows) { + $obj = $this->db->fetch_object($resql); + + $this->id = $obj->id; + + $this->code = $obj->code; + $this->libelle = $obj->libelle; + $this->type = $obj->type; + $this->active = $obj->active; + $this->accountancy_code = $obj->accountancy_code; + $this->module = $obj->module; + + + } + $this->db->free($resql); + + if ($numrows) { + return 1; + } else { + return 0; + } + } else { + $this->errors[] = 'Error ' . $this->db->lasterror(); + dol_syslog(__METHOD__ . ' ' . join(',', $this->errors), LOG_ERR); + + return - 1; + } + } + + /** + * Load object in memory from the database + * + * @param string $sortorder Sort Order + * @param string $sortfield Sort field + * @param int $limit offset limit + * @param int $offset offset limit + * @param array $filter filter array + * @param string $filtermode filter mode (AND or OR) + * + * @return int <0 if KO, >0 if OK + */ + public function fetchAll($sortorder='', $sortfield='', $limit=0, $offset=0, array $filter = array(), $filtermode='AND') + { + dol_syslog(__METHOD__, LOG_DEBUG); + + $sql = 'SELECT'; + $sql .= ' t.id,'; + $sql .= " t.code,"; + $sql .= " t.libelle,"; + $sql .= " t.type,"; + $sql .= " t.active,"; + $sql .= " t.accountancy_code,"; + $sql .= " t.module"; + + + $sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element. ' as t'; + + // Manage filter + $sqlwhere = array(); + if (count($filter) > 0) { + foreach ($filter as $key => $value) { + $sqlwhere [] = $key . ' LIKE \'%' . $this->db->escape($value) . '%\''; + } + } + if (count($sqlwhere) > 0) { + $sql .= ' WHERE ' . implode(' '.$filtermode.' ', $sqlwhere); + } + + if (!empty($sortfield)) { + $sql .= $this->db->order($sortfield,$sortorder); + } + if (!empty($limit)) { + $sql .= ' ' . $this->db->plimit($limit + 1, $offset); + } + $this->lines = array(); + + $resql = $this->db->query($sql); + if ($resql) { + $num = $this->db->num_rows($resql); + + while ($obj = $this->db->fetch_object($resql)) { + $line = new CpaiementLine(); + + $line->id = $obj->id; + + $line->code = $obj->code; + $line->libelle = $obj->libelle; + $line->type = $obj->type; + $line->active = $obj->active; + $line->accountancy_code = $obj->accountancy_code; + $line->module = $obj->module; + + + + $this->lines[$line->id] = $line; + } + $this->db->free($resql); + + return $num; + } else { + $this->errors[] = 'Error ' . $this->db->lasterror(); + dol_syslog(__METHOD__ . ' ' . join(',', $this->errors), LOG_ERR); + + return - 1; + } + } + + /** + * Update object into database + * + * @param User $user User that modifies + * @param bool $notrigger false=launch triggers after, true=disable triggers + * + * @return int <0 if KO, >0 if OK + */ + public function update(User $user, $notrigger = false) + { + $error = 0; + + dol_syslog(__METHOD__, LOG_DEBUG); + + // Clean parameters + + if (isset($this->code)) { + $this->code = trim($this->code); + } + if (isset($this->libelle)) { + $this->libelle = trim($this->libelle); + } + if (isset($this->type)) { + $this->type = trim($this->type); + } + if (isset($this->active)) { + $this->active = trim($this->active); + } + if (isset($this->accountancy_code)) { + $this->accountancy_code = trim($this->accountancy_code); + } + if (isset($this->module)) { + $this->module = trim($this->module); + } + + + + // Check parameters + // Put here code to add a control on parameters values + + // Update request + $sql = 'UPDATE ' . MAIN_DB_PREFIX . $this->table_element . ' SET'; + $sql .= ' id = '.(isset($this->id)?$this->id:"null").','; + $sql .= ' code = '.(isset($this->code)?"'".$this->db->escape($this->code)."'":"null").','; + $sql .= ' libelle = '.(isset($this->libelle)?"'".$this->db->escape($this->libelle)."'":"null").','; + $sql .= ' type = '.(isset($this->type)?$this->type:"null").','; + $sql .= ' active = '.(isset($this->active)?$this->active:"null").','; + $sql .= ' accountancy_code = '.(isset($this->accountancy_code)?"'".$this->db->escape($this->accountancy_code)."'":"null").','; + $sql .= ' module = '.(isset($this->module)?"'".$this->db->escape($this->module)."'":"null"); + $sql .= ' WHERE id=' . $this->id; + + $this->db->begin(); + + $resql = $this->db->query($sql); + if (!$resql) { + $error ++; + $this->errors[] = 'Error ' . $this->db->lasterror(); + dol_syslog(__METHOD__ . ' ' . join(',', $this->errors), LOG_ERR); + } + + if (!$error && !$notrigger) { + // Uncomment this and change MYOBJECT to your own tag if you + // want this action calls a trigger. + + //// Call triggers + //$result=$this->call_trigger('MYOBJECT_MODIFY',$user); + //if ($result < 0) { $error++; //Do also what you must do to rollback action if trigger fail} + //// End call triggers + } + + // Commit or rollback + if ($error) { + $this->db->rollback(); + + return - 1 * $error; + } else { + $this->db->commit(); + + return 1; + } + } + + /** + * Delete object in database + * + * @param User $user User that deletes + * @param bool $notrigger false=launch triggers after, true=disable triggers + * + * @return int <0 if KO, >0 if OK + */ + public function delete(User $user, $notrigger = false) + { + dol_syslog(__METHOD__, LOG_DEBUG); + + $error = 0; + + $this->db->begin(); + + if (!$error) { + if (!$notrigger) { + // Uncomment this and change MYOBJECT to your own tag if you + // want this action calls a trigger. + + //// Call triggers + //$result=$this->call_trigger('MYOBJECT_DELETE',$user); + //if ($result < 0) { $error++; //Do also what you must do to rollback action if trigger fail} + //// End call triggers + } + } + + if (!$error) { + $sql = 'DELETE FROM ' . MAIN_DB_PREFIX . $this->table_element; + $sql .= ' WHERE id=' . $this->id; + + $resql = $this->db->query($sql); + if (!$resql) { + $error ++; + $this->errors[] = 'Error ' . $this->db->lasterror(); + dol_syslog(__METHOD__ . ' ' . join(',', $this->errors), LOG_ERR); + } + } + + // Commit or rollback + if ($error) { + $this->db->rollback(); + + return - 1 * $error; + } else { + $this->db->commit(); + + return 1; + } + } + + + /** + * Initialise object with example values + * Id must be 0 if object instance is a specimen + * + * @return void + */ + public function initAsSpecimen() + { + $this->id = 0; + + $this->code = ''; + $this->libelle = ''; + $this->type = ''; + $this->active = ''; + $this->accountancy_code = ''; + $this->module = ''; + + + } + +} diff --git a/htdocs/compta/paiement/class/paiement.class.php b/htdocs/compta/paiement/class/paiement.class.php index 62f8c1b6717..099d05cfa84 100644 --- a/htdocs/compta/paiement/class/paiement.class.php +++ b/htdocs/compta/paiement/class/paiement.class.php @@ -62,8 +62,9 @@ class Paiement extends CommonObject var $bank_line; // Id de la ligne d'ecriture bancaire // fk_paiement dans llx_paiement est l'id du type de paiement (7 pour CHQ, ...) // fk_paiement dans llx_paiement_facture est le rowid du paiement + var $fk_paiement; // Type of paiment - + /** * Constructor * diff --git a/htdocs/core/modules/modTax.class.php b/htdocs/core/modules/modTax.class.php index 5c2beab5dfa..293384b49a8 100644 --- a/htdocs/core/modules/modTax.class.php +++ b/htdocs/core/modules/modTax.class.php @@ -135,10 +135,10 @@ class modTax extends DolibarrModules $this->export_sql_end[$r] .=' WHERE c.fk_type = cc.id'; $this->export_sql_end[$r] .=' AND c.entity IN ('.getEntity('tax',1).')'; - // Import Taxes + // Import social contributions $r++; $this->import_code[$r]=$this->rights_class.'_'.$r; - $this->import_label[$r]="ImportDataset_tax_1"; // Translation key + $this->import_label[$r]="ImportDataset_tax_contrib"; // Translation key $this->import_icon[$r]='tax'; $this->import_entities_array[$r]=array(); // We define here only fields that use another icon that the one defined into import_icon $this->import_tables_array[$r]=array('t'=>MAIN_DB_PREFIX.'chargesociales'); @@ -152,6 +152,25 @@ class modTax extends DolibarrModules $this->import_examplevalues_array[$r]=array('t.libelle'=>"Social/fiscal contribution",'t.fk_type'=>"TAXPRO (must be id or code found into dictionary)", 't.date_ech'=>"2016-01-01", 't.periode'=>"2016-01-01" ); + + // Import Taxes + $r++; + $this->import_code[$r]=$this->rights_class.'_'.$r; + $this->import_label[$r]="ImportDataset_tax_vat"; // Translation key + $this->import_icon[$r]='tax'; + $this->import_entities_array[$r]=array(); // We define here only fields that use another icon that the one defined into import_icon + $this->import_tables_array[$r]=array('t'=>MAIN_DB_PREFIX.'tva'); + $this->import_fields_array[$r]=array('t.datep'=>"DatePayment*",'t.datev'=>"DateValue*",'t.label'=>"Label*",'t.fk_typepayment'=>"PaymentMode*", + 't.amount'=>"Amount*",'t.num_payment'=>'Numero' + ); + + $this->import_convertvalue_array[$r]=array( + 't.fk_typepayment'=>array('rule'=>'fetchidfromref','classfile'=>'/compta/paiement/class/cpaiement.class.php','class'=>'Cpaiement','method'=>'fetch','element'=>'Cpaiement') + ); + $this->import_examplevalues_array[$r]=array('t.label'=>"VAT Payment 1st quarter 2016",'t.fk_typepayment'=>"CHQ (must be id or code found into dictionary)", + 't.datep'=>"2016-04-02", 't.datev'=>"2016-03-31", 't.amount'=>1000, 't.num_payment'=>'123456' + ); + } diff --git a/htdocs/install/mysql/migration/3.9.0-4.0.0.sql b/htdocs/install/mysql/migration/3.9.0-4.0.0.sql index 1ddc7479bcb..c20ef305c39 100644 --- a/htdocs/install/mysql/migration/3.9.0-4.0.0.sql +++ b/htdocs/install/mysql/migration/3.9.0-4.0.0.sql @@ -119,6 +119,7 @@ ALTER TABLE llx_facturedet ADD COLUMN fk_contract_line integer NULL AFTER rang; ALTER TABLE llx_facturedet_rec ADD COLUMN import_key varchar(14); ALTER TABLE llx_chargesociales ADD COLUMN import_key varchar(14); +ALTER TABLE llx_tva ADD COLUMN import_key varchar(14); --DROP TABLE llx_website_page; --DROP TABLE llx_website; diff --git a/htdocs/install/mysql/tables/llx_tva.sql b/htdocs/install/mysql/tables/llx_tva.sql index c5b1542198c..f33280ff511 100644 --- a/htdocs/install/mysql/tables/llx_tva.sql +++ b/htdocs/install/mysql/tables/llx_tva.sql @@ -30,14 +30,7 @@ create table llx_tva entity integer DEFAULT 1 NOT NULL, -- multi company id note text, fk_bank integer, - fk_user_creat integer, -- utilisateur qui a cree l'info - fk_user_modif integer -- utilisateur qui a modifi� l'info + fk_user_creat integer, -- utilisateur who create record + fk_user_modif integer, -- utilisateur who modify record + import_key varchar(14) )ENGINE=innodb; - --- --- List of codes for the field entity --- --- 1 : first company vat --- 2 : second company vat --- 3 : etc... --- \ No newline at end of file diff --git a/htdocs/langs/en_US/compta.lang b/htdocs/langs/en_US/compta.lang index f8942c406a9..c2893c0dbcc 100644 --- a/htdocs/langs/en_US/compta.lang +++ b/htdocs/langs/en_US/compta.lang @@ -225,5 +225,6 @@ BasedOnTwoFirstLettersOfVATNumberBeingDifferentFromYourCompanyCountry=Based on t SameCountryCustomersWithVAT=National customers report BasedOnTwoFirstLettersOfVATNumberBeingTheSameAsYourCompanyCountry=Based on the two first letters of the VAT number being the same as your own company's country code LinkedFichinter=Link to an intervention -ImportDataset_tax_1=Import social/fiscal taxes +ImportDataset_tax_contrib=Import social/fiscal taxes +ImportDataset_tax_vat=Import vat payments ErrorBankAccountNotFound=Error: Bank account not found From 0e06f116a2d0f27a2021786d312f8f127774ba4a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Jun 2016 15:13:55 +0200 Subject: [PATCH 045/212] Fix truncation of event conente in agenda view --- htdocs/comm/action/index.php | 41 ++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/htdocs/comm/action/index.php b/htdocs/comm/action/index.php index addcb26fe17..02a949c7218 100644 --- a/htdocs/comm/action/index.php +++ b/htdocs/comm/action/index.php @@ -937,7 +937,7 @@ if (! empty($hookmanager->resArray['eventarray'])) $eventarray=array_merge($even -$maxnbofchar=18; +$maxnbofchar=0; $cachethirdparties=array(); $cachecontacts=array(); $cacheusers=array(); @@ -1242,20 +1242,20 @@ function show_day_events($db, $day, $month, $year, $monthshown, $style, &$eventa } else { - $numother++; - $color=($event->icalcolor?$event->icalcolor:-1); - $cssclass=(! empty($event->icalname)?'family_ext'.md5($event->icalname):'family_other'); - - if (empty($cacheusers[$event->userownerid])) - { - $newuser=new User($db); - $newuser->fetch($event->userownerid); - $cacheusers[$event->userownerid]=$newuser; - } - //var_dump($cacheusers[$event->userownerid]->color); - - // We decide to choose color of owner of event (event->userownerid is user id of owner, event->userassigned contains all users assigned to event) - if (! empty($cacheusers[$event->userownerid]->color)) $color=$cacheusers[$event->userownerid]->color; + $numother++; + $color=($event->icalcolor?$event->icalcolor:-1); + $cssclass=(! empty($event->icalname)?'family_ext'.md5($event->icalname):'family_other'); + + if (empty($cacheusers[$event->userownerid])) + { + $newuser=new User($db); + $newuser->fetch($event->userownerid); + $cacheusers[$event->userownerid]=$newuser; + } + //var_dump($cacheusers[$event->userownerid]->color); + + // We decide to choose color of owner of event (event->userownerid is user id of owner, event->userassigned contains all users assigned to event) + if (! empty($cacheusers[$event->userownerid]->color)) $color=$cacheusers[$event->userownerid]->color; } if ($color == -1) // Color was not forced. Set color according to color index. { @@ -1272,7 +1272,7 @@ function show_day_events($db, $day, $month, $year, $monthshown, $style, &$eventa if (! empty($theme_datacolor[$nextindextouse+1])) $nextindextouse++; // Prepare to use next color } //print '|'.($color).'='.($idusertouse?$idusertouse:0).'='.$colorindex.'
'; - // Define color + // Define color $color=sprintf("%02x%02x%02x",$theme_datacolor[$colorindex][0],$theme_datacolor[$colorindex][1],$theme_datacolor[$colorindex][2]); } $cssclass=$cssclass.' '.$cssclass.'_day_'.$ymd; @@ -1316,7 +1316,7 @@ function show_day_events($db, $day, $month, $year, $monthshown, $style, &$eventa //if (! empty($event->transparency)) print 'background: #'.$color.'; background: -webkit-gradient(linear, left top, left bottom, from(#'.$color.'), to(#'.dol_color_minus($color,1).'));'; //else print 'background-color: transparent !important; background: none; border: 1px solid #bbb;'; print ' -moz-border-radius:4px;" width="100%">
'; + print ''; if ($event->type_code == 'BIRTHDAY') // It's a birthday { print $event->getNomUrl(1,$maxnbofchar,'cal_event','birthday','contact'); @@ -1397,8 +1397,7 @@ function show_day_events($db, $day, $month, $year, $monthshown, $style, &$eventa if ($event->type_code == 'ICALEVENT') print '
('.dol_trunc($event->icalname,$maxnbofchar).')'; // If action related to company / contact - $linerelatedto='';$length=16; - if (! empty($event->societe->id) && ! empty($event->contact->id)) $length=round($length/2); + $linerelatedto=''; if (! empty($event->societe->id) && $event->societe->id > 0) { if (! isset($cachethirdparties[$event->societe->id]) || ! is_object($cachethirdparties[$event->societe->id])) @@ -1408,7 +1407,7 @@ function show_day_events($db, $day, $month, $year, $monthshown, $style, &$eventa $cachethirdparties[$event->societe->id]=$thirdparty; } else $thirdparty=$cachethirdparties[$event->societe->id]; - if (! empty($thirdparty->id)) $linerelatedto.=$thirdparty->getNomUrl(1,'',$length); + if (! empty($thirdparty->id)) $linerelatedto.=$thirdparty->getNomUrl(1,'',0); } if (! empty($event->contact->id) && $event->contact->id > 0) { @@ -1420,7 +1419,7 @@ function show_day_events($db, $day, $month, $year, $monthshown, $style, &$eventa } else $contact=$cachecontacts[$event->contact->id]; if ($linerelatedto) $linerelatedto.=' / '; - if (! empty($contact->id)) $linerelatedto.=$contact->getNomUrl(1,'',$length); + if (! empty($contact->id)) $linerelatedto.=$contact->getNomUrl(1,'',0); } if ($linerelatedto) print '
'.$linerelatedto; } From 473ab1830600637bc41f3008877247882806e460 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Jun 2016 15:48:41 +0200 Subject: [PATCH 046/212] Fix link on workboard Fix warning picto is missing on task list --- htdocs/comm/action/class/actioncomm.class.php | 1 + htdocs/projet/class/project.class.php | 9 ++++----- htdocs/projet/tasks/list.php | 4 +++- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index c0e1f11579c..6b77e2414da 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -932,6 +932,7 @@ class ActionComm extends CommonObject $response->warning_delay = $conf->agenda->warning_delay/60/60/24; $response->label = $langs->trans("ActionsToDo"); $response->url = DOL_URL_ROOT.'/comm/action/listactions.php?status=todo&mainmenu=agenda'; + if ($user->rights->agenda->allactions->read) $response->url.='&filtert=-1'; $response->img = img_object($langs->trans("Actions"),"action"); // This assignment in condition is not a bug. It allows walking the results. diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index 1de8027dd0e..43b738021ee 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -1627,8 +1627,8 @@ class Project extends CommonObject $response = new WorkboardResponse(); $response->warning_delay = $conf->projet->warning_delay/60/60/24; $response->label = $langs->trans("OpenedProjects"); - if ($user->rights->projet->all->lire) $response->url = DOL_URL_ROOT.'/projet/index.php?search_status=1&mainmenu=project'; - else $response->url = DOL_URL_ROOT.'/projet/index.php?mode=mine&search_status=1&mainmenu=project'; + if ($user->rights->projet->all->lire) $response->url = DOL_URL_ROOT.'/projet/list.php?search_status=1&mainmenu=project'; + else $response->url = DOL_URL_ROOT.'/projet/list.php?mode=mine&search_status=1&mainmenu=project'; $response->img = img_object($langs->trans("Projects"),"project"); // This assignment in condition is not a bug. It allows walking the results. @@ -1719,9 +1719,8 @@ class Project extends CommonObject { global $conf; - if (! ($this->statut == 1)) { - return false; - } + if (! ($this->statut == 1)) return false; + if (! $this->datee) return false; $now = dol_now(); diff --git a/htdocs/projet/tasks/list.php b/htdocs/projet/tasks/list.php index 8ec4eeffedb..c37812a511f 100644 --- a/htdocs/projet/tasks/list.php +++ b/htdocs/projet/tasks/list.php @@ -1,6 +1,6 @@ - * Copyright (C) 2006-2015 Laurent Destailleur + * Copyright (C) 2006-2016 Laurent Destailleur * Copyright (C) 2006-2010 Regis Houssin * * This program is free software; you can redistribute it and/or modify @@ -550,6 +550,7 @@ if ($resql) $projectstatic->title = $obj->projecttitle; $projectstatic->public = $obj->public; $projectstatic->statut = $obj->projectstatus; + $projectstatic->datee = $obj->date_end; $taskstatic->id = $obj->id; $taskstatic->ref = $obj->ref; @@ -568,6 +569,7 @@ if ($resql) { print '
'; print $projectstatic->getNomUrl(1, 'task'); + if ($projectstatic->hasDelay()) print img_warning("Late"); print ''.dol_print_date($db->jdate($obj->dd),'day').''; - $userstatic->id = $obj->rowid; + $userstatic->id = $obj->fk_user; $userstatic->lastname = $obj->lastname; $userstatic->firstname = $obj->firstname; print $userstatic->getNomUrl(1); From 07d07d522af3e09660866f29f847a39c5124c915 Mon Sep 17 00:00:00 2001 From: gauthier Date: Mon, 6 Jun 2016 16:31:42 +0200 Subject: [PATCH 048/212] FIX : if user is only allowed to see his companies, he must be allowed to see deplacement which are not linked to a company --- htdocs/compta/deplacement/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/deplacement/list.php b/htdocs/compta/deplacement/list.php index 497de98fa72..eacc77ad136 100644 --- a/htdocs/compta/deplacement/list.php +++ b/htdocs/compta/deplacement/list.php @@ -91,7 +91,7 @@ if (!$user->rights->societe->client->voir && !$socid) $sql.= " LEFT JOIN ".MAIN_ $sql.= " WHERE d.fk_user = u.rowid"; $sql.= " AND d.entity = ".$conf->entity; if (empty($user->rights->deplacement->readall) && empty($user->rights->deplacement->lire_tous)) $sql.=' AND d.fk_user IN ('.join(',',$childids).')'; -if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND sc.fk_user = " .$user->id; +if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND (sc.fk_user = " .$user->id." OR d.fk_soc IS NULL) "; if ($socid) $sql.= " AND s.rowid = ".$socid; if ($search_ref) $sql.=" AND d.rowid=".$search_ref; From fb1322517381f4617c6cc7e88c461b99e7696f13 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Jun 2016 16:31:50 +0200 Subject: [PATCH 049/212] Fix links on list from warnings dashboard --- htdocs/adherents/class/adherent.class.php | 12 ++++++---- htdocs/compta/bank/class/account.class.php | 1 + htdocs/compta/bank/index.php | 4 ++-- htdocs/contrat/services.php | 4 ++-- htdocs/expensereport/card.php | 18 ++++++++++---- .../class/expensereport.class.php | 22 +++++++++++++++++ htdocs/expensereport/list.php | 24 ++++++++++++------- htdocs/index.php | 2 +- htdocs/projet/list.php | 4 ++++ htdocs/projet/tasks/list.php | 6 +++-- 10 files changed, 72 insertions(+), 25 deletions(-) diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index 93b013cd29f..87ceb66f9d1 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -1737,7 +1737,7 @@ class Adherent extends CommonObject $response = new WorkboardResponse(); $response->warning_delay=$conf->adherent->cotisation->warning_delay/60/60/24; $response->label=$langs->trans("MembersWithSubscriptionToReceive"); - $response->url=DOL_URL_ROOT.'/adherents/list.php?mainmenu=members&statut=1'; + $response->url=DOL_URL_ROOT.'/adherents/list.php?mainmenu=members&statut=1&filter=outofdate'; $response->img=img_object($langs->trans("Members"),"user"); $adherentstatic = new Adherent($this->db); @@ -2006,14 +2006,18 @@ class Adherent extends CommonObject return CommonObject::commonReplaceThirdparty($db, $origin_id, $dest_id, $tables); } + /** + * Return if a member is late (subscription late) or not + * + * @return boolean True if late, False if not late + */ public function hasDelay() { global $conf; //Only valid members - if ($this->statut <= 0) { - return false; - } + if ($this->statut <= 0) return false; + if (! $this->datefin) return false; $now = dol_now(); diff --git a/htdocs/compta/bank/class/account.class.php b/htdocs/compta/bank/class/account.class.php index 92c21742baa..f072a066ec0 100644 --- a/htdocs/compta/bank/class/account.class.php +++ b/htdocs/compta/bank/class/account.class.php @@ -1102,6 +1102,7 @@ class Account extends CommonObject $sql.= " AND b.fk_account = ba.rowid"; $sql.= " AND ba.entity IN (".getEntity('bank_account', 1).")"; $sql.= " AND (ba.rappro = 1 AND ba.courant != 2)"; // Compte rapprochable + $sql.= " AND clos = 0"; if ($filteraccountid) $sql.=" AND ba.rowid = ".$filteraccountid; $resql=$this->db->query($sql); diff --git a/htdocs/compta/bank/index.php b/htdocs/compta/bank/index.php index 7ea3bf1be5a..380b8cff3e8 100644 --- a/htdocs/compta/bank/index.php +++ b/htdocs/compta/bank/index.php @@ -105,7 +105,7 @@ foreach ($accounts as $key=>$type) $solde = $acc->solde(1); print '
'.$acc->getNomUrl(1).''.$acc->getNomUrl(1).''.$acc->bank.''.$acc->number.''; @@ -116,7 +116,7 @@ foreach ($accounts as $key=>$type) setEventMessages($acc->error, $acc->errors, 'errors'); } else { print $result->nbtodo; - if ($result->nbtodolate) print ' ('.$result->nbtodolate.img_warning($langs->trans("Late")).')'; + if ($result->nbtodolate) print '   ('.$result->nbtodolate.img_warning($langs->trans("Late")).')'; } } else print $langs->trans("FeatureDisabled"); diff --git a/htdocs/contrat/services.php b/htdocs/contrat/services.php index 2f1c3697058..e1616026cbc 100644 --- a/htdocs/contrat/services.php +++ b/htdocs/contrat/services.php @@ -1,6 +1,6 @@ - * Copyright (C) 2004-2015 Laurent Destailleur + * Copyright (C) 2004-2016 Laurent Destailleur * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2015 Jean-François Ferry * @@ -291,7 +291,7 @@ if ($resql) print ''; print ($obj->date_ouverture_prevue?dol_print_date($db->jdate($obj->date_ouverture_prevue)):' '); if ($db->jdate($obj->date_ouverture_prevue) && ($db->jdate($obj->date_ouverture_prevue) < ($now - $conf->contrat->services->inactifs->warning_delay))) - print img_picto($langs->trans("Late"),"warning"); + print ' '.img_picto($langs->trans("Late"),"warning"); else print '    '; print ''.$langs->trans("NotePrivate").''.$object->note_private.'
'.$langs->trans("AmountHT").''.price($object->total_ht).''; - /* - * Payments - */ + + // List of payments $sql = "SELECT p.rowid, p.num_payment, p.datep as dp, p.amount,"; $sql.= "c.code as type_code,c.libelle as payment_type"; $sql.= " FROM ".MAIN_DB_PREFIX."payment_expensereport as p"; @@ -1499,9 +1499,13 @@ else } print '
'.$langs->trans("DATE_SAVE").''.dol_print_date($object->date_create,'dayhour').'
'.dol_print_date($object->date_create,'dayhour'); + if ($object->status == 2 && $object->hasDelay('toapprove')) print ' '.img_warning($langs->trans("Late")); + if ($object->status == 5 && $object->hasDelay('topay')) print ' '.img_warning($langs->trans("Late")); + print '
'; print $form->select_dolusers($search_user, 'search_user', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); print '
'.$expensereportstatic->getNomUrl(1).''; + print $expensereportstatic->getNomUrl(1); + print $expensereportstatic->status; + if ($expensereportstatic->status == 2 && $expensereportstatic->hasDelay('toappove')) print img_warning($langs->trans("Late")); + if ($expensereportstatic->status == 5 && $expensereportstatic->hasDelay('topay')) print img_warning($langs->trans("Late")); + print ''.($objp->date_debut > 0 ? dol_print_date($objp->date_debut, 'day') : '').''.($objp->date_fin > 0 ? dol_print_date($objp->date_fin, 'day') : '').''.img_object($langs->trans("ShowUser"),"user").' '.dolGetFirstLastname($objp->firstname, $objp->lastname).''.price($objp->total_ht).''.price($objp->total_tva).''.price($objp->total_ttc).''; - //print $objp->status; - print $expensereporttmp->getLibStatut(5); + print $expensereportstatic->getLibStatut(5); print ''; print $projectstatic->getNomUrl(1); + if ($projectstatic->hasDelay()) print img_warning($langs->trans('Late')); print ''; print $taskstatic->getNomUrl(1,'withproject'); + if ($taskstatic->hasDelay()) print img_warning("Late"); print '
'; print ''; print ''; -print ''; -print ''; -print ''; -print ''; -print ''; -print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; print ''; $oldyear=0; diff --git a/htdocs/compta/facture/stats/index.php b/htdocs/compta/facture/stats/index.php index 14f8c8d18f6..9ca0c2f7718 100644 --- a/htdocs/compta/facture/stats/index.php +++ b/htdocs/compta/facture/stats/index.php @@ -262,12 +262,12 @@ print '
'; print '
'.$langs->trans("Year").''.$langs->trans("NbOfProposals").'%'.$langs->trans("AmountTotal").'%'.$langs->trans("AmountAverage").'%'.$langs->trans("NbOfProposals").'%'.$langs->trans("AmountTotal").'%'.$langs->trans("AmountAverage").'%
'; print ''; print ''; -print ''; -print ''; -print ''; -print ''; -print ''; -print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; print ''; $oldyear=0; diff --git a/htdocs/expensereport/stats/index.php b/htdocs/expensereport/stats/index.php index 6c515192f78..675d800145b 100644 --- a/htdocs/expensereport/stats/index.php +++ b/htdocs/expensereport/stats/index.php @@ -241,9 +241,9 @@ print '

'; print '
'.$langs->trans("Year").''.$langs->trans("NumberOfBills").'%'.$langs->trans("AmountTotal").'%'.$langs->trans("AmountAverage").'%'.$langs->trans("NumberOfBills").'%'.$langs->trans("AmountTotal").'%'.$langs->trans("AmountAverage").'%
'; print ''; print ''; -print ''; -print ''; -print ''; +print ''; +print ''; +print ''; print ''; $oldyear=0; From 29fab5457813b6b500f4d1091dad4d52cea27f00 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Jun 2016 17:18:31 +0200 Subject: [PATCH 051/212] Fix box of last contracted contract (contract ref was not visible, label was wrong). --- htdocs/contrat/class/contrat.class.php | 25 +++++--- htdocs/core/boxes/box_contracts.php | 41 +++++------- htdocs/core/boxes/box_services_contracts.php | 66 ++++++++++++-------- 3 files changed, 73 insertions(+), 59 deletions(-) diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php index d2c094fb025..47cde8e3f40 100644 --- a/htdocs/contrat/class/contrat.class.php +++ b/htdocs/contrat/class/contrat.class.php @@ -2220,18 +2220,18 @@ class Contrat extends CommonObject */ class ContratLigne extends CommonObjectLine { - + public $element='contratdet'; + public $table_element='contratdet'; + var $id; var $ref; var $tms; + var $fk_contrat; var $fk_product; var $statut; // 0 inactive, 4 active, 5 closed + var $type; // 0 for product, 1 for service var $label; - - public $element='contratdet'; - public $table_element='contratdet'; - /** * @var string * @deprecated Use $label instead @@ -2240,6 +2240,10 @@ class ContratLigne extends CommonObjectLine public $libelle; var $description; + + var $product_ref; + var $product_label; + var $date_commande; var $date_ouverture_prevue; // date start planned var $date_ouverture; // date start real @@ -2379,16 +2383,17 @@ class ContratLigne extends CommonObjectLine $result=''; $label=$langs->trans("ShowContractOfService").': '.$this->label; - + if (empty($label)) $label=$this->description; + $link = ''; $linkend=''; - $picto='contract'; - + $picto='service'; + if ($this->type == 0) $picto='product'; if ($withpicto) $result.=($link.img_object($label, $picto, 'class="classfortooltip"').$linkend); if ($withpicto && $withpicto != 2) $result.=' '; - if ($withpicto != 2) $result.=$link.$this->label.$linkend; + if ($withpicto != 2) $result.=$link.($this->product_ref?$this->product_ref.' ':'').($this->label?$this->label:$this->description).$linkend; return $result; } @@ -2417,6 +2422,7 @@ class ContratLigne extends CommonObjectLine $sql.= " p.ref as product_ref,"; $sql.= " p.label as product_label,"; $sql.= " p.description as product_desc,"; + $sql.= " p.type as product_type,"; $sql.= " t.description,"; $sql.= " t.date_commande,"; $sql.= " t.date_ouverture_prevue as date_ouverture_prevue,"; @@ -2467,6 +2473,7 @@ class ContratLigne extends CommonObjectLine $this->product_ref = $obj->product_ref; $this->product_label = $obj->product_label; $this->product_description = $obj->product_description; + $this->product_type = $obj->product_type; $this->label = $obj->label; // deprecated. We do not use this field. Only ref and label of product, and description of contract line $this->description = $obj->description; $this->date_commande = $this->db->jdate($obj->date_commande); diff --git a/htdocs/core/boxes/box_contracts.php b/htdocs/core/boxes/box_contracts.php index 58b5dc7f1fa..665bff4c6da 100644 --- a/htdocs/core/boxes/box_contracts.php +++ b/htdocs/core/boxes/box_contracts.php @@ -55,13 +55,15 @@ class box_contracts extends ModeleBoxes $this->max=$max; include_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php'; - $contractstatic=new Contrat($db); - + $this->info_box_head = array('text' => $langs->trans("BoxTitleLastContracts",$max)); if ($user->rights->contrat->lire) { - $sql = "SELECT s.nom as name, s.rowid as socid,"; + $contractstatic=new Contrat($db); + $thirdpartytmp=new Societe($db); + + $sql = "SELECT s.nom as name, s.rowid as socid,"; $sql.= " c.rowid, c.ref, c.statut as fk_statut, c.date_contrat, c.datec, c.fin_validite, c.date_cloture"; $sql.= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."contrat as c"; if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; @@ -80,7 +82,10 @@ class box_contracts extends ModeleBoxes $line = 0; - while ($line < $num) { + $langs->load("contracts"); + + while ($line < $num) + { $objp = $db->fetch_object($resql); $datec=$db->jdate($objp->datec); $dateterm=$db->jdate($objp->fin_validite); @@ -89,38 +94,26 @@ class box_contracts extends ModeleBoxes $contractstatic->statut=$objp->fk_statut; $contractstatic->id=$objp->rowid; + $contractstatic->ref=$objp->ref; $result=$contractstatic->fetch_lines(); + $thirdpartytmp->name = $objp->name; + $thirdpartytmp->id = $objp->socid; + // fin_validite is no more on contract but on services // if ($objp->fk_statut == 1 && $dateterm < ($now - $conf->contrat->cloture->warning_delay)) { $late = img_warning($langs->trans("Late")); } - $this->info_box_contents[$line][] = array( - 'td' => 'align="left" width="16"', - 'logo' => $this->boximg, - 'tooltip' => $langs->trans('Contract').': '.($objp->ref?$objp->ref:$objp->rowid), - 'url' => DOL_URL_ROOT."/contrat/card.php?id=".$objp->rowid, - ); - $this->info_box_contents[$line][] = array( 'td' => 'align="left"', - 'text' => ($objp->ref?$objp->ref:$objp->rowid), // Some contracts have no ref - 'tooltip' => $langs->trans('Contract').': '.($objp->ref?$objp->ref:$objp->rowid), + 'text' => $contractstatic->getNomUrl(1), 'text2'=> $late, - 'url' => DOL_URL_ROOT."/contrat/card.php?id=".$objp->rowid, - ); - - $this->info_box_contents[$line][] = array( - 'td' => 'align="left" width="16"', - 'logo' => 'company', - 'tooltip' => $langs->trans('Customer').': '.$objp->name, - 'url' => DOL_URL_ROOT."/comm/card.php?socid=".$objp->socid, + 'asis'=>1 ); $this->info_box_contents[$line][] = array( 'td' => 'align="left"', - 'text' => dol_trunc($objp->name,40), - 'tooltip' => $langs->trans('Customer').': '.$objp->name, - 'url' => DOL_URL_ROOT."/comm/card.php?socid=".$objp->socid, + 'text' => $thirdpartytmp->getNomUrl(1), + 'asis'=>1 ); $this->info_box_contents[$line][] = array( diff --git a/htdocs/core/boxes/box_services_contracts.php b/htdocs/core/boxes/box_services_contracts.php index eb48fc83d2b..c38b99263ba 100644 --- a/htdocs/core/boxes/box_services_contracts.php +++ b/htdocs/core/boxes/box_services_contracts.php @@ -56,26 +56,28 @@ class box_services_contracts extends ModeleBoxes $this->max=$max; include_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php'; - $contratlignestatic=new ContratLigne($db); $this->info_box_head = array('text' => $langs->trans("BoxLastProductsInContract",$max)); if ($user->rights->service->lire && $user->rights->contrat->lire) { + $contractstatic=new Contrat($db); + $contratlignestatic=new ContratLigne($db); + $thirdpartytmp = new Societe($db); + $sql = "SELECT s.nom as name, s.rowid as socid,"; - $sql.= " c.rowid,"; - $sql.= " cd.rowid as cdid, cd.tms as datem, cd.statut,"; - $sql.= " p.rowid as pid, p.label, p.fk_product_type"; + $sql.= " c.rowid, c.ref, c.statut as contract_status,"; + $sql.= " cd.rowid as cdid, cd.tms as datem, cd.statut, cd.label, cd.description, cd.product_type as type,"; + $sql.= " p.rowid as product_id, p.ref as product_ref"; $sql.= " FROM (".MAIN_DB_PREFIX."societe as s"; $sql.= ", ".MAIN_DB_PREFIX."contrat as c"; $sql.= ", ".MAIN_DB_PREFIX."contratdet as cd"; - $sql.= ", ".MAIN_DB_PREFIX."product as p"; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON cd.fk_product = p.rowid"; if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; $sql.= ")"; $sql.= " WHERE c.entity = ".$conf->entity; $sql.= " AND s.rowid = c.fk_soc"; $sql.= " AND c.rowid = cd.fk_contrat"; - $sql.= " AND cd.fk_product = p.rowid"; if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; if($user->societe_id) $sql.= " AND s.rowid = ".$user->societe_id; $sql.= $db->order("c.tms","DESC"); @@ -94,12 +96,27 @@ class box_services_contracts extends ModeleBoxes $objp = $db->fetch_object($result); $datem=$db->jdate($objp->datem); + $contratlignestatic->id=$objp->cdid; + $contratlignestatic->fk_contrat=$objp->rowid; + $contratlignestatic->label=$objp->label; + $contratlignestatic->description=$objp->description; + $contratlignestatic->type=$objp->type; + $contratlignestatic->product_id=$objp->product_id; + $contratlignestatic->product_ref=$objp->product_ref; + + $contractstatic->statut=$objp->contract_status; + $contractstatic->id=$objp->rowid; + $contractstatic->ref=$objp->ref; + + $thirdpartytmp->name = $objp->name; + $thirdpartytmp->id = $objp->socid; + // Multilangs if (! empty($conf->global->MAIN_MULTILANGS)) // si l'option est active { $sqld = "SELECT label"; $sqld.= " FROM ".MAIN_DB_PREFIX."product_lang"; - $sqld.= " WHERE fk_product=".$objp->pid; + $sqld.= " WHERE fk_product=".$objp->product_id; $sqld.= " AND lang='". $langs->getDefaultLang() ."'"; $sqld.= " LIMIT 1"; @@ -107,32 +124,29 @@ class box_services_contracts extends ModeleBoxes if ($resultd) { $objtp = $db->fetch_object($resultd); - if ($objtp->label != '') $objp->label = $objtp->label; + if ($objtp->label != '') $contratlignestatic->label = $objtp->label; } } - $this->info_box_contents[$i][0] = array('td' => 'align="left" width="16"', - 'logo' => ($objp->fk_product_type==1?'object_service':'object_product'), - 'url' => DOL_URL_ROOT."/contrat/card.php?id=".$objp->rowid); + $this->info_box_contents[$i][] = array('td' => 'align="left"', + 'text' => $contratlignestatic->getNomUrl(1), + 'asis' => 1 + ); + + $this->info_box_contents[$i][] = array('td' => 'align="left"', + 'text' => $contractstatic->getNomUrl(1), + 'asis' => 1 + ); - $this->info_box_contents[$i][1] = array('td' => 'align="left"', - 'text' => $objp->label, - 'maxlength' => 16, - 'url' => DOL_URL_ROOT."/contrat/card.php?id=".$objp->rowid); + $this->info_box_contents[$i][] = array('td' => 'align="left"', + 'text' => $thirdpartytmp->getNomUrl(1), + 'asis' => 1 + ); - $this->info_box_contents[$i][2] = array('td' => 'align="left" width="16"', - 'logo' => 'company', - 'url' => DOL_URL_ROOT."/comm/card.php?socid=".$objp->socid); - - $this->info_box_contents[$i][3] = array('td' => 'align="left"', - 'text' => $objp->name, - 'maxlength' => 28, - 'url' => DOL_URL_ROOT."/comm/card.php?socid=".$objp->socid); - - $this->info_box_contents[$i][4] = array('td' => 'align="right"', + $this->info_box_contents[$i][] = array('td' => 'align="right"', 'text' => dol_print_date($datem,'day')); - $this->info_box_contents[$i][5] = array('td' => 'align="right" width="18"', + $this->info_box_contents[$i][] = array('td' => 'align="right" width="18"', 'text' => $contratlignestatic->LibStatut($objp->statut,3) ); From 92da0cfe38348bfa97c5684505ac751370bf8562 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Jun 2016 17:21:18 +0200 Subject: [PATCH 052/212] Fix text sticked on picto. --- htdocs/contrat/services.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/contrat/services.php b/htdocs/contrat/services.php index e1616026cbc..d0962ad757e 100644 --- a/htdocs/contrat/services.php +++ b/htdocs/contrat/services.php @@ -267,14 +267,14 @@ if ($resql) $productstatic->type=$obj->ptype; $productstatic->ref=$obj->pref; $productstatic->entity=$obj->pentity; - print $productstatic->getNomUrl(1,'',20); + print $productstatic->getNomUrl(1,'',24); print $obj->label?' - '.dol_trunc($obj->label,16):''; if (! empty($obj->description) && ! empty($conf->global->PRODUCT_DESC_IN_LIST)) print '
'.dol_nl2br($obj->description); } else { - if ($obj->type == 0) print img_object($obj->description,'product').dol_trunc($obj->description,20); - if ($obj->type == 1) print img_object($obj->description,'service').dol_trunc($obj->description,20); + if ($obj->type == 0) print img_object($obj->description,'product').' '.dol_trunc($obj->description,24); + if ($obj->type == 1) print img_object($obj->description,'service').' '.dol_trunc($obj->description,24); } print ''; From 2918dcfde44e45ca67e91302e0e99589023a7378 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Jun 2016 17:25:44 +0200 Subject: [PATCH 053/212] Fix missing include --- htdocs/fourn/commande/list.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/fourn/commande/list.php b/htdocs/fourn/commande/list.php index 5febca7cf15..5196c6b973b 100644 --- a/htdocs/fourn/commande/list.php +++ b/htdocs/fourn/commande/list.php @@ -29,6 +29,7 @@ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.class.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; From 616ede1643ba8c900bb0de7867ac48be0088d8dd Mon Sep 17 00:00:00 2001 From: BoboTiG Date: Mon, 6 Jun 2016 19:05:24 +0200 Subject: [PATCH 054/212] Unpayed invoices box: fix status icon --- htdocs/core/boxes/box_factures_imp.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/core/boxes/box_factures_imp.php b/htdocs/core/boxes/box_factures_imp.php index 783aa8b2c64..a3d1e3357b5 100644 --- a/htdocs/core/boxes/box_factures_imp.php +++ b/htdocs/core/boxes/box_factures_imp.php @@ -77,8 +77,10 @@ class box_factures_imp extends ModeleBoxes $sql.= " f.tva as total_tva,"; $sql.= " f.total_ttc,"; $sql.= " f.paye, f.fk_statut, f.rowid as facid"; + $sql.= ", sum(pf.amount) as am"; $sql.= " FROM ".MAIN_DB_PREFIX."societe as s,".MAIN_DB_PREFIX."facture as f"; if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."paiement_facture as pf ON f.rowid=pf.fk_facture "; $sql.= " WHERE f.fk_soc = s.rowid"; $sql.= " AND f.entity = ".$conf->entity; $sql.= " AND f.paye = 0"; @@ -146,7 +148,7 @@ class box_factures_imp extends ModeleBoxes $this->info_box_contents[$line][] = array( 'td' => 'align="right" width="18"', - 'text' => $facturestatic->LibStatut($objp->paye,$objp->fk_statut,3), + 'text' => $facturestatic->LibStatut($objp->paye,$objp->fk_statut,3,$objp->am), ); $line++; @@ -186,4 +188,3 @@ class box_factures_imp extends ModeleBoxes } } - From e47ca0b4c38b6d8363929c23e026f8b25af61f50 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Jun 2016 19:17:15 +0200 Subject: [PATCH 055/212] Enable new modules --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 37c04fecd7a..8655b27d4ed 100644 --- a/.travis.yml +++ b/.travis.yml @@ -285,7 +285,7 @@ script: php upgrade2.php 3.8.0 3.9.0 > $TRAVIS_BUILD_DIR/upgrade380390-2.log php step5.php 3.8.0 3.9.0 > $TRAVIS_BUILD_DIR/upgrade380390-3.log php upgrade.php 3.9.0 4.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade390400.log - php upgrade2.php 3.9.0 4.0.0 MAIN_MODULE_API > $TRAVIS_BUILD_DIR/upgrade390400-2.log + php upgrade2.php 3.9.0 4.0.0 MAIN_MODULE_API,MAIN_MODULE_SUPPLIERPROPOSAL > $TRAVIS_BUILD_DIR/upgrade390400-2.log php step5.php 3.9.0 4.0.0 > $TRAVIS_BUILD_DIR/upgrade390400-3.log cd - set +e From a6a96c710d91295c9a787e30d1a7fb70ca4f0f08 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Mon, 6 Jun 2016 20:36:04 +0200 Subject: [PATCH 056/212] Restore note page --- htdocs/core/lib/loan.lib.php | 10 ++++ htdocs/loan/note.php | 101 +++++++++++++++++++++++++++++++++++ 2 files changed, 111 insertions(+) create mode 100644 htdocs/loan/note.php diff --git a/htdocs/core/lib/loan.lib.php b/htdocs/core/lib/loan.lib.php index ad578c2e7d3..fa80fe31a2b 100644 --- a/htdocs/core/lib/loan.lib.php +++ b/htdocs/core/lib/loan.lib.php @@ -41,6 +41,16 @@ function loan_prepare_head($object) $head[$tab][2] = 'card'; $tab++; + if (empty($conf->global->MAIN_DISABLE_NOTES_TAB)) + { + $nbNote = (empty($object->note_private)?0:1)+(empty($object->note_public)?0:1); + $head[$tab][0] = DOL_URL_ROOT."/loan/note.php?id=".$object->id; + $head[$tab][1] = $langs->trans("Notes"); + if($nbNote > 0) $head[$tab][1].= ' '.$nbNote.''; + $head[$tab][2] = 'note'; + $tab++; + } + // Show more tabs from modules // Entries must be declared in modules descriptor with line // $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab diff --git a/htdocs/loan/note.php b/htdocs/loan/note.php new file mode 100644 index 00000000000..155dacf460b --- /dev/null +++ b/htdocs/loan/note.php @@ -0,0 +1,101 @@ + + * Copyright (C) 2004-2007 Laurent Destailleur + * Copyright (C) 2005-2012 Regis Houssin + * Copyright (C) 2013 Florian Henry + * Copyright (C) 2015 Frederic France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/** + * \file htdocs/loan/note.php + * \brief Tab for notes on loan + * \ingroup loan + */ + +require '../main.inc.php'; +require_once(DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php'); +require_once DOL_DOCUMENT_ROOT.'/core/lib/loan.lib.php'; + +$action = GETPOST('action'); + +$langs->load('loan'); + +// Security check +$id = GETPOST('id','int'); +$result = restrictedArea($user, 'loan', $id, '&loan'); + +$object = new Loan($db); +if ($id > 0) $object->fetch($id); + +$permissionnote=$user->rights->loan->write; // Used by the include of actions_setnotes.inc.php + + +/* + * Actions + */ + +include DOL_DOCUMENT_ROOT.'/core/actions_setnotes.inc.php'; // Must be include, not include_once + + +/* + * View + */ + +$form = new Form($db); + +llxHeader('',$langs->trans("Loan"),''); + +if ($id > 0) +{ + /* + * Affichage onglets + */ + + $head = loan_prepare_head($object); + + dol_fiche_head($head, 'note', $langs->trans("Loan"), 0, 'bill'); + + + print '
'; + print ''; + + print '
'.$langs->trans("Year").''.$langs->trans("Number").''.$langs->trans("AmountTotal").''.$langs->trans("AmountAverage").''.$langs->trans("Number").''.$langs->trans("AmountTotal").''.$langs->trans("AmountAverage").'
'; + + // Ref + print ''; + print ''; + // Name + print ''; + print ''; + + print "
'.$langs->trans('Ref').''; + print $form->showrefnav($object,'id','',1,'rowid','ref'); + print '
'.$langs->trans("Name").''.$object->label.'
"; + + print '
'; + + //$colwidth='25'; + $cssclass='titlefield'; + $permission = $user->rights->loan->write; // Used by the include of notes.tpl.php + include DOL_DOCUMENT_ROOT.'/core/tpl/notes.tpl.php'; + + + dol_fiche_end(); +} + +llxFooter(); +$db->close(); + From cc8db0d0df54a769033e8f35d9fc7f6cb6531acb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Jun 2016 21:26:31 +0200 Subject: [PATCH 057/212] FIX #2605 Request 4 - Missing last supplier proposal on thirdparty card. --- htdocs/fourn/card.php | 74 ++++++++++++++++++++++- htdocs/langs/en_US/supplier_proposal.lang | 2 + htdocs/theme/eldy/style.css.php | 7 ++- htdocs/theme/md/style.css.php | 18 +++++- 4 files changed, 96 insertions(+), 5 deletions(-) diff --git a/htdocs/fourn/card.php b/htdocs/fourn/card.php index 8c533f0f547..3c8ad35e141 100644 --- a/htdocs/fourn/card.php +++ b/htdocs/fourn/card.php @@ -31,6 +31,7 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.class.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; +require_once DOL_DOCUMENT_ROOT.'/supplier_proposal/class/supplier_proposal.class.php'; require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; @@ -343,6 +344,78 @@ if ($object->id > 0) print '
'; } + + /* + * Last supplier proposal + */ + $proposalstatic = new SupplierProposal($db); + + if ($user->rights->supplier_proposal->lire) + { + $sql = "SELECT p.rowid, p.ref, p.date_valid as dc, p.fk_statut, p.total_ht, p.tva as total_tva, p.total as total_ttc"; + $sql.= " FROM ".MAIN_DB_PREFIX."supplier_proposal as p "; + $sql.= " WHERE p.fk_soc =".$object->id; + $sql.= " AND p.entity =".$conf->entity; + $sql.= " ORDER BY p.date_valid DESC"; + $sql.= " ".$db->plimit($MAXLIST); + + $resql=$db->query($sql); + if ($resql) + { + $i = 0 ; + $num = $db->num_rows($resql); + + if ($num > 0) + { + print ''; + + print ''; + print ''; + } + + $var = True; + while ($i < $num && $i <= $MAXLIST) + { + $obj = $db->fetch_object($resql); + $var=!$var; + + print ""; + print ''; + print ''; + print ''; + print ''; + $i++; + } + $db->free($resql); + + if ($num >0) print "
'; + print ''; + print ''; + print ''; + print '
'.$langs->trans("LastSupplierProposals",($num<$MAXLIST?"":$MAXLIST)).''.$langs->trans("AllPriceRequests").' '.$num.''.img_picto($langs->trans("Statistics"),'stats').'
'; + print '
'; + $proposalstatic->id = $obj->rowid; + $proposalstatic->ref = $obj->ref; + $proposalstatic->total_ht = $obj->total_ht; + $proposalstatic->total_tva = $obj->total_tva; + $proposalstatic->total_ttc = $obj->total_ttc; + print $proposalstatic->getNomUrl(1); + print ''; + if ($obj->dc) + { + print dol_print_date($db->jdate($obj->dc),'day'); + } + else + { + print "-"; + } + print ''.$proposalstatic->LibStatut($obj->fk_statut,5).'
"; + } + else + { + dol_print_error($db); + } + } /* * Last supplier orders @@ -441,7 +514,6 @@ if ($object->id > 0) /* * Last supplier invoices */ - $MAXLIST=5; $langs->load('bills'); $facturestatic = new FactureFournisseur($db); diff --git a/htdocs/langs/en_US/supplier_proposal.lang b/htdocs/langs/en_US/supplier_proposal.lang index 988e377d4df..394d4cabe01 100644 --- a/htdocs/langs/en_US/supplier_proposal.lang +++ b/htdocs/langs/en_US/supplier_proposal.lang @@ -59,3 +59,5 @@ DefaultModelSupplierProposalClosed=Default template when closing a price request ListOfSupplierProposal=List of supplier proposal requests SupplierProposalsToClose=Supplier proposals to close SupplierProposalsToProcess=Supplier proposals to process +LastSupplierProposals=Last price requests +AllPriceRequests=All requests \ No newline at end of file diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index a75c808b69d..733c190fba6 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -730,6 +730,11 @@ div.ficheaddleft { } } +/* For table into table into card */ +div.ficheaddleft tr.liste_titre:first-child td table.nobordernopadding td { + padding: 0 0 0 0; +} + .containercenter { display : table; margin : 0px auto; @@ -2235,7 +2240,7 @@ table.liste tr, table.noborder tr, div.noborder form { min-height: 20px; } table.liste th, table.noborder th, table.noborder tr.liste_titre td, table.noborder tr.box_titre td { - padding: 10px 2px 10px 3px; /* t r b l */ + padding: 8px 2px 8px 3px; /* t r b l */ } tr.box_titre .nobordernopadding td { padding: 0px ! important; } table.liste td, table.noborder td, div.noborder form, div.noborder form div { diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 68fd5d25e5f..3454c20ff09 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -785,6 +785,15 @@ div.ficheaddleft { } } +/* For table into table into card */ +div.ficheaddleft tr.liste_titre:first-child td table.nobordernopadding td { + padding: 0 0 0 0; +} + +table.noborder tr.liste_titre td { + padding: 3px !important; +} + .containercenter { display : table; margin : 0px auto; @@ -844,7 +853,7 @@ img.photoref { .underrefbanner { } .underbanner { - border-bottom: 2px solid rgb();; + border-bottom: 1px solid rgb();; } @@ -1874,7 +1883,10 @@ span.tabspan { /* Boutons actions */ /* ============================================================================== */ -div.divButAction { margin-bottom: 1.4em; } +div.divButAction { + margin-bottom: 1.4em; + vertical-align: top; +} span.butAction, span.butActionDelete { cursor: pointer; @@ -2129,7 +2141,7 @@ table.noborder tr, div.noborder form { } table.liste th, table.noborder th, table.noborder tr.liste_titre td { - padding: 12px 2px 12px 3px; /* t r b l */ + padding: 8px 2px 8px 3px; /* t r b l */ } table.noborder td, div.noborder form, div.noborder form div { padding: 4px 2px 4px 3px; /* t r b l */ From 645412517d44acbbeedea32d8b0ca0dc600a0ebf Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Jun 2016 22:07:35 +0200 Subject: [PATCH 058/212] css enhancement --- htdocs/comm/action/index.php | 4 ++-- htdocs/core/lib/functions.lib.php | 5 +++-- htdocs/theme/eldy/style.css.php | 3 +++ htdocs/theme/md/style.css.php | 12 ++++++++---- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/htdocs/comm/action/index.php b/htdocs/comm/action/index.php index 02a949c7218..5306300e7b1 100644 --- a/htdocs/comm/action/index.php +++ b/htdocs/comm/action/index.php @@ -1,7 +1,7 @@ * Copyright (C) 2003 Eric Seigne - * Copyright (C) 2004-2015 Laurent Destailleur + * Copyright (C) 2004-2016 Laurent Destailleur * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2011 Juanjo Menent * Copyright (C) 2014 Cedric GROSS @@ -425,7 +425,7 @@ else // If javascript off $link.='
'; } -print load_fiche_titre($s, $link.'     '.$nav, ''); +print load_fiche_titre($s, $link.'     '.$nav, '', 0, 0, 'tablelistofcalendars'); // Load events from database into $eventarray diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index f48b615c3fa..e07ca6cc6c4 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -2981,10 +2981,11 @@ function print_fiche_titre($title, $mesg='', $picto='title_generic.png', $pictoi * @param string $picto Icon to use before title (should be a 32x32 transparent png file) * @param int $pictoisfullpath 1=Icon name is a full absolute url of image * @param int $id To force an id on html objects + * @param string $morecssontable More css on table * @return string * @see print_barre_liste */ -function load_fiche_titre($titre, $mesg='', $picto='title_generic.png', $pictoisfullpath=0, $id=0) +function load_fiche_titre($titre, $mesg='', $picto='title_generic.png', $pictoisfullpath=0, $id=0, $morecssontable='') { global $conf; @@ -2994,7 +2995,7 @@ function load_fiche_titre($titre, $mesg='', $picto='title_generic.png', $pictois if (($conf->browser->name == 'ie') && $picto=='title.png') $picto='title.gif'; $return.= "\n"; - $return.= ''; + $return.= '
'; if ($picto) $return.= ''; $return.= ''; + print ''; print ''; print ''; print ''; diff --git a/htdocs/core/tpl/resource_view.tpl.php b/htdocs/core/tpl/resource_view.tpl.php index dd775662db6..7b2a6f43f4d 100644 --- a/htdocs/core/tpl/resource_view.tpl.php +++ b/htdocs/core/tpl/resource_view.tpl.php @@ -5,34 +5,33 @@ $form= new Form($db); +print '
'; + +if($mode == 'edit' ) +{ + print '
'; + print '
'.$langs->trans('Resource').'
'; + print '
'.$langs->trans('Type').'
'; + print '
'.$langs->trans('Busy').'
'; + print '
'.$langs->trans('Mandatory').'
'; + print '
'; + print ''; +} +else +{ + print '
'; + print '
'.$langs->trans('Resource').'
'; + print '
'.$langs->trans('Type').'
'; + print '
'.$langs->trans('Busy').'
'; + print '
'.$langs->trans('Mandatory').'
'; + print '
'; + print ''; +} + if( (array) $linked_resources && count($linked_resources) > 0) { $var=true; - print '
'; - - if($mode == 'edit' ) - { - print '
'; - print '
'.$langs->trans('Resource').'
'; - print '
'.$langs->trans('Type').'
'; - print '
'.$langs->trans('Busy').'
'; - print '
'.$langs->trans('Mandatory').'
'; - print '
'; - print ''; - } - else - { - print '
'; - print '
'.$langs->trans('Resource').'
'; - print '
'.$langs->trans('Type').'
'; - print '
'.$langs->trans('Busy').'
'; - print '
'.$langs->trans('Mandatory').'
'; - print '
'; - print ''; - } - - foreach ($linked_resources as $linked_resource) { $var=!$var; @@ -56,7 +55,6 @@ if( (array) $linked_resources && count($linked_resources) > 0) print '
'.$form->selectyesno('mandatory',$linked_resource['mandatory']?1:0,1).'
'; print '
'; print ''; - } else { @@ -96,11 +94,13 @@ if( (array) $linked_resources && count($linked_resources) > 0) } } - print '
'; } else { - print '
'.$langs->trans('NoResourceLinked').'
'; + print '
'.$langs->trans('NoResourceLinked').'
'; } + +print '
'; + ?> diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index 2e78ea94bbf..2f45d2b782b 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -425,7 +425,7 @@ if ($resql) print $hookmanager->resPrint; if (! empty($arrayfields['p.datec']['checked'])) print_liste_field_titre($arrayfields['p.datec']['label'],$_SERVER["PHP_SELF"],"p.datec","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); if (! empty($arrayfields['p.tms']['checked'])) print_liste_field_titre($arrayfields['p.tms']['label'],$_SERVER["PHP_SELF"],"p.tms","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); - if (! empty($arrayfields['p.fk_statut']['checked'])) print_liste_field_titre($arrayfields['p.fk_statut']['label'],$_SERVER["PHP_SELF"],"p.fk_statut","",$param,'align="center"',$sortfield,$sortorder); + if (! empty($arrayfields['p.fk_statut']['checked'])) print_liste_field_titre($arrayfields['p.fk_statut']['label'],$_SERVER["PHP_SELF"],"p.fk_statut","",$param,'align="right"',$sortfield,$sortorder); print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"],"",'','','align="right"',$sortfield,$sortorder,'maxwidthsearch '); print "\n"; diff --git a/htdocs/resource/element_resource.php b/htdocs/resource/element_resource.php index 59a95f6f57a..7cb5b74fac3 100644 --- a/htdocs/resource/element_resource.php +++ b/htdocs/resource/element_resource.php @@ -168,7 +168,7 @@ if($ret == -1) { dol_print_error($db,$object->error); exit; } -if(!$ret) { +if (!$ret) { print '
'.$langs->trans('NoResourceInDatabase').'
'; } else @@ -304,6 +304,7 @@ else //print load_fiche_titre($langs->trans('ResourcesLinkedToElement'),'',''); + // Show list of resource links foreach ($object->available_resources as $modresources => $resources) { diff --git a/htdocs/theme/eldy/img/object_calendargantt.png b/htdocs/theme/eldy/img/object_calendargantt.png new file mode 100644 index 0000000000000000000000000000000000000000..4d727dd6f2428dc349cbdba254e041b1709d9a63 GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CN!2~3a2>s>&Qfx`y?k+$Y2!1;6t_M<_1s;*b z3=CW!K$y{KjmZq4AbW|YuPgflHg+xx>tvQSMnIu@PZ!4!iOb1z%wDrHI~wF(>;4Y` zudc3+kUTw2H#spOAz*(Q@2bbQw$6@)IqwFr*vY zS>qnM#V&;V>WOTFbO+Iux8t2nAKg0J9QESbU7HoHISjKN&yeU~&^b}|IB5gNhc~+` cCN_97gjf657rkZ>2Renp)78&qol`;+00TQ!egFUf literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/img/object_calendarpertype.png b/htdocs/theme/eldy/img/object_calendarpertype.png new file mode 100644 index 0000000000000000000000000000000000000000..ba16a4ab6c0dfe3a033f2739a587e8c4b567d181 GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CN!VDyL#uerODaPU;cPEB*=VV?2IYI$GA+Gbw zw*3G9f7!BS(`LQ6di5%hZTl)U5Tvvu$S;_|;n|He5GTpo-G!lpRn`N@;VkfoEM{Qf z`T)X=PHRkN00r4gJbhi+?{RXltFf1CoSO_3Qt)(f4B@z*Y{16McKJcT^$7|RsTw>Y i#!7AiYi@TiGBMOF<2MpC+~@;T%i!ti=d#Wzp$PyHSUGC| literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/img/object_resource.png b/htdocs/theme/eldy/img/object_resource.png index 8cda1f3f2202f020c2aa7f0438b72e06f559c83e..2d93019b62f353d5e43b2e617f940ab5b178071b 100644 GIT binary patch delta 101 zcmX@kc$9I1%0xrA=m%`<+I)z)Ukz$zQl$f3c(vMhj?LGuXzW!;$Bu|Pu@JYD@<);T3K F0RZR@7*7BI delta 101 zcmX@gc${&93KwH>kh>GZx^prwCn|ad+-71DV3S`w;mQ&Q1_nJ(7sn8e>&XF3%xt3U z;$rOX5~5seJc{S^ba>VoXx)(D@R4+K@QO(k2@zPt$RHHScXhfFt2j_6gQu&X%Q~lo FCIFu^8fO3i diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 20ee581f318..d7b0aeb1bb6 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -100,6 +100,7 @@ $fontsizesmaller='11'; $usegradienttop=(isset($conf->global->THEME_ELDY_TOPMENU_BACK1)?0:1); $usegradienttitle=(isset($conf->global->THEME_ELDY_BACKTITLE1)?0:1); $useboldtitle=(isset($conf->global->THEME_ELDY_USEBOLDTITLE)?$conf->global->THEME_ELDY_USEBOLDTITLE:1); +$borderwith=2; // Case of option always editable if (! isset($conf->global->THEME_ELDY_BACKBODY)) $conf->global->THEME_ELDY_BACKBODY=$colorbackbody; @@ -800,7 +801,7 @@ img.photoref { .underrefbanner { } .underbanner { - border-bottom: 2px solid rgb(); + border-bottom: px solid rgb(); } @@ -2199,7 +2200,7 @@ table.liste, table.noborder, table.formdoc, div.noborder { border-collapse: separate !important; border-spacing: 0px; - border-top-width: 2px; + border-top-width: px; border-top-color: rgb(); border-top-style: solid; @@ -2566,7 +2567,7 @@ div.liste_titre { border-top-style: solid; } div.liste_titre_bydiv { - border-top-width: 2px; + border-top-width: px; border-top-color: rgb(); border-top-style: solid; @@ -2654,6 +2655,12 @@ form.liste_total div { border-bottom: none; } +.margintable { + border-top-width: px !important; + border-top-color: rgb() !important; + border-top-style: solid !important; +} + .margintable td { border: 0px !important; } diff --git a/htdocs/theme/md/img/object_calendargantt.png b/htdocs/theme/md/img/object_calendargantt.png new file mode 100644 index 0000000000000000000000000000000000000000..b49fe7b2bfb4cab99e1c5a8835c35e7c12b0c690 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+0wn(&ce?|mn3BBRT^L+$+br7+4nJ za0`PlBg3pY5H=O_6Kb2+{|VQM?)KcLOGr;jv*T7*G_cgYB1noQNOf#{imCj z-GBS!SFi_59laoS$0^Zyh7PCC$^fPP3=`G{+}Zt?Q6VkKQ?+!9Py4m+`Cp$%-Q4w< zi94nJ za0`PlBg3pY5H=O_6Kb2T-KJ$)aTs=3gvmaIEHAPUpwIv%H6o%q>%y zlP7{69bc$)uTyQ>`f1*m#q1O(>bzs@i1aurypLgrPtK0JD;vYz7j6kXb!U#syNZ^) zE9*@Vv#F= PHZyp-`njxgN@xNA4pvVi literal 0 HcmV?d00001 diff --git a/htdocs/theme/md/img/object_calendarperuser.png b/htdocs/theme/md/img/object_calendarperuser.png index 98a013a40148fb41b2ab42dcdd6d609ee7d4016f..244da5bedd05d02e58217b515d48708bc4052b1c 100644 GIT binary patch delta 192 zcmV;x06+g~-2sp!e*$7lM??Tb+dQVb00009a7bBm000XU000XU0RWnu7ytkO2XskI zMF-#p2MRkmrYD}=0001PNklV#P-iaobua-;G z7Cs@7Ebak_SxChbz5uvPY`ER2fmcVNv{lO7oFwjegl^QYI&`m`$^^ZZ=}hIH+KJP| u%BmH)W*X@5gj#O|5A`PY;?ew{`4t;x87xBz7FnnO0000Cg>D`$S*0q6Qmxj}hvpx solid rgb();; + border-bottom: px solid rgb(); } From 5db6bcd4a8c3268e3f5c0c06a4190c4cb7d38e6a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 7 Jun 2016 14:06:00 +0200 Subject: [PATCH 063/212] Fix contextpage lost on submitting form or sorting --- htdocs/adherents/cotisations.php | 3 ++- htdocs/comm/action/listactions.php | 1 + htdocs/comm/propal/list.php | 3 ++- htdocs/commande/list.php | 3 ++- htdocs/compta/charges/index.php | 1 + htdocs/compta/facture/fiche-rec.php | 1 + htdocs/compta/facture/list.php | 1 + htdocs/compta/paiement/cheque/list.php | 1 + htdocs/compta/paiement/list.php | 1 + htdocs/compta/salaries/index.php | 3 ++- htdocs/compta/sociales/index.php | 3 ++- htdocs/compta/tva/clients.php | 2 +- htdocs/compta/tva/quadri_detail.php | 2 +- htdocs/compta/tva/reglement.php | 3 ++- htdocs/contact/list.php | 1 + htdocs/contrat/list.php | 1 + htdocs/expedition/list.php | 3 ++- htdocs/fichinter/list.php | 3 ++- htdocs/fourn/commande/list.php | 1 + htdocs/loan/index.php | 1 + htdocs/product/list.php | 6 ++++-- htdocs/product/stock/list.php | 3 ++- htdocs/product/stock/productlot_list.php | 16 +++++++--------- htdocs/projet/list.php | 10 ++++++---- htdocs/projet/tasks/list.php | 5 +++-- htdocs/societe/consumption.php | 3 ++- htdocs/societe/list.php | 3 ++- htdocs/supplier_proposal/list.php | 3 ++- htdocs/theme/eldy/style.css.php | 12 +++++------- htdocs/theme/md/style.css.php | 5 +++++ 30 files changed, 66 insertions(+), 38 deletions(-) diff --git a/htdocs/adherents/cotisations.php b/htdocs/adherents/cotisations.php index d0f8206f269..2e4f4b1994f 100644 --- a/htdocs/adherents/cotisations.php +++ b/htdocs/adherents/cotisations.php @@ -128,9 +128,10 @@ if ($result) if (! empty($date_select)) $title.=' ('.$langs->trans("Year").' '.$date_select.')'; $param=''; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; + if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; if ($statut != '') $param.="&statut=".$statut; if ($date_select) $param.="&date_select=".$date_select; - if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; if ($search_lastname) $param.="&search_lastname=".$search_lastname; if ($search_login) $param.="&search_login=".$search_login; if ($search_acount) $param.="&search_account=".$search_account; diff --git a/htdocs/comm/action/listactions.php b/htdocs/comm/action/listactions.php index e6ad597192a..b927244821e 100644 --- a/htdocs/comm/action/listactions.php +++ b/htdocs/comm/action/listactions.php @@ -155,6 +155,7 @@ llxHeader('',$langs->trans("Agenda"),$help_url); $listofextcals=array(); $param=''; +if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; if ($actioncode != '') $param.="&actioncode=".$actioncode; if ($resourceid > 0) $param.="&resourceid=".$resourceid; diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php index ac22565ff15..af73bf3e45f 100644 --- a/htdocs/comm/propal/list.php +++ b/htdocs/comm/propal/list.php @@ -354,7 +354,8 @@ if ($result) } $param='&socid='.$socid.'&viewstatut='.$viewstatut; - if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; + if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; if ($month) $param.='&month='.$month; if ($year) $param.='&year='.$year; if ($search_ref) $param.='&search_ref=' .$search_ref; diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index 46ae367b887..f19a431ec10 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -381,7 +381,8 @@ if ($resql) $num = $db->num_rows($resql); $param=''; - if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; + if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; if ($socid > 0) $param.='&socid='.$socid; if ($viewstatut != '') $param.='&viewstatut='.$viewstatut; if ($orderday) $param.='&orderday='.$orderday; diff --git a/htdocs/compta/charges/index.php b/htdocs/compta/charges/index.php index b90e7cac3cb..3f794491566 100644 --- a/htdocs/compta/charges/index.php +++ b/htdocs/compta/charges/index.php @@ -72,6 +72,7 @@ $title=$langs->trans("SpecialExpensesArea"); if ($mode == 'sconly') $title=$langs->trans("SocialContributionsPayments"); $param=''; +if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; if ($mode == 'sconly') $param='&mode=sconly'; if ($sortfield) $param.='&sortfield='.$sortfield; diff --git a/htdocs/compta/facture/fiche-rec.php b/htdocs/compta/facture/fiche-rec.php index 0e0bc1d474b..7b2d7076aca 100644 --- a/htdocs/compta/facture/fiche-rec.php +++ b/htdocs/compta/facture/fiche-rec.php @@ -1438,6 +1438,7 @@ else $num = $db->num_rows($resql); $param='&socid='.$socid; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; if ($day) $param.='&day='.$day; if ($month) $param.='&month='.$month; diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index c6651b4810d..2bd9ce1d8a4 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -792,6 +792,7 @@ if ($resql) } $param='&socid='.$socid; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; if ($day) $param.='&day='.$day; if ($month) $param.='&month='.$month; diff --git a/htdocs/compta/paiement/cheque/list.php b/htdocs/compta/paiement/cheque/list.php index 1493ba1b99a..02515bb0886 100644 --- a/htdocs/compta/paiement/cheque/list.php +++ b/htdocs/compta/paiement/cheque/list.php @@ -121,6 +121,7 @@ if ($resql) $num = $db->num_rows($resql); $i = 0; $param=''; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; print '
'; diff --git a/htdocs/compta/paiement/list.php b/htdocs/compta/paiement/list.php index bd72fcc17f7..b4fd8a51d9d 100644 --- a/htdocs/compta/paiement/list.php +++ b/htdocs/compta/paiement/list.php @@ -203,6 +203,7 @@ if ($resql) $i = 0; $param=''; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; $param.=(GETPOST("orphelins")?"&orphelins=1":""); $param.=($search_ref?"&search_ref=".urlencode($search_ref):""); diff --git a/htdocs/compta/salaries/index.php b/htdocs/compta/salaries/index.php index b0584d62850..98278ad374c 100644 --- a/htdocs/compta/salaries/index.php +++ b/htdocs/compta/salaries/index.php @@ -127,7 +127,8 @@ if ($result) $var=true; $param=''; - if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; + if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; if ($typeid) $param.='&typeid='.$typeid; if ($optioncss != '') $param.='&optioncss='.$optioncss; diff --git a/htdocs/compta/sociales/index.php b/htdocs/compta/sociales/index.php index 3133022b9e6..584d4ecfc7d 100644 --- a/htdocs/compta/sociales/index.php +++ b/htdocs/compta/sociales/index.php @@ -138,7 +138,8 @@ if ($resql) $var=true; $param=''; - if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; + if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; if ($year) $param.='&year='.$year; if ($typeid) $param.='&typeid='.$typeid; diff --git a/htdocs/compta/tva/clients.php b/htdocs/compta/tva/clients.php index a22ca9abd3a..b13ea2d4166 100644 --- a/htdocs/compta/tva/clients.php +++ b/htdocs/compta/tva/clients.php @@ -322,7 +322,7 @@ if (is_array($coll_list)) { //print load_fiche_titre($vatsup); //print "
'.img_picto('',$picto, 'id="pictotitle"', $pictoisfullpath).''; $return.= '
'.$titre.'
'; diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 733c190fba6..20ee581f318 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -564,6 +564,9 @@ div.myavailability { max-width: 0; overflow: auto; } +.tablelistofcalendars { + margin-top: 25px !important; +} /* ============================================================================== */ diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 3454c20ff09..87b5b13fa6d 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -100,6 +100,7 @@ $fontsize='13'; $fontsizesmaller='11'; $usegradient=0; $useboldtitle=(isset($conf->global->THEME_ELDY_USEBOLDTITLE)?$conf->global->THEME_ELDY_USEBOLDTITLE:1); +$borderwith=2; // Case of option always editable if (! isset($conf->global->THEME_ELDY_BACKBODY)) $conf->global->THEME_ELDY_BACKBODY=$colorbackbody; @@ -169,7 +170,7 @@ else { $colortextbackvmenu='000000'; } $tmppart=explode(',',$colorbacktitle1); $tmpval=(! empty($tmppart[1]) ? $tmppart[1] : '')+(! empty($tmppart[2]) ? $tmppart[2] : '')+(! empty($tmppart[3]) ? $tmppart[3] : ''); if ($tmpval <= 260) { $colortexttitle='FFFFFF'; $colorshadowtitle='888888'; } -else { $colortexttitle='404040'; $colorshadowtitle='FFFFFF'; } +else { $colortexttitle='101010'; $colorshadowtitle='FFFFFF'; } $tmppart=explode(',',$colorbacktabcard1); $tmpval=(! empty($tmppart[1]) ? $tmppart[1] : '')+(! empty($tmppart[2]) ? $tmppart[2] : '')+(! empty($tmppart[3]) ? $tmppart[3] : ''); if ($tmpval <= 340) { $colortextbacktab='FFFFFF'; } @@ -563,6 +564,9 @@ div.myavailability { max-width: 0; overflow: auto; } +.tablelistofcalendars { + margin-top: 25px !important; +} /* ============================================================================== */ @@ -853,7 +857,7 @@ img.photoref { .underrefbanner { } .underbanner { - border-bottom: 1px solid rgb();; + border-bottom: px solid rgb();; } @@ -2094,7 +2098,7 @@ table.liste, table.noborder, table.formdoc, div.noborder { border-collapse: separate !important; border-spacing: 0px; - border-top-width: 1px; + border-top-width: px; border-top-color: rgb(); border-top-style: solid; @@ -2430,7 +2434,7 @@ div.liste_titre { border-top-style: solid; } div.liste_titre_bydiv { - border-top-width: 1px; + border-top-width: px; border-top-color: rgb(); border-top-style: solid; From 2f8915947f6733162f5f08ea973b775f67f8cd43 Mon Sep 17 00:00:00 2001 From: BoboTiG Date: Tue, 7 Jun 2016 10:16:20 +0200 Subject: [PATCH 059/212] Add GROUP BY to be SQL standart compliant --- htdocs/core/boxes/box_factures_imp.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/core/boxes/box_factures_imp.php b/htdocs/core/boxes/box_factures_imp.php index a3d1e3357b5..bcc26f60e4c 100644 --- a/htdocs/core/boxes/box_factures_imp.php +++ b/htdocs/core/boxes/box_factures_imp.php @@ -87,6 +87,8 @@ class box_factures_imp extends ModeleBoxes $sql.= " AND fk_statut = 1"; if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; if($user->societe_id) $sql.= " AND s.rowid = ".$user->societe_id; + $sql.= " GROUP BY s.nom, s.rowid, s.code_client, s.logo, f.facnumber, f.date_lim_reglement,"; + $sql.= " f.type, f.amount, f.datef, f.total, f.tva, f.total_ttc, f.paye, f.fk_statut, f.rowid"; //$sql.= " ORDER BY f.datef DESC, f.facnumber DESC "; $sql.= " ORDER BY datelimite ASC, f.facnumber ASC "; $sql.= $db->plimit($max, 0); From 404847ed32ef1ffb37ef056c9424d2ddd31f5535 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 7 Jun 2016 11:10:09 +0200 Subject: [PATCH 060/212] Fix sql files not included into the fixdosfiles.sh --- dev/fixdosfiles.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dev/fixdosfiles.sh b/dev/fixdosfiles.sh index ae04977d624..d6b9555efa6 100755 --- a/dev/fixdosfiles.sh +++ b/dev/fixdosfiles.sh @@ -17,14 +17,14 @@ fi # To detec if [ "x$1" = "xlist" ] then - find . \( -iname "functions" -o -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.txt" -o -iname "*.xml" \) -exec file "{}" + | grep CRLF -# find . \( -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.txt" -o -iname "*.xml" \) -exec file "{}" + | grep -v 'htdocs\/includes' | grep CRLF + find . \( -iname "functions" -o -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.sql" -o -iname "*.txt" -o -iname "*.xml" \) -exec file "{}" + | grep CRLF +# find . \( -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.sql" -o -iname "*.txt" -o -iname "*.xml" \) -exec file "{}" + | grep -v 'htdocs\/includes' | grep CRLF fi # To convert if [ "x$1" = "xfix" ] then - for fic in `find . \( -iname "functions" -o -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.txt" -o -iname "*.xml" \) -exec file "{}" + | grep CRLF | awk -F':' '{ print $1 }' ` + for fic in `find . \( -iname "functions" -o -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.sql" -o -iname "*.txt" -o -iname "*.xml" \) -exec file "{}" + | grep CRLF | awk -F':' '{ print $1 }' ` do echo "Fix file $fic" dos2unix "$fic" From 54fbd2b23a2661eb86c0b3ffb65232b7cbe8ea61 Mon Sep 17 00:00:00 2001 From: novalore Date: Tue, 7 Jun 2016 12:48:47 +0200 Subject: [PATCH 061/212] fixes and typos in en_US lang files --- htdocs/langs/en_US/bills.lang | 2 +- htdocs/langs/en_US/receiptprinter.lang | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang index f6428f6a49a..ad5260f8144 100644 --- a/htdocs/langs/en_US/bills.lang +++ b/htdocs/langs/en_US/bills.lang @@ -471,7 +471,7 @@ PDFCrevetteSituationInvoiceTitle=Situation invoice PDFCrevetteDescription=Invoice PDF template Crevette. A invoice template if you use situation invoice PDFCrevetteSituationInvoiceLine=Situation N°%s : Inv. N°%s on %s TotalSituationInvoice=Total situation -invoiceLineProgressError=Invoice line progress can't be egal or upper the next invoice line +invoiceLineProgressError=Invoice line progress can't be greater than or equal to the next invoice line updatePriceNextInvoiceErrorUpdateline=Error : update price on invoice line : %s ToCreateARecurringInvoice=To create a recurring invoice for this contract, first create this draft invoice, then convert it into an invoice template and define the frequency for generation of future invoices. ToCreateARecurringInvoiceGene=To generate future invoices regularly and manually, just go on menu %s - %s - %s. diff --git a/htdocs/langs/en_US/receiptprinter.lang b/htdocs/langs/en_US/receiptprinter.lang index 189a8f25e38..a2f3ba26a21 100644 --- a/htdocs/langs/en_US/receiptprinter.lang +++ b/htdocs/langs/en_US/receiptprinter.lang @@ -75,16 +75,16 @@ DOL_PRINT_ORDER_LOCAL_TAX=Print order local tax DOL_PRINT_ORDER_TOTAL=Print order total DOL_PRINT_ORDER_NUMBER=Print order number DOL_PRINT_ORDER_NUMBER_UNIQUE=Print order number after validation -DOL_PRINT_CUSTOMER_FIRSTNAME=Print customer firstname -DOL_PRINT_CUSTOMER_LASTNAME=Print customer name +DOL_PRINT_CUSTOMER_FIRSTNAME=Print customer name +DOL_PRINT_CUSTOMER_LASTNAME=Print customer surname DOL_PRINT_CUSTOMER_MAIL=Print customer mail DOL_PRINT_CUSTOMER_PHONE=Print customer phone DOL_PRINT_CUSTOMER_MOBILE=Print customer mobile DOL_PRINT_CUSTOMER_SKYPE=Print customer skype DOL_PRINT_CUSTOMER_TAX_NUMBER=Print customer VAT number DOL_PRINT_CUSTOMER_ACCOUNT_BALANCE=Print customer account balance -DOL_PRINT_VENDOR_LASTNAME=Print vendor name -DOL_PRINT_VENDOR_FIRSTNAME=Print vendor firstname +DOL_PRINT_VENDOR_LASTNAME=Print vendor surname +DOL_PRINT_VENDOR_FIRSTNAME=Print vendor name DOL_PRINT_VENDOR_MAIL=Print vendor mail DOL_PRINT_CUSTOMER_POINTS=Print customer points DOL_PRINT_ORDER_POINTS=Print number of points for this order From c7065cc3b806e30d32cb50b58e45568d4c0a8de7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 7 Jun 2016 13:15:38 +0200 Subject: [PATCH 062/212] Minor esthetic fixes --- htdocs/comm/action/card.php | 6 +- htdocs/core/class/html.formmargin.class.php | 2 +- htdocs/core/tpl/resource_view.tpl.php | 54 +++++++++--------- htdocs/projet/list.php | 2 +- htdocs/resource/element_resource.php | 3 +- .../theme/eldy/img/object_calendargantt.png | Bin 0 -> 242 bytes .../theme/eldy/img/object_calendarpertype.png | Bin 0 -> 198 bytes htdocs/theme/eldy/img/object_resource.png | Bin 199 -> 197 bytes htdocs/theme/eldy/style.css.php | 13 ++++- htdocs/theme/md/img/object_calendargantt.png | Bin 0 -> 219 bytes .../theme/md/img/object_calendarpertype.png | Bin 0 -> 221 bytes .../theme/md/img/object_calendarperuser.png | Bin 106 -> 221 bytes htdocs/theme/md/style.css.php | 2 +- 13 files changed, 45 insertions(+), 37 deletions(-) create mode 100644 htdocs/theme/eldy/img/object_calendargantt.png create mode 100644 htdocs/theme/eldy/img/object_calendarpertype.png create mode 100644 htdocs/theme/md/img/object_calendargantt.png create mode 100644 htdocs/theme/md/img/object_calendarpertype.png diff --git a/htdocs/comm/action/card.php b/htdocs/comm/action/card.php index 7a2f231879d..4df296d19da 100644 --- a/htdocs/comm/action/card.php +++ b/htdocs/comm/action/card.php @@ -1445,7 +1445,7 @@ if ($id > 0) print ''; print ''; //print ''; - print img_picto($langs->trans("ViewCal"),'object_calendarweek','class="hideonsmartphone pictoactionview"').' '; + print img_picto($langs->trans("ViewWeek"),'object_calendarweek','class="hideonsmartphone pictoactionview"').' '; print ''."\n"; print '
'; print ''; @@ -1454,7 +1454,7 @@ if ($id > 0) print ''; print ''; //print ''; - print img_picto($langs->trans("ViewCal"),'object_calendarday','class="hideonsmartphone pictoactionview"').' '; + print img_picto($langs->trans("ViewDay"),'object_calendarday','class="hideonsmartphone pictoactionview"').' '; print '
'."\n"; print '
'; print ''; @@ -1463,7 +1463,7 @@ if ($id > 0) print ''; print ''; //print ''; - print img_picto($langs->trans("ViewCal"),'object_calendarperuser','class="hideonsmartphone pictoactionview"').' '; + print img_picto($langs->trans("ViewPerUser"),'object_calendarperuser','class="hideonsmartphone pictoactionview"').' '; print '
'."\n"; print ''; diff --git a/htdocs/core/class/html.formmargin.class.php b/htdocs/core/class/html.formmargin.class.php index a52238be1b9..6678d87ca60 100644 --- a/htdocs/core/class/html.formmargin.class.php +++ b/htdocs/core/class/html.formmargin.class.php @@ -255,7 +255,7 @@ class FormMargin if (! empty($conf->product->enabled) && ! empty($conf->service->enabled)) { - print '
'.$langs->trans('TotalMargin').''.price($marginInfo['pv_total'], null, null, null, null, $rounding).''.price($marginInfo['pa_total'], null, null, null, null, $rounding).'
"; -print ""; +print ""; print '"; print '"; print ""; diff --git a/htdocs/compta/tva/quadri_detail.php b/htdocs/compta/tva/quadri_detail.php index 28ce4e50e24..6ebaee8ecd5 100644 --- a/htdocs/compta/tva/quadri_detail.php +++ b/htdocs/compta/tva/quadri_detail.php @@ -479,7 +479,7 @@ else //print table headers for this quadri - expenses now //imprime les en-tete de tables pour ce quadri - maintenant les d�penses - print ''; + print ''; print ''; print ''; if ($modetax == 0) diff --git a/htdocs/compta/tva/reglement.php b/htdocs/compta/tva/reglement.php index 81fc72f33ef..5484be65a32 100644 --- a/htdocs/compta/tva/reglement.php +++ b/htdocs/compta/tva/reglement.php @@ -134,7 +134,8 @@ if ($result) $var=true; $param=''; - if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; + if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; if ($typeid) $param.='&typeid='.$typeid; diff --git a/htdocs/contact/list.php b/htdocs/contact/list.php index ac54e1aaa5f..a66c1dab946 100644 --- a/htdocs/contact/list.php +++ b/htdocs/contact/list.php @@ -369,6 +369,7 @@ if ($result) $i = 0; $param=''; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; $param.='&begin='.urlencode($begin).'&view='.urlencode($view).'&userid='.urlencode($userid).'&contactname='.urlencode($sall); $param.='&type='.urlencode($type).'&view='.urlencode($view); diff --git a/htdocs/contrat/list.php b/htdocs/contrat/list.php index 4c181d5c147..350a0435d38 100644 --- a/htdocs/contrat/list.php +++ b/htdocs/contrat/list.php @@ -170,6 +170,7 @@ if ($resql) $i = 0; $param=''; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; $param.='&search_contract='.$search_contract; $param.='&search_name='.$search_name; diff --git a/htdocs/expedition/list.php b/htdocs/expedition/list.php index 32481d0bfdd..40e9c516ea8 100644 --- a/htdocs/expedition/list.php +++ b/htdocs/expedition/list.php @@ -256,7 +256,8 @@ if ($resql) $expedition = new Expedition($db); $param=''; - if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; + if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; if ($search_ref_exp) $param.= "&search_ref_exp=".$search_ref_exp; if ($search_ref_liv) $param.= "&search_ref_liv=".$search_ref_liv; if ($search_company) $param.= "&search_company=".$search_company; diff --git a/htdocs/fichinter/list.php b/htdocs/fichinter/list.php index 88224a487cf..81121f3b4bf 100644 --- a/htdocs/fichinter/list.php +++ b/htdocs/fichinter/list.php @@ -141,7 +141,8 @@ if ($result) $num = $db->num_rows($result); $param=''; - if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; + if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; if ($socid) $param.="&socid=".$socid; if ($search_ref) $param.="&search_ref=".urlencode($search_ref); if ($search_company) $param.="&search_company=".urlencode($search_company); diff --git a/htdocs/fourn/commande/list.php b/htdocs/fourn/commande/list.php index 5196c6b973b..8b56e12d8cc 100644 --- a/htdocs/fourn/commande/list.php +++ b/htdocs/fourn/commande/list.php @@ -397,6 +397,7 @@ if ($resql) $param=''; if ($socid > 0) $param.='&socid='.$socid; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; if ($orderday) $param.='&orderday='.$orderday; if ($ordermonth) $param.='&ordermonth='.$ordermonth; diff --git a/htdocs/loan/index.php b/htdocs/loan/index.php index 51f4e74e119..e1aa6139678 100644 --- a/htdocs/loan/index.php +++ b/htdocs/loan/index.php @@ -104,6 +104,7 @@ if ($resql) $var=true; $param=''; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; if ($search_ref) $param.="&search_ref=".$search_ref; if ($search_label) $param.="&search_label=".$search_user; diff --git a/htdocs/product/list.php b/htdocs/product/list.php index 0fdafd64ae5..c95156b4393 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -73,7 +73,8 @@ $pagenext = $page + 1; if (! $sortfield) $sortfield="p.ref"; if (! $sortorder) $sortorder="ASC"; -$contextpage='productservicelist'; +// Initialize context for list +$contextpage=GETPOST('contextpage','aZ')?GETPOST('contextpage','aZ'):'productservicelist'; if ($type === '1') { $contextpage='servicelist'; if ($search_type=='') $search_type='1'; } if ($type === '0') { $contextpage='productlist'; if ($search_type=='') $search_type='0'; } @@ -334,7 +335,8 @@ else } $param=''; - if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; + if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; if ($search_categ > 0) $param.="&search_categ=".$search_categ; if ($sref) $param="&sref=".$sref; if ($search_ref_supplier) $param="&search_ref_supplier=".$search_ref_supplier; diff --git a/htdocs/product/stock/list.php b/htdocs/product/stock/list.php index 58f95625d94..a1f19958cc9 100644 --- a/htdocs/product/stock/list.php +++ b/htdocs/product/stock/list.php @@ -108,7 +108,8 @@ if ($result) llxHeader("",$langs->trans("ListOfWarehouses"),$help_url); $param=''; - if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; + if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; print ''; print ''; diff --git a/htdocs/product/stock/productlot_list.php b/htdocs/product/stock/productlot_list.php index a8fd68f6a34..65bd340fa85 100644 --- a/htdocs/product/stock/productlot_list.php +++ b/htdocs/product/stock/productlot_list.php @@ -305,16 +305,14 @@ if ($resql) $num = $db->num_rows($resql); $params=''; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; - -if ($search_entity != '') $params.= '&search_entity='.urlencode($search_entity); -if ($search_fk_product != '') $params.= '&search_fk_product='.urlencode($search_fk_product); -if ($search_batch != '') $params.= '&search_batch='.urlencode($search_batch); -if ($search_fk_user_creat != '') $params.= '&search_fk_user_creat='.urlencode($search_fk_user_creat); -if ($search_fk_user_modif != '') $params.= '&search_fk_user_modif='.urlencode($search_fk_user_modif); -if ($search_import_key != '') $params.= '&search_import_key='.urlencode($search_import_key); - - + if ($search_entity != '') $params.= '&search_entity='.urlencode($search_entity); + if ($search_fk_product != '') $params.= '&search_fk_product='.urlencode($search_fk_product); + if ($search_batch != '') $params.= '&search_batch='.urlencode($search_batch); + if ($search_fk_user_creat != '') $params.= '&search_fk_user_creat='.urlencode($search_fk_user_creat); + if ($search_fk_user_modif != '') $params.= '&search_fk_user_modif='.urlencode($search_fk_user_modif); + if ($search_import_key != '') $params.= '&search_import_key='.urlencode($search_import_key); if ($optioncss != '') $param.='&optioncss='.$optioncss; // Add $param from extra fields foreach ($search_array_options as $key => $val) diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index 2f45d2b782b..4584c8b8a2f 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -90,8 +90,8 @@ $year = GETPOST('year','int'); if ($search_status == '') $search_status=-1; // -1 or 1 -// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array -$contextpage='projectlist'; +// Initialize context for list +$contextpage=GETPOST('contextpage','aZ')?GETPOST('contextpage','aZ'):'projectlist'; // Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array $hookmanager->initHooks(array($contextpage)); @@ -308,7 +308,8 @@ if ($resql) $num = $db->num_rows($resql); $param=''; - if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; + if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; if ($sday) $param.='&sday='.$day; if ($smonth) $param.='&smonth='.$smonth; if ($syear) $param.='&syear=' .$syear; @@ -346,7 +347,8 @@ if ($resql) print ''; print ''; print ''; - + print ''; + print_barre_liste($text, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, "", $num, $nbtotalofrecords, 'title_project', 0, '', '', $limit); // Show description of content diff --git a/htdocs/projet/tasks/list.php b/htdocs/projet/tasks/list.php index a1c7693b4b7..e5c807371c2 100644 --- a/htdocs/projet/tasks/list.php +++ b/htdocs/projet/tasks/list.php @@ -58,8 +58,8 @@ $day = GETPOST('day','int'); $month = GETPOST('month','int'); $year = GETPOST('year','int'); -// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array -$contextpage='tasklist'; +// Initialize context for list +$contextpage=GETPOST('contextpage','aZ')?GETPOST('contextpage','aZ'):'tasklist'; // Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array $hookmanager->initHooks(array($contextpage)); @@ -314,6 +314,7 @@ if ($resql) $num = $db->num_rows($resql); $param=''; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; if ($sday) $param.='&sday='.$day; if ($smonth) $param.='&smonth='.$smonth; diff --git a/htdocs/societe/consumption.php b/htdocs/societe/consumption.php index b7ea7a93041..70dee1ab8eb 100644 --- a/htdocs/societe/consumption.php +++ b/htdocs/societe/consumption.php @@ -333,7 +333,8 @@ if ($sql_select) $num = $db->num_rows($resql); $param="&socid=".$socid."&type_element=".$type_element; - if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; + if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; if ($sprod_fulldescr) $param.= "&sprod_fulldescr=".urlencode($sprod_fulldescr); if ($sref) $param.= "&sref=".urlencode($sref); if ($month) $param.= "&month=".$month; diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php index 7ad8ac8362d..019542810e8 100644 --- a/htdocs/societe/list.php +++ b/htdocs/societe/list.php @@ -438,7 +438,8 @@ if ($resql) $i = 0; $param=''; - if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; + if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; if ($sall != '') $param .= "&sall=".urlencode($sall); if ($search_categ > 0) $param.='&search_categ='.urlencode($search_categ); if ($search_sale > 0) $param.='&search_sale='.urlencode($search_sale); diff --git a/htdocs/supplier_proposal/list.php b/htdocs/supplier_proposal/list.php index ea9b68d30be..967a510d714 100644 --- a/htdocs/supplier_proposal/list.php +++ b/htdocs/supplier_proposal/list.php @@ -277,7 +277,8 @@ if ($result) } $param='&socid='.$socid.'&viewstatut='.$viewstatut; - if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; + if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; if ($month) $param.='&month='.$month; if ($year) $param.='&year='.$year; if ($search_ref) $param.='&search_ref=' .$search_ref; diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index d7b0aeb1bb6..fb8f993ccf2 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -2226,13 +2226,6 @@ table.liste, table.noborder, table.formdoc, div.noborder { -webkit-border-radius: 0.2em; border-radius: 0.2em;*/ } -/* -#tablelines tr.liste_titre:first-child td, form.formnoborder div, tr.liste_titre.trnoborder td { - border-top-width: 1px; - border-top-color: rgb(); - border-top-style: solid; -} -*/ .liste_titre_add td, .liste_titre_add .tagtd { border-top-width: 1px; @@ -2617,6 +2610,11 @@ tr.liste_titre th, th.liste_titre, tr.liste_titre td, td.liste_titre, form.liste tr.liste_titre th a, th.liste_titre a, tr.liste_titre td a, td.liste_titre a, form.liste_titre div a, div.liste_titre a { text-shadow: none !important; } +tr.liste_titre_topborder td { + border-top-width: px; + border-top-color: rgb(); + border-top-style: solid; +} .liste_titre td a { text-shadow: none !important; color: rgb(); diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index fd8dfff0c44..90733fb6670 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -2483,6 +2483,11 @@ tr.liste_titre th, th.liste_titre, tr.liste_titre td, td.liste_titre, form.liste tr.liste_titre th a, th.liste_titre a, tr.liste_titre td a, td.liste_titre a, form.liste_titre div a, div.liste_titre a { text-shadow: none !important; } +tr.liste_titre_topborder td { + border-top-width: px; + border-top-color: rgb(); + border-top-style: solid; +} .liste_titre td a { text-shadow: none !important; color: rgb(); From 90195763942c5945cb1e5cfed869df3a7dd557ed Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 7 Jun 2016 15:58:02 +0200 Subject: [PATCH 064/212] Fix css class opacitymedium was not used everywhere. --- htdocs/accountancy/admin/fiscalyear.php | 2 +- htdocs/admin/system/filecheck.php | 4 ++-- htdocs/comm/index.php | 4 ++-- htdocs/comm/mailing/index.php | 2 +- htdocs/compta/bank/index.php | 6 +++--- htdocs/compta/deplacement/index.php | 2 +- htdocs/compta/facture.php | 2 +- htdocs/compta/index.php | 4 ++-- htdocs/compta/paiement/cheque/list.php | 2 +- htdocs/compta/prelevement/create.php | 2 +- htdocs/compta/resultat/clientfourn.php | 14 +++++++------- htdocs/core/class/html.formfile.class.php | 2 +- htdocs/core/lib/company.lib.php | 4 ++-- htdocs/core/modules/printing/printgcp.modules.php | 2 +- htdocs/expensereport/index.php | 2 +- htdocs/fourn/facture/card.php | 2 +- htdocs/hrm/admin/admin_establishment.php | 2 +- htdocs/hrm/hrm.php | 6 +++--- htdocs/product/composition/card.php | 4 ++-- htdocs/user/card.php | 2 +- htdocs/user/group/card.php | 2 +- 21 files changed, 36 insertions(+), 36 deletions(-) diff --git a/htdocs/accountancy/admin/fiscalyear.php b/htdocs/accountancy/admin/fiscalyear.php index e84c079a7e5..8dacb956dd4 100644 --- a/htdocs/accountancy/admin/fiscalyear.php +++ b/htdocs/accountancy/admin/fiscalyear.php @@ -135,7 +135,7 @@ if ($result) { $i ++; } } else { - print ''; + print ''; } print '
'.$langs->trans("Num")."'.$langs->trans("Supplier")."".$langs->trans("VATIntra")."
'.$elementsup.''.$productsup.'
' . $langs->trans("None") . '
' . $langs->trans("None") . '
'; diff --git a/htdocs/admin/system/filecheck.php b/htdocs/admin/system/filecheck.php index 9b7dfb76689..48eddfec155 100644 --- a/htdocs/admin/system/filecheck.php +++ b/htdocs/admin/system/filecheck.php @@ -104,7 +104,7 @@ if (file_exists($xmlfile)) } else { - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; } print ''; @@ -136,7 +136,7 @@ if (file_exists($xmlfile)) } else { - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; } print ''; } diff --git a/htdocs/comm/index.php b/htdocs/comm/index.php index 59aa71b5595..6a06aad080f 100644 --- a/htdocs/comm/index.php +++ b/htdocs/comm/index.php @@ -517,7 +517,7 @@ if (! empty($conf->societe->enabled) && $user->rights->societe->lire) } else { - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; } print "
"; } @@ -571,7 +571,7 @@ if (! empty($conf->fournisseur->enabled) && $user->rights->societe->lire) } else { - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; } print '
'; } diff --git a/htdocs/comm/mailing/index.php b/htdocs/comm/mailing/index.php index 5904bec0009..bf7c4624c1e 100644 --- a/htdocs/comm/mailing/index.php +++ b/htdocs/comm/mailing/index.php @@ -189,7 +189,7 @@ if ($result) } else { - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; } print "
"; $db->free($result); diff --git a/htdocs/compta/bank/index.php b/htdocs/compta/bank/index.php index 380b8cff3e8..34cec22fb54 100644 --- a/htdocs/compta/bank/index.php +++ b/htdocs/compta/bank/index.php @@ -130,7 +130,7 @@ foreach ($accounts as $key=>$type) $total[$acc->currency_code] += $solde; } } -if (! $found) print ''.$langs->trans("None").''; +if (! $found) print ''.$langs->trans("None").''; // Total foreach ($total as $key=>$solde) { @@ -182,7 +182,7 @@ foreach ($accounts as $key=>$type) if (! $found) { $var = !$var; - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; } // Total foreach ($total as $key=>$solde) @@ -249,7 +249,7 @@ foreach ($accounts as $key=>$type) if (! $found) { $var = !$var; - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; } // Total foreach ($total as $key=>$solde) diff --git a/htdocs/compta/deplacement/index.php b/htdocs/compta/deplacement/index.php index b83cdde2db9..63556eeaee6 100644 --- a/htdocs/compta/deplacement/index.php +++ b/htdocs/compta/deplacement/index.php @@ -187,7 +187,7 @@ if ($result) } else { - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; } print '
'; } diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index 9dd01b7162c..42f9a440929 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -3353,7 +3353,7 @@ else if ($id > 0 || ! empty($ref)) $i ++; } } else { - print '' . $langs->trans("None") . ''; + print '' . $langs->trans("None") . ''; } // } $db->free($result); diff --git a/htdocs/compta/index.php b/htdocs/compta/index.php index 719953204f9..ffb3b3631f1 100644 --- a/htdocs/compta/index.php +++ b/htdocs/compta/index.php @@ -543,7 +543,7 @@ if (! empty($conf->don->enabled) && $user->rights->societe->lire) } else { - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; } print '
'; } @@ -614,7 +614,7 @@ if (! empty($conf->tax->enabled) && $user->rights->tax->charges->lire) } else { - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; } print "
"; $db->free($resql); diff --git a/htdocs/compta/paiement/cheque/list.php b/htdocs/compta/paiement/cheque/list.php index 02515bb0886..ebfd598ee0b 100644 --- a/htdocs/compta/paiement/cheque/list.php +++ b/htdocs/compta/paiement/cheque/list.php @@ -215,7 +215,7 @@ if ($resql) else { print ""; - print ''.$langs->trans("None").""; + print ''.$langs->trans("None").""; print ''; } print ""; diff --git a/htdocs/compta/prelevement/create.php b/htdocs/compta/prelevement/create.php index c2607d5b83d..3350f5c34a3 100644 --- a/htdocs/compta/prelevement/create.php +++ b/htdocs/compta/prelevement/create.php @@ -235,7 +235,7 @@ if ($resql) $i++; } } - else print ''.$langs->trans("None").''; + else print ''.$langs->trans("None").''; print ""; print "
\n"; } diff --git a/htdocs/compta/resultat/clientfourn.php b/htdocs/compta/resultat/clientfourn.php index df9cf03a30c..95ea2bfe46c 100644 --- a/htdocs/compta/resultat/clientfourn.php +++ b/htdocs/compta/resultat/clientfourn.php @@ -279,7 +279,7 @@ if ($total_ttc == 0) { $var=!$var; print " "; - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; print ''; } @@ -362,7 +362,7 @@ if ($result) { { $var=!$var; print " "; - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; print ''; } @@ -439,7 +439,7 @@ if ($result) { else { $var = !$var; print " "; - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; print ''; } } else { @@ -517,7 +517,7 @@ if ($result) { else { $var = !$var; print " "; - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; print ''; } } else { @@ -606,7 +606,7 @@ if (! empty($conf->salaries->enabled)) { $var = !$var; print " "; - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; print ''; } } @@ -688,7 +688,7 @@ if (! empty($conf->expensereport->enabled)) { $var = !$var; print " "; - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; print ''; } } @@ -757,7 +757,7 @@ if (! empty($conf->don->enabled)) { $var = !$var; print " "; - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; print ''; } } diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index 205bd1df4e5..40275c5c794 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -661,7 +661,7 @@ class FormFile if (count($file_list) == 0 && $headershown) { - $out.=''.$langs->trans("None").''; + $out.=''.$langs->trans("None").''; } $this->numoffiles++; diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index 4d51b703ef0..5b8bd70a566 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -551,7 +551,7 @@ function show_projects($conf, $langs, $db, $object, $backtopage='', $nocreatelin else { $var = false; - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; } $db->free($result); } @@ -766,7 +766,7 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='') else { print ""; - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; print "\n"; } print "\n\n"; diff --git a/htdocs/core/modules/printing/printgcp.modules.php b/htdocs/core/modules/printing/printgcp.modules.php index ca4ca787a94..27b0e0f779c 100644 --- a/htdocs/core/modules/printing/printgcp.modules.php +++ b/htdocs/core/modules/printing/printgcp.modules.php @@ -458,7 +458,7 @@ class printing_printgcp extends PrintingDriver else { $html .= ''; - $html .= ''.$langs->trans("None").''; + $html .= ''.$langs->trans("None").''; $html .= ''; } $html .= ''; diff --git a/htdocs/expensereport/index.php b/htdocs/expensereport/index.php index b980199c800..117ecc5e3c4 100644 --- a/htdocs/expensereport/index.php +++ b/htdocs/expensereport/index.php @@ -201,7 +201,7 @@ if ($result) } else { - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; } print '
'; } diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index 43e5786cbc3..f078c714416 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -1957,7 +1957,7 @@ else } else { - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; } if ($object->paye == 0) diff --git a/htdocs/hrm/admin/admin_establishment.php b/htdocs/hrm/admin/admin_establishment.php index 5d29468090e..5f004f15e09 100644 --- a/htdocs/hrm/admin/admin_establishment.php +++ b/htdocs/hrm/admin/admin_establishment.php @@ -129,7 +129,7 @@ if ($result) } else { - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; } print ''; diff --git a/htdocs/hrm/hrm.php b/htdocs/hrm/hrm.php index bce42359453..cc2366d7e4c 100644 --- a/htdocs/hrm/hrm.php +++ b/htdocs/hrm/hrm.php @@ -207,7 +207,7 @@ if (! empty($conf->holiday->enabled) && $user->rights->holiday->read) } else { - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; } print '
'; } @@ -272,7 +272,7 @@ if (! empty($conf->deplacement->enabled) && $user->rights->deplacement->lire) } else { - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; } print '
'; } @@ -336,7 +336,7 @@ if (! empty($conf->expensereport->enabled) && $user->rights->expensereport->lire } else { - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; } print '
'; } diff --git a/htdocs/product/composition/card.php b/htdocs/product/composition/card.php index d0d26292251..913fc40e40b 100644 --- a/htdocs/product/composition/card.php +++ b/htdocs/product/composition/card.php @@ -282,7 +282,7 @@ if ($id > 0 || ! empty($ref)) else { print ''; - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; print ''; } print ''; @@ -453,7 +453,7 @@ if ($id > 0 || ! empty($ref)) if (! empty($conf->stock->enabled)) $colspan++; print ''; - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; print ''; } diff --git a/htdocs/user/card.php b/htdocs/user/card.php index dc10819ba84..c0ac112d51f 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -1738,7 +1738,7 @@ else } else { - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; } print ""; diff --git a/htdocs/user/group/card.php b/htdocs/user/group/card.php index 716db97b911..1da40878a62 100644 --- a/htdocs/user/group/card.php +++ b/htdocs/user/group/card.php @@ -491,7 +491,7 @@ else } else { - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; } print ""; print "
"; From 544b123bdd29028b21a680a76d3ac3ad10b12760 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 7 Jun 2016 20:25:45 +0200 Subject: [PATCH 065/212] Fix can edit condition and mode of payment even if not draft. --- htdocs/commande/card.php | 4 ++-- htdocs/theme/eldy/style.css.php | 2 +- htdocs/theme/md/style.css.php | 6 ++++++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index 36b87d680d4..cf51092a4de 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -2147,7 +2147,7 @@ if ($action == 'create' && $user->rights->commande->creer) print ''; - if ($action != 'editconditions' && $object->brouillon) + if ($action != 'editconditions') print ''; print '
'; print $langs->trans('PaymentConditionsShort'); print 'id . '">' . img_edit($langs->trans('SetConditions'), 1) . '
'; print ''; @@ -2165,7 +2165,7 @@ if ($action == 'create' && $user->rights->commande->creer) print ''; - if ($action != 'editmode' && $object->brouillon) + if ($action != 'editmode') print ''; print '
'; print $langs->trans('PaymentMode'); print 'id . '">' . img_edit($langs->trans('SetMode'), 1) . '
'; print ''; diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index fb8f993ccf2..52ee642719c 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -2653,7 +2653,7 @@ form.liste_total div { border-bottom: none; } -.margintable { +.paymenttable, .margintable { border-top-width: px !important; border-top-color: rgb() !important; border-top-style: solid !important; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 90733fb6670..559f464a6df 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -2527,6 +2527,12 @@ input.liste_titre { border-bottom: none; } +.paymenttable, .margintable { + border-top-width: px !important; + border-top-color: rgb() !important; + border-top-style: solid !important; +} + .margintable td { border: 0px !important; } From f552f3a7d5868546e0757d9408a363d016ee42e6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 7 Jun 2016 20:51:06 +0200 Subject: [PATCH 066/212] Fix missing $notrigger on product delete --- htdocs/product/class/product.class.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 5a90bbf3650..36e5d7e6b26 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -879,9 +879,10 @@ class Product extends CommonObject * Delete a product from database (if not used) * * @param int $id Product id (usage of this is deprecated, delete should be called without parameters on a fetched object) + * @param int $notrigger Do not execute trigger * @return int < 0 if KO, 0 = Not possible, > 0 if OK */ - function delete($id=0) + function delete($id=0, $notrigger=0) { // Deprecation warning if ($id > 0) { @@ -914,7 +915,7 @@ class Product extends CommonObject { $this->db->begin(); - if (! $error) + if (! $error && empty($notrigger)) { // Call trigger $result=$this->call_trigger('PRODUCT_DELETE',$user); From 9dade02dba701930e6876b1cdae908eaa8d3770f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 7 Jun 2016 20:52:43 +0200 Subject: [PATCH 067/212] Fix missing test on $error --- htdocs/societe/class/societe.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index cb1d783497c..c7f92b2ca1b 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -1347,7 +1347,7 @@ class Societe extends CommonObject $this->db->begin(); // User is mandatory for trigger call - if ($call_trigger) + if (! $error && $call_trigger) { // Call trigger $result=$this->call_trigger('COMPANY_DELETE',$fuser); From 2f9031faa4f8ebe19232d501ae16941a91843dd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= Date: Wed, 8 Jun 2016 02:31:59 +0200 Subject: [PATCH 068/212] Added Markdown rule to editorconfig Markdown uses two spaces to encode a line break. Editors usually removes them without this configuration which can prove quite frustrating. --- .editorconfig | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.editorconfig b/.editorconfig index 5b3e0d6a8df..2df455f0d4f 100644 --- a/.editorconfig +++ b/.editorconfig @@ -15,3 +15,5 @@ indent_style = tab indent_style = tab [*.xml] indent_style = tab +[*.md] +trim_trailing_whitespace = false From f5d7c6fda5ccc65e09cf0850b595d025a3b962e7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 8 Jun 2016 09:57:03 +0200 Subject: [PATCH 069/212] Fix translation of desired stock (this is more clear) --- htdocs/langs/en_US/stocks.lang | 3 ++- htdocs/product/stock/product.php | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/htdocs/langs/en_US/stocks.lang b/htdocs/langs/en_US/stocks.lang index c1ba6f73159..c0f304bce35 100644 --- a/htdocs/langs/en_US/stocks.lang +++ b/htdocs/langs/en_US/stocks.lang @@ -97,7 +97,8 @@ SelectWarehouseForStockDecrease=Choose warehouse to use for stock decrease SelectWarehouseForStockIncrease=Choose warehouse to use for stock increase NoStockAction=No stock action LastWaitingSupplierOrders=Orders waiting for receptions -DesiredStock=Desired minimum stock +DesiredStock=Desired optimal stock +DesiredStockDesc=This stock amount will be the value used to fill the stock by replenishment feature. DesiredMaxStock=Desired maximum stock StockToBuy=To order Replenishment=Replenishment diff --git a/htdocs/product/stock/product.php b/htdocs/product/stock/product.php index 56504432840..e49da226727 100644 --- a/htdocs/product/stock/product.php +++ b/htdocs/product/stock/product.php @@ -490,7 +490,8 @@ if ($id > 0 || $ref) print ''; // Desired stock - print ''.$form->editfieldkey("DesiredStock",'desiredstock',$object->desiredstock,$object,$user->rights->produit->creer).''; + print ''.$form->editfieldkey($form->textwithpicto($langs->trans("DesiredStock"), $langs->trans("DesiredStockDesc"), 1),'desiredstock',$object->desiredstock,$object,$user->rights->produit->creer); + print ''; print $form->editfieldval("DesiredStock",'desiredstock',$object->desiredstock,$object,$user->rights->produit->creer); print ''; @@ -503,7 +504,7 @@ if ($id > 0 || $ref) $text_stock_options.= (! empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER)?$langs->trans("ReStockOnValidateOrder").'
':''); $text_stock_options.= (! empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER)?$langs->trans("ReStockOnDispatchOrder").'
':''); print ''; - print $form->textwithtooltip($langs->trans("PhysicalStock"), $text_stock_options, 2, 1, img_picto('', 'info'), '', 2); + print $form->textwithpicto($langs->trans("PhysicalStock"), $text_stock_options, 1); print ''; print ''.$object->stock_reel; if ($object->seuil_stock_alerte != '' && ($object->stock_reel < $object->seuil_stock_alerte)) print ' '.img_warning($langs->trans("StockLowerThanLimit")); From 240c4baba868a12dd3f7233543961ec4aed53e4d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 8 Jun 2016 11:29:48 +0200 Subject: [PATCH 070/212] FIX filter on stock movement --- htdocs/product/stock/mouvement.php | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/htdocs/product/stock/mouvement.php b/htdocs/product/stock/mouvement.php index 0012db23d3d..7ab0ff72492 100644 --- a/htdocs/product/stock/mouvement.php +++ b/htdocs/product/stock/mouvement.php @@ -344,10 +344,7 @@ $sql.= " WHERE m.fk_product = p.rowid"; $sql.= " AND m.fk_entrepot = e.rowid"; $sql.= " AND e.entity IN (".getEntity('stock', 1).")"; if (empty($conf->global->STOCK_SUPPORTS_SERVICES)) $sql.= " AND p.fk_product_type = 0"; -if ($id) -{ - $sql.= " AND e.rowid ='".$id."'"; -} +if ($id > 0) $sql.= " AND e.rowid ='".$id."'"; if ($month > 0) { if ($year > 0) @@ -359,15 +356,12 @@ else if ($year > 0) { $sql.= " AND m.datem BETWEEN '".$db->idate(dol_get_first_day($year,1,false))."' AND '".$db->idate(dol_get_last_day($year,12,false))."'"; } -if ($idproduct > 0) -{ - $sql.= " AND p.rowid = '".$idproduct."'"; -} -if (! empty($search_movement)) $sql.= " AND m.label LIKE '%".$db->escape($search_movement)."%'"; +if ($idproduct > 0) $sql.= " AND p.rowid = '".$idproduct."'"; +if (! empty($search_movement)) $sql.= natural_search('m.label', $search_movement); if (! empty($search_inventorycode)) $sql.= " AND m.inventorycode LIKE '%".$db->escape($search_inventorycode)."%'"; if (! empty($search_product_ref)) $sql.= " AND p.ref LIKE '%".$db->escape($search_product_ref)."%'"; if (! empty($search_product)) $sql.= " AND p.label LIKE '%".$db->escape($search_product)."%'"; -if (! empty($search_warehouse)) $sql.= " AND e.rowid = '".$db->escape($search_warehouse)."'"; +if ($search_warehouse > 0) $sql.= " AND e.rowid = '".$db->escape($search_warehouse)."'"; if (! empty($search_user)) $sql.= " AND u.login LIKE '%".$db->escape($search_user)."%'"; if (! empty($search_batch)) $sql.= " AND m.batch LIKE '%".$db->escape($search_batch)."%'"; From 59c6c9020093e1b8eaf6cb1cf08d3245a89142b7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 8 Jun 2016 11:40:50 +0200 Subject: [PATCH 071/212] Remove a FIXME. --- htdocs/product/class/product.class.php | 2 +- htdocs/product/stock/class/mouvementstock.class.php | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 36e5d7e6b26..982b109da99 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -131,7 +131,7 @@ class Product extends CommonObject var $status_buy; // Statut indique si le produit est un produit fini '1' ou une matiere premiere '0' var $finished; - // We must manage batch number, sell-by date and so on : '1':yes '0':no + // We must manage lot/batch number, sell-by date and so on : '1':yes '0':no var $status_batch; var $customcode; // Customs code diff --git a/htdocs/product/stock/class/mouvementstock.class.php b/htdocs/product/stock/class/mouvementstock.class.php index b9859f9ec9b..a19a39beb45 100644 --- a/htdocs/product/stock/class/mouvementstock.class.php +++ b/htdocs/product/stock/class/mouvementstock.class.php @@ -126,7 +126,6 @@ class MouvementStock extends CommonObject return -2; } - // FIXME Code not complete to implement this // Check table llx_product_lot from batchnumber for same product // If found and eatby/sellby defined into table and provided and differs, return error // If found and eatby/sellby defined into table and not provided, we take value from table @@ -218,7 +217,7 @@ class MouvementStock extends CommonObject $i++; } } - else + else // If not found, we add record { $productlot = new Productlot($this->db); $productlot->fk_product = $fk_product; From 73d465a8e82856439564c9ee0cb2e23298bde750 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 8 Jun 2016 11:44:00 +0200 Subject: [PATCH 072/212] Fix missing use of natural_search --- htdocs/product/stock/mouvement.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/product/stock/mouvement.php b/htdocs/product/stock/mouvement.php index 7ab0ff72492..82b0d2f97a1 100644 --- a/htdocs/product/stock/mouvement.php +++ b/htdocs/product/stock/mouvement.php @@ -358,12 +358,12 @@ else if ($year > 0) } if ($idproduct > 0) $sql.= " AND p.rowid = '".$idproduct."'"; if (! empty($search_movement)) $sql.= natural_search('m.label', $search_movement); -if (! empty($search_inventorycode)) $sql.= " AND m.inventorycode LIKE '%".$db->escape($search_inventorycode)."%'"; -if (! empty($search_product_ref)) $sql.= " AND p.ref LIKE '%".$db->escape($search_product_ref)."%'"; -if (! empty($search_product)) $sql.= " AND p.label LIKE '%".$db->escape($search_product)."%'"; +if (! empty($search_inventorycode)) $sql.= natural_search('m.inventorycode', $search_inventorycode); +if (! empty($search_product_ref)) $sql.= natural_search('p.ref', $search_product_ref); +if (! empty($search_product)) $sql.= natural_search('p.label', $search_product); if ($search_warehouse > 0) $sql.= " AND e.rowid = '".$db->escape($search_warehouse)."'"; -if (! empty($search_user)) $sql.= " AND u.login LIKE '%".$db->escape($search_user)."%'"; -if (! empty($search_batch)) $sql.= " AND m.batch LIKE '%".$db->escape($search_batch)."%'"; +if (! empty($search_user)) $sql.= natural_search('u.login', $search_user); +if (! empty($search_batch)) $sql.= natural_search('m.batch', $search_batch); $nbtotalofrecords = 0; if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) From 653387ba9508bfa8d0b15397b1ec558be9011bb4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 8 Jun 2016 11:58:37 +0200 Subject: [PATCH 073/212] Fix pagination on movement list --- htdocs/product/stock/mouvement.php | 96 +++++++++++++++++++++--------- 1 file changed, 69 insertions(+), 27 deletions(-) diff --git a/htdocs/product/stock/mouvement.php b/htdocs/product/stock/mouvement.php index 82b0d2f97a1..9a0059317fa 100644 --- a/htdocs/product/stock/mouvement.php +++ b/htdocs/product/stock/mouvement.php @@ -66,7 +66,29 @@ if (! $sortorder) $sortorder="DESC"; $pdluoid=GETPOST('pdluoid','int'); -if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers +// Initialize context for list +$contextpage=GETPOST('contextpage','aZ')?GETPOST('contextpage','aZ'):'movementlist'; + +// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array +$hookmanager->initHooks(array($contextpage)); +$extrafields = new ExtraFields($db); + +// fetch optionals attributes and labels +$extralabels = $extrafields->fetch_name_optionals_label('movement'); +$search_array_options=$extrafields->getOptionalsFromPost($extralabels,'','search_'); + + + +/* + * Actions + */ + +if ($cancel) $action=''; // Protection to avoid action for all cancel buttons + +include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php'; + +// Do we click on purge search criteria ? +if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers { $year=''; $month=''; @@ -77,15 +99,9 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both $search_user=""; $search_batch=""; $sall=""; + $search_array_options=array(); } - -/* - * Actions - */ - -if ($cancel) $action=''; // Protection to avoid action for all cancel buttons - // Correct stock if ($action == "correct_stock") { @@ -547,22 +563,40 @@ if ($resql) $param=''; - if ($id > 0) $param.='&id='.$id; - if ($search_movement) $param.='&search_movement='.urlencode($search_movement); + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; + if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; + if ($id > 0) $param.='&id='.$id; + if ($search_movement) $param.='&search_movement='.urlencode($search_movement); if ($search_inventorycode) $param.='&search_inventorycode='.urlencode($search_inventorycode); - if ($search_product_ref) $param.='&search_product_ref='.urlencode($search_product_ref); - if ($search_product) $param.='&search_product='.urlencode($search_product); - if ($search_warehouse) $param.='&search_warehouse='.urlencode($search_warehouse); - if (!empty($sref)) $param.='&sref='.urlencode($sref); // FIXME $sref is not defined - if (!empty($snom)) $param.='&snom='.urlencode($snom); // FIXME $snom is not defined - if ($search_user) $param.='&search_user='.urlencode($search_user); - if ($idproduct > 0) $param.='&idproduct='.$idproduct; - if ($id > 0) print_barre_liste($texte, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder,'',$num, $nbtotalofrecords,''); - else print_barre_liste($texte, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder,'',$num, $nbtotalofrecords); - - print ''; + if ($search_product_ref) $param.='&search_product_ref='.urlencode($search_product_ref); + if ($search_product) $param.='&search_product='.urlencode($search_product); + if ($search_warehouse > 0) $param.='&search_warehouse='.urlencode($search_warehouse); + if (!empty($sref)) $param.='&sref='.urlencode($sref); // FIXME $sref is not defined + if (!empty($snom)) $param.='&snom='.urlencode($snom); // FIXME $snom is not defined + if ($search_user) $param.='&search_user='.urlencode($search_user); + if ($idproduct > 0) $param.='&idproduct='.$idproduct; + // Add $param from extra fields + foreach ($search_array_options as $key => $val) + { + $crit=$val; + $tmpkey=preg_replace('/search_options_/','',$key); + if ($val != '') $param.='&search_options_'.$tmpkey.'='.urlencode($val); + } + + print ''; + if ($optioncss != '') print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; if ($id > 0) print ''; - + + if ($id > 0) print_barre_liste($texte, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder,'',$num, $nbtotalofrecords, '', 0, '', '', $limit); + else print_barre_liste($texte, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder,'',$num, $nbtotalofrecords, 'title_generic', 0, '', '', $limit); + print ''; print ""; //print_liste_field_titre($langs->trans("Id"),$_SERVER["PHP_SELF"], "m.rowid","",$param,"",$sortfield,$sortorder); @@ -581,7 +615,8 @@ if ($resql) print_liste_field_titre($langs->trans("InventoryCodeShort"),$_SERVER["PHP_SELF"], "m.inventorycode","",$param,"",$sortfield,$sortorder); print_liste_field_titre($langs->trans("LabelMovement"),$_SERVER["PHP_SELF"], "m.label","",$param,"",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Source"),$_SERVER["PHP_SELF"], "m.label","",$param,"",$sortfield,$sortorder); - print_liste_field_titre($langs->trans("Units"),$_SERVER["PHP_SELF"], "m.value","",$param,'align="right"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Qty"),$_SERVER["PHP_SELF"], "m.value","",$param,'align="right"',$sortfield,$sortorder); + print_liste_field_titre(""); print "\n"; // Lignes des champs de filtre @@ -633,17 +668,21 @@ if ($resql) print ''; - + // Qty + print ''; + // Actions print ''; print "\n"; $arrayofuniqueproduct=array(); $var=True; - while ($i < min($num,$conf->liste_limit)) + while ($i < min($num,$limit)) { $objp = $db->fetch_object($resql); @@ -710,6 +749,9 @@ if ($resql) print ''; + + print ''; + print "\n"; $i++; } From 8b446faa53955d3fc4973fc0084180398dc0c552 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 8 Jun 2016 11:59:48 +0200 Subject: [PATCH 074/212] Fix field not sortable --- htdocs/product/stock/mouvement.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/product/stock/mouvement.php b/htdocs/product/stock/mouvement.php index 9a0059317fa..8c5f55fb8af 100644 --- a/htdocs/product/stock/mouvement.php +++ b/htdocs/product/stock/mouvement.php @@ -614,7 +614,7 @@ if ($resql) print_liste_field_titre($langs->trans("Author"),$_SERVER["PHP_SELF"], "m.fk_user_author","",$param,"",$sortfield,$sortorder); print_liste_field_titre($langs->trans("InventoryCodeShort"),$_SERVER["PHP_SELF"], "m.inventorycode","",$param,"",$sortfield,$sortorder); print_liste_field_titre($langs->trans("LabelMovement"),$_SERVER["PHP_SELF"], "m.label","",$param,"",$sortfield,$sortorder); - print_liste_field_titre($langs->trans("Source"),$_SERVER["PHP_SELF"], "m.label","",$param,"",$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Source"),$_SERVER["PHP_SELF"], "","",$param,"",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Qty"),$_SERVER["PHP_SELF"], "m.value","",$param,'align="right"',$sortfield,$sortorder); print_liste_field_titre(""); print "\n"; From b3d58e95109b615b9e5471f24fdaa36277bb2902 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 8 Jun 2016 14:36:52 +0200 Subject: [PATCH 075/212] FIX large expense note --- .../expensereport/doc/pdf_standard.modules.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php b/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php index 0731b803ca3..9f405881565 100644 --- a/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php +++ b/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php @@ -313,11 +313,6 @@ class pdf_standard extends ModeleExpenseReport $pdf->SetFont('','', $default_font_size - 1); $pdf->writeHTMLCell($this->posxcomment-$this->posxpiece-1, 3, $this->posxpiece-1, $curY, $piece_comptable, 0, 1); - // Comments - $pdf->SetFont('','', $default_font_size - 1); - $pdf->SetXY($this->posxcomment, $curY); - $pdf->writeHTMLCell($this->posxdate-$this->posxdesc-1, 3, $this->posxdesc-1, $curY, $object->lines[$i]->comments, 0, 1); - //nexY $nexY = $pdf->GetY(); $pageposafter=$pdf->getPage(); @@ -325,6 +320,11 @@ class pdf_standard extends ModeleExpenseReport $pdf->setTopMargin($this->marge_haute); $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. + // Comments + $pdf->SetFont('','', $default_font_size - 1); + $pdf->SetXY($this->posxcomment, $curY); + $pdf->writeHTMLCell($this->posxdate-$this->posxdesc-1, 3, $this->posxdesc-1, $curY, $object->lines[$i]->comments, 0, 1); + // Date $pdf->SetFont('','', $default_font_size - 1); $pdf->SetXY($this->posxdate, $curY); @@ -562,7 +562,7 @@ class pdf_standard extends ModeleExpenseReport $pdf->SetFont('','B', $default_font_size + 4); $pdf->SetXY($posx,$posy); $pdf->SetTextColor(0,0,60); - $pdf->MultiCell($this->page_largeur-$this->marge_droite-$posx,6,$langs->trans("ExpenseReport"), 0, 'L'); + $pdf->MultiCell($this->page_largeur-$this->marge_droite-$posx,6,$langs->trans("ExpenseReport"), 0, 'R'); $pdf->SetFont('','', $default_font_size -1); @@ -570,19 +570,19 @@ class pdf_standard extends ModeleExpenseReport $posy+=8; $pdf->SetXY($posx,$posy); $pdf->SetTextColor(0,0,60); - $pdf->MultiCell($this->page_largeur-$this->marge_droite-$posx, 3, $outputlangs->transnoentities("Ref")." : " . $object->ref, '', 'L'); + $pdf->MultiCell($this->page_largeur-$this->marge_droite-$posx, 3, $outputlangs->transnoentities("Ref")." : " . $object->ref, '', 'R'); // Date start period $posy+=5; $pdf->SetXY($posx,$posy); $pdf->SetTextColor(0,0,60); - $pdf->MultiCell($this->page_largeur-$this->marge_droite-$posx, 3, $outputlangs->transnoentities("DateStart")." : " . ($object->date_debut>0?dol_print_date($object->date_debut,"day",false,$outpulangs):''), '', 'L'); + $pdf->MultiCell($this->page_largeur-$this->marge_droite-$posx, 3, $outputlangs->transnoentities("DateStart")." : " . ($object->date_debut>0?dol_print_date($object->date_debut,"day",false,$outpulangs):''), '', 'R'); // Date end period $posy+=5; $pdf->SetXY($posx,$posy); $pdf->SetTextColor(0,0,60); - $pdf->MultiCell($this->page_largeur-$this->marge_droite-$posx, 3, $outputlangs->transnoentities("DateEnd")." : " . ($object->date_fin>0?dol_print_date($object->date_fin,"day",false,$outpulangs):''), '', 'L'); + $pdf->MultiCell($this->page_largeur-$this->marge_droite-$posx, 3, $outputlangs->transnoentities("DateEnd")." : " . ($object->date_fin>0?dol_print_date($object->date_fin,"day",false,$outpulangs):''), '', 'R'); // Status Expense Report $posy+=6; From e5aa79364a8bf9fa748217220ea12dd5dc7bc7aa Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 8 Jun 2016 18:21:05 +0200 Subject: [PATCH 076/212] Update cache example --- build/debian/apache/.htaccess | 15 ++++++++++++++- build/exe/doliwamp/httpd.conf.install | 2 +- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/build/debian/apache/.htaccess b/build/debian/apache/.htaccess index a59829d970b..50f56abaf0e 100644 --- a/build/debian/apache/.htaccess +++ b/build/debian/apache/.htaccess @@ -5,4 +5,17 @@ Require all denied Order deny, allow Denied from all - \ No newline at end of file + + + +# OPTIMIZE: To use cache on static pages (A259200 = 1 month, A7200 = 2 hours). +# Note that you must also enable the module mod_expires. +#ExpiresActive On +#ExpiresByType image/x-icon A2592000 +#ExpiresByType image/gif A2592000 +#ExpiresByType image/png A2592000 +#ExpiresByType image/jpeg A2592000 +#ExpiresByType text/css A2592000 +#ExpiresByType text/javascript A2592000 +#ExpiresByType application/x-javascript A2592000 +#ExpiresByType application/javascript A2592000 diff --git a/build/exe/doliwamp/httpd.conf.install b/build/exe/doliwamp/httpd.conf.install index 64aff6d42a2..980f80f5622 100644 --- a/build/exe/doliwamp/httpd.conf.install +++ b/build/exe/doliwamp/httpd.conf.install @@ -745,7 +745,7 @@ SSLCertificateKeyFile "WAMPROOT/myserver.key" # You can also set this with constant MAIN_OPTIMIZE_SPEED and bit 2 set. #TODO -# OPTIMIZE: To use cache on static pages (A259200 = 1 month). +# OPTIMIZE: To use cache on static pages (A259200 = 1 month, A7200 = 2 hours). # Note that you must also enable the module mod_expires. #ExpiresActive On #ExpiresByType image/x-icon A2592000 From f9190b0940b6498da0528408874e336d0fc639e0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 8 Jun 2016 18:32:42 +0200 Subject: [PATCH 077/212] Update doc --- build/debian/apache/.htaccess | 2 +- build/exe/doliwamp/httpd.conf.install | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build/debian/apache/.htaccess b/build/debian/apache/.htaccess index 50f56abaf0e..3c3d2e02683 100644 --- a/build/debian/apache/.htaccess +++ b/build/debian/apache/.htaccess @@ -8,7 +8,7 @@ Denied from all -# OPTIMIZE: To use cache on static pages (A259200 = 1 month, A7200 = 2 hours). +# OPTIMIZE: To use cache on static pages (A259200 = 1 month, A7200 = 2 hours, A691600 = 8 days = recommanded for static resources). # Note that you must also enable the module mod_expires. #ExpiresActive On #ExpiresByType image/x-icon A2592000 diff --git a/build/exe/doliwamp/httpd.conf.install b/build/exe/doliwamp/httpd.conf.install index 980f80f5622..bfe17b07d42 100644 --- a/build/exe/doliwamp/httpd.conf.install +++ b/build/exe/doliwamp/httpd.conf.install @@ -745,7 +745,7 @@ SSLCertificateKeyFile "WAMPROOT/myserver.key" # You can also set this with constant MAIN_OPTIMIZE_SPEED and bit 2 set. #TODO -# OPTIMIZE: To use cache on static pages (A259200 = 1 month, A7200 = 2 hours). +# OPTIMIZE: To use cache on static pages (A259200 = 1 month, A7200 = 2 hours, A691600 = 8 days = recommanded for static resources). # Note that you must also enable the module mod_expires. #ExpiresActive On #ExpiresByType image/x-icon A2592000 From 8ffe7097a45cea7195d4701b72bffc804c75515c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 9 Jun 2016 01:33:26 +0200 Subject: [PATCH 078/212] Prepare responsive fixes --- htdocs/public/test/test_arrays.php | 40 +++++++++++++++++++++++++----- htdocs/theme/eldy/style.css.php | 15 ++++++++--- htdocs/theme/md/style.css.php | 8 ++++++ 3 files changed, 53 insertions(+), 10 deletions(-) diff --git a/htdocs/public/test/test_arrays.php b/htdocs/public/test/test_arrays.php index 44911b8fa9b..28ff4bdb743 100644 --- a/htdocs/public/test/test_arrays.php +++ b/htdocs/public/test/test_arrays.php @@ -30,7 +30,7 @@ if (empty($usedolheader)) Test page - + @@ -40,6 +40,7 @@ if (empty($usedolheader)) + @@ -87,8 +88,9 @@ This page is a sample of page using tables. It is designed to make test with
- tablednd
-


Example 0a : Table with div+div+div containg a select that should be overflowed and truncated => Use this to align text or form
+ +


Example 0a : Table with div+div+div containg a select that should be overflowed and truncated => Use this to align text or form
@@ -127,12 +129,31 @@ This page is a sample of page using tables. It is designed to make test with
'; print '  '; print ''; + print '  '; + print ''; - print ''; - print ''; + $searchpitco=$form->showFilterAndCheckAddButtons(0); + print $searchpitco; print '
'; if ($objp->value > 0) print '+'; print $objp->value.'
- +


Example 1 : Standard table/thead/tbody/tr/th-td (no class pair/impair on td) => Use this if you need the drag and drop for lines or for long result tables
+ + + + -" id="tablelines3"> + +
" id="tablelines3"> +trans('title1'),0,$_SERVER["PHP_SELF"],'aaa','','','align="left"',$sortfield,$sortorder); ?> trans('title2'),0,$_SERVER["PHP_SELF"],'bbb','','','align="right"',$sortfield,$sortorder); ?> trans('title3'),0,$_SERVER["PHP_SELF"],'ccc','','','align="center"',$sortfield,$sortorder); ?> + + - + +
getNomUrl(1); ?>b1c1
a2b2c2
a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2b2c2
a3b3c3
+ +
@@ -323,7 +351,7 @@ $('xxxth').replaceWith( line2 dfsdf - xxx + xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx line3 diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 52ee642719c..ca73d3d8bbc 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -569,6 +569,15 @@ div.myavailability { margin-top: 25px !important; } +/* DOL_XXX for future usage (when left menu has been removed). If we do not use datatable */ +.table-responsive { + width: calc(100% - 330px); + margin-bottom: 15px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; +} + + /* ============================================================================== */ /* Styles to hide objects */ @@ -638,16 +647,14 @@ td.showDragHandle { /* ============================================================================== */ #id-container { - /* margin-top: 12px; - margin-bottom: 8px; */ - display: table; + display: table; /* DOL_XXX Empeche fonctionnement correct du scroll horizontal sur tableau, avec datatable ou CSS */ table-layout: fixed; } #id-right, #id-left { padding-top: 12px; padding-bottom: 8px; - display: table-cell; + display: table-cell; /* DOL_XXX Empeche fonctionnement correct du scroll horizontal sur tableau, avec datatable ou CSS */ float: none; vertical-align: top; } diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 559f464a6df..b42927e3ba8 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -568,6 +568,14 @@ div.myavailability { margin-top: 25px !important; } +/* for future usage (when left menu has been removed) */ +.table-responsive { + width: calc(100% - 330px); + margin-bottom: 15px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; +} + /* ============================================================================== */ /* Styles to hide objects */ From 09270aa8bdc342bc567847d8d954553ed9af55fc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 9 Jun 2016 07:27:24 +0200 Subject: [PATCH 079/212] Not used table --- .../install/mysql/tables/llx_element_lock.sql | 27 ------------------- 1 file changed, 27 deletions(-) delete mode 100644 htdocs/install/mysql/tables/llx_element_lock.sql diff --git a/htdocs/install/mysql/tables/llx_element_lock.sql b/htdocs/install/mysql/tables/llx_element_lock.sql deleted file mode 100644 index 155deba9169..00000000000 --- a/htdocs/install/mysql/tables/llx_element_lock.sql +++ /dev/null @@ -1,27 +0,0 @@ --- ============================================================================ --- Copyright (C) 2011 Regis Houssin --- --- This program is free software; you can redistribute it and/or modify --- it under the terms of the GNU General Public License as published by --- the Free Software Foundation; either version 3 of the License, or --- (at your option) any later version. --- --- This program is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU General Public License for more details. --- --- You should have received a copy of the GNU General Public License --- along with this program. If not, see . --- --- ============================================================================ - -create table llx_element_lock -( - rowid integer AUTO_INCREMENT PRIMARY KEY, - fk_element integer NOT NULL, - elementtype varchar(32) NOT NULL, - datel datetime, -- date of lock - datem datetime, -- date of unlock/modif - sessionid varchar(255) -)ENGINE=innodb; From fd4973c413f8344339ec89c360bd89433747cbf0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 9 Jun 2016 07:50:54 +0200 Subject: [PATCH 080/212] Fix missing total --- htdocs/compta/sociales/index.php | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/sociales/index.php b/htdocs/compta/sociales/index.php index 3133022b9e6..65b8033db4a 100644 --- a/htdocs/compta/sociales/index.php +++ b/htdocs/compta/sociales/index.php @@ -69,7 +69,7 @@ else $typeid=$_REQUEST['typeid']; } -if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers +if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") || GETPOST("button_removefilter")) // All test are required to be compatible with all browsers { $search_ref=""; $search_label=""; @@ -210,6 +210,8 @@ if ($resql) print ''; print "\n"; + $i=0; + $totalarray=array(); while ($i < min($num,$limit)) { $obj = $db->fetch_object($resql); @@ -243,8 +245,12 @@ if ($resql) } print ''; + // Amount print ''.price($obj->amount).''; - + if (! $i) $totalarray['nbfield']++; + if (! $i) $totalarray['totalttcfield']=$totalarray['nbfield']; + $totalarray['totalttc'] += $obj->amount; + // Due date print ''.dol_print_date($db->jdate($obj->date_ech), 'day').''; @@ -256,6 +262,22 @@ if ($resql) $i++; } + // Show total line + if (isset($totalarray['totalttcfield'])) + { + print ''; + if ($num < $limit) print ''.$langs->trans("Total").''; + else print ''.$langs->trans("Totalforthispage").''; + print ''; + print ''; + print ''; + print ''.price($totalarray['totalttc']).''; + print ''; + print ''; + print ''; + print ''; + } + print ''; } print ''; From 2c4839136517d26f27f48332e069d5d0fffc08c6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 9 Jun 2016 07:51:56 +0200 Subject: [PATCH 081/212] No currency into lists --- htdocs/projet/list.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index 2ad8d972638..6859474a987 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -658,10 +658,11 @@ if ($resql) else print $langs->trans('PrivateProject'); print ''; } + // Amount if (! empty($arrayfields['p.opp_amount']['checked'])) { print ''; - if ($obj->opp_status_code) print price($obj->opp_amount, 1, '', 1, -1, -1, $conf->currency); + if ($obj->opp_status_code) print price($obj->opp_amount, 1, '', 1, -1, -1, ''); print ''; } if (! empty($arrayfields['p.fk_opp_status']['checked'])) From 758f5897d3fb071482deb980911c620e7998e7c2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 9 Jun 2016 21:22:07 +0200 Subject: [PATCH 082/212] Fix Missing message to explain record is saved --- htdocs/product/composition/card.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/product/composition/card.php b/htdocs/product/composition/card.php index d0d26292251..1e145390bac 100644 --- a/htdocs/product/composition/card.php +++ b/htdocs/product/composition/card.php @@ -116,13 +116,14 @@ if ($action == 'add_prod' && ($user->rights->produit->creer || $user->rights->se else if($action==='save_composed_product') { $TProduct = GETPOST('TProduct', 'array'); - if(!empty($TProduct)) + if (!empty($TProduct)) { foreach ($TProduct as $id_product => $row) { if ($row['qty'] > 0) $object->update_sousproduit($id, $id_product, $row['qty'], isset($row['incdec']) ? 1 : 0 ); else $object->del_sousproduit($id, $id_product); } + setEventMessages('RecordSaved', null); } $action=''; } From ccba65fe7401a0d1f9363a09f7529d4946711297 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 9 Jun 2016 22:30:50 +0200 Subject: [PATCH 083/212] Clean dead code --- htdocs/commande/class/commande.class.php | 19 +-- htdocs/langs/en_US/sendings.lang | 1 + htdocs/livraison/card.php | 208 +---------------------- 3 files changed, 4 insertions(+), 224 deletions(-) diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index e0c3c00adad..f5ea791a02d 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -1863,9 +1863,9 @@ class Commande extends CommonOrder /** * Load array this->expeditions of lines of shipments with nb of products sent for each order line - * Note: For a dedicated shipment, the fetch_lines load the qty_asked and qty_shipped. This function return qty_shipped cuulated for order + * Note: For a dedicated shipment, the fetch_lines can be used to load the qty_asked and qty_shipped. This function is use to return qty_shipped cumulated for the order * - * @param int $filtre_statut Filter on status + * @param int $filtre_statut Filter on shipment status * @return int <0 if KO, Nb of lines found if OK */ function loadExpeditions($filtre_statut=-1) @@ -1934,21 +1934,6 @@ class Commande extends CommonOrder else dol_print_error($this->db); } - /** - * Return a array with sendings by line - * - * @param int $filtre_statut Filtre sur statut - * @return int 0 si OK, <0 si KO - * - * TODO deprecate, move to Shipping class - */ - function livraison_array($filtre_statut=self::STATUS_CANCELED) - { - $delivery = new Livraison($this->db); - $deliveryArray = $delivery->livraison_array($filtre_statut); - return $deliveryArray; - } - /** * Return a array with the pending stock by product * diff --git a/htdocs/langs/en_US/sendings.lang b/htdocs/langs/en_US/sendings.lang index 1ec229af6c5..c35aa71c8a1 100644 --- a/htdocs/langs/en_US/sendings.lang +++ b/htdocs/langs/en_US/sendings.lang @@ -72,6 +72,7 @@ ProductQtyInSuppliersShipmentAlreadyRecevied=Product quantity from opened suppli NoProductToShipFoundIntoStock=No product to ship found into warehouse %s. Correct stock or go back to choose another warehouse. WeightVolShort=Weight/Vol. ValidateOrderFirstBeforeShipment=You must first validate the order before being able to make shipments. +CloseShippeOrdersAutomatically=Classify the order "Delivered" if entirely shipped. # Sending methods SendingMethodCATCH=Catch by customer diff --git a/htdocs/livraison/card.php b/htdocs/livraison/card.php index 9ae66ee685e..7b47c17f5c7 100644 --- a/htdocs/livraison/card.php +++ b/htdocs/livraison/card.php @@ -300,213 +300,7 @@ $formfile = new FormFile($db); if ($action == 'create') // Seems to no be used { - print load_fiche_titre($langs->trans("CreateADeliveryOrder")); - - if ($mesg) - { - print $mesg.'
'; - } - - $commande = new Commande($db); - $commande->livraison_array(); - - if ($commande->fetch(GETPOST("commande_id"))) - { - $soc = new Societe($db); - $soc->fetch($commande->socid); - $author = new User($db); - $author->fetch($commande->user_author_id); - - if (!$conf->expedition_bon->enabled && ! empty($conf->stock->enabled)) - { - $entrepot = new Entrepot($db); - } - - /* - * Commande - */ - print '
'; - print ''; - print ''; - print ''; - if (!$conf->expedition_bon->enabled && ! empty($conf->stock->enabled)) - { - print ''; - } - print ''; - print ''; - print ''; - - print '"; - - print ""; - print "\n"; - - print '\n"; - - print ''; - - if (!$conf->expedition_bon->enabled && ! empty($conf->stock->enabled)) - { - print ''; - print ''; - } - - print "\n"; - - if ($commande->note) - { - print '"; - } - print "
'.$langs->trans("Customer").''.$soc->name.''; - - print "
".$langs->trans("Date")."".dol_print_date($commande->date,'dayhourtext')."'.$langs->trans("Order").''.img_object($langs->trans("ShowOrder"),'order').' '.$commande->ref.''; - print "
'.$langs->trans("Warehouse").''; - $ents = $entrepot->list_array(); - print ''.img_object($langs->trans("ShowWarehouse"),'stock').' '.$ents[$_GET["entrepot_id"]].''; - print '".$langs->trans("Author")."".$author->getFullName($langs)."
Note : '.nl2br($commande->note)."
"; - - /* - * Lignes de commandes - */ - print '
'; - - $commande->fetch_lines(1); - $lines = $commande->lines; - - // Lecture des livraisons deja effectuees - $commande->livraison_array(); - - $num = count($commande->lines); - $i = 0; - - if ($num) - { - print ''; - print ''; - print ''; - print ''; - print ''; - if (! empty($conf->stock->enabled)) - { - print ''; - } - print "\n"; - } - $var=true; - while ($i < $num) - { - $product = new Product($db); - - $line = $commande->lines[$i]; - $var=!$var; - print "\n"; - if ($line->fk_product > 0) - { - $product->fetch($line->fk_product); - $product->load_stock(); - - // Define output language - if (! empty($conf->global->MAIN_MULTILANGS) && ! empty($conf->global->PRODUIT_TEXTS_IN_THIRDPARTY_LANGUAGE)) - { - $commande->fetch_thirdparty(); - $outputlangs = $langs; - $newlang=''; - if (empty($newlang) && ! empty($_REQUEST['lang_id'])) $newlang=$_REQUEST['lang_id']; - if (empty($newlang)) $newlang=$commande->thirdparty->default_lang; - if (! empty($newlang)) - { - $outputlangs = new Translate("",$conf); - $outputlangs->setDefaultLang($newlang); - } - - $label = (! empty($product->multilangs[$outputlangs->defaultlang]["label"])) ? $product->multilangs[$outputlangs->defaultlang]["label"] : $product->label; - } - else - $label = (! empty($line->label)?$line->label:$product->label); - - print ''; - } - else - { - print "\n"; - } - - print ''; - /* - * - */ - print ''; - - $quantite_commandee = $line->qty; - $quantite_a_livrer = $quantite_commandee - $quantite_livree; - - if (! empty($conf->stock->enabled)) - { - $stock = $product->stock_warehouse[$_GET["entrepot_id"]]->real; - $stock+=0; // Convertit en numerique - - // Quantite a livrer - print ''; - - // Stock - if ($stock < $quantite_a_livrer) - { - print ''; - } - else - { - print ''; - } - } - else - { - // Quantite a livrer - print ''; - } - - print "\n"; - - $i++; - $var=!$var; - } - - /* - * - */ - - print ''; - print "
'.$langs->trans("Description").''.$langs->trans("QtyOrdered").''.$langs->trans("QtyReceived").''.$langs->trans("QtyToShip").''.$langs->trans("Stock").'
'; - print ''.img_object($langs->trans("ShowProduct"),"product").' '.$product->ref.' - '.$label; - if ($line->description) print nl2br($line->description); - print '"; - if ($line->fk_product_type==1) $text = img_object($langs->trans('Service'),'service'); - else $text = img_object($langs->trans('Product'),'product'); - - if (! empty($line->label)) { - $text.= ' '.$line->label.''; - print $form->textwithtooltip($text,$line->description,3,'','',$i); - } else { - print $text.' '.nl2br($line->description); - } - - print_date_range($lines[$i]->date_start,$lines[$i]->date_end); - print "'.$line->qty.''; - $quantite_livree = $commande->livraisons[$line->id]; - print $quantite_livree; - print ''; - print ''; - print ''; - print ''.$stock.' '.img_warning().''.$stock.''; - print ''; - print ''; - print '

"; - print '
'; - } - else - { - dol_print_error($db); - } + } else /* *************************************************************************** */ From a29b6440e37dea429d2dc9b18d2e9ccd6df4d7cf Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 9 Jun 2016 22:40:21 +0200 Subject: [PATCH 084/212] Fix order is closed if all shipments are closed. --- htdocs/expedition/class/expedition.class.php | 47 +++++++++++++++++--- 1 file changed, 41 insertions(+), 6 deletions(-) diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index 1e29a2a36f6..ca6abb40e5c 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -93,6 +93,13 @@ class Expedition extends CommonObject var $meths; var $listmeths; // List of carriers + + const STATUS_DRAFT = 0; + const STATUS_VALIDATED = 1; + const STATUS_CLOSED = 2; + + + /** * Constructor * @@ -1794,9 +1801,9 @@ class Expedition extends CommonObject } /** - * Classify the shipping as closed + * Classify the shipping as closed. * - * @return int <0 if ko, >0 if ok + * @return int <0 if KO, >0 if OK */ function setClosed() { @@ -1806,15 +1813,43 @@ class Expedition extends CommonObject $this->db->begin(); - $sql = 'UPDATE '.MAIN_DB_PREFIX.'expedition SET fk_statut=2'; + $sql = 'UPDATE '.MAIN_DB_PREFIX.'expedition SET fk_statut='.self::STATUS_CLOSED; $sql .= ' WHERE rowid = '.$this->id.' AND fk_statut > 0'; $resql=$this->db->query($sql); if ($resql) { - // TODO: Add option/checkbox to set order billed if 100% of order is shipped - $this->statut=2; + // Set order billed if 100% of order is shipped (qty in shipment lines match qty in order lines) + if ($this->origin == 'commande' && $this->origin_id > 0) + { + $order = new Commande($this->db); + $order->fetch($this->origin_id); + + $order->loadExpeditions(self::STATUS_CLOSED); // Fill $order->expeditions = array(orderlineid => qty) + + $shipments_match_order = 1; + foreach($order->lines as $line) + { + $lineid = $line->id; + $qty = $line->qty; + if (($type == 0 || ! empty($conf->global->STOCK_SUPPORTS_SERVICES)) && $order->expeditions[$lineid] != $qty) + { + $shipments_match_order = 0; + $text='Qty for order line id '.$lineid.' is '.$qty.' but in shipments with status Expedition::STATUS_CLOSED='.self::STATUS_CLOSED.', we have '.$order->expeditions[$lineid].' so we can t close order'; + dol_syslog($text); + break; + } + } + if ($shipments_match_order) + { + dol_syslog("Qty for the ".count($order->lines)." lines of order have same value for shipments with status Expedition::STATUS_CLOSED=".self::STATUS_CLOSED.', so we close order'); + $order->cloture($user); + } + } + + $this->statut=self::STATUS_CLOSED; + // If stock increment is done on closing if (! $error && ! empty($conf->stock->enabled) && ! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT_CLOSE)) { @@ -1823,7 +1858,7 @@ class Expedition extends CommonObject $langs->load("agenda"); // Loop on each product line to add a stock movement - // TODO possibilite d'expedier a partir d'une propale ou autre origine + // TODO possibilite d'expedier a partir d'une propale ou autre origine ? $sql = "SELECT cd.fk_product, cd.subprice,"; $sql.= " ed.rowid, ed.qty, ed.fk_entrepot,"; $sql.= " edb.rowid as edbrowid, edb.eatby, edb.sellby, edb.batch, edb.qty as edbqty, edb.fk_origin_stock"; From 20932a49ca16baf6aad2c0c2710a38c9a123b3bc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 10 Jun 2016 16:59:42 +0200 Subject: [PATCH 085/212] Fix css problem. When width not enough and top menu is wrapped, background on menu is still full of top menu color --- htdocs/theme/eldy/style.css.php | 33 ++++++++++++++++++++++++++++----- htdocs/theme/md/style.css.php | 12 +++--------- 2 files changed, 31 insertions(+), 14 deletions(-) diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index ca73d3d8bbc..0d0c97bb474 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -667,6 +667,29 @@ td.showDragHandle { height: calc(100% - 50px);*/ } +/* For desktop */ +global->MAIN_OPTIMIZEFORTEXTBROWSER)) { ?> +.side-nav { + border-right: 1px solid #BBB; + border-bottom: 1px solid #BBB; + background: #FFF; +} +.side-nav { + position: absolute; + z-index: 200; +} +div.blockvmenupair, div.blockvmenuimpair, div.blockvmenubookmarks, div.blockvmenuend { + border-top: none !important; + border-left: none !important; + border-right: none !important; + border-bottom: 1px solid #e0e0e0; +} +div.vmenu, td.vmenu { + padding-right: 6px !important; +} + + + div.fiche { margin-: px; @@ -838,11 +861,11 @@ div#id-top { background-image: -ms-linear-gradient(top, rgba(255,255,255,.1) 0%, rgba(0,0,0,.4) 100%); background-image: -webkit-gradient( linear, left top, left bottom, color-stop(0, rgba(255,255,255,.1)), color-stop(1, rgba(0,0,0,.4)) ); - + /* height: 34px; height: px; - + */ } @@ -912,9 +935,10 @@ ul.tmenu { /* t r b l */ padding: 0px 0px 0px 0px; margin: 0px 0px 0px 0px; list-style: none; + display: table; } ul.tmenu li { /* We need this to have background color when menu entry wraps on new lines */ - background: rgb(); +/* background: rgb(); background-image: linear-gradient(top, rgba(255,255,255,.1) 0%, rgba(0,0,0,.4) 100%); background-image: -o-linear-gradient(top, rgba(255,255,255,.1) 0%, rgba(0,0,0,.4) 100%); @@ -922,7 +946,7 @@ ul.tmenu li { /* We need this to have background color when menu entry wraps on background-image: -webkit-linear-gradient(top, rgba(255,255,255,.1) 0%, rgba(0,0,0,.4) 100%); background-image: -ms-linear-gradient(top, rgba(255,255,255,.1) 0%, rgba(0,0,0,.4) 100%); background-image: -webkit-gradient( linear, left top, left bottom, color-stop(0, rgba(255,255,255,.1)), color-stop(1, rgba(0,0,0,.4)) ); - + */ } li.tmenu, li.tmenusel { @@ -930,7 +954,6 @@ li.tmenu, li.tmenusel { vertical-align: bottom; global->MAIN_MENU_INVERT)) { ?> float: ; - /* height: px; */ position:relative; display: block; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index b42927e3ba8..01e844146ff 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -657,10 +657,6 @@ td.showDragHandle { vertical-align: top; } #id-top { -/* min-width: 100%; - position: relative; - heigth: 52px; - background: #f00;*/ } #id-left { min-height: 100%; @@ -964,7 +960,7 @@ ul.tmenu { /* t r b l */ padding: 0px 0px 0px 0px; margin: 0px 0px 0px 0px; list-style: none; - /* box-shadow: 0 0 6px rgba(0, 0, 0, .4) !important; */ + display: table; } ul.tmenu li { background: rgb(); @@ -1009,10 +1005,8 @@ li.tmenusel, li.tmenu:hover { opacity: .50; /* show only a slight shadow */ } .tmenuend .tmenuleft { width: 0px; } -/* .tmenuend { display: none; } We keep tmenuend it to show background for rest of line */ -.tmenuend .tmenucenter { - width: 1px; -} +.tmenuend { display: none; } + div.tmenuleft { float: ; From 74e59a1bc4ad28143048297cb52ddd96f3e11815 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 10 Jun 2016 18:41:10 +0200 Subject: [PATCH 086/212] Debug prototype feature "testmenuhider" --- htdocs/core/lib/functions.lib.php | 5 +++++ htdocs/core/menus/standard/eldy.lib.php | 11 ++++++++--- htdocs/theme/eldy/style.css.php | 15 +++++++++++++++ htdocs/theme/md/style.css.php | 5 +++++ 4 files changed, 33 insertions(+), 3 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index e07ca6cc6c4..7ab372153dd 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -5342,6 +5342,11 @@ function printCommonFooter($zone='private') });'."\n"; print '});'."\n"; + print ''."\n"; + print 'jQuery(".menuhider").click(function() {'; + print " $('.side-nav').toggle(); "; + print '});'."\n"; + print ''."\n"; } diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 6f91bfe4325..d44e1f50775 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -54,7 +54,7 @@ function print_eldy_menu($db,$atarget,$type_user,&$tabMenu,&$menu,$noout=0) if (GETPOST('testmenuhider') && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { $showmode=1; - $classname = 'class="tmenu"'; + $classname = 'class="tmenu menuhider"'; $idsel='menu'; if (empty($noout)) print_start_menu_entry($idsel,$classname,$showmode); @@ -1425,13 +1425,18 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu { $altok++; $blockvmenuopened=true; + $lastopened=true; + for($j = ($i + 1); $j < $num; $j++) + { + if (empty($menu_array[$j]['level'])) $lastopened=false; + } if ($altok % 2 == 0) { - print '
'."\n"; + print '
'."\n"; } else { - print '
'."\n"; + print '
'."\n"; } } diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 0d0c97bb474..383fc2f9abe 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -669,6 +669,9 @@ td.showDragHandle { /* For desktop */ global->MAIN_OPTIMIZEFORTEXTBROWSER)) { ?> +#id-container { + width: 100%; +} .side-nav { border-right: 1px solid #BBB; border-bottom: 1px solid #BBB; @@ -678,15 +681,27 @@ td.showDragHandle { position: absolute; z-index: 200; } +div.blockvmenulogo +{ + border-bottom: 0 !important; +} +div.blockvmenusearch { + border-bottom: 1px solid #e0e0e0; + padding-bottom: 10px !important; +} div.blockvmenupair, div.blockvmenuimpair, div.blockvmenubookmarks, div.blockvmenuend { border-top: none !important; border-left: none !important; border-right: none !important; border-bottom: 1px solid #e0e0e0; + padding-left: 0 !important; } div.vmenu, td.vmenu { padding-right: 6px !important; } +div.blockvmenulast { + border-bottom: 0; +} diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 01e844146ff..7f3e5d5040f 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -1444,6 +1444,11 @@ div.blockvmenusearch padding-bottom: 10px; border-bottom: 1px solid #f4f4f4; } +div.blockvmenusearchphone +{ + border-bottom: none; + margin-bottom: 0px; +} div.blockvmenuhelp { From aed2c5cb30169927a253bd250d031a335c40de81 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 10 Jun 2016 18:41:18 +0200 Subject: [PATCH 087/212] Clean css --- htdocs/core/class/html.form.class.php | 2 +- htdocs/core/class/html.formmail.class.php | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 175bc8873e1..159708de61f 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -5948,7 +5948,7 @@ class Form { console.log("We uncheck all"); $(".'.$cssclass.'").prop(\'checked\', false); - }'; + }'."\n"; if ($calljsfunction) $out.='if (typeof initCheckForSelect == \'function\') { initCheckForSelect(); } else { console.log("No function initCheckForSelect found. Call won\'t done."); }'; $out.=' }); }); diff --git a/htdocs/core/class/html.formmail.class.php b/htdocs/core/class/html.formmail.class.php index 23b0fc5d6e2..a0afc8bcc94 100644 --- a/htdocs/core/class/html.formmail.class.php +++ b/htdocs/core/class/html.formmail.class.php @@ -715,9 +715,11 @@ class FormMail extends Form $out.= "\n"; } + $out.= ''."\n"; + if ($this->withform == 1 || $this->withform == -1) { - $out.= '
'; + $out.= '
'; $out.= 'withfile == 2 && $conf->use_javascript_ajax) @@ -730,11 +732,9 @@ class FormMail extends Form $out.= '     '; $out.= ''; } - $out.= '
'."\n"; + $out.= '
'."\n"; } - $out.= ''."\n"; - if ($this->withform == 1) $out.= ''."\n"; // Disable enter key if option MAIN_MAILFORM_DISABLE_ENTERKEY is set From 65cbf1623bb52c73bfdb7b32824812e9ccf062d5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 12 Jun 2016 20:23:25 +0200 Subject: [PATCH 088/212] Fix option testmenuhider. Constant to test it is MAIN_TESTMENUHIDER --- htdocs/core/lib/functions.lib.php | 3 ++- htdocs/core/menus/init_menu_auguria.sql | 4 +-- htdocs/core/menus/standard/auguria.lib.php | 16 ++++++++++- htdocs/core/menus/standard/auguria_menu.php | 6 ++--- htdocs/core/menus/standard/eldy.lib.php | 5 ++-- htdocs/core/menus/standard/eldy_menu.php | 10 +++---- htdocs/core/menus/standard/empty.php | 13 +++++++++ htdocs/main.inc.php | 2 +- htdocs/theme/eldy/style.css.php | 7 ++++- htdocs/theme/md/style.css.php | 30 +++++++++++++++++++++ 10 files changed, 80 insertions(+), 16 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 7ab372153dd..fe9b16e7e65 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -5344,7 +5344,8 @@ function printCommonFooter($zone='private') print ''."\n"; print 'jQuery(".menuhider").click(function() {'; - print " $('.side-nav').toggle(); "; + print " $('.side-nav').toggle();"; + if ($conf->theme == 'md') print " $('.login_block').toggle();"; print '});'."\n"; print ''."\n"; diff --git a/htdocs/core/menus/init_menu_auguria.sql b/htdocs/core/menus/init_menu_auguria.sql index a8aa94e8253..39a8241b465 100644 --- a/htdocs/core/menus/init_menu_auguria.sql +++ b/htdocs/core/menus/init_menu_auguria.sql @@ -264,8 +264,8 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->banque->enabled && ($leftmenu=="bank" || $leftmenu=="checks" || $leftmenu=="withdraw")', __HANDLER__, 'left', 2604__+MAX_llx_menu__, 'accountancy', '', 2600__+MAX_llx_menu__, '/compta/bank/budget.php?leftmenu=bank', 'ListTransactionsByCategory', 1, 'banks', '$user->rights->banque->lire', '', 0, 3, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->banque->enabled && ($leftmenu=="bank" || $leftmenu=="checks" || $leftmenu=="withdraw")', __HANDLER__, 'left', 2606__+MAX_llx_menu__, 'accountancy', '', 2600__+MAX_llx_menu__, '/compta/bank/virement.php?leftmenu=bank', 'BankTransfers', 1, 'banks', '$user->rights->banque->transfer', '', 0, 5, __ENTITY__); -- Account - Categories -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->categorie->enabled', __HANDLER__, 'left', 2700__+MAX_llx_menu__, 'accountancy', 'cat', 14__+MAX_llx_menu__, '/categories/index.php?leftmenu=cat&type=5', 'Categories', 0, 'categories', '$user->rights->categorie->lire', '', 2, 4, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->categorie->enabled', __HANDLER__, 'left', 2701__+MAX_llx_menu__, 'accountancy', '', 2700__+MAX_llx_menu__, '/categories/card.php?action=create&type=5', 'NewCategory', 1, 'categories', '$user->rights->categorie->creer', '', 2, 0, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->categorie->enabled', __HANDLER__, 'left', 2650__+MAX_llx_menu__, 'accountancy', 'cat', 14__+MAX_llx_menu__, '/categories/index.php?leftmenu=cat&type=5', 'Categories', 0, 'categories', '$user->rights->categorie->lire', '', 2, 4, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->categorie->enabled', __HANDLER__, 'left', 2651__+MAX_llx_menu__, 'accountancy', '', 2650__+MAX_llx_menu__, '/categories/card.php?action=create&type=5', 'NewCategory', 1, 'categories', '$user->rights->categorie->creer', '', 2, 0, __ENTITY__); -- Project insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3600__+MAX_llx_menu__, 'project', 'projects', 7__+MAX_llx_menu__, '/projet/index.php?leftmenu=projects', 'Projects', 0, 'projects', '$user->rights->projet->lire', '', 2, 0, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3601__+MAX_llx_menu__, 'project', '', 3600__+MAX_llx_menu__, '/projet/card.php?leftmenu=projects&action=create', 'NewProject', 1, 'projects', '$user->rights->projet->creer', '', 2, 1, __ENTITY__); diff --git a/htdocs/core/menus/standard/auguria.lib.php b/htdocs/core/menus/standard/auguria.lib.php index f7cf130a9a3..7e5993ee5e7 100644 --- a/htdocs/core/menus/standard/auguria.lib.php +++ b/htdocs/core/menus/standard/auguria.lib.php @@ -34,9 +34,10 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/menubase.class.php'; * @param array $tabMenu If array with menu entries already loaded, we put this array here (in most cases, it's empty) * @param Menu $menu Object Menu to return back list of menu entries * @param int $noout Disable output (Initialise &$menu only). + * @param string $mode 'top', 'topnb', 'left', 'jmobile' * @return int 0 */ -function print_auguria_menu($db,$atarget,$type_user,&$tabMenu,&$menu,$noout=0) +function print_auguria_menu($db,$atarget,$type_user,&$tabMenu,&$menu,$noout=0,$mode='') { global $user,$conf,$langs,$dolibarr_main_db_name; @@ -52,6 +53,19 @@ function print_auguria_menu($db,$atarget,$type_user,&$tabMenu,&$menu,$noout=0) if (empty($noout)) print_start_menu_array_auguria(); + // Show/Hide vertical menu + if ($mode != 'jmobile' && $mode != 'topnb' && (GETPOST('testmenuhider') || ! empty($conf->global->MAIN_TESTMENUHIDER)) && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) + { + $showmode=1; + $classname = 'class="tmenu menuhider"'; + $idsel='menu'; + + if (empty($noout)) print_start_menu_entry_auguria($idsel,$classname,$showmode); + if (empty($noout)) print_text_menu_entry_auguria('', 1, '#', $id, $idsel, $classname, $atarget); + if (empty($noout)) print_end_menu_entry_auguria($showmode); + $menu->add('#', '', 0, $showmode, $atarget, "xxx", ''); + } + $num = count($newTabMenu); for($i = 0; $i < $num; $i++) { diff --git a/htdocs/core/menus/standard/auguria_menu.php b/htdocs/core/menus/standard/auguria_menu.php index 934e8cdc392..736f2a72380 100644 --- a/htdocs/core/menus/standard/auguria_menu.php +++ b/htdocs/core/menus/standard/auguria_menu.php @@ -134,18 +134,18 @@ class MenuManager require_once DOL_DOCUMENT_ROOT.'/core/class/menu.class.php'; $this->menu=new Menu(); - if ($mode == 'top') print_auguria_menu($this->db,$this->atarget,$this->type_user,$this->tabMenu,$this->menu,0); + if ($mode == 'top') print_auguria_menu($this->db,$this->atarget,$this->type_user,$this->tabMenu,$this->menu,0,$mode); if ($mode == 'left') print_left_auguria_menu($this->db,$this->menu_array,$this->menu_array_after,$this->tabMenu,$this->menu,0,'','',$moredata); if ($mode == 'topnb') { - print_auguria_menu($this->db,$this->atarget,$this->type_user,$this->tabMenu,$this->menu,1); + print_auguria_menu($this->db,$this->atarget,$this->type_user,$this->tabMenu,$this->menu,1,$mode); return $this->menu->getNbOfVisibleMenuEntries(); } if ($mode == 'jmobile') { - print_auguria_menu($this->db,$this->atarget,$this->type_user,$this->tabMenu,$this->menu,1); + print_auguria_menu($this->db,$this->atarget,$this->type_user,$this->tabMenu,$this->menu,1,$mode); print ''."\n"; foreach($this->menu->liste as $key => $val) // $val['url','titre','level','enabled'=0|1|2,'target','mainmenu','leftmenu' diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index d44e1f50775..5ebe7c13a91 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -36,9 +36,10 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/menubase.class.php'; * @param array $tabMenu If array with menu entries already loaded, we put this array here (in most cases, it's empty) * @param Menu $menu Object Menu to return back list of menu entries * @param int $noout 1=Disable output (Initialise &$menu only). + * @param string $mode 'top', 'topnb', 'left', 'jmobile' * @return int 0 */ -function print_eldy_menu($db,$atarget,$type_user,&$tabMenu,&$menu,$noout=0) +function print_eldy_menu($db,$atarget,$type_user,&$tabMenu,&$menu,$noout=0,$mode='') { global $user,$conf,$langs,$dolibarr_main_db_name; @@ -51,7 +52,7 @@ function print_eldy_menu($db,$atarget,$type_user,&$tabMenu,&$menu,$noout=0) if (empty($noout)) print_start_menu_array(); // Show/Hide vertical menu - if (GETPOST('testmenuhider') && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) + if ($mode != 'jmobile' && $mode != 'topnb' && (GETPOST('testmenuhider') || ! empty($conf->global->MAIN_TESTMENUHIDER)) && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { $showmode=1; $classname = 'class="tmenu menuhider"'; diff --git a/htdocs/core/menus/standard/eldy_menu.php b/htdocs/core/menus/standard/eldy_menu.php index eb5e75dfef8..0d43c0af9f9 100644 --- a/htdocs/core/menus/standard/eldy_menu.php +++ b/htdocs/core/menus/standard/eldy_menu.php @@ -111,7 +111,7 @@ class MenuManager /** * Show menu * - * @param string $mode 'top', 'left', 'jmobile' + * @param string $mode 'top', 'topnb', 'left', 'jmobile' * @param array $moredata An array with more data to output * @return int 0 or nb of top menu entries if $mode = 'topnb' */ @@ -132,25 +132,25 @@ class MenuManager if (empty($conf->global->MAIN_MENU_INVERT)) { - if ($mode == 'top') print_eldy_menu($this->db,$this->atarget,$this->type_user,$this->tabMenu,$this->menu,0); + if ($mode == 'top') print_eldy_menu($this->db,$this->atarget,$this->type_user,$this->tabMenu,$this->menu,0,$mode); if ($mode == 'left') print_left_eldy_menu($this->db,$this->menu_array,$this->menu_array_after,$this->tabMenu,$this->menu,0,'','',$moredata); } else { $conf->global->MAIN_SHOW_LOGO=0; if ($mode == 'top') print_left_eldy_menu($this->db,$this->menu_array,$this->menu_array_after,$this->tabMenu,$this->menu,0); - if ($mode == 'left') print_eldy_menu($this->db,$this->atarget,$this->type_user,$this->tabMenu,$this->menu,0); + if ($mode == 'left') print_eldy_menu($this->db,$this->atarget,$this->type_user,$this->tabMenu,$this->menu,0,$mode); } if ($mode == 'topnb') { - print_eldy_menu($this->db,$this->atarget,$this->type_user,$this->tabMenu,$this->menu,1); // no output + print_eldy_menu($this->db,$this->atarget,$this->type_user,$this->tabMenu,$this->menu,1,$mode); // no output return $this->menu->getNbOfVisibleMenuEntries(); } if ($mode == 'jmobile') { - print_eldy_menu($this->db,$this->atarget,$this->type_user,$this->tabMenu,$this->menu,1); + print_eldy_menu($this->db,$this->atarget,$this->type_user,$this->tabMenu,$this->menu,1,$mode); print ''."\n"; foreach($this->menu->liste as $key => $val) // $val['url','titre','level','enabled'=0|1|2,'target','mainmenu','leftmenu' diff --git a/htdocs/core/menus/standard/empty.php b/htdocs/core/menus/standard/empty.php index 25b2c1b52b2..710d086e20b 100644 --- a/htdocs/core/menus/standard/empty.php +++ b/htdocs/core/menus/standard/empty.php @@ -92,6 +92,19 @@ class MenuManager $idsel='home'; $classname='class="tmenusel"'; + // Show/Hide vertical menu + if ($mode != 'jmobile' && $mode != 'topnb' && (GETPOST('testmenuhider') || ! empty($conf->global->MAIN_TESTMENUHIDER)) && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) + { + $showmode=1; + $classname = 'class="tmenu menuhider"'; + $idsel='menu'; + + if (empty($noout)) print_start_menu_entry($idsel,$classname,$showmode); + if (empty($noout)) print_text_menu_entry('', 1, '#', $id, $idsel, $classname, $atarget); + if (empty($noout)) print_end_menu_entry($showmode); + $menu->add('#', '', 0, $showmode, $atarget, "xxx", ''); + } + if (empty($noout)) print_start_menu_entry_empty($idsel, $classname, $showmode); if (empty($noout)) print_text_menu_entry_empty($langs->trans("Home"), 1, dol_buildpath('/index.php',1).'?mainmenu=home&leftmenu=', $id, $idsel, $classname, $this->atarget); if (empty($noout)) print_end_menu_entry_empty($showmode); diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index b7c0aee8962..c853760b352 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -1036,7 +1036,7 @@ function top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs //if (! empty($conf->dol_use_jmobile)) $ext='version='.urlencode(DOL_VERSION); $ext='version='.urlencode(DOL_VERSION); if (GETPOST('version')) $ext='version='.GETPOST('version','int'); // usefull to force no cache on css/js - if (GETPOST('testmenuhider')) $ext='testmenuhider='.GETPOST('testmenuhider','int'); + if (GETPOST('testmenuhider') || ! empty($conf->global->MAIN_TESTMENUHIDER)) $ext='testmenuhider='.GETPOST('testmenuhider','int'); if (! defined('DISABLE_JQUERY') && ! $disablejs && $conf->use_javascript_ajax) { diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 383fc2f9abe..17c3233fdec 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -668,7 +668,7 @@ td.showDragHandle { } /* For desktop */ -global->MAIN_OPTIMIZEFORTEXTBROWSER)) { ?> +global->MAIN_TESTMENUHIDER)) && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { ?> #id-container { width: 100%; } @@ -680,6 +680,7 @@ td.showDragHandle { .side-nav { position: absolute; z-index: 200; + display: none; } div.blockvmenulogo { @@ -702,6 +703,10 @@ div.vmenu, td.vmenu { div.blockvmenulast { border-bottom: 0; } +div.fiche { + margin-: 6px !important; + margin-: 6px !important; +} diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 7f3e5d5040f..884c11b1cce 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -717,6 +717,36 @@ td.showDragHandle { margin-left: 228px; } +/* For desktop */ +global->MAIN_TESTMENUHIDER)) && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { ?> +#id-container { + width: 100%; +} +.side-nav-vert { + margin-left: 0; +} +div.login_block { + border-right: none ! important; + top: inherit !important; +} +.side-nav { + /*top: inherit !important;*/ + overflow-x: initial !important; + overflow-y: scroll; + /*position: initial !important;*/ + display: none; +} +div.login_block { + /* position: initial !important;*/ + display: none; +} +#id-right { + padding-left: 0 ! important; +} +#id-left { + top: 60px ! important; +} + div.fiche { margin-: px; From 1396f11b774192cfa341cf66970fb075474cdefd Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 12 Jun 2016 20:31:01 +0200 Subject: [PATCH 089/212] css fix --- htdocs/core/menus/standard/auguria.lib.php | 9 +++++++-- htdocs/core/menus/standard/empty.php | 11 ++++++++--- htdocs/theme/eldy/style.css.php | 1 - 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/htdocs/core/menus/standard/auguria.lib.php b/htdocs/core/menus/standard/auguria.lib.php index 7e5993ee5e7..05b3bbf054d 100644 --- a/htdocs/core/menus/standard/auguria.lib.php +++ b/htdocs/core/menus/standard/auguria.lib.php @@ -381,13 +381,18 @@ function print_left_auguria_menu($db,$menu_array_before,$menu_array_after,&$tabM { $altok++; $blockvmenuopened=true; + $lastopened=true; + for($j = ($i + 1); $j < $num; $j++) + { + if (empty($menu_array[$j]['level'])) $lastopened=false; + } if ($altok % 2 == 0) { - print '
'."\n"; + print '
'."\n"; } else { - print '
'."\n"; + print '
'."\n"; } } diff --git a/htdocs/core/menus/standard/empty.php b/htdocs/core/menus/standard/empty.php index 710d086e20b..801eea2b0c8 100644 --- a/htdocs/core/menus/standard/empty.php +++ b/htdocs/core/menus/standard/empty.php @@ -160,14 +160,19 @@ class MenuManager if (empty($this->menu->liste[$i]['level'])) { $altok++; - $blockvmenuopened=true; + $blockvmenuopened=true; + $lastopened=true; + for($j = ($i + 1); $j < $num; $j++) + { + if (empty($menu_array[$j]['level'])) $lastopened=false; + } if (($alt%2==0)) { - print '
'."\n"; + print '
'."\n"; } else { - print '
'."\n"; + print '
'."\n"; } } diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 17c3233fdec..88b0cf30412 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -687,7 +687,6 @@ div.blockvmenulogo border-bottom: 0 !important; } div.blockvmenusearch { - border-bottom: 1px solid #e0e0e0; padding-bottom: 10px !important; } div.blockvmenupair, div.blockvmenuimpair, div.blockvmenubookmarks, div.blockvmenuend { From cda17da8b13c7a1f809fcb8304c3bd40cbdce551 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 12 Jun 2016 21:41:16 +0200 Subject: [PATCH 090/212] Fix security: A password must NEVER be stored as cookie. GETPOST must analyse POST only. --- htdocs/main.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index c853760b352..4cbe98d8ccd 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -438,7 +438,7 @@ if (! defined('NOLOGIN')) } $usertotest = (! empty($_COOKIE['login_dolibarr']) ? $_COOKIE['login_dolibarr'] : GETPOST("username","alpha",2)); - $passwordtotest = (! empty($_COOKIE['password_dolibarr']) ? $_COOKIE['password_dolibarr'] : GETPOST('password')); + $passwordtotest = GETPOST('password','',2); $entitytotest = (GETPOST('entity','int') ? GETPOST('entity','int') : (!empty($conf->entity) ? $conf->entity : 1)); // Validation of login/pass/entity From c5dcebb58e35709dcfc0188e6249f8889425dec2 Mon Sep 17 00:00:00 2001 From: damirugrin Date: Mon, 13 Jun 2016 18:13:41 +0200 Subject: [PATCH 091/212] Conflict with ModSecurity solved. When ModSecurity is enabled on apache server then "scandir" is forbidden word. When changing numbering model then you will find following error in apache log: ModSecurity: Access denied with code 403 (phase 2). Pattern match "(?i)(?:\\\\b(?:f(?:tp_(?:nb_)?f?(?:ge|pu)t|get(?:s?s|c)|s(?:ession_start|candir) I have changed "scandir" to "scan_dir". --- htdocs/admin/facture.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/admin/facture.php b/htdocs/admin/facture.php index bae4b0abd88..197df291c63 100644 --- a/htdocs/admin/facture.php +++ b/htdocs/admin/facture.php @@ -42,7 +42,7 @@ if (! $user->admin) accessforbidden(); $action = GETPOST('action','alpha'); $value = GETPOST('value','alpha'); $label = GETPOST('label','alpha'); -$scandir = GETPOST('scandir','alpha'); +$scandir = GETPOST('scan_dir','alpha'); $type='invoice'; @@ -380,7 +380,7 @@ foreach ($dirmodels as $reldir) } else { - print 'scandir.'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"),'switch_off').''; + print 'scan_dir.'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"),'switch_off').''; } print ''; @@ -566,7 +566,7 @@ foreach ($dirmodels as $reldir) else { print "\n"; - print 'scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("SetAsDefault"),'switch_off').''; + print 'scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("SetAsDefault"),'switch_off').''; print ""; } @@ -578,7 +578,7 @@ foreach ($dirmodels as $reldir) } else { - print 'scandir.'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("SetAsDefault"),'off').''; + print 'scandir.'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("SetAsDefault"),'off').''; } print ''; From ec6dd0c42f0fe24808c6b5e1093d66cdcfe3d56c Mon Sep 17 00:00:00 2001 From: damirugrin Date: Mon, 13 Jun 2016 18:48:10 +0200 Subject: [PATCH 092/212] Update facture.php --- htdocs/admin/facture.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/admin/facture.php b/htdocs/admin/facture.php index 197df291c63..3b7facc9dc8 100644 --- a/htdocs/admin/facture.php +++ b/htdocs/admin/facture.php @@ -380,7 +380,7 @@ foreach ($dirmodels as $reldir) } else { - print 'scan_dir.'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"),'switch_off').''; + print 'scandir.'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"),'switch_off').''; } print ''; From d9d247e49da0792a3912e1b8664684fcb333008e Mon Sep 17 00:00:00 2001 From: Sergio Sanchis Climent Date: Tue, 14 Jun 2016 00:37:13 +0200 Subject: [PATCH 093/212] Fix install mysql 5.7.9 --- htdocs/install/mysql/data/llx_accounting.sql | 56 ++++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/htdocs/install/mysql/data/llx_accounting.sql b/htdocs/install/mysql/data/llx_accounting.sql index eb682b55cf8..191cdee4712 100644 --- a/htdocs/install/mysql/data/llx_accounting.sql +++ b/htdocs/install/mysql/data/llx_accounting.sql @@ -138,13 +138,13 @@ INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (100,'PCG99-ABREGE','PROD', 'XXXXXX', '786', '1407', 'Reprises sur provisions pour risques', '1'); INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (101,'PCG99-ABREGE','PROD', 'XXXXXX', '787', '1407', 'Reprises sur provisions', '1'); INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (102,'PCG99-ABREGE','PROD', 'XXXXXX', '79', '1407', 'Transferts de charges', '1'); -INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1401,'PCG99-ABREGE','CAPIT', 'XXXXXX', '1', '', 'Fonds propres, provisions pour risques et charges et dettes à plus d''un an', '1'); -INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1402,'PCG99-ABREGE','IMMO', 'XXXXXX', '2', '', 'Frais d''établissement. Actifs immobilisés et créances à plus d''un an', '1'); -INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1403,'PCG99-ABREGE','STOCK', 'XXXXXX', '3', '', 'Stock et commandes en cours d''exécution', '1'); -INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1404,'PCG99-ABREGE','TIERS', 'XXXXXX', '4', '', 'Créances et dettes à un an au plus', '1'); -INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1405,'PCG99-ABREGE','FINAN', 'XXXXXX', '5', '', 'Placement de trésorerie et de valeurs disponibles', '1'); -INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1406,'PCG99-ABREGE','CHARGE','XXXXXX', '6', '', 'Charges', '1'); -INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1407,'PCG99-ABREGE','PROD', 'XXXXXX', '7', '', 'Produits', '1'); +INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1401,'PCG99-ABREGE','CAPIT', 'XXXXXX', '1', '0', 'Fonds propres, provisions pour risques et charges et dettes à plus d''un an', '1'); +INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1402,'PCG99-ABREGE','IMMO', 'XXXXXX', '2', '0', 'Frais d''établissement. Actifs immobilisés et créances à plus d''un an', '1'); +INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1403,'PCG99-ABREGE','STOCK', 'XXXXXX', '3', '0', 'Stock et commandes en cours d''exécution', '1'); +INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1404,'PCG99-ABREGE','TIERS', 'XXXXXX', '4', '0', 'Créances et dettes à un an au plus', '1'); +INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1405,'PCG99-ABREGE','FINAN', 'XXXXXX', '5', '0', 'Placement de trésorerie et de valeurs disponibles', '1'); +INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1406,'PCG99-ABREGE','CHARGE','XXXXXX', '6', '0', 'Charges', '1'); +INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1407,'PCG99-ABREGE','PROD', 'XXXXXX', '7', '0', 'Produits', '1'); -- -- Descriptif des plans comptables FR PCG99-BASE @@ -488,13 +488,13 @@ INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (436,'PCG99-BASE','PROD', 'XXXXXX', '791', '435', 'Transferts de charges d''exploitation ', '1'); INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (437,'PCG99-BASE','PROD', 'XXXXXX', '796', '435', 'Transferts de charges financières', '1'); INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (438,'PCG99-BASE','PROD', 'XXXXXX', '797', '435', 'Transferts de charges exceptionnelles', '1'); -INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1501,'PCG99-BASE','CAPIT', 'XXXXXX', '1', '', 'Fonds propres, provisions pour risques et charges et dettes à plus d''un an', '1'); -INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1502,'PCG99-BASE','IMMO', 'XXXXXX', '2', '', 'Frais d''établissement. Actifs immobilisés et créances à plus d''un an', '1'); -INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1503,'PCG99-BASE','STOCK', 'XXXXXX', '3', '', 'Stock et commandes en cours d''exécution', '1'); -INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1504,'PCG99-BASE','TIERS', 'XXXXXX', '4', '', 'Créances et dettes à un an au plus', '1'); -INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1505,'PCG99-BASE','FINAN', 'XXXXXX', '5', '', 'Placement de trésorerie et de valeurs disponibles', '1'); -INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1506,'PCG99-BASE','CHARGE','XXXXXX', '6', '', 'Charges', '1'); -INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1507,'PCG99-BASE','PROD', 'XXXXXX', '7', '', 'Produits', '1'); +INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1501,'PCG99-BASE','CAPIT', 'XXXXXX', '1', '0', 'Fonds propres, provisions pour risques et charges et dettes à plus d''un an', '1'); +INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1502,'PCG99-BASE','IMMO', 'XXXXXX', '2', '0', 'Frais d''établissement. Actifs immobilisés et créances à plus d''un an', '1'); +INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1503,'PCG99-BASE','STOCK', 'XXXXXX', '3', '0', 'Stock et commandes en cours d''exécution', '1'); +INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1504,'PCG99-BASE','TIERS', 'XXXXXX', '4', '0', 'Créances et dettes à un an au plus', '1'); +INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1505,'PCG99-BASE','FINAN', 'XXXXXX', '5', '0', 'Placement de trésorerie et de valeurs disponibles', '1'); +INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1506,'PCG99-BASE','CHARGE','XXXXXX', '6', '0', 'Charges', '1'); +INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1507,'PCG99-BASE','PROD', 'XXXXXX', '7', '0', 'Produits', '1'); -- -- Descriptif des plans comptables BE PCMN-BASE @@ -1413,13 +1413,13 @@ INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1348, 'PCMN-BASE', 'PROD', 'XXXXXX', '792', '1345', 'Prélèvement sur les réserves', '1'); INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1349, 'PCMN-BASE', 'PROD', 'XXXXXX', '793', '1345', 'Perte à reporter', '1'); INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1350, 'PCMN-BASE', 'PROD', 'XXXXXX', '794', '1345', 'Intervention d''associés (ou du propriétaire) dans la perte', '1'); -INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1351, 'PCMN-BASE', 'CAPIT', 'XXXXXX', '1', '', 'Fonds propres, provisions pour risques et charges et dettes à plus d''un an', '1'); -INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1352, 'PCMN-BASE', 'IMMO', 'XXXXXX', '2', '', 'Frais d''établissement. Actifs immobilisés et créances à plus d''un an', '1'); -INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1353, 'PCMN-BASE', 'STOCK', 'XXXXXX', '3', '', 'Stock et commandes en cours d''exécution', '1'); -INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1354, 'PCMN-BASE', 'TIERS', 'XXXXXX', '4', '', 'Créances et dettes à un an au plus', '1'); -INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1355, 'PCMN-BASE', 'FINAN', 'XXXXXX', '5', '', 'Placement de trésorerie et de valeurs disponibles', '1'); -INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1356, 'PCMN-BASE', 'CHARGE', 'XXXXXX', '6', '', 'Charges', '1'); -INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1357, 'PCMN-BASE', 'PROD', 'XXXXXX', '7', '', 'Produits', '1'); +INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1351, 'PCMN-BASE', 'CAPIT', 'XXXXXX', '1', '0', 'Fonds propres, provisions pour risques et charges et dettes à plus d''un an', '1'); +INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1352, 'PCMN-BASE', 'IMMO', 'XXXXXX', '2', '0', 'Frais d''établissement. Actifs immobilisés et créances à plus d''un an', '1'); +INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1353, 'PCMN-BASE', 'STOCK', 'XXXXXX', '3', '0', 'Stock et commandes en cours d''exécution', '1'); +INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1354, 'PCMN-BASE', 'TIERS', 'XXXXXX', '4', '0', 'Créances et dettes à un an au plus', '1'); +INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1355, 'PCMN-BASE', 'FINAN', 'XXXXXX', '5', '0', 'Placement de trésorerie et de valeurs disponibles', '1'); +INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1356, 'PCMN-BASE', 'CHARGE', 'XXXXXX', '6', '0', 'Charges', '1'); +INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (1357, 'PCMN-BASE', 'PROD', 'XXXXXX', '7', '0', 'Produits', '1'); -- -- Descriptif des plans comptables ES PCG08-PYME @@ -1427,13 +1427,13 @@ INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype INSERT INTO llx_accounting_system (rowid, pcg_version, label, active) VALUES (4, 'PCG08-PYME', 'The PYME accountancy spanish plan', '1'); -INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (4001,'PCG08-PYME','FINANCIACION', 'XXXXXX', '1', '', 'Financiación básica', '1'); -INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (4002,'PCG08-PYME','ACTIVO', 'XXXXXX', '2', '', 'Activo no corriente', '1'); -INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (4003,'PCG08-PYME','EXISTENCIAS', 'XXXXXX', '3', '', 'Existencias', '1'); -INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (4004,'PCG08-PYME','ACREEDORES_DEUDORES', 'XXXXXX', '4', '', 'Acreedores y deudores por operaciones comerciales', '1'); -INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (4005,'PCG08-PYME','CUENTAS_FINANCIERAS', 'XXXXXX', '5', '', 'Cuentas financieras', '1'); -INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (4006,'PCG08-PYME','COMPRAS_GASTOS','XXXXXX', '6', '', 'Compras y gastos', '1'); -INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (4007,'PCG08-PYME','VENTAS_E_INGRESOS', 'XXXXXX', '7', '', 'Ventas e ingresos', '1'); +INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (4001,'PCG08-PYME','FINANCIACION', 'XXXXXX', '1', '0', 'Financiación básica', '1'); +INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (4002,'PCG08-PYME','ACTIVO', 'XXXXXX', '2', '0', 'Activo no corriente', '1'); +INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (4003,'PCG08-PYME','EXISTENCIAS', 'XXXXXX', '3', '0', 'Existencias', '1'); +INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (4004,'PCG08-PYME','ACREEDORES_DEUDORES', 'XXXXXX', '4', '0', 'Acreedores y deudores por operaciones comerciales', '1'); +INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (4005,'PCG08-PYME','CUENTAS_FINANCIERAS', 'XXXXXX', '5', '0', 'Cuentas financieras', '1'); +INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (4006,'PCG08-PYME','COMPRAS_GASTOS','XXXXXX', '6', '0', 'Compras y gastos', '1'); +INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (4007,'PCG08-PYME','VENTAS_E_INGRESOS', 'XXXXXX', '7', '0', 'Ventas e ingresos', '1'); INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (4008, 'PCG08-PYME','FINANCIACION', 'XXXXXX', '10', '4001', 'CAPITAL', '1'); INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (4009, 'PCG08-PYME','FINANCIACION', 'XXXXXX', '100', '4008', 'Capital social', '1'); From 5234e8fc8ff67c8a1192066cd23ef49f959b99bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Tue, 14 Jun 2016 15:32:55 +0200 Subject: [PATCH 094/212] Update index.php --- htdocs/accountancy/customer/index.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/accountancy/customer/index.php b/htdocs/accountancy/customer/index.php index 06446fdc908..6ed71946efe 100644 --- a/htdocs/accountancy/customer/index.php +++ b/htdocs/accountancy/customer/index.php @@ -95,7 +95,7 @@ if ($action == 'validatehistory') { $sql1 .= " SET fd.fk_code_ventilation = 0"; $sql1 .= ' WHERE fd.fk_code_ventilation NOT IN '; $sql1 .= ' (SELECT accnt.rowid '; - $sql1 .= ' FROM ' . MAIN_DB_PREFIX . 'accountingaccount as accnt'; + $sql1 .= ' FROM ' . MAIN_DB_PREFIX . 'accounting_account as accnt'; $sql1 .= ' INNER JOIN ' . MAIN_DB_PREFIX . 'accounting_system as syst'; $sql1 .= ' ON accnt.fk_pcg_version = syst.pcg_version AND syst.rowid=' . $conf->global->CHARTOFACCOUNTS . ')'; @@ -393,4 +393,4 @@ print "\n"; print ''; llxFooter(); -$db->close(); \ No newline at end of file +$db->close(); From 3646b5f5ae6bad2d95051975ba0077641781a11c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Tue, 14 Jun 2016 16:04:10 +0200 Subject: [PATCH 095/212] Update import.php --- htdocs/imports/import.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/imports/import.php b/htdocs/imports/import.php index d2d0540ee80..944cac8a9b5 100644 --- a/htdocs/imports/import.php +++ b/htdocs/imports/import.php @@ -618,7 +618,7 @@ if ($step == 4 && $datatoimport) $obj->enclosure = $enclosure; } - if(!empty(GETPOST('update'))) { + if (GETPOST('update')) { $array_match_file_to_database=array(); } From 44503cb43cf806b8b433f5bc98395ed72630aec4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 14 Jun 2016 20:49:34 +0200 Subject: [PATCH 096/212] Fix missing "back to list" link --- htdocs/compta/sociales/charges.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/sociales/charges.php b/htdocs/compta/sociales/charges.php index b3e5d21ffdc..6e7c9ad93c2 100644 --- a/htdocs/compta/sociales/charges.php +++ b/htdocs/compta/sociales/charges.php @@ -360,9 +360,11 @@ if ($id > 0) print ''; + $linkback = '' . $langs->trans("BackToList") . ''; + // Ref print '"; // Label @@ -403,7 +405,7 @@ if ($id > 0) { $num = $db->num_rows($resql); $i = 0; $total = 0; - print '
'.$langs->trans("Ref").''; - print $form->showrefnav($object,'id'); + print $form->showrefnav($object,'id',$linkback); print "
'; + print '
'; print ''; print ''; print ''; From 6711b7fbd11f9e13e0ce44de3c6758fb4bb34825 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 14 Jun 2016 23:46:07 +0200 Subject: [PATCH 097/212] Fix css entries added when not required --- htdocs/theme/eldy/style.css.php | 5 ++++- htdocs/theme/md/style.css.php | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 88b0cf30412..5aa97452a11 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -1133,9 +1133,12 @@ $mainmenuusedarray=array_unique(explode(',',$mainmenuused)); $generic=1; // Put here list of menu entries when the div.mainmenu.menuentry was previously defined $divalreadydefined=array('home','companies','products','commercial','externalsite','accountancy','project','tools','members','agenda','holiday','bookmark','cashdesk','ecm','geoipmaxmind','gravatar','clicktodial','paypal','webservices','websites'); +// Put here list of menu entries we are sure we don't want +$divnotrequired=array('multicurrency','salaries','margin','opensurvey','paybox','expensereport','incoterm','prelevement','propal','workflow','notification','supplier_proposal','cron','product','productbatch','expedition'); foreach($mainmenuusedarray as $val) { if (empty($val) || in_array($val,$divalreadydefined)) continue; + if (in_array($val,$divnotrequired)) continue; //print "XXX".$val; // Search img file in module dir @@ -1155,7 +1158,7 @@ foreach($mainmenuusedarray as $val) $url=dol_buildpath($path.'/theme/'.$theme.'/img/menus/generic'.$generic.".png",1); $found=1; if ($generic < 4) $generic++; - print "/* A mainmenu entry but img file ".$val.".png not found (check /".$val."/img/".$val.".png), so we use a generic one */\n"; + print "/* A mainmenu entry was found but img file ".$val.".png not found (check /".$val."/img/".$val.".png), so we use a generic one */\n"; } if ($found) { diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 884c11b1cce..4fe274b3ae3 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -1178,9 +1178,12 @@ $mainmenuusedarray=array_unique(explode(',',$mainmenuused)); $generic=1; // Put here list of menu entries when the div.mainmenu.menuentry was previously defined $divalreadydefined=array('home','companies','products','commercial','externalsite','accountancy','project','tools','members','agenda','holiday','bookmark','cashdesk','ecm','geoipmaxmind','gravatar','clicktodial','paypal','webservices','websites'); +// Put here list of menu entries we are sure we don't want +$divnotrequired=array('multicurrency','salaries','margin','opensurvey','paybox','expensereport','incoterm','prelevement','propal','workflow','notification','supplier_proposal','cron','product','productbatch','expedition'); foreach($mainmenuusedarray as $val) { if (empty($val) || in_array($val,$divalreadydefined)) continue; + if (in_array($val,$divnotrequired)) continue; //print "XXX".$val; // Search img file in module dir From f51386c59fb1c7964fd33028c7c524fc5a63e49d Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Wed, 15 Jun 2016 08:06:22 +0200 Subject: [PATCH 098/212] FIX #5343 --- htdocs/install/mysql/migration/3.8.0-3.9.0.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/install/mysql/migration/3.8.0-3.9.0.sql b/htdocs/install/mysql/migration/3.8.0-3.9.0.sql index 35ebf79e1ef..1a776c27e66 100755 --- a/htdocs/install/mysql/migration/3.8.0-3.9.0.sql +++ b/htdocs/install/mysql/migration/3.8.0-3.9.0.sql @@ -54,7 +54,7 @@ ALTER TABLE llx_askpricesupplier RENAME TO llx_supplier_proposal; ALTER TABLE llx_askpricesupplierdet RENAME TO llx_supplier_proposaldet; ALTER TABLE llx_askpricesupplier_extrafields RENAME TO llx_supplier_proposal_extrafields; ALTER TABLE llx_askpricesupplierdet_extrafields RENAME TO llx_supplier_proposaldet_extrafields; -ALTER TABLE llx_supplier_proposaldet CHANGE COLUMN fk_asksupplierprice fk_supplier_proposal integer NOT NULL; +ALTER TABLE llx_supplier_proposaldet CHANGE COLUMN fk_askpricesupplier fk_supplier_proposal integer NOT NULL; -- Fix bad data update llx_opensurvey_sondage set format = 'D' where format = 'D+'; @@ -610,4 +610,4 @@ INSERT INTO llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) VALUES (14 -- VMYSQL4.1 ALTER TABLE llx_c_type_resource CHANGE COLUMN rowid rowid integer NOT NULL AUTO_INCREMENT; -ALTER TABLE llx_import_model MODIFY COLUMN type varchar(50); \ No newline at end of file +ALTER TABLE llx_import_model MODIFY COLUMN type varchar(50); From 5b5b7a2bf9b8b3a161340cd58c696e7296bb9a73 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 15 Jun 2016 13:37:50 +0200 Subject: [PATCH 099/212] FIX Bad value used for task warning delay FIX Compatibility datee and date_end for warning of tasks --- htdocs/admin/delais.php | 4 ++++ htdocs/core/class/conf.class.php | 2 +- htdocs/core/class/html.form.class.php | 4 ++-- htdocs/core/js/editinplace.js | 2 +- htdocs/core/modules/modProjet.class.php | 13 +++++++++---- htdocs/langs/en_US/admin.lang | 5 +++-- htdocs/main.inc.php | 6 ++++-- htdocs/product/stock/product.php | 6 +++--- htdocs/projet/class/project.class.php | 2 +- htdocs/projet/class/task.class.php | 8 +++++--- htdocs/projet/tasks/list.php | 5 +++-- htdocs/projet/tasks/task.php | 1 + 12 files changed, 37 insertions(+), 21 deletions(-) diff --git a/htdocs/admin/delais.php b/htdocs/admin/delais.php index 14332ceee63..41b2f489904 100644 --- a/htdocs/admin/delais.php +++ b/htdocs/admin/delais.php @@ -41,6 +41,10 @@ $modules=array( ) ), 'projet' => array( + array( + 'code' => 'MAIN_DELAY_PROJECT_TO_CLOSE', + 'img' => 'project' + ), array( 'code' => 'MAIN_DELAY_TASKS_TODO', 'img' => 'task' diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php index cfb4ff4f9cf..35b0d4024ec 100644 --- a/htdocs/core/class/conf.class.php +++ b/htdocs/core/class/conf.class.php @@ -508,7 +508,7 @@ class Conf { $this->projet->warning_delay=(isset($this->global->MAIN_DELAY_PROJECT_TO_CLOSE)?$this->global->MAIN_DELAY_PROJECT_TO_CLOSE:7)*24*60*60; $this->projet->task = new StdClass(); - $this->projet->task->warning_delay=(isset($this->global->MAIN_DELAY_TASKS_TODO)?$this->global->MAIN_DELAY_ACTIONS_TODO:7)*24*60*60; + $this->projet->task->warning_delay=(isset($this->global->MAIN_DELAY_TASKS_TODO)?$this->global->MAIN_DELAY_TASKS_TODO:7)*24*60*60; } if (isset($this->commande)) { diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 159708de61f..3d0a5ab182f 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -254,7 +254,7 @@ class Form * @param string $value Value to show/edit * @param string $htmlname DIV ID (field name) * @param int $condition Condition to edit - * @param string $inputType Type of input ('numeric', 'datepicker', 'textarea:rows:cols', 'ckeditor:dolibarr_zzz:width:height:?:1:rows:cols', 'select:xxx') + * @param string $inputType Type of input ('string', 'numeric', 'datepicker', 'textarea:rows:cols', 'ckeditor:dolibarr_zzz:width:height:?:1:rows:cols', 'select:xxx') * @param string $editvalue When in edit mode, use this value as $value instead of value * @param object $extObject External object * @param mixed $custommsg String or Array of custom messages : eg array('success' => 'MyMessage', 'error' => 'MyMessage') @@ -299,6 +299,7 @@ class Form $inputType=$tmp[0]; if (! empty($tmp[1])) $inputOption=$tmp[1]; if (! empty($tmp[2])) $savemethod=$tmp[2]; + $out.= ''."\n"; } else if ((preg_match('/^datepicker/',$inputType)) || (preg_match('/^datehourpicker/',$inputType))) { @@ -363,7 +364,6 @@ class Form $out.= ''."\n"; $out.= ''."\n"; } - $out.= ''.$value.''."\n"; $out.= ''.(! empty($editvalue) ? $editvalue : $value).''."\n"; } diff --git a/htdocs/core/js/editinplace.js b/htdocs/core/js/editinplace.js index 17d70220b31..7607ba6f885 100644 --- a/htdocs/core/js/editinplace.js +++ b/htdocs/core/js/editinplace.js @@ -127,7 +127,7 @@ $(document).ready(function() { $('.editval_string').editable(urlSaveInPlace, { type : 'text', id : 'field', - width : 300, + width : withInPlace, /* Size of string area in px ? */ tooltip : tooltipInPlace, placeholder : placeholderInPlace, cancel : cancelInPlace, diff --git a/htdocs/core/modules/modProjet.class.php b/htdocs/core/modules/modProjet.class.php index 8de0d100194..2d71eaba5a1 100644 --- a/htdocs/core/modules/modProjet.class.php +++ b/htdocs/core/modules/modProjet.class.php @@ -124,13 +124,18 @@ class modProjet extends DolibarrModules $this->const[$r][4] = 0; $r++; - /* not required (0 = not present) - $this->const[$r][0] = "PROJECT_HIDE_TASKS"; + $this->const[$r][0] = "MAIN_DELAY_PROJECT_TO_CLOSE"; $this->const[$r][1] = "chaine"; - $this->const[$r][2] = "0"; + $this->const[$r][2] = "7"; $this->const[$r][3] = ""; $this->const[$r][4] = 0; - */ + $r++; + $this->const[$r][0] = "MAIN_DELAY_TASKS_TODO"; + $this->const[$r][1] = "chaine"; + $this->const[$r][2] = "7"; + $this->const[$r][3] = ""; + $this->const[$r][4] = 0; + $r++; // Boxes $this->boxes = array(); diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 60b86e25dd0..d0a745ab491 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -979,8 +979,9 @@ DelayBeforeWarning=Delay before warning DelaysBeforeWarning=Delays before warning DelaysOfToleranceBeforeWarning=Tolerance delays before warning DelaysOfToleranceDesc=This screen allows you to define the tolerated delays before an alert is reported on screen with picto %s for each late element. -Delays_MAIN_DELAY_ACTIONS_TODO=Delay tolerance (in days) before alert on planned events not completed yet -Delays_MAIN_DELAY_TASKS_TODO=Delay tolerance (in days) before alert on planned tasks not completed yet +Delays_MAIN_DELAY_ACTIONS_TODO=Delay tolerance (in days) before alert on planned events (agenda events) not completed yet +Delays_MAIN_DELAY_PROJECT_TO_CLOSE=Delay tolerance (in days) before alert on project not closed in time +Delays_MAIN_DELAY_TASKS_TODO=Delay tolerance (in days) before alert on planned tasks (project tasks) not completed yet Delays_MAIN_DELAY_ORDERS_TO_PROCESS=Delay tolerance (in days) before alert on orders not processed yet Delays_MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS=Delay tolerance (in days) before alert on suppliers orders not processed yet Delays_MAIN_DELAY_PROPALS_TO_CLOSE=Delay tolerance (in days) before alert on proposals to close diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 4cbe98d8ccd..839c4fdd3b0 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -1179,17 +1179,19 @@ function top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs // jQuery jeditable if (! empty($conf->global->MAIN_USE_JQUERY_JEDITABLE)) { + print ''."\n"; print ''."\n"; print ''."\n"; print ''."\n"; print ''."\n"; print ''."\n"; print ''."\n"; diff --git a/htdocs/product/stock/product.php b/htdocs/product/stock/product.php index e49da226727..d8051465626 100644 --- a/htdocs/product/stock/product.php +++ b/htdocs/product/stock/product.php @@ -485,14 +485,14 @@ if ($id > 0 || $ref) } // Stock alert threshold - print ''; // Desired stock print ''; // Real stock diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index 43b738021ee..236a8154578 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -1711,7 +1711,7 @@ class Project extends CommonObject /** - * Is the action delayed? + * Is the project delayed? * * @return bool */ diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php index ea156b340d5..6db12174539 100644 --- a/htdocs/projet/class/task.class.php +++ b/htdocs/projet/class/task.class.php @@ -1599,7 +1599,7 @@ class Task extends CommonObject $task_static->projectstatus = $obj->projectstatus; $task_static->progress = $obj->progress; $task_static->fk_statut = $obj->status; - $task_static->datee = $this->db->jdate($obj->datee); + $task_static->date_end = $this->db->jdate($obj->datee); if ($task_static->hasDelay()) { $response->nbtodolate++; @@ -1616,7 +1616,7 @@ class Task extends CommonObject } /** - * Is the action delayed? + * Is the task delayed? * * @return bool */ @@ -1630,6 +1630,8 @@ class Task extends CommonObject $now = dol_now(); - return ($this->datee > 0 && $this->datee < ($now - $conf->projet->task->warning_delay)); + $datetouse = ($this->date_end > 0) ? $this->date_end : ($this->datee > 0 ? $this->datee : 0); + + return ($datetouse > 0 && ($datetouse < ($now - $conf->projet->task->warning_delay))); } } diff --git a/htdocs/projet/tasks/list.php b/htdocs/projet/tasks/list.php index e5c807371c2..52e01d445a8 100644 --- a/htdocs/projet/tasks/list.php +++ b/htdocs/projet/tasks/list.php @@ -551,14 +551,15 @@ if ($resql) $projectstatic->title = $obj->projecttitle; $projectstatic->public = $obj->public; $projectstatic->statut = $obj->projectstatus; - $projectstatic->datee = $obj->projectdatee; + $projectstatic->datee = $db->jdate($obj->projectdatee); $taskstatic->id = $obj->id; $taskstatic->ref = $obj->ref; $taskstatic->label = $obj->label; $taskstatic->fk_statut = $obj->fk_statut; $taskstatic->progress = $obj->progress; - $taskstatic->datee = $obj->date_end; + $taskstatic->datee = $db->jdate($obj->date_end); // deprecated + $taskstatic->date_end = $db->jdate($obj->date_end); $userAccess = $projectstatic->restrictedProjectArea($user); // why this ? if ($userAccess >= 0) diff --git a/htdocs/projet/tasks/task.php b/htdocs/projet/tasks/task.php index 8c1d1fc40cb..5b3b8c9fe61 100644 --- a/htdocs/projet/tasks/task.php +++ b/htdocs/projet/tasks/task.php @@ -437,6 +437,7 @@ if ($id > 0 || ! empty($ref)) // Date end print ''; // Planned workload From 748b3bb2bad930e317f8d1c0b21ca8adecb35e2b Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Wed, 15 Jun 2016 14:16:56 +0200 Subject: [PATCH 100/212] Fix travis error for GETPOST in empty --- htdocs/imports/import.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/imports/import.php b/htdocs/imports/import.php index d2d0540ee80..6917eb5aeb0 100644 --- a/htdocs/imports/import.php +++ b/htdocs/imports/import.php @@ -618,7 +618,8 @@ if ($step == 4 && $datatoimport) $obj->enclosure = $enclosure; } - if(!empty(GETPOST('update'))) { + $update = GETPOST('update'); + if(!empty($update)) { $array_match_file_to_database=array(); } From 2395099d0fb57f555c01b8ca1827f8b29c2c0d35 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 15 Jun 2016 17:20:00 +0200 Subject: [PATCH 101/212] Debug Oauth --- htdocs/admin/oauth.php | 7 ++++++- htdocs/langs/en_US/oauth.lang | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/htdocs/admin/oauth.php b/htdocs/admin/oauth.php index 2100230fdb4..02a5ffc50e8 100644 --- a/htdocs/admin/oauth.php +++ b/htdocs/admin/oauth.php @@ -138,6 +138,7 @@ $list = array ( 'OAUTH_GOOGLE_NAME', 'OAUTH_GOOGLE_ID', 'OAUTH_GOOGLE_SECRET', + 'OAUTH_GOOGLE_DESC', ), array( 'OAUTH_HUBIC_NAME', @@ -323,7 +324,11 @@ foreach ($list as $key) print ''; // Api Name $label = $langs->trans($key[0]); - print ''; + print ''; + print ''; + print ''; if ($supported) { diff --git a/htdocs/langs/en_US/oauth.lang b/htdocs/langs/en_US/oauth.lang index 260c0e1f902..f8dfee9788f 100644 --- a/htdocs/langs/en_US/oauth.lang +++ b/htdocs/langs/en_US/oauth.lang @@ -12,3 +12,4 @@ ListOfSupportedOauthProviders=Enter here credential provided by your OAuth2 prov OAUTH_GOOGLE_NAME=Api Google OAUTH_GOOGLE_ID=Api Google Id OAUTH_GOOGLE_SECRET=Api Google Secret +OAUTH_GOOGLE_DESC=Go on this page then Credentials to create Oauth credentials From 4c922f073b876ec403dd54f3022a1d6afb573169 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 15 Jun 2016 18:21:58 +0200 Subject: [PATCH 102/212] FIX Can't create thirdparty or validate invoice if profid is mandatory and profid does not exists for other countries --- htdocs/compta/facture.php | 27 ++++++++++++++------------- htdocs/societe/soc.php | 23 +++++++++++++---------- 2 files changed, 27 insertions(+), 23 deletions(-) diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index 85bcf2c68fa..04951cbb6cd 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -392,21 +392,22 @@ if (empty($reshook)) // Check parameters - // Check for mandatory prof id - for($i = 1; $i < 6; $i ++) + // Check for mandatory prof id (but only if country is than than ours) + if ($mysoc->country_id > 0 && $object->thirdparty->country_id == $mysoc->country_id) { - $idprof_mandatory = 'SOCIETE_IDPROF' . ($i) . '_INVOICE_MANDATORY'; - $idprof = 'idprof' . $i; - if (! $object->thirdparty->$idprof && ! empty($conf->global->$idprof_mandatory)) - { - if (! $error) - $langs->load("errors"); - $error ++; - - setEventMessages($langs->trans('ErrorProdIdIsMandatory', $langs->transcountry('ProfId' . $i, $object->thirdparty->country_code)), null, 'errors'); - } + for ($i = 1; $i <= 6; $i++) + { + $idprof_mandatory = 'SOCIETE_IDPROF' . ($i) . '_INVOICE_MANDATORY'; + $idprof = 'idprof' . $i; + if (! $object->thirdparty->$idprof && ! empty($conf->global->$idprof_mandatory)) + { + if (! $error) $langs->load("errors"); + $error++; + setEventMessages($langs->trans('ErrorProdIdIsMandatory', $langs->transcountry('ProfId' . $i, $object->thirdparty->country_code)), null, 'errors'); + } + } } - + $qualified_for_stock_change = 0; if (empty($conf->global->STOCK_SUPPORTS_SERVICES)) { $qualified_for_stock_change = $object->hasProductsOrServices(2); diff --git a/htdocs/societe/soc.php b/htdocs/societe/soc.php index 85eacc44341..012aaf374e2 100644 --- a/htdocs/societe/soc.php +++ b/htdocs/societe/soc.php @@ -396,7 +396,7 @@ if (empty($reshook)) // Only for companies if (!($object->particulier || $private)) { - for ($i = 1; $i < 5; $i++) + for ($i = 1; $i <= 6; $i++) { $slabel="idprof".$i; $_POST[$slabel]=trim($_POST[$slabel]); @@ -411,15 +411,18 @@ if (empty($reshook)) } } - $idprof_mandatory ='SOCIETE_IDPROF'.($i).'_MANDATORY'; - - if (! $vallabel && ! empty($conf->global->$idprof_mandatory)) - { - $langs->load("errors"); - $error++; - $errors[] = $langs->trans("ErrorProdIdIsMandatory", $langs->transcountry('ProfId'.$i, $object->country_code)); - $action = (($action=='add'||$action=='create')?'create':'edit'); - } + // Check for mandatory prof id (but only if country is than than ours) + if ($mysoc->country_id > 0 && $object->country_id == $mysoc->country_id) + { + $idprof_mandatory ='SOCIETE_IDPROF'.($i).'_MANDATORY'; + if (! $vallabel && ! empty($conf->global->$idprof_mandatory)) + { + $langs->load("errors"); + $error++; + $errors[] = $langs->trans("ErrorProdIdIsMandatory", $langs->transcountry('ProfId'.$i, $object->country_code)); + $action = (($action=='add'||$action=='create')?'create':'edit'); + } + } } } } From 630a063283c15a0113b68fae01273ed5bd2f8459 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 15 Jun 2016 18:21:58 +0200 Subject: [PATCH 103/212] FIX Can't create thirdparty or validate invoice if profid is mandatory and profid does not exists for other countries Conflicts: htdocs/compta/facture.php --- htdocs/compta/facture.php | 27 ++++++++++++++------------- htdocs/societe/soc.php | 23 +++++++++++++---------- 2 files changed, 27 insertions(+), 23 deletions(-) diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index ccfd057ccde..e805d1ecac9 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -390,21 +390,22 @@ if (empty($reshook)) // Check parameters - // Check for mandatory prof id - for($i = 1; $i < 6; $i ++) + // Check for mandatory prof id (but only if country is than than ours) + if ($mysoc->country_id > 0 && $object->thirdparty->country_id == $mysoc->country_id) { - $idprof_mandatory = 'SOCIETE_IDPROF' . ($i) . '_INVOICE_MANDATORY'; - $idprof = 'idprof' . $i; - if (! $object->thirdparty->$idprof && ! empty($conf->global->$idprof_mandatory)) - { - if (! $error) - $langs->load("errors"); - $error ++; - - setEventMessage($langs->trans('ErrorProdIdIsMandatory', $langs->transcountry('ProfId' . $i, $object->thirdparty->country_code)), 'errors'); - } + for ($i = 1; $i <= 6; $i++) + { + $idprof_mandatory = 'SOCIETE_IDPROF' . ($i) . '_INVOICE_MANDATORY'; + $idprof = 'idprof' . $i; + if (! $object->thirdparty->$idprof && ! empty($conf->global->$idprof_mandatory)) + { + if (! $error) $langs->load("errors"); + $error++; + setEventMessages($langs->trans('ErrorProdIdIsMandatory', $langs->transcountry('ProfId' . $i, $object->thirdparty->country_code)), null, 'errors'); + } + } } - + $qualified_for_stock_change = 0; if (empty($conf->global->STOCK_SUPPORTS_SERVICES)) { $qualified_for_stock_change = $object->hasProductsOrServices(2); diff --git a/htdocs/societe/soc.php b/htdocs/societe/soc.php index 76680649958..3a5ed38e2d5 100644 --- a/htdocs/societe/soc.php +++ b/htdocs/societe/soc.php @@ -363,7 +363,7 @@ if (empty($reshook)) // Only for companies if (!($object->particulier || $private)) { - for ($i = 1; $i < 5; $i++) + for ($i = 1; $i <= 6; $i++) { $slabel="idprof".$i; $_POST[$slabel]=trim($_POST[$slabel]); @@ -378,15 +378,18 @@ if (empty($reshook)) } } - $idprof_mandatory ='SOCIETE_IDPROF'.($i).'_MANDATORY'; - - if (! $vallabel && ! empty($conf->global->$idprof_mandatory)) - { - $langs->load("errors"); - $error++; - $errors[] = $langs->trans("ErrorProdIdIsMandatory", $langs->transcountry('ProfId'.$i, $object->country_code)); - $action = (($action=='add'||$action=='create')?'create':'edit'); - } + // Check for mandatory prof id (but only if country is than than ours) + if ($mysoc->country_id > 0 && $object->country_id == $mysoc->country_id) + { + $idprof_mandatory ='SOCIETE_IDPROF'.($i).'_MANDATORY'; + if (! $vallabel && ! empty($conf->global->$idprof_mandatory)) + { + $langs->load("errors"); + $error++; + $errors[] = $langs->trans("ErrorProdIdIsMandatory", $langs->transcountry('ProfId'.$i, $object->country_code)); + $action = (($action=='add'||$action=='create')?'create':'edit'); + } + } } } } From 49d515be7e461f450ea0e0a6daccd0e275097974 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 16 Jun 2016 12:22:55 +0200 Subject: [PATCH 104/212] Fix debug info was visible --- htdocs/expensereport/list.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/expensereport/list.php b/htdocs/expensereport/list.php index 8175c130ef6..889310df163 100644 --- a/htdocs/expensereport/list.php +++ b/htdocs/expensereport/list.php @@ -297,7 +297,6 @@ if ($resql) print ""; print ''; From 9781baa743fbdcdcf72b7a9cc30ec25f25123b97 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 16 Jun 2016 12:42:21 +0200 Subject: [PATCH 105/212] FIX Filter on opportunity amount and budget --- htdocs/projet/list.php | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index f520e7ba1a6..e5370159742 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -70,6 +70,8 @@ $search_year=GETPOST("search_year"); $search_all=GETPOST("search_all"); $search_status=GETPOST("search_status",'int'); $search_opp_status=GETPOST("search_opp_status",'alpha'); +$search_opp_amount=GETPOST("search_opp_amount",'alpha'); +$search_budget_amount=GETPOST("search_budget_amount",'alpha'); $search_public=GETPOST("search_public",'int'); $search_user=GETPOST('search_user','int'); $search_sale=GETPOST('search_sale','int'); @@ -128,7 +130,8 @@ $arrayfields=array( 'p.public'=>array('label'=>$langs->trans("Visibility"), 'checked'=>1, 'position'=>102), 'p.opp_amount'=>array('label'=>$langs->trans("OpportunityAmountShort"), 'checked'=>1, 'enabled'=>$conf->global->PROJECT_USE_OPPORTUNITIES, 'position'=>103), 'p.fk_opp_status'=>array('label'=>$langs->trans("OpportunityStatusShort"), 'checked'=>1, 'enabled'=>$conf->global->PROJECT_USE_OPPORTUNITIES, 'position'=>104), - 'p.datec'=>array('label'=>$langs->trans("DateCreationShort"), 'checked'=>0, 'position'=>500), + 'p.budget_amount'=>array('label'=>$langs->trans("Budget"), 'checked'=>0, 'position'=>110), + 'p.datec'=>array('label'=>$langs->trans("DateCreationShort"), 'checked'=>0, 'position'=>500), 'p.tms'=>array('label'=>$langs->trans("DateModificationShort"), 'checked'=>0, 'position'=>500), 'p.fk_statut'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000), ); @@ -158,6 +161,8 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") || GETP $search_year=""; $search_status=-1; $search_opp_status=-1; + $search_opp_amount=''; + $search_budget_amount=''; $search_public=""; $search_sale=""; $search_user=''; @@ -208,7 +213,7 @@ if (count($listofprojectcontacttype) == 0) $listofprojectcontacttype[0]='0'; $distinct='DISTINCT'; // We add distinct until we are added a protection to be sure a contact of a project and task is only once. $sql = "SELECT ".$distinct." p.rowid as projectid, p.ref, p.title, p.fk_statut, p.fk_opp_status, p.public, p.fk_user_creat"; -$sql.= ", p.datec as date_creation, p.dateo as date_start, p.datee as date_end, p.opp_amount, p.tms as date_update"; +$sql.= ", p.datec as date_creation, p.dateo as date_start, p.datee as date_end, p.opp_amount, p.tms as date_update, p.budget_amount"; $sql.= ", s.nom as name, s.rowid as socid"; $sql.= ", cls.code as opp_status_code"; // Add fields for extrafields @@ -273,6 +278,8 @@ if ($search_public!='') $sql .= " AND p.public = ".$db->escape($search_public); if ($search_sale > 0) $sql.= " AND sc.fk_user = " .$search_sale; if (! $user->rights->societe->client->voir && ! $socid) $sql.= " AND ((s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id.") OR (s.rowid IS NULL))"; if ($search_user > 0) $sql.= " AND ecp.fk_c_type_contact IN (".join(',',array_keys($listofprojectcontacttype)).") AND ecp.element_id = p.rowid AND ecp.fk_socpeople = ".$search_user; +if ($search_opp_amount != '') $sql .= natural_search('p.opp_amount', $search_opp_amount, 1); +if ($search_budget_amount != '') $sql .= natural_search('p.budget_amount', $search_budget_amount, 1); // Add where from extra fields foreach ($search_array_options as $key => $val) { @@ -327,6 +334,8 @@ if ($resql) if ($search_public != '') $param.='&search_public='.$search_public; if ($search_user > 0) $param.='&search_user='.$search_user; if ($search_sale > 0) $param.='&search_sale='.$search_sale; + if ($search_opp_amount != '') $param.='&search_opp_amount='.$search_opp_amount; + if ($search_budget_amount != '') $param.='&search_budget_amount='.$search_budget_amount; if ($optioncss != '') $param.='&optioncss='.$optioncss; // Add $param from extra fields foreach ($search_array_options as $key => $val) @@ -335,7 +344,7 @@ if ($resql) $tmpkey=preg_replace('/search_options_/','',$key); if ($val != '') $param.='&search_options_'.$tmpkey.'='.urlencode($val); } - + $text=$langs->trans("Projects"); if ($search_user == $user->id) $text=$langs->trans('MyProjects'); print_barre_liste($text, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, "", $num,'','title_project'); @@ -406,7 +415,8 @@ if ($resql) if (! empty($arrayfields['p.public']['checked'])) print_liste_field_titre($arrayfields['p.public']['label'],$_SERVER["PHP_SELF"],"p.public","",$param,"",$sortfield,$sortorder); if (! empty($arrayfields['p.opp_amount']['checked'])) print_liste_field_titre($arrayfields['p.opp_amount']['label'],$_SERVER["PHP_SELF"],'p.opp_amount',"",$param,'align="right"',$sortfield,$sortorder); if (! empty($arrayfields['p.fk_opp_status']['checked'])) print_liste_field_titre($arrayfields['p.fk_opp_status']['label'],$_SERVER["PHP_SELF"],'p.fk_opp_status',"",$param,'align="center"',$sortfield,$sortorder); - // Extra fields + if (! empty($arrayfields['p.budget_amount']['checked'])) print_liste_field_titre($arrayfields['p.budget_amount']['label'],$_SERVER["PHP_SELF"],'p.budget_amount',"",$param,'align="center"',$sortfield,$sortorder); + // Extra fields if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) { foreach($extrafields->attribute_label as $key => $val) @@ -479,7 +489,8 @@ if ($resql) } if (! empty($arrayfields['p.opp_amount']['checked'])) { - print ''; } if (! empty($arrayfields['p.fk_opp_status']['checked'])) @@ -488,6 +499,12 @@ if ($resql) print $formproject->selectOpportunityStatus('search_opp_status',$search_opp_status,1,1,1); print ''; } + if (! empty($arrayfields['p.budget_amount']['checked'])) + { + print ''; + } // Extra fields if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) { @@ -651,7 +668,7 @@ if ($resql) if (! empty($arrayfields['p.opp_amount']['checked'])) { print ''; } if (! empty($arrayfields['p.fk_opp_status']['checked'])) @@ -660,6 +677,12 @@ if ($resql) if ($obj->opp_status_code) print $langs->trans("OppStatusShort".$obj->opp_status_code); print ''; } + if (! empty($arrayfields['p.budget_amount']['checked'])) + { + print ''; + } // Extra fields if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) { From 2ef3d7cedbd5bed5131d6ee5372f8e1aa15cd38f Mon Sep 17 00:00:00 2001 From: Drosis Nikos Date: Thu, 16 Jun 2016 13:50:35 +0300 Subject: [PATCH 106/212] New TVA for Greece 24% --- htdocs/install/mysql/data/llx_c_tva.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/install/mysql/data/llx_c_tva.sql b/htdocs/install/mysql/data/llx_c_tva.sql index 9fca86e45b5..3d88e6bbcc9 100644 --- a/htdocs/install/mysql/data/llx_c_tva.sql +++ b/htdocs/install/mysql/data/llx_c_tva.sql @@ -107,7 +107,7 @@ insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 5 insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 55, 5, '10.7','0','USt. Landwirtschaft', 0); -- GREECE (id country=102) -insert into llx_c_tva(rowid,fk_pays,taux,localtax1,localtax1_type,localtax2,localtax2_type,recuperableonly,note,active) values (2462, 102, 23, 0, '0', 0, '0', 0, 'Κανονικός Φ.Π.Α.', 1); +insert into llx_c_tva(rowid,fk_pays,taux,localtax1,localtax1_type,localtax2,localtax2_type,recuperableonly,note,active) values (2462, 102, 24, 0, '0', 0, '0', 0, 'Κανονικός Φ.Π.Α.', 1); insert into llx_c_tva(rowid,fk_pays,taux,localtax1,localtax1_type,localtax2,localtax2_type,recuperableonly,note,active) values (2463, 102, 0, 0, '0', 0, '0', 0, 'Μηδενικό Φ.Π.Α.', 1); insert into llx_c_tva(rowid,fk_pays,taux,localtax1,localtax1_type,localtax2,localtax2_type,recuperableonly,note,active) values (2464, 102, 13, 0, '0', 0, '0', 0, 'Μειωμένος Φ.Π.Α.', 1); insert into llx_c_tva(rowid,fk_pays,taux,localtax1,localtax1_type,localtax2,localtax2_type,recuperableonly,note,active) values (2465, 102, 6.5, 0, '0', 0, '0', 0, 'Υπερμειωμένος Φ.Π.Α.', 1); From f94d140d2a21b5b56adcb9de6517d73954056f43 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 16 Jun 2016 13:00:23 +0200 Subject: [PATCH 107/212] Fix bad sql field name --- htdocs/product/stock/product.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/product/stock/product.php b/htdocs/product/stock/product.php index e6477fadf69..9d84ccd6bfe 100644 --- a/htdocs/product/stock/product.php +++ b/htdocs/product/stock/product.php @@ -472,8 +472,8 @@ if ($id > 0 || $ref) } // Stock alert threshold - print ''; // Desired stock From 5a51850d54368cc0583161ef6bbbc323ad4dd86a Mon Sep 17 00:00:00 2001 From: Drosis Nikos Date: Thu, 16 Jun 2016 14:03:11 +0300 Subject: [PATCH 108/212] Greece VAT 23 -> 24 --- htdocs/install/mysql/data/llx_c_tva.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/install/mysql/data/llx_c_tva.sql b/htdocs/install/mysql/data/llx_c_tva.sql index 4226413be59..860c416493a 100644 --- a/htdocs/install/mysql/data/llx_c_tva.sql +++ b/htdocs/install/mysql/data/llx_c_tva.sql @@ -107,7 +107,7 @@ insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 5 insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 55, 5, '10.7','0','USt. Landwirtschaft', 0); -- GREECE (id country=102) -insert into llx_c_tva(rowid,fk_pays,taux,localtax1,localtax1_type,localtax2,localtax2_type,recuperableonly,note,active) values (2462, 102, 23, 0, '0', 0, '0', 0, 'Κανονικός Φ.Π.Α.', 1); +insert into llx_c_tva(rowid,fk_pays,taux,localtax1,localtax1_type,localtax2,localtax2_type,recuperableonly,note,active) values (2462, 102, 24, 0, '0', 0, '0', 0, 'Κανονικός Φ.Π.Α.', 1); insert into llx_c_tva(rowid,fk_pays,taux,localtax1,localtax1_type,localtax2,localtax2_type,recuperableonly,note,active) values (2463, 102, 0, 0, '0', 0, '0', 0, 'Μηδενικό Φ.Π.Α.', 1); insert into llx_c_tva(rowid,fk_pays,taux,localtax1,localtax1_type,localtax2,localtax2_type,recuperableonly,note,active) values (2464, 102, 13, 0, '0', 0, '0', 0, 'Μειωμένος Φ.Π.Α.', 1); insert into llx_c_tva(rowid,fk_pays,taux,localtax1,localtax1_type,localtax2,localtax2_type,recuperableonly,note,active) values (2465, 102, 6.5, 0, '0', 0, '0', 0, 'Υπερμειωμένος Φ.Π.Α.', 1); From eb54c3f8af101448e8161f28ee5fe4d31ff0f792 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= Date: Thu, 16 Jun 2016 13:08:06 +0200 Subject: [PATCH 109/212] Fix #5350 date_pointoftax prevented creating invoices --- htdocs/compta/facture/class/facture.class.php | 2 +- htdocs/install/mysql/migration/3.9.0-4.0.0.sql | 4 ++-- htdocs/install/mysql/tables/llx_facture.sql | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index d4c616d09ac..4b5da68f8a2 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -358,7 +358,7 @@ class Facture extends CommonInvoice $sql.= ", ".($this->remise_absolue>0?$this->remise_absolue:'NULL'); $sql.= ", ".($this->remise_percent>0?$this->remise_percent:'NULL'); $sql.= ", '".$this->db->idate($this->date)."'"; - $sql.= ", '".$this->db->idate($this->date_pointoftax)."'"; + $sql.= ", ".(strval($this->date_pointoftax)!='' ? "'".$this->db->idate($this->date_pointoftax)."'" : 'null'); $sql.= ", ".($this->note_private?"'".$this->db->escape($this->note_private)."'":"null"); $sql.= ", ".($this->note_public?"'".$this->db->escape($this->note_public)."'":"null"); $sql.= ", ".($this->ref_client?"'".$this->db->escape($this->ref_client)."'":"null"); diff --git a/htdocs/install/mysql/migration/3.9.0-4.0.0.sql b/htdocs/install/mysql/migration/3.9.0-4.0.0.sql index c20ef305c39..935f8a04917 100644 --- a/htdocs/install/mysql/migration/3.9.0-4.0.0.sql +++ b/htdocs/install/mysql/migration/3.9.0-4.0.0.sql @@ -111,7 +111,7 @@ ALTER TABLE llx_cronjob ADD COLUMN test varchar(255) DEFAULT '1'; ALTER TABLE llx_facture ADD INDEX idx_facture_fk_statut (fk_statut); -ALTER TABLE llx_facture ADD COLUMN date_pointoftax date; +ALTER TABLE llx_facture ADD COLUMN date_pointoftax date DEFAULT NULL; UPDATE llx_projet as p set p.opp_percent = (SELECT percent FROM llx_c_lead_status as cls WHERE cls.rowid = p.fk_opp_status) WHERE p.opp_percent IS NULL AND p.fk_opp_status IS NOT NULL; @@ -506,4 +506,4 @@ CREATE TABLE llx_oauth_state ( entity integer )ENGINE=InnoDB; -ALTER TABLE llx_import_model MODIFY COLUMN type varchar(50); \ No newline at end of file +ALTER TABLE llx_import_model MODIFY COLUMN type varchar(50); diff --git a/htdocs/install/mysql/tables/llx_facture.sql b/htdocs/install/mysql/tables/llx_facture.sql index b8e97f4dc1e..f62d8452953 100644 --- a/htdocs/install/mysql/tables/llx_facture.sql +++ b/htdocs/install/mysql/tables/llx_facture.sql @@ -38,7 +38,7 @@ create table llx_facture fk_soc integer NOT NULL, datec datetime, -- date de creation de la facture datef date, -- date invoice - date_pointoftax date, -- date point of tax (for GB) + date_pointoftax date DEFAULT NULL, -- date point of tax (for GB) date_valid date, -- date validation tms timestamp, -- date creation/modification paye smallint DEFAULT 0 NOT NULL, From 25fe110a343c230be73297663e8e194d0470d007 Mon Sep 17 00:00:00 2001 From: Alexis Algoud Date: Thu, 16 Jun 2016 14:08:14 +0200 Subject: [PATCH 110/212] FIX a task without project inclusion call a non included object Link --- htdocs/core/lib/project.lib.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index c6efa6ab3e1..87ef87cfe64 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -162,6 +162,7 @@ function task_prepare_head($object) $head[$h][0] = DOL_URL_ROOT.'/projet/tasks/document.php?id='.$object->id.(GETPOST('withproject')?'&withproject=1':''); $filesdir = $conf->projet->dir_output . "/" . dol_sanitizeFileName($object->project->ref) . '/' .dol_sanitizeFileName($object->ref); include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; + include_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php'; $nbFiles = count(dol_dir_list($filesdir,'files',0,'','(\.meta|_preview\.png)$')); $nbLinks=Link::count($db, $object->element, $object->id); $head[$h][1] = $langs->trans('Documents'); From bc22f39aa45c25a67b0937c5ea6741281654f80e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Thu, 16 Jun 2016 20:18:58 +0200 Subject: [PATCH 111/212] Update import.php --- htdocs/imports/import.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/imports/import.php b/htdocs/imports/import.php index 944cac8a9b5..6917eb5aeb0 100644 --- a/htdocs/imports/import.php +++ b/htdocs/imports/import.php @@ -618,7 +618,8 @@ if ($step == 4 && $datatoimport) $obj->enclosure = $enclosure; } - if (GETPOST('update')) { + $update = GETPOST('update'); + if(!empty($update)) { $array_match_file_to_database=array(); } From a3d53b269f8fd7448793c22d89d1a0e27af9c085 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 17 Jun 2016 10:35:18 +0200 Subject: [PATCH 112/212] FIX javascript error with german-switzerland language --- htdocs/core/js/lib_head.js.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/js/lib_head.js.php b/htdocs/core/js/lib_head.js.php index 234a2348590..e3b1d0ed691 100644 --- a/htdocs/core/js/lib_head.js.php +++ b/htdocs/core/js/lib_head.js.php @@ -1032,7 +1032,7 @@ function price2numjs(amount) { if ($langs->transnoentitiesnoconv("SeparatorThousand") != "SeparatorThousand") { $thousand = $langs->transnoentitiesnoconv("SeparatorThousand"); } - print "var dec='" . $dec . "'; var thousand='" . $thousand . "';\n"; // Set var in javascript + print "var dec='" . dol_escape_js($dec) . "'; var thousand='" . dol_escape_js($thousand) . "';\n"; // Set var in javascript ?> var main_max_dec_shown = global->MAIN_MAX_DECIMALS_SHOWN); ?>; From d7177575949edd6066a524ce209b6ff7a9f2897d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 17 Jun 2016 10:40:11 +0200 Subject: [PATCH 113/212] Protect against bad value of accurancy to avoid javascript error --- htdocs/core/js/lib_head.js.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/core/js/lib_head.js.php b/htdocs/core/js/lib_head.js.php index e3b1d0ed691..4d02acc9925 100644 --- a/htdocs/core/js/lib_head.js.php +++ b/htdocs/core/js/lib_head.js.php @@ -1035,9 +1035,9 @@ function price2numjs(amount) { print "var dec='" . dol_escape_js($dec) . "'; var thousand='" . dol_escape_js($thousand) . "';\n"; // Set var in javascript ?> - var main_max_dec_shown = global->MAIN_MAX_DECIMALS_SHOWN); ?>; - var main_rounding_unit = global->MAIN_MAX_DECIMALS_UNIT; ?>; - var main_rounding_tot = global->MAIN_MAX_DECIMALS_TOT; ?>; + var main_max_dec_shown = global->MAIN_MAX_DECIMALS_SHOWN); ?>; + var main_rounding_unit = global->MAIN_MAX_DECIMALS_UNIT; ?>; + var main_rounding_tot = global->MAIN_MAX_DECIMALS_TOT; ?>; var amount = amount.toString(); From 48f30b5ef1a51baad3327250410a6d2a6175a739 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 17 Jun 2016 12:39:00 +0200 Subject: [PATCH 114/212] Cleaner menu --- htdocs/core/menus/standard/empty.php | 4 +- htdocs/theme/eldy/style.css.php | 83 +++++++++++++++------------- 2 files changed, 49 insertions(+), 38 deletions(-) diff --git a/htdocs/core/menus/standard/empty.php b/htdocs/core/menus/standard/empty.php index 801eea2b0c8..0002aabaf21 100644 --- a/htdocs/core/menus/standard/empty.php +++ b/htdocs/core/menus/standard/empty.php @@ -165,7 +165,9 @@ class MenuManager for($j = ($i + 1); $j < $num; $j++) { if (empty($menu_array[$j]['level'])) $lastopened=false; - } + } + $alt = 0; // For menu manager "empty", we force to not have blockvmenufirst defined + $lastopened = 1; // For menu manager "empty", we force to not have blockvmenulast defined if (($alt%2==0)) { print '
'."\n"; diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 5aa97452a11..b10bc03e49b 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -667,13 +667,37 @@ td.showDragHandle { height: calc(100% - 50px);*/ } +.side-nav { + display: table-cell; + border-right: 1px solid #d0d0d0; +} +div.blockvmenulogo +{ + border-bottom: 0 !important; +} +div.blockvmenupair, div.blockvmenuimpair, div.blockvmenubookmarks { + border-top: none !important; + border-left: none !important; + border-right: none !important; + border-bottom: 1px solid #e0e0e0; + padding-left: 0 !important; +} +div.blockvmenuend { + border: none !important; + padding-left: 0 !important; +} +div.vmenu, td.vmenu { + padding-right: 6px !important; +} + + + /* For desktop */ global->MAIN_TESTMENUHIDER)) && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { ?> #id-container { width: 100%; } .side-nav { - border-right: 1px solid #BBB; border-bottom: 1px solid #BBB; background: #FFF; } @@ -687,7 +711,8 @@ div.blockvmenulogo border-bottom: 0 !important; } div.blockvmenusearch { - padding-bottom: 10px !important; + padding-bottom: 12px !important; + border-bottom: 1px solid #e0e0e0; } div.blockvmenupair, div.blockvmenuimpair, div.blockvmenubookmarks, div.blockvmenuend { border-top: none !important; @@ -699,9 +724,6 @@ div.blockvmenupair, div.blockvmenuimpair, div.blockvmenubookmarks, div.blockvmen div.vmenu, td.vmenu { padding-right: 6px !important; } -div.blockvmenulast { - border-bottom: 0; -} div.fiche { margin-: 6px !important; margin-: 6px !important; @@ -1017,8 +1039,13 @@ div.tmenucenter width: 100%; } +#menu_titre_logo { + padding-top: 0; + padding-bottom: 0; +} div.menu_titre { - padding-top: 5px; + padding-top: 4px; + padding-bottom: 4px; } .mainmenuaspan { @@ -1373,12 +1400,12 @@ div.vmenu, td.vmenu { } .menu_contenu { - padding-top: 5px; - padding-bottom: 2px; + padding-top: 3px; + padding-bottom: 3px; overflow: hidden; text-overflow: ellipsis; } -#menu_contenu_logo { padding-right: 4px; } +#menu_contenu_logo { padding-top: 0; } .companylogo { } .searchform { padding-top: 4px; } @@ -1402,15 +1429,20 @@ a.vsmenu.addbookmarkpicto { } .vmenu div.blockvmenubookmarks, .vmenu div.blockvmenuend, .vmenu div.blockvmenulogo, .vmenu div.blockvmenusearchphone { - border-bottom: 1px solid #BBB; +/* border-bottom: 1px solid #BBB; */ +} +div.blockvmenusearchphone +{ + border-bottom: none !important; } .vmenu div.blockvmenuend, .vmenu div.blockvmenulogo { margin: 0 0 8px 2px; } -.vmenu div.blockvmenusearch +.vmenu div.blockvmenusearch { - padding-bottom: 5px; + padding-bottom: 14px; + border-bottom: 1px solid #e0e0e0; } .vmenu div.blockvmenuend { @@ -1419,6 +1451,7 @@ a.vsmenu.addbookmarkpicto { .vmenu div.blockvmenulogo { padding-bottom: 10px; + padding-top: 0; } div.blockvmenubookmarks { @@ -1434,21 +1467,12 @@ div.blockvmenupair, div.blockvmenuimpair, div.blockvmenubookmarks, div.blockvmen padding-right: 1px; padding-top: 3px; padding-bottom: 3px; - /* margin: 1px 0 8px 2px; */ margin: 0 0 0 2px; background: rgb(); border-left: 1px solid #AAA; border-right: 1px solid #BBB; -/* border-bottom: 1px solid #BBB; - border-top: 1px solid #BBB; - border-radius: 4px; - -moz-border-radius: 4px; - -moz-box-shadow: 3px 3px 4px #DDD; - -webkit-box-shadow: 3px 3px 4px #DDD; - box-shadow: 3px 3px 4px #DDD; - */ } div.blockvmenusearch @@ -1457,26 +1481,11 @@ div.blockvmenusearch color: #000000; text-align: ; text-decoration: none; - /*padding-left: 5px; - padding-right: 1px; - padding-top: 3px; - padding-bottom: 3px; */ - margin: 1px 0px 4px 2px; + margin: 1px 0px 0px 2px; background: rgb(); - - /*border-left: 1px solid #AAA; - border-right: 1px solid #BBB; - border-bottom: 1px solid #BBB; - border-top: 1px solid #BBB;*/ - /*border-radius: 4px; - -moz-border-radius: 4px; - -moz-box-shadow: 3px 3px 4px #DDD; - -webkit-box-shadow: 3px 3px 4px #DDD; - box-shadow: 3px 3px 4px #DDD;*/ } div.blockvmenusearch > form > div { -/* min-height: 40px; */ padding-top: 3px; } div.blockvmenusearch > form > div > label { From d94953c4d770cb7445ae71db31cd75d46ee874d5 Mon Sep 17 00:00:00 2001 From: florian HENRY Date: Fri, 17 Jun 2016 13:33:48 +0200 Subject: [PATCH 115/212] FIX bug with PgSQL on GROUP BY missing column --- htdocs/compta/facture/list.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index 2bd9ce1d8a4..0a886230100 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -756,7 +756,8 @@ if (! $sall) $sql.= ' f.datef, f.date_lim_reglement,'; $sql.= ' f.paye, f.fk_statut,'; $sql.= ' f.datec, f.tms,'; - $sql.= ' s.rowid, s.nom, s.town, s.zip, s.fk_pays, s.code_client, s.client'; + $sql.= ' s.rowid, s.nom, s.town, s.zip, s.fk_pays, s.code_client, s.client, typent.code'; + $sql.= ' ,state.code_departement, state.nom'; } else { From 93417a08b34997985bc7c3fdeec6d7daa02ff908 Mon Sep 17 00:00:00 2001 From: florian HENRY Date: Fri, 17 Jun 2016 13:49:44 +0200 Subject: [PATCH 116/212] FIX : Add comment because accoutancy cannot work with PgSQL --- htdocs/accountancy/customer/index.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/accountancy/customer/index.php b/htdocs/accountancy/customer/index.php index 64825d62cbb..d5f913ae0dd 100644 --- a/htdocs/accountancy/customer/index.php +++ b/htdocs/accountancy/customer/index.php @@ -184,6 +184,8 @@ print '
'; print ''; print ''; + +//TODO : Cannot work with PGSQL !, Change that with php treatment rather than big SQL query $sql = "SELECT IF(aa.account_number IS NULL, 'Non pointe', aa.account_number) AS 'code comptable',"; $sql .= " IF(aa.label IS NULL, 'Non pointe', aa.label) AS 'Intitulé',"; $sql .= " ROUND(SUM(IF(MONTH(f.datef)=1,fd.total_ht,0)),2) AS 'Janvier',"; From 388cd202aad3cd84ed000d22557066082881d5b1 Mon Sep 17 00:00:00 2001 From: philippe grand Date: Fri, 17 Jun 2016 14:19:54 +0200 Subject: [PATCH 117/212] international comment for code --- htdocs/don/admin/donation.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/htdocs/don/admin/donation.php b/htdocs/don/admin/donation.php index d699a9fc7a6..b6043539c0d 100644 --- a/htdocs/don/admin/donation.php +++ b/htdocs/don/admin/donation.php @@ -1,7 +1,7 @@ * Copyright (C) 2012-2015 Juanjo Menent - * Copyright (C) 2013-2015 Philippe Grand + * Copyright (C) 2013-2016 Philippe Grand * Copyright (C) 2015 Alexandre Spangaro * Copyright (C) 2015 Benoit Bruchard * @@ -90,12 +90,12 @@ else if ($action == 'setdoc') { if (dolibarr_set_const($db, "DON_ADDON_MODEL",$value,'chaine',0,'',$conf->entity)) { - // La constante qui a ete lue en avant du nouveau set - // on passe donc par une variable pour avoir un affichage coherent + // The constant that was read before the new set + // So we go through a variable for a coherent display $conf->global->DON_ADDON_MODEL = $value; } - // On active le modele + // It enables the model $ret = delDocumentModel($value, $type); if ($ret > 0) { @@ -321,7 +321,7 @@ if (preg_match('/fr/i',$conf->global->MAIN_INFO_SOCIETE_COUNTRY)) print '
'; print load_fiche_titre($langs->trans("DonationsModels")); -// Defini tableau def de modele +// Defined the template definition table $type='donation'; $def = array(); $sql = "SELECT nom"; @@ -408,7 +408,7 @@ if (is_resource($handle)) print ""; } - // Defaut + // Default if ($conf->global->DON_ADDON_MODEL == "$name") { print "
'; print ''; $legend.= ''; $legend.= ''; - $legend.= ''; + $legend.= ''; $legend.= ''; $legend.= ''; diff --git a/htdocs/loan/card.php b/htdocs/loan/card.php index 31de81d8b9b..63b62a3d156 100644 --- a/htdocs/loan/card.php +++ b/htdocs/loan/card.php @@ -101,7 +101,7 @@ if ($action == 'add' && $user->rights->loan->write) } elseif (! $_POST["capital"]) { - setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Capital")), null, 'errors'); + setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("LoanCapital")), null, 'errors'); $action = 'create'; } else @@ -220,7 +220,7 @@ if ($action == 'create') } // Capital - print ''; + print ''; // Date Start print ""; @@ -365,7 +365,7 @@ if ($id > 0) } // Capital - print ''; + print ''; // Date start print ""; @@ -490,7 +490,7 @@ if ($id > 0) print ''; print ''; print ''; - print ''; + print ''; print ''; print ''; diff --git a/htdocs/loan/document.php b/htdocs/loan/document.php index 362aa84843c..7463da4a190 100644 --- a/htdocs/loan/document.php +++ b/htdocs/loan/document.php @@ -116,7 +116,7 @@ if ($object->id) } // Amount - print ''; + print ''; // Date start print ""; diff --git a/htdocs/loan/index.php b/htdocs/loan/index.php index abf4e9470c1..b0c65b90cbf 100644 --- a/htdocs/loan/index.php +++ b/htdocs/loan/index.php @@ -125,7 +125,7 @@ if ($resql) print ''; print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"l.rowid","",$param,"",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Label"),$_SERVER["PHP_SELF"],"l.label","",$param,'align="left"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("Capital"),$_SERVER["PHP_SELF"],"l.capital","",$param,'align="right"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("LoanCapital"),$_SERVER["PHP_SELF"],"l.capital","",$param,'align="right"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("DateStart"),$_SERVER["PHP_SELF"],"l.datestart","",$param,'align="center"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"l.paid","",$param,'align="right"',$sortfield,$sortorder); print_liste_field_titre(''); diff --git a/htdocs/loan/payment/card.php b/htdocs/loan/payment/card.php index 6315264bad7..9c1e938c3ed 100644 --- a/htdocs/loan/payment/card.php +++ b/htdocs/loan/payment/card.php @@ -163,7 +163,7 @@ print ''; // Amount -print ''; +print ''; print ''; print ''; diff --git a/htdocs/loan/payment/payment.php b/htdocs/loan/payment/payment.php index e735480e414..91c71e95e5a 100644 --- a/htdocs/loan/payment/payment.php +++ b/htdocs/loan/payment/payment.php @@ -239,7 +239,7 @@ if ($action == 'create') print '
'.$langs->trans("RefPayment").''.$langs->trans("Date").'
'.$form->editfieldkey("StockLimit",'stocklimit',$object->seuil_stock_alerte,$object,$user->rights->produit->creer).''; - print $form->editfieldval("StockLimit",'stocklimit',$object->seuil_stock_alerte,$object,$user->rights->produit->creer); + print '
'.$form->editfieldkey("StockLimit",'seuil_stock_alerte',$object->seuil_stock_alerte,$object,$user->rights->produit->creer).''; + print $form->editfieldval("StockLimit",'seuil_stock_alerte',$object->seuil_stock_alerte,$object,$user->rights->produit->creer,'string'); print '
'.$form->editfieldkey($form->textwithpicto($langs->trans("DesiredStock"), $langs->trans("DesiredStockDesc"), 1),'desiredstock',$object->desiredstock,$object,$user->rights->produit->creer); print ''; - print $form->editfieldval("DesiredStock",'desiredstock',$object->desiredstock,$object,$user->rights->produit->creer); + print $form->editfieldval("DesiredStock",'desiredstock',$object->desiredstock,$object,$user->rights->produit->creer,'string'); print '
'.$langs->trans("DateEnd").''; print dol_print_date($object->date_end,'dayhour'); + if ($object->hasDelay()) print img_warning("Late"); print '
'.$label.'
'.$label.''; + if (! empty($key[3])) print $langs->trans($key[3]); + print '
'; print $expensereportstatic->getNomUrl(1); - print $expensereportstatic->status; if ($expensereportstatic->status == 2 && $expensereportstatic->hasDelay('toappove')) print img_warning($langs->trans("Late")); if ($expensereportstatic->status == 5 && $expensereportstatic->hasDelay('topay')) print img_warning($langs->trans("Late")); print ''; + print ''; + print ''; print ''; + print ''; + print ''; - if ($obj->opp_status_code) print price($obj->opp_amount, 1, '', 1, - 1, - 1, $conf->currency); + if ($obj->opp_status_code) print price($obj->opp_amount, 1, '', 1, - 1, - 1); print ''; + if ($obj->budget_amount != '') print price($obj->budget_amount, 1, '', 1, - 1, - 1); + print '
'.$form->editfieldkey("StockLimit",'stocklimit',$object->seuil_stock_alerte,$object,$user->rights->produit->creer).''; - print $form->editfieldval("StockLimit",'stocklimit',$object->seuil_stock_alerte,$object,$user->rights->produit->creer); + print '
'.$form->editfieldkey("StockLimit",'seuil_stock_alerte',$object->seuil_stock_alerte,$object,$user->rights->produit->creer).''; + print $form->editfieldval("StockLimit",'seuil_stock_alerte',$object->seuil_stock_alerte,$object,$user->rights->produit->creer); print '
' . $langs->trans("NovemberMin") . '' . $langs->trans("DecemberMin") . '' . $langs->trans("Total") . '
"; From 243a30e5de961ee8e064d6526600a2ad4ebcd3d7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 17 Jun 2016 15:51:09 +0200 Subject: [PATCH 118/212] Code comment --- htdocs/core/lib/functions.lib.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index fe9b16e7e65..88bdd5aa3b6 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -4871,6 +4871,7 @@ function get_htmloutput_mesg($mesgstring='',$mesgarray='', $style='ok', $keepemb if (block) { $.dolEventValid("","'.dol_escape_js($out).'"); } else { + /* jnotify(message, preset of message type, keepmessage) */ $.jnotify("'.dol_escape_js($out).'", "'.($style=="ok" ? 3000 : $style).'", '.($style=="ok" ? "false" : "true").', From 34c741bf0d086193fdf282828f04806c1b82a55e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 17 Jun 2016 16:28:16 +0200 Subject: [PATCH 119/212] FIX CSS and responsive behaviour (feature with a menu hider is on on smarpthone) --- htdocs/core/class/html.formfile.class.php | 2 +- htdocs/core/menus/standard/empty.php | 4 +-- .../tpl/document_actions_post_headers.tpl.php | 2 +- htdocs/ecm/index.php | 2 +- htdocs/ecm/index_auto.php | 2 +- htdocs/main.inc.php | 9 ++--- htdocs/theme/eldy/style.css.php | 33 ++++++++++++------- 7 files changed, 32 insertions(+), 22 deletions(-) diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index 40275c5c794..00790ebc9fd 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -1267,7 +1267,7 @@ class FormFile print ''; print ''; print ''; - print $langs->trans('Link') . ': '; + print $langs->trans('Link') . ': '; print ''; print $langs->trans('Label') . ': '; diff --git a/htdocs/core/menus/standard/empty.php b/htdocs/core/menus/standard/empty.php index 0002aabaf21..633f0cae238 100644 --- a/htdocs/core/menus/standard/empty.php +++ b/htdocs/core/menus/standard/empty.php @@ -170,11 +170,11 @@ class MenuManager $lastopened = 1; // For menu manager "empty", we force to not have blockvmenulast defined if (($alt%2==0)) { - print '
'."\n"; + print '
'."\n"; } else { - print '
'."\n"; + print '
'."\n"; } } diff --git a/htdocs/core/tpl/document_actions_post_headers.tpl.php b/htdocs/core/tpl/document_actions_post_headers.tpl.php index a983bf7f36e..35d1299fd8f 100644 --- a/htdocs/core/tpl/document_actions_post_headers.tpl.php +++ b/htdocs/core/tpl/document_actions_post_headers.tpl.php @@ -65,7 +65,7 @@ $formfile->form_attach_new_file( 0, 0, $permission, - 50, + $conf->browser->layout == 'phone' ? 40 : 60, $object, '', 1, diff --git a/htdocs/ecm/index.php b/htdocs/ecm/index.php index 797e759fb13..896db6f0b85 100644 --- a/htdocs/ecm/index.php +++ b/htdocs/ecm/index.php @@ -371,7 +371,7 @@ $moreheadjs=empty($conf->use_javascript_ajax)?"":" , north__paneSelector: \"#ecm-layout-north\" , west__paneSelector: \"#ecm-layout-west\" , resizable: true - , north__size: 32 + , north__size: 36 , north__resizable: false , north__closable: false , west__size: 340 diff --git a/htdocs/ecm/index_auto.php b/htdocs/ecm/index_auto.php index 76ce04235e4..c6944065b3a 100644 --- a/htdocs/ecm/index_auto.php +++ b/htdocs/ecm/index_auto.php @@ -373,7 +373,7 @@ $moreheadjs=empty($conf->use_javascript_ajax)?"":" , north__paneSelector: \"#ecm-layout-north\" , west__paneSelector: \"#ecm-layout-west\" , resizable: true - , north__size: 32 + , north__size: 36 , north__resizable: false , north__closable: false , west__size: 340 diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 839c4fdd3b0..5e919498a9b 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -207,7 +207,7 @@ if (ini_get('register_globals')) // To solve bug in using $_SESSION } // Init the 5 global objects -// This include will set: $conf, $db, $langs, $user, $mysoc objects +// This include will make the new and set properties for: $conf, $db, $langs, $user, $mysoc objects require_once 'master.inc.php'; // Activate end of page function @@ -221,11 +221,12 @@ if (isset($_SERVER["HTTP_USER_AGENT"])) $conf->browser->os=$tmp['browseros']; $conf->browser->version=$tmp['browserversion']; $conf->browser->layout=$tmp['layout']; // 'classic', 'phone', 'tablet' - $conf->browser->phone=$tmp['phone']; // deprecated, use layout - $conf->browser->tablet=$tmp['tablet']; // deprecated, use layout + $conf->browser->phone=$tmp['phone']; // TODO deprecated, use ->layout + $conf->browser->tablet=$tmp['tablet']; // TODO deprecated, use ->layout //var_dump($conf->browser); -} + if ($conf->browser->layout == 'phone') $conf->global->MAIN_TESTMENUHIDER=1; +} // Force HTTPS if required ($conf->file->main_force_https is 0/1 or https dolibarr root url) // $_SERVER["HTTPS"] is 'on' when link is https, otherwise $_SERVER["HTTPS"] is empty or 'off' diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index b10bc03e49b..4a24f2d3dad 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -958,7 +958,6 @@ a.tmenu:link, a.tmenu:visited, a.tmenu:hover, a.tmenu:active { font-weight: normal; padding: 0px 5px 0px 3px; white-space: nowrap; - /* text-shadow: 1px 1px 1px #000000; */ color: #; text-decoration: none; } @@ -1002,13 +1001,16 @@ li.tmenu, li.tmenusel { margin: 0 0 0 0; font-weight: normal; } +li.menuhider:hover { + background-image: none !important; +} li.tmenusel, li.tmenu:hover { - background-image: -o-linear-gradient(bottom, rgba(250,250,250,0.3) 0%, rgba(0,0,0,0.5) 100%) !important; - background-image: -moz-linear-gradient(bottom, rgba(0,0,0,0.5) 0%, rgba(250,250,250,0) 100%) !important; - background-image: -webkit-linear-gradient(bottom, rgba(0,0,0,0.5) 0%, rgba(250,250,250,0) 100%) !important; - background-image: -ms-linear-gradient(bottom, rgba(250,250,250,0.3) 0%, rgba(0,0,0,0.5) 100%) !important; - background-image: linear-gradient(bottom, rgba(250,250,250,0.3) 0%, rgba(0,0,0,0.5) 100%) !important; - background: rgb(); + background-image: -o-linear-gradient(bottom, rgba(250,250,250,0.3) 0%, rgba(0,0,0,0.5) 100%); + background-image: -moz-linear-gradient(bottom, rgba(0,0,0,0.5) 0%, rgba(250,250,250,0) 100%); + background-image: -webkit-linear-gradient(bottom, rgba(0,0,0,0.5) 0%, rgba(250,250,250,0) 100%); + background-image: -ms-linear-gradient(bottom, rgba(250,250,250,0.3) 0%, rgba(0,0,0,0.5) 100%); + background-image: linear-gradient(bottom, rgba(250,250,250,0.3) 0%, rgba(0,0,0,0.5) 100%); + /* background: rgb(); */ } .tmenuend .tmenuleft { width: 0px; } .tmenuend { display: none; } @@ -1038,6 +1040,13 @@ div.tmenucenter height: px; width: 100%; + /* + max-width: px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + color: #; + */ } #menu_titre_logo { padding-top: 0; @@ -4310,7 +4319,7 @@ img.demothumb { /* nboftopmenuentries = , fontsize= */ /* rule to reduce top menu - 1st reduction */ -@media only screen and (max-width: px) +@media only screen and (max-width: px) { div.tmenucenter { max-width: px; /* size of viewport */ @@ -4329,7 +4338,7 @@ img.demothumb { } li.tmenu, li.tmenusel { - min-width: 32px; + min-width: 36px; } div.mainmenu { min-width: auto; @@ -4339,7 +4348,7 @@ img.demothumb { } } /* rule to reduce top menu - 2nd reduction */ -@media only screen and (max-width: px) +@media only screen and (max-width: px) { div.mainmenu { height: 23px; @@ -4358,7 +4367,7 @@ img.demothumb { } } /* rule to reduce top menu - 3rd reduction */ -@media only screen and (max-width: 605px) +@media only screen and (max-width: 660px) { /* Reduce login top right info */ .usertextatoplogin { @@ -4385,7 +4394,7 @@ img.demothumb { } li.tmenu, li.tmenusel { - min-width: 30px; + min-width: 32px; } div.mainmenu { height: 23px; From 33dc2d5ec399014d272748f0bb57fa248b4942ff Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 17 Jun 2016 19:29:58 +0200 Subject: [PATCH 120/212] Sync lang --- htdocs/langs/fr_FR/website.lang | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 htdocs/langs/fr_FR/website.lang diff --git a/htdocs/langs/fr_FR/website.lang b/htdocs/langs/fr_FR/website.lang new file mode 100644 index 00000000000..5a213dc099c --- /dev/null +++ b/htdocs/langs/fr_FR/website.lang @@ -0,0 +1,25 @@ +# Dolibarr language file - Source file is en_US - website +Shortname=Code +WebsiteSetupDesc=Créer ici autant d'entrée que de nombre différents de sites web que nécessaire.\nEnsuite, aller dans le menu Sites Web pour les éditer. +DeleteWebsite=Effacer site web +ConfirmDeleteWebsite=Êtes-vous sûr de vouloir supprimer ce site web. Toutes les pages et le contenu seront également supprimés. +WEBSITE_PAGENAME=Nom/alias de la page +WEBSITE_URL=URL du site web +WEBSITE_CSS_URL=URL du fichier de la feuille de style (CSS) externe +WEBSITE_CSS_INLINE=Contenu de la feuille de style (CSS) +MediaFiles=Répertoire de médias +EditCss=Modifier la feuille de style (CSS) +EditMenu=Modifier le menu +EditPageMeta=Modifier les métadonnées +EditPageContent=Modifier le contenu +Website=Site web +AddPage=Ajouter une page +Page=Page +PreviewOfSiteNotYetAvailable=La prévisualisation de votre site web n'est pas disponible actuellement. Vous devez créer la première page. +RequestedPageHasNoContentYet=La page demandée : %s est vide ou le fichier .tpm.PHP a été supprimé. Modifiez le contenu de la page pour résoudre ce problème. +PageDeleted=Page%s du site web effacée %s +PageAdded=Page %s du site web ajouté %s +ViewSiteInNewTab=Pré-visualiser le site dans un nouvel onglet +ViewPageInNewTab=Pré-visualiser la page dans un nouvel onglet +SetAsHomePage=Définir comme page d'accueil +RealURL=URL réelle From 4382f2a437dce4e9ffc6349bb1a00ccedebceea5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 18 Jun 2016 10:34:42 +0200 Subject: [PATCH 121/212] Clean language files --- dev/translation/sanity_check_en_langfiles.php | 16 +++++++++------- htdocs/compta/bank/search.php | 2 +- htdocs/core/lib/pdf.lib.php | 4 ++-- .../thirdparties_services_expired.modules.php | 4 ++-- htdocs/core/modules/modExpedition.class.php | 2 +- htdocs/langs/en_US/accountancy.lang | 2 -- htdocs/langs/en_US/banks.lang | 2 -- htdocs/langs/en_US/bills.lang | 4 +--- htdocs/langs/en_US/categories.lang | 3 --- htdocs/langs/en_US/companies.lang | 2 -- htdocs/langs/en_US/errors.lang | 1 + htdocs/langs/en_US/exports.lang | 4 ---- htdocs/langs/en_US/help.lang | 1 - htdocs/langs/en_US/loan.lang | 2 +- htdocs/langs/en_US/main.lang | 9 +++++++-- htdocs/langs/en_US/margins.lang | 2 -- htdocs/langs/en_US/multicurrency.lang | 3 --- htdocs/langs/en_US/orders.lang | 1 - htdocs/langs/en_US/other.lang | 1 - htdocs/langs/en_US/products.lang | 3 --- htdocs/langs/en_US/projects.lang | 2 -- htdocs/langs/en_US/propal.lang | 1 - htdocs/langs/en_US/sendings.lang | 3 --- htdocs/langs/en_US/sms.lang | 3 --- htdocs/langs/en_US/suppliers.lang | 3 --- htdocs/langs/en_US/website.lang | 1 - htdocs/loan/calc.php | 2 +- htdocs/loan/card.php | 8 ++++---- htdocs/loan/document.php | 2 +- htdocs/loan/index.php | 2 +- htdocs/loan/payment/card.php | 2 +- htdocs/loan/payment/payment.php | 4 ++-- htdocs/margin/agentMargins.php | 4 ++-- htdocs/margin/checkMargins.php | 4 ++-- htdocs/margin/customerMargins.php | 4 ++-- htdocs/margin/productMargins.php | 4 ++-- 36 files changed, 43 insertions(+), 74 deletions(-) diff --git a/dev/translation/sanity_check_en_langfiles.php b/dev/translation/sanity_check_en_langfiles.php index 5eb92509eb1..cef7405d2d4 100755 --- a/dev/translation/sanity_check_en_langfiles.php +++ b/dev/translation/sanity_check_en_langfiles.php @@ -96,10 +96,11 @@ if ($web) print "
"; // directory containing the php and lang files -$htdocs = $path."/../../htdocs/"; +$htdocs = $path."../../htdocs/"; +$scripts = $path."../../scripts/"; // directory containing the english lang files -$workdir = $htdocs."langs/en_US/"; +$workdir = $htdocs."langs/en_US/"; $files = scandir($workdir); @@ -241,17 +242,18 @@ if ($web) // STEP 2 - Search key not used - -if (! empty($_REQUEST['unused']) && $_REQUEST['unused'] == 'true') +if ((! empty($_REQUEST['unused']) && $_REQUEST['unused'] == 'true') || (isset($argv[1]) && $argv[1]=='unused=true')) { foreach ($langstrings_dist AS $value) { - $search = '\'trans("'.$value.'")\''; - $string = 'grep -R -m 1 -F --exclude=includes/* --include=*.php '.$search.' '.$htdocs.'*'; + //$search = '\'trans("'.$value.'")\''; + $search = '-e "\''.$value.'\'" -e \'"'.$value.'"\''; + $string = 'grep -R -m 1 -F --exclude=includes/* --include=*.php '.$search.' '.$htdocs.'* '.$scripts.'*'; + //print $string."
\n"; exec($string,$output); if (empty($output)) { $unused[$value] = true; - echo $value.'
'; + echo $value."
\n"; } } diff --git a/htdocs/compta/bank/search.php b/htdocs/compta/bank/search.php index f0c8a6bcdda..9b1b0c8328f 100644 --- a/htdocs/compta/bank/search.php +++ b/htdocs/compta/bank/search.php @@ -190,7 +190,7 @@ if ($resql) $moreforfilter = ''; $moreforfilter.='
'; - $moreforfilter .= $langs->trans('Period') . ' ('.$langs->trans('DateOperationShort').') : ' . $langs->trans('StartDate') . ' '; + $moreforfilter .= $langs->trans('Period') . ' ('.$langs->trans('DateOperationShort').') : ' . $langs->trans('DateStart') . ' '; $moreforfilter .= $form->select_date($search_dt_start, 'search_start_dt', 0, 0, 1, "search_form", 1, 0, 1); $moreforfilter .= ' - '; $moreforfilter .= $langs->trans('EndDate') . ' ' . $form->select_date($search_dt_end, 'search_end_dt', 0, 0, 1, "search_form", 1, 0, 1); diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index f831de667bd..2a8074f6276 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -1948,7 +1948,7 @@ function pdf_getLinkedObjects($object,$outputlangs) $linkedobjects[$objecttype]['ref_title'] = $outputlangs->transnoentities("RefSending"); if (! empty($linkedobjects[$objecttype]['ref_value'])) $linkedobjects[$objecttype]['ref_value'].=' / '; $linkedobjects[$objecttype]['ref_value'].= $outputlangs->transnoentities($elementobject->ref); - //$linkedobjects[$objecttype]['date_title'] = $outputlangs->transnoentities("DateSending"); + //$linkedobjects[$objecttype]['date_title'] = $outputlangs->transnoentities("DateShipment"); //if (! empty($linkedobjects[$objecttype]['date_value'])) $linkedobjects[$objecttype]['date_value'].=' / '; //$linkedobjects[$objecttype]['date_value'].= dol_print_date($elementobject->date_delivery,'day','',$outputlangs); } @@ -1957,7 +1957,7 @@ function pdf_getLinkedObjects($object,$outputlangs) $linkedobjects[$objecttype]['ref_title'] = $outputlangs->transnoentities("RefOrder") . ' / ' . $outputlangs->transnoentities("RefSending"); if (empty($linkedobjects[$objecttype]['ref_value'])) $linkedobjects[$objecttype]['ref_value'] = $outputlangs->convToOutputCharset($order->ref) . ($order->ref_client ? ' ('.$order->ref_client.')' : ''); $linkedobjects[$objecttype]['ref_value'].= ' / ' . $outputlangs->transnoentities($elementobject->ref); - //$linkedobjects[$objecttype]['date_title'] = $outputlangs->transnoentities("OrderDate") . ($elementobject->date_delivery ? ' / ' . $outputlangs->transnoentities("DateSending") : ''); + //$linkedobjects[$objecttype]['date_title'] = $outputlangs->transnoentities("OrderDate") . ($elementobject->date_delivery ? ' / ' . $outputlangs->transnoentities("DateShipment") : ''); //if (empty($linkedobjects[$objecttype]['date_value'])) $linkedobjects[$objecttype]['date_value'] = dol_print_date($order->date,'day','',$outputlangs); //$linkedobjects[$objecttype]['date_value'].= ($elementobject->date_delivery ? ' / ' . dol_print_date($elementobject->date_delivery,'day','',$outputlangs) : ''); } diff --git a/htdocs/core/modules/mailings/thirdparties_services_expired.modules.php b/htdocs/core/modules/mailings/thirdparties_services_expired.modules.php index 5837329a476..39790959b97 100644 --- a/htdocs/core/modules/mailings/thirdparties_services_expired.modules.php +++ b/htdocs/core/modules/mailings/thirdparties_services_expired.modules.php @@ -128,8 +128,8 @@ class mailing_thirdparties_services_expired extends MailingTargets 'lastname' => $obj->name, // For thirdparties, lastname must be name 'firstname' => '', // For thirdparties, firstname is '' 'other' => - ('StartDate='.dol_print_date($this->db->jdate($obj->date_ouverture),'day')).';'. - ('EndDate='.dol_print_date($this->db->jdate($obj->date_fin_validite),'day')).';'. + ('DateStart='.dol_print_date($this->db->jdate($obj->date_ouverture),'day')).';'. + ('DateEnd='.dol_print_date($this->db->jdate($obj->date_fin_validite),'day')).';'. ('Contract='.$obj->fk_contrat).';'. ('ContactLine='.$obj->cdid), 'source_url' => $this->url($obj->id), diff --git a/htdocs/core/modules/modExpedition.class.php b/htdocs/core/modules/modExpedition.class.php index 4f7baff0c64..13d72baebc1 100644 --- a/htdocs/core/modules/modExpedition.class.php +++ b/htdocs/core/modules/modExpedition.class.php @@ -236,7 +236,7 @@ class modExpedition extends DolibarrModules $this->export_code[$r]=$this->rights_class.'_'.$r; $this->export_label[$r]='Shipments'; // Translation key (used only if key ExportDataset_xxx_z not found) $this->export_permission[$r]=array(array("expedition","shipment","export")); - $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'ThirdParty','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','d.nom'=>'State','co.label'=>'Country','co.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.idprof5'=>'ProfId5','s.idprof6'=>'ProfId6','c.rowid'=>"Id",'c.ref'=>"Ref",'c.ref_customer'=>"RefCustomer",'c.fk_soc'=>"IdCompany",'c.date_creation'=>"DateCreation",'c.date_delivery'=>"DateSending",'c.tracking_number'=>"TrackingNumber",'c.height'=>"Height",'c.width'=>"Width",'c.size'=>"Depth",'c.size_units'=>'SizeUnits','c.weight'=>"Weight",'c.weight_units'=>"WeightUnits",'c.fk_statut'=>'Status','c.note_public'=>"NotePublic",'ed.rowid'=>'LineId','cd.description'=>'Description','ed.qty'=>"Qty",'p.rowid'=>'ProductId','p.ref'=>'ProductRef','p.label'=>'ProductLabel','p.weight'=>'ProductWeight','p.weight_units'=>'WeightUnits','p.volume'=>'ProductVolume','p.volume_units'=>'VolumeUnits'); + $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'ThirdParty','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','d.nom'=>'State','co.label'=>'Country','co.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.idprof5'=>'ProfId5','s.idprof6'=>'ProfId6','c.rowid'=>"Id",'c.ref'=>"Ref",'c.ref_customer'=>"RefCustomer",'c.fk_soc'=>"IdCompany",'c.date_creation'=>"DateCreation",'c.date_delivery'=>"DateDeliveryPlanned",'c.tracking_number'=>"TrackingNumber",'c.height'=>"Height",'c.width'=>"Width",'c.size'=>"Depth",'c.size_units'=>'SizeUnits','c.weight'=>"Weight",'c.weight_units'=>"WeightUnits",'c.fk_statut'=>'Status','c.note_public'=>"NotePublic",'ed.rowid'=>'LineId','cd.description'=>'Description','ed.qty'=>"Qty",'p.rowid'=>'ProductId','p.ref'=>'ProductRef','p.label'=>'ProductLabel','p.weight'=>'ProductWeight','p.weight_units'=>'WeightUnits','p.volume'=>'ProductVolume','p.volume_units'=>'VolumeUnits'); if ($idcontacts && ! empty($conf->global->SHIPMENT_ADD_CONTACTS_IN_EXPORT)) $this->export_fields_array[$r]+=array('sp.rowid'=>'IdContact','sp.lastname'=>'Lastname','sp.firstname'=>'Firstname','sp.note_public'=>'NotePublic'); //$this->export_TypeFields_array[$r]=array('s.rowid'=>"List:societe:nom",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.label'=>'List:c_country:label:label','co.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','c.ref'=>"Text",'c.ref_client'=>"Text",'c.date_creation'=>"Date",'c.date_commande'=>"Date",'c.amount_ht'=>"Numeric",'c.remise_percent'=>"Numeric",'c.total_ht'=>"Numeric",'c.total_ttc'=>"Numeric",'c.facture'=>"Boolean",'c.fk_statut'=>'Status','c.note_public'=>"Text",'c.date_livraison'=>'Date','ed.qty'=>"Text"); $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.label'=>'List:c_country:label:label','co.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','c.ref'=>"Text",'c.ref_customer'=>"Text",'c.date_creation'=>"Date",'c.date_delivery'=>"Date",'c.tracking_number'=>"Numeric",'c.height'=>"Numeric",'c.width'=>"Numeric",'c.weight'=>"Numeric",'c.fk_statut'=>'Status','c.note_public'=>"Text",'ed.qty'=>"Numeric",'d.nom'=>'Text'); diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang index 993570f4790..65c68a5a93f 100644 --- a/htdocs/langs/en_US/accountancy.lang +++ b/htdocs/langs/en_US/accountancy.lang @@ -148,7 +148,6 @@ MvtNotCorrectlyBalanced=Mouvement not correctly balanced. Credit = %s. Debit = % FicheVentilation=Breakdown card GeneralLedgerIsWritten=Operations are written in the general ledger -MvtNotCorrectlyBalanced=Mouvement not correctly balanced. Credit = %s. Debit = %s ## Admin ApplyMassCategories=Apply mass categories @@ -177,7 +176,6 @@ OptionModeProductBuyDesc=Show all products with no accounting account defined fo ## Dictionary Range=Range of accounting account -Sens=Sens Calculated=Calculated Formula=Formula diff --git a/htdocs/langs/en_US/banks.lang b/htdocs/langs/en_US/banks.lang index e4c38a8d549..65f5a02865b 100644 --- a/htdocs/langs/en_US/banks.lang +++ b/htdocs/langs/en_US/banks.lang @@ -163,8 +163,6 @@ LabelRIB=BAN Label NoBANRecord=No BAN record DeleteARib=Delete BAN record ConfirmDeleteRib=Are you sure you want to delete this BAN record ? -StartDate=Start date -EndDate=End date RejectCheck=Check returned ConfirmRejectCheck=Are you sure you want to mark this check as rejected ? RejectCheckDate=Date the check was returned diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang index ad5260f8144..cde0a426a1b 100644 --- a/htdocs/langs/en_US/bills.lang +++ b/htdocs/langs/en_US/bills.lang @@ -435,7 +435,7 @@ RevenueStamp=Revenue stamp YouMustCreateInvoiceFromThird=This option is only available when creating invoice from tab "customer" of thirdparty YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (recommended Template) -PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for invoice situation +PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 MarsNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices, %syymm-nnnn for replacement invoices, %syymm-nnnn for deposit invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 TerreNumRefModelError=A bill starting with $syymm already exists and is not compatible with this model of sequence. Remove it or rename it to activate this module. @@ -456,7 +456,6 @@ InvoiceSituationAsk=Invoice following the situation InvoiceSituationDesc=Create a new situation following an already existing one SituationAmount=Situation invoice amount(net) SituationDeduction=Situation subtraction -Progress=Progress ModifyAllLines=Modify all lines CreateNextSituationInvoice=Create next situation NotLastInCycle=This invoice is not the latest in cycle and must not be modified. @@ -468,7 +467,6 @@ InvoiceSituationLast=Final and general invoice PDFCrevetteSituationNumber=Situation N°%s PDFCrevetteSituationInvoiceLineDecompte=Situation invoice - COUNT PDFCrevetteSituationInvoiceTitle=Situation invoice -PDFCrevetteDescription=Invoice PDF template Crevette. A invoice template if you use situation invoice PDFCrevetteSituationInvoiceLine=Situation N°%s : Inv. N°%s on %s TotalSituationInvoice=Total situation invoiceLineProgressError=Invoice line progress can't be greater than or equal to the next invoice line diff --git a/htdocs/langs/en_US/categories.lang b/htdocs/langs/en_US/categories.lang index 4a569316425..a3cfb6828a1 100644 --- a/htdocs/langs/en_US/categories.lang +++ b/htdocs/langs/en_US/categories.lang @@ -55,7 +55,6 @@ SupplierHasNoCategory=This supplier is not in any tags/categories CompanyHasNoCategory=This thirdparty is not in any tags/categories MemberHasNoCategory=This member is not in any tags/categories ContactHasNoCategory=This contact is not in any tags/categories -ContactHasNoCategory=This contact is not in any tags/categories AccountHasNoCategory=This account is not in any tags/categories ClassifyInCategory=Add to tag/category NoneCategory=None @@ -106,8 +105,6 @@ CatCusLinks=Links between customers/prospects and tags/categories CatProdLinks=Links between products/services and tags/categories CatMemberLinks=Links between members and tags/categories DeleteFromCat=Remove from tags/category -DeletePicture=Picture delete -ConfirmDeletePicture=Confirm picture deletion? ExtraFieldsCategories=Complementary attributes CategoriesSetup=Tags/categories setup CategorieRecursiv=Link with parent tag/category automatically diff --git a/htdocs/langs/en_US/companies.lang b/htdocs/langs/en_US/companies.lang index 83c49532e41..bd57c1226dd 100644 --- a/htdocs/langs/en_US/companies.lang +++ b/htdocs/langs/en_US/companies.lang @@ -380,8 +380,6 @@ ChangeContactInProcess=Change status to 'Contact in process' ChangeContactDone=Change status to 'Contact done' ProspectsByStatus=Prospects by status BillingContact=Billing contact -NbOfAttachedFiles=Number of attached files -AttachANewFile=Attach a new file NoRIB=No BAN defined NoParentCompany=None ExportImport=Import-Export diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang index aeb43525336..3fe2f9b5852 100755 --- a/htdocs/langs/en_US/errors.lang +++ b/htdocs/langs/en_US/errors.lang @@ -175,6 +175,7 @@ ErrorBadDefinitionOfMenuArrayInModuleDescriptor=Bad Definition Of Menu Array In ErrorSavingChanges=An error has ocurred when saving the changes ErrorWarehouseRequiredIntoShipmentLine=Warehouse is required on the line to ship ErrorFileMustHaveFormat=File must have format %s +ErrorSupplierCountryIsNotDefined=Country for this supplier is not defined. Correct this first. # Warnings WarningPasswordSetWithNoAccount=A password was set for this member. However, no user account was created. So this password is stored but can't be used to login to Dolibarr. It may be used by an external module/interface but if you don't need to define any login nor password for a member, you can disable option "Manage a login for each member" from Member module setup. If you need to manage a login but don't need any password, you can keep this field empty to avoid this warning. Note: Email can also be used as a login if the member is linked to a user. diff --git a/htdocs/langs/en_US/exports.lang b/htdocs/langs/en_US/exports.lang index b51d70d5fbb..0b6a699224b 100644 --- a/htdocs/langs/en_US/exports.lang +++ b/htdocs/langs/en_US/exports.lang @@ -120,10 +120,6 @@ CsvOptions=Csv Options Separator=Separator Enclosure=Enclosure SuppliersProducts=Suppliers Products -BankCode=Bank code -DeskCode=Desk code -BankAccountNumber=Account number -BankAccountNumberKey=Key SpecialCode=Special code ExportStringFilter=%% allows replacing one or more characters in the text ExportDateFilter=YYYY, YYYYMM, YYYYMMDD : filters by one year/month/day
YYYY+YYYY, YYYYMM+YYYYMM, YYYYMMDD+YYYYMMDD : filters over a range of years/months/days
> YYYY, > YYYYMM, > YYYYMMDD : filters on all following years/months/days
< YYYY, < YYYYMM, < YYYYMMDD : filters on all previous years/months/days diff --git a/htdocs/langs/en_US/help.lang b/htdocs/langs/en_US/help.lang index 29c9bec34f0..a4c11246461 100644 --- a/htdocs/langs/en_US/help.lang +++ b/htdocs/langs/en_US/help.lang @@ -4,7 +4,6 @@ EMailSupport=Emails support RemoteControlSupport=Online real time / remote support OtherSupport=Other support ToSeeListOfAvailableRessources=To contact/see available resources: -ClickHere=Click here HelpCenter=Help center DolibarrHelpCenter=Dolibarr help and support center ToGoBackToDolibarr=Otherwise, click here to use Dolibarr diff --git a/htdocs/langs/en_US/loan.lang b/htdocs/langs/en_US/loan.lang index 35060e134dc..4ca8c615e5a 100644 --- a/htdocs/langs/en_US/loan.lang +++ b/htdocs/langs/en_US/loan.lang @@ -5,7 +5,7 @@ NewLoan=New Loan ShowLoan=Show Loan PaymentLoan=Loan payment ShowLoanPayment=Show Loan Payment -Capital=Capital +LoanCapital=Capital Insurance=Insurance Interest=Interest Nbterms=Number of terms diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index 1ee858aa23d..750e02fa11c 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -236,8 +236,8 @@ Date=Date DateAndHour=Date and hour DateToday=Today's date DateReference=Reference date -DateStart=Date start -DateEnd=Date end +DateStart=Start date +DateEnd=End date DateCreation=Creation date DateCreationShort=Creat. date DateModification=Modification date @@ -471,6 +471,8 @@ LateDesc=Delay to define if a record is late or not depends on your setup. Ask y Photo=Picture Photos=Pictures AddPhoto=Add picture +DeletePicture=Picture delete +ConfirmDeletePicture=Confirm picture deletion? Login=Login CurrentLogin=Current login January=January @@ -751,6 +753,9 @@ MassFilesArea=Area for files built by mass actions HideTempMassFilesArea=Hide area of files built by mass actions ShowTempMassFilesArea=Show area of files built by mass actions RelatedObjects=Related Objects +ClassifyBilled=Classify billed +Progress=Progress +ClickHere=Click here # Week day Monday=Monday Tuesday=Tuesday diff --git a/htdocs/langs/en_US/margins.lang b/htdocs/langs/en_US/margins.lang index 43ba02178e6..32e6abf355e 100644 --- a/htdocs/langs/en_US/margins.lang +++ b/htdocs/langs/en_US/margins.lang @@ -20,8 +20,6 @@ UserMargins=User margins ProductService=Product or Service AllProducts=All products and services ChooseProduct/Service=Choose product or service -StartDate=Start date -EndDate=End date Launch=Start ForceBuyingPriceIfNull=Force buying/cost price to selling price if not defined ForceBuyingPriceIfNullDetails=If buying/cost price not defined, and this option "ON", margin will be zero on line (buying/cost price = selling price), otherwise ("OFF"), marge will be equal to suggested default. diff --git a/htdocs/langs/en_US/multicurrency.lang b/htdocs/langs/en_US/multicurrency.lang index b37355372a1..b75942ebb44 100644 --- a/htdocs/langs/en_US/multicurrency.lang +++ b/htdocs/langs/en_US/multicurrency.lang @@ -1,6 +1,4 @@ # ADMIN -RecordSaved=Currency rate added -RecordDeleted=Currency rate deleted ErrorAddRateFail=Error in added rate ErrorAddCurrencyFail=Error in added currency ErrorDeleteCurrencyFail=Error delete fail @@ -13,5 +11,4 @@ multicurrency_appCurrencySource=Currency source multicurrency_alternateCurrencySource= Alternate currency souce CurrenciesUsed=Currencies used CurrenciesUsed_help_to_add=Add the differents currencies and rates you need to use on you proposals, orders, etc. -Rate=Rate rate=rate \ No newline at end of file diff --git a/htdocs/langs/en_US/orders.lang b/htdocs/langs/en_US/orders.lang index 85838a8fce1..b7ed77b30ba 100644 --- a/htdocs/langs/en_US/orders.lang +++ b/htdocs/langs/en_US/orders.lang @@ -109,7 +109,6 @@ ConfirmCancelOrder=Are you sure you want to cancel this order ? ConfirmMakeOrder=Are you sure you want to confirm you made this order on %s ? GenerateBill=Generate invoice ClassifyShipped=Classify delivered -ClassifyBilled=Classify billed ComptaCard=Accountancy card DraftOrders=Draft orders DraftSuppliersOrders=Draft suppliers orders diff --git a/htdocs/langs/en_US/other.lang b/htdocs/langs/en_US/other.lang index 3afebc9141b..66f734f3c1c 100644 --- a/htdocs/langs/en_US/other.lang +++ b/htdocs/langs/en_US/other.lang @@ -191,7 +191,6 @@ ImageEditor=Image editor YouReceiveMailBecauseOfNotification=You receive this message because your email has been added to list of targets to be informed of particular events into %s software of %s. YouReceiveMailBecauseOfNotification2=This event is the following: ThisIsListOfModules=This is a list of modules preselected by this demo profile (only most common modules are visible in this demo). Edit this to have a more personalized demo and click on "Start". -ClickHere=Click here UseAdvancedPerms=Use the advanced permissions of some modules FileFormat=File format SelectAColor=Choose a color diff --git a/htdocs/langs/en_US/products.lang b/htdocs/langs/en_US/products.lang index 3dd12b2bb41..c0509e6a902 100644 --- a/htdocs/langs/en_US/products.lang +++ b/htdocs/langs/en_US/products.lang @@ -107,7 +107,6 @@ BuyingPrice=Buying price PriceForEachProduct=Products with specific prices NoPriceSpecificToCustomer=This customer has no specific prices. All standard prices for products/services will be used. SupplierCard=Supplier card -CommercialCard=Commercial card AllWays=Path to find your product in stock NoCat=Your product is not in any category PrimaryWay=Primary path @@ -142,8 +141,6 @@ ErrorAssociationIsFatherOfThis=One of selected product is parent with current pr DeleteProduct=Delete a product/service ConfirmDeleteProduct=Are you sure you want to delete this product/service? ProductDeleted=Product/Service "%s" deleted from database. -DeletePicture=Delete a picture -ConfirmDeletePicture=Are you sure you want to delete this picture ? ExportDataset_produit_1=Products ExportDataset_service_1=Services ImportDataset_produit_1=Products diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index a9fd3b993e4..6d1c8e4e3cb 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -20,7 +20,6 @@ TasksPublicDesc=This view presents all projects and tasks you are allowed to rea TasksDesc=This view presents all projects and tasks (your user permissions grant you permission to view everything). AllTaskVisibleButEditIfYouAreAssigned=All tasks for such project are visible, but you can enter time only for task you are assigned on. Assign task to you if you want to enter time on it. OnlyYourTaskAreVisible=Only tasks you are assigned on are visible. Assign task to you if you want to enter time on it. -ProjectsArea=Projects area NewProject=New project AddProject=Create project DeleteAProject=Delete a project @@ -70,7 +69,6 @@ MyActivities=My tasks/activities MyProjects=My projects MyProjectsArea=My projects Area DurationEffective=Effective duration -Progress=Progress ProgressDeclared=Declared progress ProgressCalculated=Calculated progress Time=Time diff --git a/htdocs/langs/en_US/propal.lang b/htdocs/langs/en_US/propal.lang index cc06aeff937..943cde76835 100644 --- a/htdocs/langs/en_US/propal.lang +++ b/htdocs/langs/en_US/propal.lang @@ -65,7 +65,6 @@ DateEndPropalShort=Date end ValidityDuration=Validity duration CloseAs=Set status to SetAcceptedRefused=Set accepted/refused -ClassifyBilled=Classify billed BuildBill=Build invoice ErrorPropalNotFound=Propal %s not found Estimate=Estimate : diff --git a/htdocs/langs/en_US/sendings.lang b/htdocs/langs/en_US/sendings.lang index c35aa71c8a1..270c92b3045 100644 --- a/htdocs/langs/en_US/sendings.lang +++ b/htdocs/langs/en_US/sendings.lang @@ -20,14 +20,11 @@ SendingCard=Shipment card NewSending=New shipment CreateASending=Create a shipment CreateSending=Create shipment -QtyOrdered=Qty ordered QtyShipped=Qty shipped QtyToShip=Qty to ship QtyReceived=Qty received KeepToShip=Remain to ship OtherSendingsForSameOrder=Other shipments for this order -DateSending=Shipping date -DateSendingShort=Shipping date SendingsForSameOrder=Shipments for this order SendingsAndReceivingForSameOrder=Shipments and receivings for this order SendingsToValidate=Shipments to validate diff --git a/htdocs/langs/en_US/sms.lang b/htdocs/langs/en_US/sms.lang index 70066caac96..2b41de470d2 100644 --- a/htdocs/langs/en_US/sms.lang +++ b/htdocs/langs/en_US/sms.lang @@ -39,9 +39,6 @@ SmsSuccessfulySent=Sms correctly sent (from %s to %s) ErrorSmsRecipientIsEmpty=Number of target is empty WarningNoSmsAdded=No new phone number to add to target list ConfirmValidSms=Do you confirm validation of this campain ? -ConfirmResetMailing=Warning, if you make a reinit of Sms campain %s, you will allow to make a mass sending of it a second time. Is it really what you wan to do ? -ConfirmDeleteMailing=Do you confirm removing of campain ? -NbOfRecipients=Number of targets NbOfUniqueSms=Nb dof unique phone numbers NbOfSms=Nbre of phon numbers ThisIsATestMessage=This is a test message diff --git a/htdocs/langs/en_US/suppliers.lang b/htdocs/langs/en_US/suppliers.lang index f64d7c2de1b..8c96a0a68e8 100644 --- a/htdocs/langs/en_US/suppliers.lang +++ b/htdocs/langs/en_US/suppliers.lang @@ -9,7 +9,6 @@ History=History ListOfSuppliers=List of suppliers ShowSupplier=Show supplier OrderDate=Order date -BuyingPrice=Buying price BuyingPriceMin=Minimum purchase price BuyingPriceMinShort=Min purchase price SellingPriceMinShort=Min sell price @@ -19,8 +18,6 @@ TotalSellingPriceMinShort=Total of subproducts sell prices SomeSubProductHaveNoPrices=Some sub-products have no price defined AddSupplierPrice=Add supplier price ChangeSupplierPrice=Change supplier price -ErrorQtyTooLowForThisSupplier=Quantity too low for this supplier or no price defined on this product for this supplier -ErrorSupplierCountryIsNotDefined=Country for this supplier is not defined. Correct this first. ProductHasAlreadyReferenceInThisSupplier=This product has already a reference in this supplier ReferenceSupplierIsAlreadyAssociatedWithAProduct=This reference supplier is already associated with a reference: %s NoRecordedSuppliers=No suppliers recorded diff --git a/htdocs/langs/en_US/website.lang b/htdocs/langs/en_US/website.lang index 9ce7cfb09a3..d43b65fc0f8 100644 --- a/htdocs/langs/en_US/website.lang +++ b/htdocs/langs/en_US/website.lang @@ -14,7 +14,6 @@ EditPageMeta=Edit Meta EditPageContent=Edit Content Website=Web site AddPage=Add page -Page=Page PreviewOfSiteNotYetAvailable=Preview of your website %s not yet available. You must first add a page. RequestedPageHasNoContentYet=Requested page with id %s has not content yet or cache file .tpl.php was removed. Edit content of page to solve this. PageDeleted=Page '%s' of website %s deleted diff --git a/htdocs/loan/calc.php b/htdocs/loan/calc.php index 0a384c1c859..b6e649962fa 100644 --- a/htdocs/loan/calc.php +++ b/htdocs/loan/calc.php @@ -327,7 +327,7 @@ if ($form_complete && $show_progress) { $legend = '
' . $langs->trans("Month") . '' . $langs->trans("Interest") . '' . $langs->trans("Capital") . '' . $langs->trans("LoanCapital") . '' . $langs->trans("Position") . '
'.$langs->trans("Capital").'
'.$langs->trans("LoanCapital").'
'.$langs->trans("Capital").''.price($object->capital,0,$outputlangs,1,-1,-1,$conf->currency).'
'.$langs->trans("LoanCapital").''.price($object->capital,0,$outputlangs,1,-1,-1,$conf->currency).'
".$langs->trans("DateStart")."'.$langs->trans("Type").''.$langs->trans("Insurance").''.$langs->trans("Interest").''.$langs->trans("Capital").''.$langs->trans("LoanCapital").' 
'.$langs->trans("Capital").''.price($object->capital,0,$outputlangs,1,-1,-1,$conf->currency).'
'.$langs->trans("LoanCapital").''.price($object->capital,0,$outputlangs,1,-1,-1,$conf->currency).'
".$langs->trans("DateStart")."
'.$langs->trans('Mode').''.$lan print '
'.$langs->trans('Number').''.$payment->num_payment.'
'.$langs->trans('Capital').''.price($payment->amount_capital, 0, $outputlangs, 1, -1, -1, $conf->currency).'
'.$langs->trans('LoanCapital').''.price($payment->amount_capital, 0, $outputlangs, 1, -1, -1, $conf->currency).'
'.$langs->trans('Insurance').''.price($payment->amount_insurance, 0, $outputlangs, 1, -1, -1, $conf->currency).'
'.$langs->trans('Interest').''.price($payment->amount_interest, 0, $outputlangs, 1, -1, -1, $conf->currency).'
'; print ''; print ''; - print ''; + print ''; print ''; print ''; print ''; @@ -268,7 +268,7 @@ if ($action == 'create') print ''; +print ''; print ''; -print ''; +print ''; print ''; diff --git a/htdocs/margin/checkMargins.php b/htdocs/margin/checkMargins.php index 79d4ceb3794..365c38f565a 100644 --- a/htdocs/margin/checkMargins.php +++ b/htdocs/margin/checkMargins.php @@ -124,11 +124,11 @@ print ''; print '
'.$langs->trans("DateDue").''.$langs->trans("Capital").''.$langs->trans("LoanCapital").''.$langs->trans("AlreadyPaid").''.$langs->trans("RemainderToPay").''.$langs->trans("Amount").''; if ($sumpaid < $loan->capital) { - print $langs->trans("Capital") .': '; + print $langs->trans("LoanCapital") .': '; } else { diff --git a/htdocs/margin/agentMargins.php b/htdocs/margin/agentMargins.php index fe429f7c145..3b31cee302b 100644 --- a/htdocs/margin/agentMargins.php +++ b/htdocs/margin/agentMargins.php @@ -99,11 +99,11 @@ if ($user->rights->margins->read->all) { } // Start date -print ''.$langs->trans('StartDate').' ('.$langs->trans("DateValidation").')'.$langs->trans('DateStart').' ('.$langs->trans("DateValidation").')'; $form->select_date($startdate,'startdate','','',1,"sel",1,1); print ''.$langs->trans('EndDate').' ('.$langs->trans("DateValidation").')'.$langs->trans('DateEnd').' ('.$langs->trans("DateValidation").')'; $form->select_date($enddate,'enddate','','',1,"sel",1,1); print '
'; // Start date -print ''; +print ''; print ''; -print ''; +print ''; print ''; diff --git a/htdocs/margin/customerMargins.php b/htdocs/margin/customerMargins.php index 9977354e67a..83e173ca0ce 100644 --- a/htdocs/margin/customerMargins.php +++ b/htdocs/margin/customerMargins.php @@ -120,11 +120,11 @@ if (! $sortfield) } // Start date -print ''; +print ''; print ''; -print ''; +print ''; print ''; diff --git a/htdocs/margin/productMargins.php b/htdocs/margin/productMargins.php index 789932320e5..d604ed5ed22 100644 --- a/htdocs/margin/productMargins.php +++ b/htdocs/margin/productMargins.php @@ -122,11 +122,11 @@ else { } // Start date -print ''; +print ''; print ''; -print ''; +print ''; print ''; From cbdb9f9b2ab70e3ec700422097f319b550e71cc6 Mon Sep 17 00:00:00 2001 From: philippe grand Date: Sat, 18 Jun 2016 11:52:41 +0200 Subject: [PATCH 122/212] internationalization of code comment --- htdocs/adherents/card.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/htdocs/adherents/card.php b/htdocs/adherents/card.php index bec4156dbe0..07faaf92696 100644 --- a/htdocs/adherents/card.php +++ b/htdocs/adherents/card.php @@ -4,7 +4,7 @@ * Copyright (C) 2004-2012 Laurent Destailleur * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2012 Marcos García - * Copyright (C) 2012-2015 Philippe Grand + * Copyright (C) 2012-2016 Philippe Grand * Copyright (C) 2015 Alexandre Spangaro * * This program is free software; you can redistribute it and/or modify @@ -94,7 +94,7 @@ if ($rowid > 0) // Define variables to know what current user can do on properties of user linked to edited member if ($object->user_id) { - // $user est le user qui edite, $object->user_id est l'id de l'utilisateur lies au membre edite + // $ User is the user who edits, $ object->user_id is the id of the related user in the edited member $caneditfielduser=((($user->id == $object->user_id) && $user->rights->user->self->creer) || (($user->id != $object->user_id) && $user->rights->user->user->creer)); $caneditpassworduser=((($user->id == $object->user_id) && $user->rights->user->self->password) @@ -209,7 +209,7 @@ if (empty($reshook)) { if ($result > 0) { - // Creation user + // User creation $company = new Societe($db); $result=$company->create_from_member($object,GETPOST('companyname')); @@ -495,7 +495,7 @@ if (empty($reshook)) $error++; setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Nature")), null, 'errors'); } - // Test si le login existe deja + // Tests if the login already exists if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED)) { if (empty($login)) { @@ -550,11 +550,11 @@ if (empty($reshook)) { $db->begin(); - // Email a peu pres correct et le login n'existe pas + // Email about right and login does not exist $result=$object->create($user); if ($result > 0) { - // Categories association + // Fundation categories $memcats = GETPOST('memcats', 'array'); $object->setCategories($memcats); @@ -615,7 +615,7 @@ if (empty($reshook)) if ($result >= 0 && ! count($object->errors)) { - // Send confirmation Email (selon param du type adherent sinon generique) + // Send confirmation email (according to parameters of member type. Otherwise generic) if ($object->email && GETPOST("send_mail")) { $result=$object->send_an_email($adht->getMailOnValid(),$conf->global->ADHERENT_MAIL_VALID_SUBJECT,array(),array(),array(),"","",0,2); @@ -1379,7 +1379,7 @@ else $helpcontent.=dol_htmlentitiesbr($texttosend)."\n"; $label=$form->textwithpicto($tmp,$helpcontent,1,'help'); - // Cree un tableau formulaire + // Create an array $formquestion=array(); if ($object->email) $formquestion[]=array('type' => 'checkbox', 'name' => 'send_mail', 'label' => $label, 'value' => (! empty($conf->global->ADHERENT_DEFAULT_SENDINFOBYMAIL)?'true':'false')); if ($backtopage) $formquestion[]=array('type' => 'hidden', 'name' => 'backtopage', 'value' => ($backtopage != '1' ? $backtopage : $_SERVER["HTTP_REFERER"])); From d192438eae09757da028d37ad54ddacbcd94cfb7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 18 Jun 2016 11:57:52 +0200 Subject: [PATCH 123/212] Enhance tool to clean language files --- dev/translation/sanity_check_en_langfiles.php | 57 +++++++++++++++---- htdocs/langs/en_US/accountancy.lang | 24 -------- htdocs/langs/en_US/admin.lang | 5 -- 3 files changed, 47 insertions(+), 39 deletions(-) diff --git a/dev/translation/sanity_check_en_langfiles.php b/dev/translation/sanity_check_en_langfiles.php index cef7405d2d4..cd59ceafb3b 100755 --- a/dev/translation/sanity_check_en_langfiles.php +++ b/dev/translation/sanity_check_en_langfiles.php @@ -110,8 +110,11 @@ if (empty($files)) exit; } +$dups=array(); $exludefiles = array('.','..','README'); $files = array_diff($files,$exludefiles); +// To force a file: $files=array('myfile.lang'); +$files = array('admin.lang'); $langstrings_3d = array(); $langstrings_full = array(); foreach ($files AS $file) { @@ -128,7 +131,7 @@ foreach ($files AS $file) { $langstrings_3d[$path_file['basename']][$line+1]=$row_array[0]; $langstrings_3dtrans[$path_file['basename']][$line+1]=$row_array[1]; $langstrings_full[]=$row_array[0]; - $langstrings_dist[$row_array[0]]=$row_array[0]; + $langstrings_dist[$row_array[0]]=$row; } } } @@ -244,7 +247,10 @@ if ($web) if ((! empty($_REQUEST['unused']) && $_REQUEST['unused'] == 'true') || (isset($argv[1]) && $argv[1]=='unused=true')) { - foreach ($langstrings_dist AS $value) + print "***** Strings in en_US that are never used:\n"; + + $unused=array(); + foreach ($langstrings_dist AS $value => $line) { //$search = '\'trans("'.$value.'")\''; $search = '-e "\''.$value.'\'" -e \'"'.$value.'"\''; @@ -252,17 +258,48 @@ if ((! empty($_REQUEST['unused']) && $_REQUEST['unused'] == 'true') || (isset($a //print $string."
\n"; exec($string,$output); if (empty($output)) { - $unused[$value] = true; - echo $value."
\n"; + $qualifiedforclean=1; + // Check if we must keep this key to be into file for removal + if (preg_match('/^Module\d+/', $value)) $qualifiedforclean=0; + if (preg_match('/^Permission\d+/', $value)) $qualifiedforclean=0; + if (preg_match('/^PermissionAdvanced\d+/', $value)) $qualifiedforclean=0; + if (preg_match('/^ProfId\d+/', $value)) $qualifiedforclean=0; + if (preg_match('/^Delays_/', $value)) $qualifiedforclean=0; + if (preg_match('/^BarcodeDesc/', $value)) $qualifiedforclean=0; + if (preg_match('/^Extrafield/', $value)) $qualifiedforclean=0; + if (preg_match('/^LocalTax/', $value)) $qualifiedforclean=0; + if (preg_match('/^Country/', $value)) $qualifiedforclean=0; + if (preg_match('/^Civility/', $value)) $qualifiedforclean=0; + if (preg_match('/^Currency/', $value)) $qualifiedforclean=0; + if (preg_match('/^DemandReasonTypeSRC/', $value)) $qualifiedforclean=0; + if (preg_match('/^PaperFormat/', $value)) $qualifiedforclean=0; + if (preg_match('/^Duration/', $value)) $qualifiedforclean=0; + if (preg_match('/^AmountLT/', $value)) $qualifiedforclean=0; + if (preg_match('/^TotalLT/', $value)) $qualifiedforclean=0; + if (preg_match('/^Month/', $value)) $qualifiedforclean=0; + if (preg_match('/^MonthShort/', $value)) $qualifiedforclean=0; + if (preg_match('/^Day\d/', $value)) $qualifiedforclean=0; + + if ($qualifiedforclean) + { + $unused[$value] = $line; + echo $line; // $trad contains the \n + } + } + else + { + unset($output); + //print 'X'.$output.'Y'; } } - if ($web) print "

\n"; - print "Strings in en_US that are never used\n"; - if ($web) print "

\n"; - if ($web) echo "
";
-	print_r($unused);
-	if ($web) echo "
\n"; + if (empty($unused)) print "No string not used found.\n"; + else + { + $filetosave='/tmp/notused.lang'; + print "Strings in en_US that are never used are saved into file ".$filetosave.":\n"; + file_put_contents($filetosave, join("",$unused)); + } } echo "\n"; diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang index 65c68a5a93f..10e92ee4735 100644 --- a/htdocs/langs/en_US/accountancy.lang +++ b/htdocs/langs/en_US/accountancy.lang @@ -9,18 +9,11 @@ ACCOUNTING_EXPORT_DEVISE=Export currency Selectformat=Select the format for the file ACCOUNTING_EXPORT_PREFIX_SPEC=Specify the prefix for the file name -Accounting=Accounting -Globalparameters=Global parameters -Menuaccount=Accounting accounts -Menuthirdpartyaccount=Thirdparty accounts -MenuTools=Tools - ConfigAccountingExpert=Configuration of the module accounting expert Journaux=Journals JournalFinancial=Financial journals BackToChartofaccounts=Return chart of accounts -Definechartofaccounts=Define a chart of accounts Selectchartofaccounts=Select a chart of accounts Addanaccount=Add an accounting account AccountAccounting=Accounting account @@ -31,29 +24,21 @@ Ventilation=Breakdown MenuAccountancy=Accountancy CustomersVentilation=Breakdown customers SuppliersVentilation=Breakdown suppliers -TradeMargin=Trade margin Reports=Reports -ByCustomerInvoice=By invoices customers NewAccount=New accounting account Create=Create CreateMvts=Create movement -UpdateAccount=Modification of an accounting account UpdateMvts=Modification of a movement WriteBookKeeping=Record accounts in general ledger Bookkeeping=General ledger AccountBalance=Account balance -AccountingVentilation=Breakdown accounting -AccountingVentilationSupplier=Breakdown accounting supplier -AccountingVentilationCustomer=Breakdown accounting customer - CAHTF=Total purchase supplier before tax InvoiceLines=Lines of invoice to be ventilated InvoiceLinesDone=Ventilated lines of invoice IntoAccount=Ventilate in the accounting account Ventilate=Ventilate -VentilationAuto=Automatic breakdown Processing=Processing EndProcessing=The end of processing @@ -63,14 +48,10 @@ Lineofinvoice=Line of invoice VentilatedinAccount=Ventilated successfully in the accounting account NotVentilatedinAccount=Not ventilated in the accounting account -ACCOUNTING_SEPARATORCSV=Column separator in export file - ACCOUNTING_LIMIT_LIST_VENTILATION=Number of elements to be breakdown shown by page (maximum recommended : 50) ACCOUNTING_LIST_SORT_VENTILATION_TODO=Begin the sorting of the breakdown pages "Has to breakdown" by the most recent elements ACCOUNTING_LIST_SORT_VENTILATION_DONE=Begin the sorting of the breakdown pages "Breakdown" by the most recent elements -AccountLength=Length of the accounting accounts shown in Dolibarr -AccountLengthDesc=Function allowing to feign a length of accounting account by replacing spaces by the zero figure. This function touches only the display, it does not modify the accounting accounts registered in Dolibarr. For the export, this function is necessary to be compatible with certain software. ACCOUNTING_LENGTH_DESCRIPTION=Length for displaying product & services description in listings (Best = 50) ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT=Length for displaying product & services account description form in listings (Best = 50) ACCOUNTING_LENGTH_GACCOUNT=Length of the general accounts @@ -108,9 +89,6 @@ DescPurchasesJournal=Purchases journal FinanceJournal=Finance journal DescFinanceJournal=Finance journal including all the types of payments by bank account -CashPayment=Cash Payment - -SupplierInvoicePayment=Payment of invoice supplier CustomerInvoicePayment=Payment of invoice customer ThirdPartyAccount=Thirdparty account @@ -125,7 +103,6 @@ DescThirdPartyReport=Consult here the list of the thirdparty customers and the s ListAccounts=List of the accounting accounts -Pcgversion=Version of the plan Pcgtype=Class of account Pcgsubtype=Under class of account Accountparent=Root of the account @@ -138,7 +115,6 @@ DescVentilTodoCustomer=Ventilate your lines of customer invoice with an accounti ChangeAccount=Change the accounting account for lines selected by the account: Vide=- DescVentilSupplier=Consult here the annual breakdown accounting of your invoices suppliers -DescVentilTodoSupplier=Ventilate your lines of invoice supplier with an accounting account DescVentilDoneSupplier=Consult here the list of the lines of invoices supplier and their accounting account ValidateHistory=Validate Automatically diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index d0a745ab491..2574422be18 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -26,18 +26,15 @@ YourSession=Your session Sessions=Users session WebUserGroup=Web server user/group NoSessionFound=Your PHP seems to not allow to list active sessions. Directory used to save sessions (%s) might be protected (For example, by OS permissions or by PHP directive open_basedir). -HTMLCharset=Charset for generated HTML pages DBStoringCharset=Database charset to store data DBSortingCharset=Database charset to sort data WarningModuleNotActive=Module %s must be enabled WarningOnlyPermissionOfActivatedModules=Only permissions related to activated modules are shown here. You can activate other modules in the Home->Setup->Modules page. DolibarrSetup=Dolibarr install or upgrade -DolibarrUser=Dolibarr user InternalUser=Internal user ExternalUser=External user InternalUsers=Internal users ExternalUsers=External users -GlobalSetup=Global setup GUISetup=Display SetupArea=Setup area FormToTestFileUploadForm=Form to test file upload (according to setup) @@ -56,9 +53,7 @@ Fiscalyear=Fiscal years ErrorReservedTypeSystemSystemAuto=Value 'system' and 'systemauto' for type is reserved. You can use 'user' as value to add your own record ErrorCodeCantContainZero=Code can't contain value 0 DisableJavascript=Disable JavaScript and Ajax functions (Recommended for blind person or text browsers) -ConfirmAjax=Use Ajax confirmation popups UseSearchToSelectCompanyTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant COMPANY_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. -UseSearchToSelectCompany=Use autocompletion fields to choose third parties instead of using a list box. ActivityStateToSelectCompany= Add a filter option to show/hide thirdparties which are currently in activity or has ceased it UseSearchToSelectContactTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. UseSearchToSelectContact=Use autocompletion fields to choose contact (instead of using a list box). From de76f2a9aa152bb66d19845b49fbea7d40f873d7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 18 Jun 2016 15:36:19 +0200 Subject: [PATCH 124/212] Clean language files --- dev/translation/sanity_check_en_langfiles.php | 11 +- htdocs/admin/stock.php | 4 +- htdocs/langs/en_US/admin.lang | 162 ------------------ htdocs/langs/en_US/agenda.lang | 18 -- htdocs/langs/en_US/banks.lang | 28 --- 5 files changed, 11 insertions(+), 212 deletions(-) mode change 100755 => 100644 htdocs/langs/en_US/admin.lang diff --git a/dev/translation/sanity_check_en_langfiles.php b/dev/translation/sanity_check_en_langfiles.php index cd59ceafb3b..ea27b2ffc3b 100755 --- a/dev/translation/sanity_check_en_langfiles.php +++ b/dev/translation/sanity_check_en_langfiles.php @@ -85,7 +85,7 @@ if ($web) echo ""; } -echo "If you call this file with the argument \"?unused=true\" it searches for the translation strings that exist in en_US but are never used.\n"; +echo "If you call this with argument \"unused=true\" it searches for the translation strings that exist in en_US but are never used.\n"; if ($web) print "
"; echo "IMPORTANT: that can take quite a lot of time (up to 10 minutes), you need to tune the max_execution_time on your php.ini accordingly.\n"; if ($web) print "
"; @@ -114,7 +114,10 @@ $dups=array(); $exludefiles = array('.','..','README'); $files = array_diff($files,$exludefiles); // To force a file: $files=array('myfile.lang'); -$files = array('admin.lang'); +if (isset($argv[2])) +{ + $files = array($argv[2]); +} $langstrings_3d = array(); $langstrings_full = array(); foreach ($files AS $file) { @@ -279,6 +282,7 @@ if ((! empty($_REQUEST['unused']) && $_REQUEST['unused'] == 'true') || (isset($a if (preg_match('/^Month/', $value)) $qualifiedforclean=0; if (preg_match('/^MonthShort/', $value)) $qualifiedforclean=0; if (preg_match('/^Day\d/', $value)) $qualifiedforclean=0; + if (preg_match('/^ExportDataset_/', $value)) $qualifiedforclean=0; if ($qualifiedforclean) { @@ -299,6 +303,9 @@ if ((! empty($_REQUEST['unused']) && $_REQUEST['unused'] == 'true') || (isset($a $filetosave='/tmp/notused.lang'; print "Strings in en_US that are never used are saved into file ".$filetosave.":\n"; file_put_contents($filetosave, join("",$unused)); + print "To remove from original file, run command :\n"; + if (($argv[2]?$argv[2]:"")) print 'cd htdocs/langs/en_US; mv '.($argv[2]?$argv[2]:"")." ".($argv[2]?$argv[2]:"").".tmp; "; + print "diff ".($argv[2]?$argv[2]:"").".tmp ".$filetosave." | grep \< | cut -b 3- > ".($argv[2]?$argv[2]:"")."\n"; } } diff --git a/htdocs/admin/stock.php b/htdocs/admin/stock.php index 4e9957fe48d..b78bf1ce0bd 100644 --- a/htdocs/admin/stock.php +++ b/htdocs/admin/stock.php @@ -313,13 +313,13 @@ $found++; { $var=!$var; print "
"; - print ''; + print ''; print "\n"; }*/ print '
' . $langs->trans('StartDate') . ' (' . $langs->trans("DateValidation") . ')' . $langs->trans('DateStrt') . ' (' . $langs->trans("DateValidation") . ')'; $form->select_date($startdate, 'startdate', '', '', 1, "sel", 1, 1); print '' . $langs->trans('EndDate') . ' (' . $langs->trans("DateValidation") . ')' . $langs->trans('DateEnd') . ' (' . $langs->trans("DateValidation") . ')'; $form->select_date($enddate, 'enddate', '', '', 1, "sel", 1, 1); print ''.$langs->trans('StartDate').' ('.$langs->trans("DateValidation").')'.$langs->trans('DateStart').' ('.$langs->trans("DateValidation").')'; $form->select_date($startdate,'startdate','','',1,"sel",1,1); print ''.$langs->trans('EndDate').' ('.$langs->trans("DateValidation").')'.$langs->trans('DateEnd').' ('.$langs->trans("DateValidation").')'; $form->select_date($enddate,'enddate','','',1,"sel",1,1); print ''.$langs->trans('StartDate').' ('.$langs->trans("DateValidation").')'.$langs->trans('DateStart').' ('.$langs->trans("DateValidation").')'; $form->select_date($startdate,'startdate','','',1,"sel",1,1); print ''.$langs->trans('EndDate').' ('.$langs->trans("DateValidation").')'.$langs->trans('DateEnd').' ('.$langs->trans("DateValidation").')'; $form->select_date($enddate,'enddate','','',1,"sel",1,1); print '
'.$langs->trans("NoModueToManageStockIncrease").''.$langs->trans("NoModuleToManageStockIncrease").'
'; -// Optio to force stock to be enough before adding a line into document +// Option to force stock to be enough before adding a line into document if ($conf->invoice->enabled || $conf->order->enabled || $conf->expedition->enabled) { print '
'; diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang old mode 100755 new mode 100644 index 2574422be18..f7e85f80d44 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -54,18 +54,13 @@ ErrorReservedTypeSystemSystemAuto=Value 'system' and 'systemauto' for type is re ErrorCodeCantContainZero=Code can't contain value 0 DisableJavascript=Disable JavaScript and Ajax functions (Recommended for blind person or text browsers) UseSearchToSelectCompanyTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant COMPANY_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. -ActivityStateToSelectCompany= Add a filter option to show/hide thirdparties which are currently in activity or has ceased it UseSearchToSelectContactTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. -UseSearchToSelectContact=Use autocompletion fields to choose contact (instead of using a list box). DelaiedFullListToSelectCompany=Wait you press a key before loading content of thirdparties combo list (This may increase performance if you have a large number of thirdparties) DelaiedFullListToSelectContact=Wait you press a key before loading content of contact combo list (This may increase performance if you have a large number of contact) -SearchFilter=Search filters options NumberOfKeyToSearch=Nbr of characters to trigger search: %s -ViewFullDateActions=Show full dates events in the third sheet NotAvailableWhenAjaxDisabled=Not available when Ajax disabled AllowToSelectProjectFromOtherCompany=On document of a thirdparty, can choose a project linked to another thirdparty JavascriptDisabled=JavaScript disabled -UsePopupCalendar=Use popup for dates input UsePreviewTabs=Use preview tabs ShowPreview=Show preview PreviewNotAvailable=Preview not available @@ -87,23 +82,19 @@ MustBeLowerThanPHPLimit=Note: your PHP limits each file upload's size to %sExample for ClamAv: /usr/bin/clamscan AntiVirusParam= More parameters on command line AntiVirusParamExample= Example for ClamWin: --database="C:\Program Files (x86)\ClamWin\lib" ComptaSetup=Accounting module setup UserSetup=User management setup -MenuSetup=Menu management setup MultiCurrencySetup=Multi-currency setup MenuLimits=Limits and accuracy MenuIdParent=Parent menu ID DetailMenuIdParent=ID of parent menu (empty for a top menu) DetailPosition=Sort number to define menu position -PersonalizedMenusNotSupported=Personalized menus not supported AllMenus=All NotConfigured=Module not configured -Activation=Activation Active=Active SetupShort=Setup OtherOptions=Other options @@ -114,27 +105,16 @@ Destination=Destination IdModule=Module ID IdPermissions=Permissions ID Modules=Modules -ModulesCommon=Main modules -ModulesOther=Other modules -ModulesInterfaces=Interfaces modules -ModulesSpecial=Modules very specific -ParameterInDolibarr=Parameter %s -LanguageParameter=Language parameter %s LanguageBrowserParameter=Parameter %s LocalisationDolibarrParameters=Localisation parameters ClientTZ=Client Time Zone (user) ClientHour=Client time (user) OSTZ=Server OS Time Zone PHPTZ=PHP server Time Zone -PHPServerOffsetWithGreenwich=PHP server offset width Greenwich (seconds) -ClientOffsetWithGreenwich=Client/Browser offset width Greenwich (seconds) DaylingSavingTime=Daylight saving time CurrentHour=PHP Time (server) -CompanyTZ=Company Time Zone (main company) -CompanyHour=Company Time (main company) CurrentSessionTimeOut=Current session timeout YouCanEditPHPTZ=To set a different PHP timezone (not required), you can try to add a file .htacces with a line like this "SetEnv TZ Europe/Paris" -OSEnv=OS Environment Box=Widget Boxes=Widgets MaxNbOfLinesForBoxes=Max number of lines for widgets @@ -159,13 +139,10 @@ PurgeNothingToDelete=No directory or files to delete. PurgeNDirectoriesDeleted=%s files or directories deleted. PurgeAuditEvents=Purge all security events ConfirmPurgeAuditEvents=Are you sure you want to purge all security events ? All security logs will be deleted, no other data will be removed. -NewBackup=New backup GenerateBackup=Generate backup Backup=Backup Restore=Restore RunCommandSummary=Backup has been launched with the following command -RunCommandSummaryToLaunch=Backup can be launched with the following command -WebServerMustHavePermissionForCommand=Your web server must have the permission to run such commands BackupResult=Backup result BackupFileSuccessfullyCreated=Backup file successfully generated YouCanDownloadBackupFile=Generated files can now be downloaded @@ -203,9 +180,6 @@ Rights=Permissions BoxesDesc=Widgets are components showing some information that you can add to personalize some pages. You can choose between showing the widget or not by selecting target page and clicking 'Activate', or by clicking the dustbin to disable it. OnlyActiveElementsAreShown=Only elements from enabled modules are shown. ModulesDesc=Dolibarr modules define which functionality is enabled in software. Some modules require permissions you must grant to users, after enabling module. Click on button on/off in column "Status" to enable a module/feature. -ModulesInterfaceDesc=The Dolibarr modules interface allows you to add features depending on external software, systems or services. -ModulesSpecialDesc=Special modules are very specific or seldom used modules. -ModulesJobDesc=Business modules provide simple preconfigured setup of Dolibarr for specific businesses. ModulesMarketPlaceDesc=You can find more modules to download on external websites on the Internet... ModulesMarketPlaces=More modules... DoliStoreDesc=DoliStore, the official market place for Dolibarr ERP/CRM external modules @@ -217,8 +191,6 @@ BoxesActivated=Widgets activated ActivateOn=Activate on ActiveOn=Activated on SourceFile=Source file -AutomaticIfJavascriptDisabled=Automatic if Javascript is disabled -AvailableOnlyIfJavascriptNotDisabled=Available only if JavaScript is not disabled AvailableOnlyIfJavascriptAndAjaxNotDisabled=Available only if JavaScript is not disabled Required=Required UsedOnlyWithTypeOption=Used by some agenda option only @@ -232,9 +204,7 @@ ProtectAndEncryptPdfFiles=Protection of generated pdf files (Activated NOT recom ProtectAndEncryptPdfFilesDesc=Protection of a PDF document keeps it available to read and print with any PDF browser. However, editing and copying is not possible anymore. Note that using this feature make building of a global cumulated pdf not working (like unpaid invoices). Feature=Feature DolibarrLicense=License -DolibarrProjectLeader=Project leader Developpers=Developers/contributors -OtherDeveloppers=Other developers/contributors OfficialWebSite=Dolibarr international official web site OfficialWebSiteLocal=Local web site (%s) OfficialWiki=Dolibarr documentation on Wiki @@ -247,10 +217,7 @@ ForDocumentationSeeWiki=For user or developer documentation (Doc, FAQs...),
t ForAnswersSeeForum=For any other questions/help, you can use the Dolibarr forum:
%s HelpCenterDesc1=This area can help you to get a Help support service on Dolibarr. HelpCenterDesc2=Some part of this service are available in english only. -CurrentTopMenuHandler=Current top menu handler -CurrentLeftMenuHandler=Current left menu handler CurrentMenuHandler=Current menu handler -CurrentSmartphoneMenuHandler=Current smartphone menu handler MeasuringUnit=Measuring unit Emails=E-mails EMailsSetup=E-mails setup @@ -262,9 +229,6 @@ MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=SMTP/SMTPS Host (Not defined into MAIN_MAIL_EMAIL_FROM=Sender e-mail for automatic emails (By default in php.ini: %s) MAIN_MAIL_ERRORS_TO=Sender e-mail used for error returns emails sent MAIN_MAIL_AUTOCOPY_TO= Send systematically a hidden carbon-copy of all sent emails to -MAIN_MAIL_AUTOCOPY_PROPOSAL_TO= Send systematically a hidden carbon-copy of proposals sent by email to -MAIN_MAIL_AUTOCOPY_ORDER_TO= Send systematically a hidden carbon-copy of orders sent by email to -MAIN_MAIL_AUTOCOPY_INVOICE_TO= Send systematically a hidden carbon-copy of invoice sent by emails to MAIN_DISABLE_ALL_MAILS=Disable all e-mails sendings (for test purposes or demos) MAIN_MAIL_SENDMODE=Method to use to send EMails MAIN_MAIL_SMTPS_ID=SMTP ID if authentication required @@ -275,7 +239,6 @@ MAIN_DISABLE_ALL_SMS=Disable all SMS sendings (for test purposes or demos) MAIN_SMS_SENDMODE=Method to use to send SMS MAIN_MAIL_SMS_FROM=Default sender phone number for Sms sending FeatureNotAvailableOnLinux=Feature not available on Unix like systems. Test your sendmail program locally. -SubmitTranslationENUS=If translation for this language is not complete or you find errors, you can correct this by editing files into directory langs/%s and submit modified files on dolibarr.org/forum or for developers on github.com/Dolibarr/dolibarr. SubmitTranslation=If translation for this language is not complete or you find errors, you can correct this by editing files into directory langs/%s and submit your change to www.transifex.com/dolibarr-association/dolibarr/ ModuleSetup=Module setup ModulesSetup=Modules setup @@ -332,8 +295,6 @@ UseACacheDelay= Delay for caching export response in seconds (0 or empty for no DisableLinkToHelpCenter=Hide link "Need help or support" on login page DisableLinkToHelp=Hide link to online help "%s" AddCRIfTooLong=There is no automatic wrapping, so if line is out of page on documents because too long, you must add yourself carriage returns in the textarea. -ModuleDisabled=Module disabled -ModuleDisabledSoNoEvent=Module disabled so event never created ConfirmPurge=Are you sure you want to execute this purge ?
This will delete definitely all your data files with no way to restore them (ECM files, attached files...). MinLength=Minimum length LanguageFilesCachedIntoShmopSharedMemory=Files .lang loaded in shared memory @@ -417,12 +378,10 @@ EraseAllCurrentBarCode=Erase all current barcode values ConfirmEraseAllCurrentBarCode=Are you sure you want to erase all current barcode values ? AllBarcodeReset=All barcode values have been removed NoBarcodeNumberingTemplateDefined=No numbering barcode template enabled into barcode module setup. -NoRecordWithoutBarcodeDefined=No record with no barcode value defined. EnableFileCache=Enable file cache ShowDetailsInPDFPageFoot=Add more details into footer of PDF files, like your company address, or manager names (to complete professional ids, company capital and VAT number). NoDetails=No more details in footer DisplayCompanyInfo=Display company address -DisplayCompanyManager=Display manager names DisplayCompanyInfoAndManagers=Display company and manager names EnableAndSetupModuleCron=If you want to have this recurring invoice beeing generated automatically, module *%s* must be enabled and correctly setup. Otherwise, generation of invoices must be done manually from this template with button *Create*. Note that even if you enabled automatic generation, you can still safely launch manual generation. Duplicates generation for same period are not possible. @@ -846,7 +805,6 @@ DictionaryOpportunityStatus=Opportunity status for project/lead SetupSaved=Setup saved BackToModuleList=Back to modules list BackToDictionaryList=Back to dictionaries list -VATReceivedOnly=Special rate not charged VATManagement=VAT Management VATIsUsedDesc=By default when creating prospects, invoices, orders etc the VAT rate follows the active standard rule:
If the seller is not subjected to VAT, then VAT defaults to 0. End of rule.
If the (selling country= buying country), then the VAT by default equals the VAT of the product in the selling country. End of rule.
If seller and buyer are both in the European Community and goods are transport products (car, ship, plane), the default VAT is 0 ( The VAT should be paid by the buyer to the customoffice of his country and not to the seller). End of rule.
If seller and buyer are both in the European Community and the buyer is not a company, then the VAT by defaults to the VAT of the product sold. End of rule.
If seller and buyer are both in the European Community and the buyer is a company, then the VAT is 0 by default . End of rule.
In any othe case the proposed default is VAT=0. End of rule. VATIsNotUsedDesc=By default the proposed VAT is 0 which can be used for cases like associations, individuals ou small companies. @@ -889,7 +847,6 @@ NbOfDays=Nb of days AtEndOfMonth=At end of month Offset=Offset AlwaysActive=Always active -UpdateRequired=Your system needs to be updated. To do this, click on Update now. Upgrade=Upgrade MenuUpgrade=Upgrade / Extend AddExtensionThemeModuleOrOther=Add extension (theme, module, ...) @@ -899,14 +856,8 @@ DataRootServer=Data files directory IP=IP Port=Port VirtualServerName=Virtual server name -AllParameters=All parameters OS=OS -PhpEnv=Env -PhpModules=Modules -PhpConf=Conf PhpWebLink=Web-Php link -Pear=Pear -PearPackages=Pear Packages Browser=Browser Server=Server Database=Database @@ -915,28 +866,14 @@ DatabaseName=Database name DatabasePort=Database port DatabaseUser=Database user DatabasePassword=Database password -DatabaseConfiguration=Database setup Tables=Tables TableName=Table name -TableLineFormat=Line format NbOfRecord=Nb of records -Constraints=Constraints -ConstraintsType=Constraints type -ConstraintsToShowOrNotEntry=Constraint to show or not the menu entry -AllMustBeOk=All of these must be checked Host=Server DriverType=Driver type SummarySystem=System information summary SummaryConst=List of all Dolibarr setup parameters -SystemUpdate=System update -SystemSuccessfulyUpdate=Your system has been updated successfuly MenuCompanySetup=Company/Foundation -MenuNewUser=New user -MenuTopManager=Top menu manager -MenuLeftManager=Left menu manager -MenuSmartphoneManager=Smartphone menu manager -DefaultMenuTopManager=Top menu manager -DefaultMenuLeftManager=Left menu manager DefaultMenuManager= Standard menu manager DefaultMenuSmartphoneManager=Smartphone menu manager Skin=Skin theme @@ -950,7 +887,6 @@ PermanentLeftSearchForm=Permanent search form on left menu DefaultLanguage=Default language to use (language code) EnableMultilangInterface=Enable multilingual interface EnableShowLogo=Show logo on left menu -SystemSuccessfulyUpdated=Your system has been updated successfully CompanyInfo=Company/foundation information CompanyIds=Company/foundation identities CompanyName=Name @@ -961,17 +897,12 @@ CompanyCountry=Country CompanyCurrency=Main currency CompanyObject=Object of the company Logo=Logo -DoNotShow=Do not show DoNotSuggestPaymentMode=Do not suggest NoActiveBankAccountDefined=No active bank account defined OwnerOfBankAccount=Owner of bank account %s BankModuleNotActive=Bank accounts module not enabled ShowBugTrackLink=Show link "%s" -ShowWorkBoard=Show "workbench" on homepage Alerts=Alerts -Delays=Delays -DelayBeforeWarning=Delay before warning -DelaysBeforeWarning=Delays before warning DelaysOfToleranceBeforeWarning=Tolerance delays before warning DelaysOfToleranceDesc=This screen allows you to define the tolerated delays before an alert is reported on screen with picto %s for each late element. Delays_MAIN_DELAY_ACTIONS_TODO=Delay tolerance (in days) before alert on planned events (agenda events) not completed yet @@ -994,7 +925,6 @@ SetupDescription2=The two most important setup steps are the first two in the se SetupDescription3=Parameters in menu Setup -> Company/foundation are required because submitted data are used on Dolibarr displays and to customize the default behaviour of the software (for country-related features for example). SetupDescription4=Parameters in menu Setup -> Modules are required because Dolibarr is not a monolithic ERP/CRM but a collection of several modules, all more or less independent. New features will be added to menus for every module you'll enable. SetupDescription5=Other menu entries manage optional parameters. -EventsSetup=Setup for events logs LogEvents=Security audit events Audit=Audit InfoDolibarr=About Dolibarr @@ -1006,7 +936,6 @@ InfoPHP=About PHP InfoPerf=About Performances BrowserName=Browser name BrowserOS=Browser OS -ListEvents=Audit events ListOfSecurityEvents=List of Dolibarr security events SecurityEventsPurged=Security events purged LogEventDesc=You can enable here the logging for Dolibarr security events. Administrators can then see its content via menu System tools - Audit. Warning, this feature can consume a large amount of data in database. @@ -1016,7 +945,6 @@ SystemAreaForAdminOnly=This area is available for administrator users only. None CompanyFundationDesc=Edit on this page all known information of the company or foundation you need to manage (For this, click on "Modify" button at bottom of page) DisplayDesc=You can choose each parameter related to the Dolibarr look and feel here AvailableModules=Available modules -DeprecatedModules=Deprecated modules ToActivateModule=To activate modules, go on setup Area (Home->Setup->Modules). SessionTimeOut=Time out for session SessionExplanation=This number guarantee that session will never expire before this delay, if the session cleaner is done by Internal PHP session cleaner (and nothing else). Internal PHP session cleaner does not guaranty that session will expire just after this delay. It will expire, after this delay, and when the session cleaner is ran, so every %s/%s access, but only during access made by other sessions.
Note: on some servers with an external session cleaning mechanism (cron under debian, ubuntu ...), the sessions can be destroyed after a period defined by the default session.gc_maxlifetime, no matter what the value entered here. @@ -1029,14 +957,12 @@ TriggerActiveAsModuleActive=Triggers in this file are active as module %s GeneratedPasswordDesc=Define here which rule you want to use to generate new password if you ask to have auto generated password DictionaryDesc=Insert all reference data. You can add your values to the default. ConstDesc=This page allows you to edit all other parameters not available in previous pages. These are mostly reserved parameters for developers or advanced troubleshooting. -OnceSetupFinishedCreateUsers=Warning, you are a Dolibarr administrator user. Administrator users are used to setup Dolibarr. For a usual usage of Dolibarr, it is recommended to use a non administrator user created from Users & Groups menu. MiscellaneousDesc=All other security related parameters are defined here. LimitsSetup=Limits/Precision setup LimitsDesc=You can define limits, precisions and optimisations used by Dolibarr here MAIN_MAX_DECIMALS_UNIT=Max decimals for unit prices MAIN_MAX_DECIMALS_TOT=Max decimals for total prices MAIN_MAX_DECIMALS_SHOWN=Max decimals for prices shown on screen (Add ... after this number if you want to see ... when number is truncated when shown on screen) -MAIN_DISABLE_PDF_COMPRESSION=Use PDF compression for generated PDF files. MAIN_ROUNDING_RULE_TOT=Step of rounding range (for countries where rounding is done on something else than base 10. For example, put 0.05 if rounding is done by 0.05 steps) UnitPriceOfProduct=Net unit price of a product TotalPriceAfterRounding=Total price (net/vat/incl tax) after rounding @@ -1066,7 +992,6 @@ ShowProfIdInAddress=Show professionnal id with addresses on documents ShowVATIntaInAddress=Hide VAT Intra num with addresses on documents TranslationUncomplete=Partial translation SomeTranslationAreUncomplete=Some languages may be partially translated or may contains errors. If you detect some, you can fix language files registering to http://transifex.com/projects/p/dolibarr/. -MenuUseLayout=Make vertical menu hidable (option javascript must not be disabled) MAIN_DISABLE_METEO=Disable meteo view TestLoginToAPI=Test login to API ProxyDesc=Some features of Dolibarr need to have an Internet access to work. Define here parameters for this. If the Dolibarr server is behind a Proxy server, those parameters tells Dolibarr how to access Internet through it. @@ -1085,16 +1010,13 @@ ExtraFieldsThirdParties=Complementary attributes (thirdparty) ExtraFieldsContacts=Complementary attributes (contact/address) ExtraFieldsMember=Complementary attributes (member) ExtraFieldsMemberType=Complementary attributes (member type) -ExtraFieldsCustomerOrders=Complementary attributes (orders) ExtraFieldsCustomerInvoices=Complementary attributes (invoices) ExtraFieldsSupplierOrders=Complementary attributes (orders) ExtraFieldsSupplierInvoices=Complementary attributes (invoices) ExtraFieldsProject=Complementary attributes (projects) ExtraFieldsProjectTask=Complementary attributes (tasks) ExtraFieldHasWrongValue=Attribute %s has a wrong value. -AlphaNumOnlyCharsAndNoSpace=only alphanumericals characters without space AlphaNumOnlyLowerCharsAndNoSpace=only alphanumericals and lower case characters without space -SendingMailSetup=Setup of sendings by email SendmailOptionNotComplete=Warning, on some Linux systems, to send email from your email, sendmail execution setup must contains option -ba (parameter mail.force_extra_parameters into your php.ini file). If some recipients never receive emails, try to edit this PHP parameter with mail.force_extra_parameters = -ba). PathToDocuments=Path to documents PathDirectory=Directory @@ -1123,7 +1045,6 @@ AskForPreferredShippingMethod=Ask for preferred Sending Method for Third Parties FieldEdition=Edition of field %s FillThisOnlyIfRequired=Example: +2 (fill only if timezone offset problems are experienced) GetBarCode=Get barcode -EmptyNumRefModelDesc=The code is free. This code can be modified at any time. ##### Module password generation PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: 8 characters containing shared numbers and characters in lowercase. PasswordGenerationNone=Do not suggest any generated password. Password must be typed in manually. @@ -1131,11 +1052,7 @@ PasswordGenerationPerso=Return a password according to your personally defined c SetupPerso=According to your configuration PasswordPatternDesc=Password pattern description ##### Users setup ##### -UserGroupSetup=Users and groups module setup -GeneratePassword=Suggest a generated password RuleForGeneratedPasswords=Rule to generate suggested passwords or validate passwords -DoNotSuggest=Do not suggest any password -EncryptedPasswordInDatabase=To allow the encryption of the passwords in the database DisableForgetPasswordLinkOnLogonPage=Do not show the link "Forget password" on login page UsersSetup=Users module setup UserMailRequired=EMail required to create a new user @@ -1145,10 +1062,6 @@ HRMSetup=HRM module setup CompanySetup=Companies module setup CompanyCodeChecker=Module for third parties code generation and checking (customer or supplier) AccountCodeManager=Module for accountancy code generation (customer or supplier) -ModuleCompanyCodeAquarium=Return an accountancy code built by:
%s followed by third party supplier code for a supplier accountancy code,
%s followed by third party customer code for a customer accountancy code. -ModuleCompanyCodePanicum=Return an empty accountancy code. -ModuleCompanyCodeDigitaria=Accountancy code depends on third party code. The code is composed of the character "C" in the first position followed by the first 5 characters of the third party code. -UseNotifications=Use notifications NotificationsDesc=EMails notifications feature allows you to silently send automatic mail, for some Dolibarr events. Targets of notifications can be defined:
* per third parties contacts (customers or suppliers), one contact at time.
* or by setting global target email addresses in module setup page. ModelModules=Documents templates DocumentModelOdt=Generate documents from OpenDocuments templates (.ODT or .ODS files for OpenOffice, KOffice, TextEdit,...) @@ -1160,43 +1073,15 @@ MustBeMandatory=Mandatory to create third parties ? MustBeInvoiceMandatory=Mandatory to validate invoices ? Miscellaneous=Miscellaneous ##### Webcal setup ##### -WebCalSetup=Webcalendar link setup -WebCalSyncro=Add Dolibarr events to WebCalendar -WebCalAllways=Always, no asking -WebCalYesByDefault=On demand (yes by default) -WebCalNoByDefault=On demand (no by default) -WebCalNever=Never -WebCalURL=URL for calendar access -WebCalServer=Server hosting calendar database -WebCalDatabaseName=Database name -WebCalUser=User to access database -WebCalSetupSaved=Webcalendar setup saved successfully. -WebCalTestOk=Connection to server '%s' on database '%s' with user '%s' successful. -WebCalTestKo1=Connection to server '%s' succeed but database '%s' could not be reached. -WebCalTestKo2=Connection to server '%s' with user '%s' failed. -WebCalErrorConnectOkButWrongDatabase=Connection succeeded but database doesn't look to be a Webcalendar database. -WebCalAddEventOnCreateActions=Add calendar event on actions create -WebCalAddEventOnCreateCompany=Add calendar event on companies create -WebCalAddEventOnStatusPropal=Add calendar event on commercial proposals status change -WebCalAddEventOnStatusContract=Add calendar event on contracts status change -WebCalAddEventOnStatusBill=Add calendar event on bills status change -WebCalAddEventOnStatusMember=Add calendar event on members status change WebCalUrlForVCalExport=An export link to %s format is available at following link: %s -WebCalCheckWebcalSetup=Maybe the Webcal module setup is not correct. ##### Invoices ##### BillsSetup=Invoices module setup -BillsDate=Invoices date BillsNumberingModule=Invoices and credit notes numbering model BillsPDFModules=Invoice documents models -CreditNoteSetup=Credit note module setup -CreditNotePDFModules=Credit note document models CreditNote=Credit note CreditNotes=Credit notes ForceInvoiceDate=Force invoice date to validation date -AllowCreditNoteWithoutRelatedInvoice=Allow to create credit note without a related invoice -DisableRepeatable=Disable repeatable invoices SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined for invoice -EnableEditDeleteValidInvoice=Enable the possibility to edit/delete valid invoice with no payment SuggestPaymentByRIBOnAccount=Suggest payment by withdraw on account SuggestPaymentByChequeToAddress=Suggest payment by cheque to FreeLegalTextOnInvoices=Free text on invoices @@ -1206,15 +1091,8 @@ SuppliersPayment=Suppliers payments SupplierPaymentSetup=Suppliers payments setup ##### Proposals ##### PropalSetup=Commercial proposals module setup -CreateForm=Create forms -NumberOfProductLines=Number of product lines ProposalsNumberingModules=Commercial proposal numbering models ProposalsPDFModules=Commercial proposal documents models -ClassifiedInvoiced=Classified invoiced -HideTreadedPropal=Hide the treated commercial proposals in the list -AddShippingDateAbility=Add shipping date ability -AddDeliveryAddressAbility=Add delivery date ability -UseOptionLineIfNoQuantity=A line of product/service with a zero amount is considered as an option FreeLegalTextOnProposal=Free text on commercial proposals WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal @@ -1230,8 +1108,6 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order OrdersSetup=Order management setup OrdersNumberingModules=Orders numbering models OrdersModelModule=Order documents models -HideTreadedOrders=Hide the treated or cancelled orders in the list -ValidOrderAfterPropalClosed=To validate the order after proposal closer, makes it possible not to step by the provisional order FreeLegalTextOnOrders=Free text on orders WatermarkOnDraftOrders=Watermark on draft orders (none if empty) ShippableOrderIconInList=Add an icon in Orders list which indicate if order is shippable @@ -1240,7 +1116,6 @@ BANK_ASK_PAYMENT_BANK_DURING_ORDER=Ask for bank account destination of order ClickToDialSetup=Click To Dial module setup ClickToDialUrlDesc=Url called when a click on phone picto is done. In URL, you can use tags
__PHONETO__ that will be replaced with the phone number of person to call
__PHONEFROM__ that will be replaced with phone number of calling person (yours)
__LOGIN__ that will be replaced with your clicktodial login (defined on your user card)
__PASS__ that will be replaced with your clicktodial password (defined on your user card). ##### Bookmark4u ##### -Bookmark4uSetup=Bookmark4u module setup ##### Interventions ##### InterventionsSetup=Interventions module setup FreeLegalTextOnInterventions=Free text on intervention documents @@ -1253,11 +1128,9 @@ ContractsNumberingModules=Contracts numbering modules TemplatePDFContracts=Contracts documents models FreeLegalTextOnContracts=Free text on contracts WatermarkOnDraftContractCards=Watermark on draft contracts (none if empty) -ContractsAndServices=List of contracts and services ##### Members ##### MembersSetup=Members module setup MemberMainOptions=Main options -AddSubscriptionIntoAccount=Suggest by default to create a bank transaction, in bank module, when adding a new payed subscription AdherentLoginRequired= Manage a Login for each member AdherentMailRequired=EMail required to create a new member MemberSendInformationByMailByDefault=Checkbox to send mail confirmation to members (validation or new subscription) is on by default @@ -1277,7 +1150,6 @@ LDAPSynchronizeUsers=Organization of users in LDAP LDAPSynchronizeGroups=Organization of groups in LDAP LDAPSynchronizeContacts=Organization of contacts in LDAP LDAPSynchronizeMembers=Organization of foundation's members in LDAP -LDAPTypeExample=OpenLdap, Egroupware or Active Directory LDAPPrimaryServer=Primary server LDAPSecondaryServer=Secondary server LDAPServerPort=Server port @@ -1295,11 +1167,9 @@ LDAPGroupDn=Groups' DN LDAPGroupDnExample=Complete DN (ex: ou=groups,dc=example,dc=com) LDAPServerExample=Server address (ex: localhost, 192.168.0.2, ldaps://ldap.example.com/) LDAPServerDnExample=Complete DN (ex: dc=example,dc=com) -LDAPPasswordExample=Admin password LDAPDnSynchroActive=Users and groups synchronization LDAPDnSynchroActiveExample=LDAP to Dolibarr or Dolibarr to LDAP synchronization LDAPDnContactActive=Contacts' synchronization -LDAPDnContactActiveYes=Activated synchronization LDAPDnContactActiveExample=Activated/Unactivated synchronization LDAPDnMemberActive=Members' synchronization LDAPDnMemberActiveExample=Activated/Unactivated synchronization @@ -1315,8 +1185,6 @@ LDAPGroupObjectClassList=List of objectClass LDAPGroupObjectClassListExample=List of objectClass defining record attributes (ex: top,groupOfUniqueNames) LDAPContactObjectClassList=List of objectClass LDAPContactObjectClassListExample=List of objectClass defining record attributes (ex: top,inetOrgPerson or top,user for active directory) -LDAPMemberTypeDn=Dolibarr members type DN -LDAPMemberTypeDnExample=Complete DN (ex: ou=type_members,dc=example,dc=com) LDAPTestConnect=Test LDAP connection LDAPTestSynchroContact=Test contacts synchronization LDAPTestSynchroUser=Test user synchronization @@ -1330,10 +1198,6 @@ LDAPTCPConnectOK=TCP connect to LDAP server successful (Server=%s, Port=%s) LDAPTCPConnectKO=TCP connect to LDAP server failed (Server=%s, Port=%s) LDAPBindOK=Connect/Authentificate to LDAP server successful (Server=%s, Port=%s, Admin=%s, Password=%s) LDAPBindKO=Connect/Authentificate to LDAP server failed (Server=%s, Port=%s, Admin=%s, Password=%s) -LDAPUnbindSuccessfull=Disconnect successful -LDAPUnbindFailed=Disconnect failed -LDAPConnectToDNSuccessfull=Connection to DN (%s) successful -LDAPConnectToDNFailed=Connection to DN (%s) failed LDAPSetupForVersion3=LDAP server configured for version 3 LDAPSetupForVersion2=LDAP server configured for version 2 LDAPDolibarrMapping=Dolibarr Mapping @@ -1346,11 +1210,9 @@ LDAPFieldLoginSamba=Login (samba, activedirectory) LDAPFieldLoginSambaExample=Example : samaccountname LDAPFieldFullname=Full name LDAPFieldFullnameExample=Example : cn -LDAPFieldPassword=Password LDAPFieldPasswordNotCrypted=Password not crypted LDAPFieldPasswordCrypted=Password crypted LDAPFieldPasswordExample=Example : userPassword -LDAPFieldCommonName=Common name LDAPFieldCommonNameExample=Example : cn LDAPFieldName=Name LDAPFieldNameExample=Example : sn @@ -1373,7 +1235,6 @@ LDAPFieldZipExample=Example : postalcode LDAPFieldTown=Town LDAPFieldTownExample=Example : l LDAPFieldCountry=Country -LDAPFieldCountryExample=Example : c LDAPFieldDescription=Description LDAPFieldDescriptionExample=Example : description LDAPFieldNotePublic=Public Note @@ -1381,7 +1242,6 @@ LDAPFieldNotePublicExample=Example : publicnote LDAPFieldGroupMembers= Group members LDAPFieldGroupMembersExample= Example : uniqueMember LDAPFieldBirthdate=Birthdate -LDAPFieldBirthdateExample=Example : LDAPFieldCompany=Company LDAPFieldCompanyExample=Example : o LDAPFieldSid=SID @@ -1389,7 +1249,6 @@ LDAPFieldSidExample=Example : objectsid LDAPFieldEndLastSubscription=Date of subscription end LDAPFieldTitle=Post/Function LDAPFieldTitleExample=Example: title -LDAPParametersAreStillHardCoded=LDAP parameters are still hardcoded (in contact class) LDAPSetupNotComplete=LDAP setup not complete (go on others tabs) LDAPNoUserOrPasswordProvidedAccessIsReadOnly=No administrator or password provided. LDAP access will be anonymous and in read only mode. LDAPDescContact=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr contacts. @@ -1421,15 +1280,11 @@ ProductSetup=Products module setup ServiceSetup=Services module setup ProductServiceSetup=Products and Services modules setup NumberOfProductShowInSelect=Max number of products in combos select lists (0=no limit) -ConfirmDeleteProductLineAbility=Confirmation when removing product lines in forms -ModifyProductDescAbility=Personalization of product descriptions in forms ViewProductDescInFormAbility=Visualization of product descriptions in the forms (otherwise as popup tooltip) MergePropalProductCard=Activate in product/service Attached Files tab an option to merge product PDF document to proposal PDF azur if product/service is in the proposal ViewProductDescInThirdpartyLanguageAbility=Visualization of products descriptions in the thirdparty language -UseMaskOnClone=Use product next ref when we clone a product%s (available if mask configured) UseSearchToSelectProductTooltip=Also if you have a large number of product (> 100 000), you can increase speed by setting constant PRODUCT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. UseSearchToSelectProduct=Use a search form to choose a product (rather than a drop-down list). -UseEcoTaxeAbility=Support Eco-Taxe (WEEE) SetDefaultBarcodeTypeProducts=Default barcode type to use for products SetDefaultBarcodeTypeThirdParties=Default barcode type to use for third parties UseUnits=Define a unit of measure for Quantity during order, proposal or invoice lines edition @@ -1439,10 +1294,8 @@ IsNotADir=is not a directory! ##### Syslog ##### SyslogSetup=Logs module setup SyslogOutput=Logs outputs -SyslogSyslog=Syslog SyslogFacility=Facility SyslogLevel=Level -SyslogSimpleFile=File SyslogFilename=File name and path YouCanUseDOL_DATA_ROOT=You can use DOL_DATA_ROOT/dolibarr.log for a log file in Dolibarr "documents" directory. You can set a different path to store this file. ErrorUnknownSyslogConstant=Constant %s is not a known Syslog constant @@ -1456,7 +1309,6 @@ DonationsReceiptModel=Template of donation receipt BarcodeSetup=Barcode setup PaperFormatModule=Print format module BarcodeEncodeModule=Barcode encoding type -UseBarcodeInProductModule=Use bar codes for products CodeBarGenerator=Barcode generator ChooseABarCode=No generator defined FormatNotSupportedByGenerator=Format not supported by this generator @@ -1486,7 +1338,6 @@ MailingDelay=Seconds to wait after sending next message ##### Notification ##### NotificationSetup=EMail notification module setup NotificationEMailFrom=Sender EMail (From) for emails sent for notifications -ListOfAvailableNotifications=List of events you can set notification on, for each thirdparty (go into thirdparty card to setup) or by setting a fixed email (List depends on activated modules) FixedEmailTarget=Fixed email target ##### Sendings ##### SendingsSetup=Sending module setup @@ -1516,16 +1367,13 @@ OSCommerceTestKo1=Connection to server '%s' succeed but database '%s' could not OSCommerceTestKo2=Connection to server '%s' with user '%s' failed. ##### Stock ##### StockSetup=Warehouse module setup -UserWarehouse=Use user personal warehouses IfYouUsePointOfSaleCheckModule=If you use a Point of Sale module (POS module provided by default or another external module), this setup may be ignored by your Point Of Sale module. Most point of sales modules are designed to create immediatly an invoice and decrease stock by default whatever are options here. So, if you need or not to have a stock decrease when registering a sell from your Point Of Sale, check also your POS module set up. ##### Menu ##### MenuDeleted=Menu deleted -TreeMenu=Tree menus Menus=Menus TreeMenuPersonalized=Personalized menus NotTopTreeMenuPersonalized=Personalized menus not linked to a top menu entry NewMenu=New menu -MenuConf=Menus setup Menu=Selection of menu MenuHandler=Menu handler MenuModule=Source module @@ -1535,9 +1383,7 @@ DetailMenuHandler=Menu handler where to show new menu DetailMenuModule=Module name if menu entry come from a module DetailType=Type of menu (top or left) DetailTitre=Menu label or label code for translation -DetailMainmenu=Group for which it belongs (obsolete) DetailUrl=URL where menu send you (Absolute URL link or external link with http://) -DetailLeftmenu=Display condition or not (obsolete) DetailEnabled=Condition to show or not entry DetailRight=Condition to display unauthorized grey menus DetailLangs=Lang file name for label code translation @@ -1606,9 +1452,7 @@ EndPointIs=SOAP clients must send their requests to the Dolibarr endpoint availa ##### API #### ApiSetup=API module setup ApiDesc=By enabling this module, Dolibarr become a REST server to provide miscellaneous web services. -KeyForApiAccess=Key to use API (parameter "api_key") ApiProductionMode=Enable production mode (this will activate use of a caches for services management) -ApiEndPointIs=You can access to the API at url ApiExporerIs=You can explore the APIs at url OnlyActiveElementsAreExposed=Only elements from enabled modules are exposed ApiKey=Key for API @@ -1645,20 +1489,15 @@ TasksNumberingModules=Tasks numbering module TaskModelModule=Tasks reports document model UseSearchToSelectProject=Use autocompletion fields to choose project (instead of using a list box) ##### ECM (GED) ##### -ECMSetup = GED Setup -ECMAutoTree = Show also the automatic tree folder and document ##### Fiscal Year ##### FiscalYears=Fiscal years -FiscalYear=Fiscal year FiscalYearCard=Fiscal year card NewFiscalYear=New fiscal year -EditFiscalYear=Edit fiscal year OpenFiscalYear=Open fiscal year CloseFiscalYear=Close fiscal year DeleteFiscalYear=Delete fiscal year ConfirmDeleteFiscalYear=Are you sure to delete this fiscal year ? AlwaysEditable=Can always be edited -IsHidden=Is not visible MAIN_APPLICATION_TITLE=Force visible name of application (warning: setting your own name here may break autofill login feature when using DoliDroid mobile application) NbMajMin=Minimum number of uppercase characters NbNumMin=Minimum number of numeric characters @@ -1672,7 +1511,6 @@ TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both custome IncludePath=Include path (defined into variable %s) ExpenseReportsSetup=Setup of module Expense Reports TemplatePDFExpenseReports=Document templates to generate expense report document -NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. YouMayFindNotificationsFeaturesIntoModuleNotification=You may find options for EMail notifications by enabling and configuring the module "Notification". ListOfNotificationsPerContact=List of notifications per contact* diff --git a/htdocs/langs/en_US/agenda.lang b/htdocs/langs/en_US/agenda.lang index acb9f40f7e3..4f745f56bcf 100644 --- a/htdocs/langs/en_US/agenda.lang +++ b/htdocs/langs/en_US/agenda.lang @@ -1,26 +1,20 @@ # Dolibarr language file - Source file is en_US - agenda IdAgenda=ID event Actions=Events -ActionsArea=Events area (Actions and tasks) Agenda=Agenda Agendas=Agendas Calendar=Calendar -Calendars=Calendars LocalAgenda=Internal calendar ActionsOwnedBy=Event owned by ActionsOwnedByShort=Owner AffectedTo=Assigned to -DoneBy=Done by Event=Event Events=Events EventsNb=Number of events -MyEvents=My events -OtherEvents=Other events ListOfActions=List of events Location=Location ToUserOfGroup=To any user in group EventOnFullDay=Event on all day(s) -SearchAnAction= Search an event/task MenuToDoActions=All incomplete events MenuDoneActions=All terminated events MenuToDoMyActions=My incomplete events @@ -29,18 +23,12 @@ ListOfEvents=List of events (internal calendar) ActionsAskedBy=Events reported by ActionsToDoBy=Events assigned to ActionsDoneBy=Events done by -ActionsForUser=Events for user -ActionsForUsersGroup=Events for all users of group ActionAssignedTo=Event assigned to -AllMyActions= All my events/tasks -AllActions= All events/tasks ViewCal=Month view ViewDay=Day view ViewWeek=Week view -ViewYear=Year view ViewPerUser=Per user view ViewPerType=Per type view -ViewWithPredefinedFilters= View with predefined filters AutoActions= Automatic filling AgendaAutoActionDesc= Define here events for which you want Dolibarr to create automatically an event in agenda. If nothing is checked, only manual actions will be included in logged and visible into agenda. Automatic tracking of business actions done on objects (validation, status change) will not be saved. AgendaSetupOtherDesc= This page provides options to allow export of your Dolibarr events into an external calendar (thunderbird, google calendar, ...) @@ -70,10 +58,6 @@ ProposalDeleted=Proposal deleted OrderDeleted=Order deleted InvoiceDeleted=Invoice deleted NewCompanyToDolibarr= Third party created -DateActionPlannedStart= Planned start date -DateActionPlannedEnd= Planned end date -DateActionDoneStart= Real start date -DateActionDoneEnd= Real end date DateActionStart= Start date DateActionEnd= End date AgendaUrlOptions1=You can also add following parameters to filter output: @@ -95,8 +79,6 @@ ExtSitesNbOfAgenda=Number of calendars AgendaExtNb=Calendar nb %s ExtSiteUrlAgenda=URL to access .ical file ExtSiteNoLabel=No Description -WorkingTimeRange=Working time range -WorkingDaysRange=Working days range VisibleTimeRange=Visible time range VisibleDaysRange=Visible days range AddEvent=Create event diff --git a/htdocs/langs/en_US/banks.lang b/htdocs/langs/en_US/banks.lang index 65f5a02865b..2e166f16bc7 100644 --- a/htdocs/langs/en_US/banks.lang +++ b/htdocs/langs/en_US/banks.lang @@ -1,11 +1,8 @@ # Dolibarr language file - Source file is en_US - banks Bank=Bank -Banks=Banks MenuBankCash=Bank/Cash -MenuSetupBank=Bank/Cash setup BankName=Bank name FinancialAccount=Account -FinancialAccounts=Accounts BankAccount=Bank account BankAccounts=Bank accounts ShowAccount=Show Account @@ -13,10 +10,7 @@ AccountRef=Financial account ref AccountLabel=Financial account label CashAccount=Cash account CashAccounts=Cash accounts -MainAccount=Main account -CurrentAccount=Current account CurrentAccounts=Current accounts -SavingAccount=Savings account SavingAccounts=Savings accounts ErrorBankLabelAlreadyExists=Financial account label already exists BankBalance=Balance @@ -40,13 +34,10 @@ SwiftValid=BIC/SWIFT is Valid SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Standing orders StandingOrder=Standing order -Withdrawals=Withdrawals -Withdrawal=Withdrawal AccountStatement=Account statement AccountStatementShort=Statement AccountStatements=Account statements LastAccountStatements=Last account statements -Rapprochement=Reconciliate IOMonthlyReporting=Monthly reporting BankAccountDomiciliation=Account address BankAccountCountry=Account country @@ -55,29 +46,19 @@ BankAccountOwnerAddress=Account owner address RIBControlError=Integrity check of values fails. This means information for this account number are not complete or wrong (check country, numbers and IBAN). CreateAccount=Create account NewAccount=New account -NewBankAccount=New bank account NewFinancialAccount=New financial account MenuNewFinancialAccount=New financial account -NewCurrentAccount=New current account -NewSavingAccount=New savings account -NewCashAccount=New cash account EditFinancialAccount=Edit account -AccountSetup=Financial accounts setup -SearchBankMovement=Search bank movement -Debts=Debts LabelBankCashAccount=Bank or cash label AccountType=Account type BankType0=Savings account BankType1=Current or credit card account BankType2=Cash account -IfBankAccount=If bank account AccountsArea=Accounts area AccountCard=Account card DeleteAccount=Delete account ConfirmDeleteAccount=Are you sure you want to delete this account ? Account=Account -ByCategories=By categories -ByRubriques=By categories BankTransactionByCategories=Bank transactions by categories BankTransactionForCategory=Bank transactions for category %s RemoveFromRubrique=Remove link with category @@ -85,14 +66,12 @@ RemoveFromRubriqueConfirm=Are you sure you want to remove link between the trans ListBankTransactions=List of bank transactions IdTransaction=Transaction ID BankTransactions=Bank transactions -SearchTransaction=Search transaction ListTransactions=List transactions ListTransactionsByCategory=List transaction/category TransactionsToConciliate=Transactions to reconcile Conciliable=Can be reconciled Conciliate=Reconcile Conciliation=Reconciliation -ConciliationForAccount=Reconcile this account IncludeClosedAccount=Include closed accounts OnlyOpenedAccount=Only open accounts AccountToCredit=Account to credit @@ -102,7 +81,6 @@ ConciliationDisabled=Reconciliation feature disabled StatusAccountOpened=Open StatusAccountClosed=Closed AccountIdShort=Number -EditBankRecord=Edit record LineRecord=Transaction AddBankRecord=Add transaction AddBankRecordLong=Add transaction manually @@ -110,11 +88,8 @@ ConciliatedBy=Reconciled by DateConciliating=Reconcile date BankLineConciliated=Transaction reconciled CustomerInvoicePayment=Customer payment -CustomerInvoicePaymentBack=Customer payment back -SupplierInvoicePayment=Supplier payment WithdrawalPayment=Withdrawal payment SocialContributionPayment=Social/fiscal tax payment -FinancialAccountJournal=Financial account journal BankTransfer=Bank transfer BankTransfers=Bank transfers TransferDesc=Transfer from one account to another one, Dolibarr will write two records (a debit in source account and a credit in target account, of the same amount. The same label and date will be used for this transaction) @@ -134,13 +109,11 @@ DeleteTransaction=Delete transaction ConfirmDeleteTransaction=Are you sure you want to delete this transaction ? ThisWillAlsoDeleteBankRecord=This will also delete generated bank transactions BankMovements=Movements -CashBudget=Cash budget PlannedTransactions=Planned transactions Graph=Graphics ExportDataset_banque_1=Bank transactions and account statement ExportDataset_banque_2=Deposit slip TransactionOnTheOtherAccount=Transaction on the other account -TransactionWithOtherAccount=Account transfer PaymentNumberUpdateSucceeded=Payment number updated successfully PaymentNumberUpdateFailed=Payment number could not be updated PaymentDateUpdateSucceeded=Payment date updated successfully @@ -156,7 +129,6 @@ InputReceiptNumber=Choose the bank statement related with the conciliation. Use EventualyAddCategory=Eventually, specify a category in which to classify the records ToConciliate=To conciliate? ThenCheckLinesAndConciliate=Then, check the lines present in the bank statement and click -BankDashboard=Bank accounts summary DefaultRIB=Default BAN AllRIB=All BAN LabelRIB=BAN Label From 94b7e176a63b832c0b5b07056b9451aacd1dd30a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 18 Jun 2016 16:46:21 +0200 Subject: [PATCH 125/212] Clean language files --- dev/translation/sanity_check_en_langfiles.php | 22 +++++++- .../tpl/linkedobjectblock.tpl.php | 2 - htdocs/langs/en_US/bookmarks.lang | 1 - htdocs/langs/en_US/boxes.lang | 21 -------- htdocs/langs/en_US/cashdesk.lang | 6 --- htdocs/langs/en_US/categories.lang | 33 ------------ htdocs/langs/en_US/commercial.lang | 26 ---------- htdocs/langs/en_US/companies.lang | 52 ------------------- htdocs/langs/en_US/compta.lang | 28 ---------- htdocs/langs/en_US/contracts.lang | 16 ------ htdocs/langs/en_US/cron.lang | 16 ------ htdocs/langs/en_US/deliveries.lang | 6 +-- htdocs/langs/en_US/donations.lang | 10 ---- htdocs/langs/en_US/ecm.lang | 12 ----- htdocs/langs/en_US/errors.lang | 10 ---- htdocs/langs/en_US/expensereports.lang | 2 - htdocs/langs/en_US/exports.lang | 12 ----- htdocs/langs/en_US/help.lang | 1 - htdocs/projet/card.php | 1 - 19 files changed, 21 insertions(+), 256 deletions(-) mode change 100755 => 100644 htdocs/langs/en_US/errors.lang delete mode 100644 htdocs/langs/en_US/expensereports.lang diff --git a/dev/translation/sanity_check_en_langfiles.php b/dev/translation/sanity_check_en_langfiles.php index ea27b2ffc3b..3adf0e92f7c 100755 --- a/dev/translation/sanity_check_en_langfiles.php +++ b/dev/translation/sanity_check_en_langfiles.php @@ -283,6 +283,23 @@ if ((! empty($_REQUEST['unused']) && $_REQUEST['unused'] == 'true') || (isset($a if (preg_match('/^MonthShort/', $value)) $qualifiedforclean=0; if (preg_match('/^Day\d/', $value)) $qualifiedforclean=0; if (preg_match('/^ExportDataset_/', $value)) $qualifiedforclean=0; + if (preg_match('/^ImportDataset_/', $value)) $qualifiedforclean=0; + if (preg_match('/^ActionAC_/', $value)) $qualifiedforclean=0; + if (preg_match('/^TypeLocaltax/', $value)) $qualifiedforclean=0; + if (preg_match('/^StatusProspect/', $value)) $qualifiedforclean=0; + if (preg_match('/^PL_/', $value)) $qualifiedforclean=0; + if (preg_match('/^TE_/', $value)) $qualifiedforclean=0; + if (preg_match('/^JuridicalStatus/', $value)) $qualifiedforclean=0; + if (preg_match('/^CalcMode/', $value)) $qualifiedforclean=0; + if (preg_match('/^newLT/', $value)) $qualifiedforclean=0; + if (preg_match('/^LT\dSummary/', $value)) $qualifiedforclean=0; + if (preg_match('/^LT\dPaid/', $value)) $qualifiedforclean=0; + if (preg_match('/^LT\dPayment/', $value)) $qualifiedforclean=0; + if (preg_match('/^LT\dCustomer/', $value)) $qualifiedforclean=0; + if (preg_match('/^LT\dSupplier/', $value)) $qualifiedforclean=0; + if (preg_match('/^LT\dReport/', $value)) $qualifiedforclean=0; + if (preg_match('/^TypeContact_contrat_/', $value)) $qualifiedforclean=0; + if (preg_match('/^ErrorPriceExpression/', $value)) $qualifiedforclean=0; if ($qualifiedforclean) { @@ -300,12 +317,13 @@ if ((! empty($_REQUEST['unused']) && $_REQUEST['unused'] == 'true') || (isset($a if (empty($unused)) print "No string not used found.\n"; else { - $filetosave='/tmp/notused.lang'; + $filetosave='/tmp/'.($argv[2]?$argv[2]:"").'notused.lang'; print "Strings in en_US that are never used are saved into file ".$filetosave.":\n"; file_put_contents($filetosave, join("",$unused)); print "To remove from original file, run command :\n"; if (($argv[2]?$argv[2]:"")) print 'cd htdocs/langs/en_US; mv '.($argv[2]?$argv[2]:"")." ".($argv[2]?$argv[2]:"").".tmp; "; - print "diff ".($argv[2]?$argv[2]:"").".tmp ".$filetosave." | grep \< | cut -b 3- > ".($argv[2]?$argv[2]:"")."\n"; + print "diff ".($argv[2]?$argv[2]:"").".tmp ".$filetosave." | grep \< | cut -b 3- > ".($argv[2]?$argv[2]:""); + if (($argv[2]?$argv[2]:"")) print "; rm ".($argv[2]?$argv[2]:"").".tmp;\n"; } } diff --git a/htdocs/expensereport/tpl/linkedobjectblock.tpl.php b/htdocs/expensereport/tpl/linkedobjectblock.tpl.php index 743137ded67..b31b90e5a88 100644 --- a/htdocs/expensereport/tpl/linkedobjectblock.tpl.php +++ b/htdocs/expensereport/tpl/linkedobjectblock.tpl.php @@ -28,8 +28,6 @@ global $user; $langs = $GLOBALS['langs']; $linkedObjectBlock = $GLOBALS['linkedObjectBlock']; -$langs->load("expensereports"); - $var=true; $total=0; foreach($linkedObjectBlock as $key => $objectlink) diff --git a/htdocs/langs/en_US/bookmarks.lang b/htdocs/langs/en_US/bookmarks.lang index 19e383b2b3e..e529130e1bc 100644 --- a/htdocs/langs/en_US/bookmarks.lang +++ b/htdocs/langs/en_US/bookmarks.lang @@ -16,4 +16,3 @@ SetHereATitleForLink=Set a title for the bookmark UseAnExternalHttpLinkOrRelativeDolibarrLink=Use an external http URL or a relative Dolibarr URL ChooseIfANewWindowMustBeOpenedOnClickOnBookmark=Choose if linked page must open in new window or not BookmarksManagement=Bookmarks management -ListOfBookmarks=List of bookmarks diff --git a/htdocs/langs/en_US/boxes.lang b/htdocs/langs/en_US/boxes.lang index bbb03afa4f2..ff20b6afb1c 100644 --- a/htdocs/langs/en_US/boxes.lang +++ b/htdocs/langs/en_US/boxes.lang @@ -12,45 +12,27 @@ BoxLastProspects=Latest modified prospects BoxLastCustomers=Latest modified customers BoxLastSuppliers=Latest modified suppliers BoxLastCustomerOrders=Latest customer orders -BoxLastValidatedCustomerOrders=Latest validated customer orders -BoxLastBooks=Latest bookmarks BoxLastActions=Latest actions BoxLastContracts=Latest contracts BoxLastContacts=Latest contacts/addresses BoxLastMembers=Latest members BoxFicheInter=Latest interventions BoxCurrentAccounts=Open accounts balance -BoxSalesTurnover=Sales turnover -BoxTotalUnpaidCustomerBills=Total unpaid customer's invoices -BoxTotalUnpaidSuppliersBills=Total unpaid supplier's invoices -BoxTitleLastBooks=Latest %s recorded bookmarks -BoxTitleNbOfCustomers=Number of clients BoxTitleLastRssInfos=Latest %s news from %s BoxTitleLastProducts=Latest %s modified products/services BoxTitleProductsAlertStock=Products in stock alert -BoxTitleLastCustomerOrders=Latest %s customer orders -BoxTitleLastModifiedCustomerOrders=Latest %s modified customer orders BoxTitleLastSuppliers=Latest %s recorded suppliers -BoxTitleLastCustomers=Latest %s recorded customers BoxTitleLastModifiedSuppliers=Latest %s modified suppliers BoxTitleLastModifiedCustomers=Latest %s modified customers BoxTitleLastCustomersOrProspects=Latest %s customers or prospects -BoxTitleLastPropals=Latest %s proposals -BoxTitleLastModifiedPropals=Latest %s modified proposals BoxTitleLastCustomerBills=Latest %s customer's invoices -BoxTitleLastModifiedCustomerBills=Latest %s modified customer invoices BoxTitleLastSupplierBills=Latest %s supplier's invoices -BoxTitleLastModifiedSupplierBills=Latest %s modified supplier invoices BoxTitleLastModifiedProspects=Latest %s modified prospects -BoxTitleLastProductsInContract=Latest %s products/services in a contract BoxTitleLastModifiedMembers=Latest %s members BoxTitleLastFicheInter=Latest %s modified interventions BoxTitleOldestUnpaidCustomerBills=Oldest %s unpaid customer invoices BoxTitleOldestUnpaidSupplierBills=Oldest %s unpaid supplier invoices BoxTitleCurrentAccounts=Open accounts balances -BoxTitleSalesTurnover=Sales turnover -BoxTitleTotalUnpaidCustomerBills=Unpaid customer invoices -BoxTitleTotalUnpaidSuppliersBills=Unpaid supplier invoices BoxTitleLastModifiedContacts=Latest %s modified contacts/addresses BoxMyLastBookmarks=My latest %s bookmarks BoxOldestExpiredServices=Oldest active expired services @@ -73,7 +55,6 @@ NoRecordedOrders=No recorded customer's orders NoRecordedProposals=No recorded proposals NoRecordedInvoices=No recorded customer's invoices NoUnpaidCustomerBills=No unpaid customer's invoices -NoRecordedSupplierInvoices=No recorded supplier's invoices NoUnpaidSupplierBills=No unpaid supplier's invoices NoModifiedSupplierBills=No recorded supplier's invoices NoRecordedProducts=No recorded products/services @@ -82,8 +63,6 @@ NoContractedProducts=No products/services contracted NoRecordedContracts=No recorded contracts NoRecordedInterventions=No recorded interventions BoxLatestSupplierOrders=Latest supplier orders -BoxTitleLatestSupplierOrders=Latest %s supplier orders -BoxTitleLatestModifiedSupplierOrders=Latest %s modified supplier orders NoSupplierOrder=No recorded supplier order BoxCustomersInvoicesPerMonth=Customer invoices per month BoxSuppliersInvoicesPerMonth=Supplier invoices per month diff --git a/htdocs/langs/en_US/cashdesk.lang b/htdocs/langs/en_US/cashdesk.lang index f3b5f77f296..7b80d1a6f47 100644 --- a/htdocs/langs/en_US/cashdesk.lang +++ b/htdocs/langs/en_US/cashdesk.lang @@ -1,8 +1,6 @@ # Language file - Source file is en_US - cashdesk CashDeskMenu=Point of sale CashDesk=Point of sale -CashDesks=Point of sales -CashDeskBank=Bank account CashDeskBankCash=Bank account (cash) CashDeskBankCB=Bank account (card) CashDeskBankCheque=Bank account (cheque) @@ -12,7 +10,6 @@ CashDeskProducts=Products CashDeskStock=Stock CashDeskOn=on CashDeskThirdParty=Third party -CashdeskDashboard=Point of sale access ShoppingCart=Shopping cart NewSell=New sell BackOffice=Back office @@ -22,7 +19,6 @@ SellFinished=Sell finished PrintTicket=Print ticket NoProductFound=No article found ProductFound=product found -ProductsFound=products found NoArticle=No article Identification=Identification Article=Article @@ -30,8 +26,6 @@ Difference=Difference TotalTicket=Total ticket NoVAT=No VAT for this sale Change=Excess received -CalTip=Click to view the calendar -CashDeskSetupStock=You ask to decrease stock on invoice creation but warehouse for this is was not defined
Change stock module setup, or choose a warehouse BankToPay=Charge Account ShowCompany=Show company ShowStock=Show warehouse diff --git a/htdocs/langs/en_US/categories.lang b/htdocs/langs/en_US/categories.lang index a3cfb6828a1..976c8a50d93 100644 --- a/htdocs/langs/en_US/categories.lang +++ b/htdocs/langs/en_US/categories.lang @@ -2,7 +2,6 @@ Rubrique=Tag/Category Rubriques=Tags/Categories categories=tags/categories -TheCategorie=The tag/category NoCategoryYet=No tag/category of this type created In=In AddIn=Add in @@ -12,65 +11,38 @@ CategoriesArea=Tags/Categories area ProductsCategoriesArea=Products/Services tags/categories area SuppliersCategoriesArea=Suppliers tags/categories area CustomersCategoriesArea=Customers tags/categories area -ThirdPartyCategoriesArea=Third parties tags/categories area MembersCategoriesArea=Members tags/categories area ContactsCategoriesArea=Contacts tags/categories area AccountsCategoriesArea=Accounts tags/categories area -MainCats=Main tags/categories SubCats=Subcategories -CatStatistics=Statistics CatList=List of tags/categories -AllCats=All tags/categories -ViewCat=View tag/category -NewCat=Add tag/category NewCategory=New tag/category ModifCat=Modify tag/category CatCreated=Tag/category created CreateCat=Create tag/category CreateThisCat=Create this tag/category -ValidateFields=Validate the fields NoSubCat=No subcategory. SubCatOf=Subcategory FoundCats=Found tags/categories -FoundCatsForName=Tags/categories found for the name : -FoundSubCatsIn=Subcategories found in the tag/category -ErrSameCatSelected=You selected the same tag/category several times -ErrForgotCat=You forgot to choose the tag/category -ErrForgotField=You forgot to inform the fields -ErrCatAlreadyExists=This name is already used -AddProductToCat=Add this product to a tag/category? ImpossibleAddCat=Impossible to add the tag/category %s -ImpossibleAssociateCategory=Impossible to associate the tag/category to WasAddedSuccessfully=%s was added successfully. ObjectAlreadyLinkedToCategory=Element is already linked to this tag/category. -CategorySuccessfullyCreated=This tag/category %s has been added successfully. ProductIsInCategories=Product/service is linked to following tags/categories -SupplierIsInCategories=Third party is linked to following suppliers tags/categories CompanyIsInCustomersCategories=This third party is linked to following customers/prospects tags/categories CompanyIsInSuppliersCategories=This third party is linked to following suppliers tags/categories MemberIsInCategories=This member is linked to following members tags/categories ContactIsInCategories=This contact is linked to following contacts tags/categories ProductHasNoCategory=This product/service is not in any tags/categories -SupplierHasNoCategory=This supplier is not in any tags/categories CompanyHasNoCategory=This thirdparty is not in any tags/categories MemberHasNoCategory=This member is not in any tags/categories ContactHasNoCategory=This contact is not in any tags/categories -AccountHasNoCategory=This account is not in any tags/categories ClassifyInCategory=Add to tag/category -NoneCategory=None NotCategorized=Without tag/category CategoryExistsAtSameLevel=This category already exists with this ref -ReturnInProduct=Back to product/service card -ReturnInSupplier=Back to supplier card -ReturnInCompany=Back to customer/prospect card -ContentsVisibleByAll=The contents will be visible by all ContentsVisibleByAllShort=Contents visible by all ContentsNotVisibleByAllShort=Contents not visible by all -CategoriesTree=Tags/categories tree DeleteCategory=Delete tag/category ConfirmDeleteCategory=Are you sure you want to delete this tag/category ? -RemoveFromCategory=Remove link with tag/category -RemoveFromCategoryConfirm=Are you sure you want to unlink the transaction from the tag/category ? NoCategoriesDefined=No tag/category defined SuppliersCategoryShort=Suppliers tag/category CustomersCategoryShort=Customers tag/category @@ -90,10 +62,6 @@ ThisCategoryHasNoCustomer=This category does not contain any customer. ThisCategoryHasNoMember=This category does not contain any member. ThisCategoryHasNoContact=This category does not contain any contact. ThisCategoryHasNoAccount=This category does not contain any account. -AssignedToCustomer=Assigned to a customer -AssignedToTheCustomer=Assigned to the customer -InternalCategory=Internal category -CategoryContents=Tag/category contents CategId=Tag/category id CatSupList=List of supplier tags/categories CatCusList=List of customer/prospect tags/categories @@ -103,7 +71,6 @@ CatContactList=List of contact tags/categories CatSupLinks=Links between suppliers and tags/categories CatCusLinks=Links between customers/prospects and tags/categories CatProdLinks=Links between products/services and tags/categories -CatMemberLinks=Links between members and tags/categories DeleteFromCat=Remove from tags/category ExtraFieldsCategories=Complementary attributes CategoriesSetup=Tags/categories setup diff --git a/htdocs/langs/en_US/commercial.lang b/htdocs/langs/en_US/commercial.lang index 03798ed96aa..825f429a3a2 100644 --- a/htdocs/langs/en_US/commercial.lang +++ b/htdocs/langs/en_US/commercial.lang @@ -1,8 +1,6 @@ # Dolibarr language file - Source file is en_US - commercial Commercial=Commercial CommercialArea=Commercial area -CommercialCard=Commercial card -CustomerArea=Customers area Customer=Customer Customers=Customers Prospect=Prospect @@ -12,13 +10,10 @@ NewAction=New event AddAction=Create event AddAnAction=Create an event AddActionRendezVous=Create a Rendez-vous event -Rendez-Vous=Rendezvous ConfirmDeleteAction=Are you sure you want to delete this event ? CardAction=Event card -PercentDone=Percentage complete ActionOnCompany=Related company ActionOnContact=Related contact -TaskRDV=Meetings TaskRDVWith=Meeting with %s ShowTask=Show task ShowAction=Show event @@ -28,30 +23,21 @@ SalesRepresentative=Sales representative SalesRepresentatives=Sales representatives SalesRepresentativeFollowUp=Sales representative (follow-up) SalesRepresentativeSignature=Sales representative (signature) -CommercialInterlocutor=Commercial interlocutor -ErrorWrongCode=Wrong code NoSalesRepresentativeAffected=No particular sales representative assigned ShowCustomer=Show customer ShowProspect=Show prospect ListOfProspects=List of prospects ListOfCustomers=List of customers LastDoneTasks=Latest %s completed tasks -LastRecordedTasks=Latest recorded tasks LastActionsToDo=Oldest %s not completed actions -DoneAndToDoActionsFor=Completed and To do events for %s DoneAndToDoActions=Completed and To do events DoneActions=Completed events -DoneActionsFor=Completed events for %s ToDoActions=Incomplete events -ToDoActionsFor=Incomplete events for %s SendPropalRef=Submission of commercial proposal %s SendOrderRef=Submission of order %s StatusNotApplicable=Not applicable StatusActionToDo=To do StatusActionDone=Complete -MyActionsAsked=Events I have recorded -MyActionsToDo=Events I have to do -MyActionsDone=Events assigned to me StatusActionInProcess=In process TasksHistoryForThisContact=Events for this contact LastProspectDoNotContact=Do not contact @@ -59,13 +45,8 @@ LastProspectNeverContacted=Never contacted LastProspectToContact=To contact LastProspectContactInProcess=Contact in process LastProspectContactDone=Contact done -DateActionPlanned=Date event planned for -DateActionDone=Date event done -ActionAskedBy=Event reported by ActionAffectedTo=Event assigned to ActionDoneBy=Event done by -ActionUserAsk=Reported by -ErrorStatusCantBeZeroIfStarted=If field 'Date done' is filled, action is started (or finished), so field 'Status' can't be 0%%. ActionAC_TEL=Phone call ActionAC_FAX=Send fax ActionAC_PROP=Send proposal by mail @@ -85,13 +66,6 @@ ActionAC_OTH_AUTO=Other (automatically inserted events) ActionAC_MANUAL=Manually inserted events ActionAC_AUTO=Automatically inserted events Stats=Sales statistics -CAOrder=Sales volume (validated orders) -FromTo=from %s to %s -MargeOrder=Margins (validated orders) -RecapAnnee=Summary of the year -NoData=There is no data StatusProsp=Prospect status DraftPropals=Draft commercial proposals -SearchPropal=Search a commercial proposal -CommercialDashboard=Commercial summary NoLimit=No limit diff --git a/htdocs/langs/en_US/companies.lang b/htdocs/langs/en_US/companies.lang index bd57c1226dd..f13a2ec02ec 100644 --- a/htdocs/langs/en_US/companies.lang +++ b/htdocs/langs/en_US/companies.lang @@ -1,33 +1,25 @@ # Dolibarr language file - Source file is en_US - companies ErrorCompanyNameAlreadyExists=Company name %s already exists. Choose another one. -ErrorPrefixAlreadyExists=Prefix %s already exists. Choose another one. ErrorSetACountryFirst=Set the country first SelectThirdParty=Select a third party -DeleteThirdParty=Delete a third party ConfirmDeleteCompany=Are you sure you want to delete this company and all inherited information ? DeleteContact=Delete a contact/address ConfirmDeleteContact=Are you sure you want to delete this contact and all inherited information ? MenuNewThirdParty=New third party -MenuNewCompany=New company MenuNewCustomer=New customer MenuNewProspect=New prospect MenuNewSupplier=New supplier MenuNewPrivateIndividual=New private individual -MenuSocGroup=Groups NewCompany=New company (prospect, customer, supplier) NewThirdParty=New third party (prospect, customer, supplier) -NewSocGroup=New company group -NewPrivateIndividual=New private individual (prospect, customer, supplier) CreateDolibarrThirdPartySupplier=Create a third party (supplier) ProspectionArea=Prospection area -SocGroup=Group of companies IdThirdParty=Id third party IdCompany=Company Id IdContact=Contact Id Contacts=Contacts/Addresses ThirdPartyContacts=Third party contacts ThirdPartyContact=Third party contact/address -StatusContactValidated=Status of contact/address Company=Company CompanyName=Company name AliasNames=Alias name (commercial, trademark, ...) @@ -37,7 +29,6 @@ CountryIsInEEC=Country is inside European Economic Community ThirdPartyName=Third party name ThirdParty=Third party ThirdParties=Third parties -ThirdPartyAll=Third parties (all) ThirdPartyProspects=Prospects ThirdPartyProspectsStats=Prospects ThirdPartyCustomers=Customers @@ -49,9 +40,7 @@ Company/Fundation=Company/Foundation Individual=Private individual ToCreateContactWithSameName=Will create automatically a physical contact with same informations ParentCompany=Parent company -Subsidiary=Subsidiary Subsidiaries=Subsidiaries -NoSubsidiary=No subsidiary ReportByCustomers=Report by customers ReportByQuarter=Report by rate CivilityCode=Civility code @@ -60,7 +49,6 @@ Lastname=Last name Firstname=First name PostOrFunction=Post/Function UserTitle=Title -Surname=Surname/Pseudo Address=Address State=State/Province StateShort=State @@ -86,7 +74,6 @@ DefaultLang=Language by default VATIsUsed=VAT is used VATIsNotUsed=VAT is not used CopyAddressFromSoc=Fill address with thirdparty address -NoEmailDefined=There is no email defined ##### Local Taxes ##### LocalTax1IsUsed=Use second tax LocalTax1IsUsedES= RE is used @@ -98,8 +85,6 @@ LocalTax1ES=RE LocalTax2ES=IRPF TypeLocaltax1ES=RE Type TypeLocaltax2ES=IRPF Type -TypeES=Type -ThirdPartyEMail=%s WrongCustomerCode=Customer code invalid WrongSupplierCode=Supplier code invalid CustomerCodeModel=Customer code model @@ -252,16 +237,13 @@ ProfId5RU=- ProfId6RU=- VATIntra=VAT number VATIntraShort=VAT number -VATIntraVeryShort=VAT VATIntraSyntaxIsValid=Syntax is valid VATIntraValueIsValid=Value is valid ProspectCustomer=Prospect / Customer Prospect=Prospect CustomerCard=Customer Card Customer=Customer -CustomerDiscount=Customer Discount CustomerRelativeDiscount=Relative customer discount -CustomerAbsoluteDiscount=Absolute customer discount CustomerRelativeDiscountShort=Relative discount CustomerAbsoluteDiscountShort=Absolute discount CompanyHasRelativeDiscount=This customer has a default discount of %s%% @@ -271,11 +253,8 @@ CompanyHasCreditNote=This customer still has credit notes for %s %s CompanyHasNoAbsoluteDiscount=This customer has no discount credit available CustomerAbsoluteDiscountAllUsers=Absolute discounts (granted by all users) CustomerAbsoluteDiscountMy=Absolute discounts (granted by yourself) -DefaultDiscount=Default discount -AvailableGlobalDiscounts=Absolute discounts available DiscountNone=None Supplier=Supplier -CompanyList=Company's list AddContact=Create contact AddContactAddress=Create contact/address EditContact=Edit contact @@ -285,7 +264,6 @@ ContactsAddresses=Contacts/Addresses NoContactDefinedForThirdParty=No contact defined for this third party NoContactDefined=No contact defined DefaultContact=Default contact/address -AddCompany=Create company AddThirdParty=Create third party DeleteACompany=Delete a company PersonalInformations=Personal data @@ -294,23 +272,16 @@ CustomerCode=Customer code SupplierCode=Supplier code CustomerCodeShort=Customer code SupplierCodeShort=Supplier code -CustomerAccount=Customer account -SupplierAccount=Supplier account CustomerCodeDesc=Customer code, unique for all customers SupplierCodeDesc=Supplier code, unique for all suppliers RequiredIfCustomer=Required if third party is a customer or prospect RequiredIfSupplier=Required if third party is a supplier ValidityControledByModule=Validity controled by module ThisIsModuleRules=This is rules for this module -LastProspect=Latest ProspectToContact=Prospect to contact CompanyDeleted=Company "%s" deleted from database. ListOfContacts=List of contacts/addresses ListOfContactsAddresses=List of contacts/adresses -ListOfProspectsContacts=List of prospect contacts -ListOfCustomersContacts=List of customer contacts -ListOfSuppliersContacts=List of supplier contacts -ListOfCompanies=List of companies ListOfThirdParties=List of third parties ShowCompany=Show thirdparty ShowContact=Show contact @@ -322,19 +293,15 @@ ContactForProposals=Proposal's contact ContactForContracts=Contract's contact ContactForInvoices=Invoice's contact NoContactForAnyOrder=This contact is not a contact for any order -NoContactForAnyOrderOrShipment=This contact is not a contact for any order or shipment NoContactForAnyProposal=This contact is not a contact for any commercial proposal NoContactForAnyContract=This contact is not a contact for any contract NoContactForAnyInvoice=This contact is not a contact for any invoice NewContact=New contact NewContactAddress=New contact/address -LastContacts=Latest contacts MyContacts=My contacts -Phones=Phones Capital=Capital CapitalOf=Capital of %s EditCompany=Edit company -EditDeliveryAddress=Edit delivery address ThisUserIsNot=This user is not a prospect, customer nor supplier VATIntraCheck=Check VATIntraCheckDesc=The link %s allows to ask the european VAT checker service. An external internet access from server is required for this service to work. @@ -379,10 +346,7 @@ ChangeToContact=Change status to 'To be contacted' ChangeContactInProcess=Change status to 'Contact in process' ChangeContactDone=Change status to 'Contact done' ProspectsByStatus=Prospects by status -BillingContact=Billing contact -NoRIB=No BAN defined NoParentCompany=None -ExportImport=Import-Export ExportCardToFormat=Export card to format ContactNotLinkedToCompany=Contact not linked to any third party DolibarrLogin=Dolibarr login @@ -394,24 +358,14 @@ ImportDataset_company_2=Contacts/Addresses (of thirdparties or not) and attribut ImportDataset_company_3=Bank details ImportDataset_company_4=Third parties/Sales representatives (Affect sales representatives users to companies) PriceLevel=Price level -DeliveriesAddress=Delivery addresses DeliveryAddress=Delivery address -DeliveryAddressLabel=Delivery address label -DeleteDeliveryAddress=Delete a delivery address -ConfirmDeleteDeliveryAddress=Are you sure you want to delete this delivery address ? -NewDeliveryAddress=New delivery address -AddDeliveryAddress=Add delivery address AddAddress=Add address -NoOtherDeliveryAddress=No alternative delivery address defined SupplierCategory=Supplier category JuridicalStatus200=Independent DeleteFile=Delete file ConfirmDeleteFile=Are you sure you want to delete this file? AllocateCommercial=Assigned to sales representative -SelectCountry=Select a country -SelectCompany=Select a third party Organization=Organization -AutomaticallyGenerated=Automatically generated FiscalYearInformation=Information on the fiscal year FiscalMonthStart=Starting month of the fiscal year YouMustCreateContactFirst=To be able to add email notifications, you must first insert email contacts for the third party @@ -423,7 +377,6 @@ LastModifiedThirdParties=Latest %s modified third parties UniqueThirdParties=Total of unique third parties InActivity=Open ActivityCeased=Closed -ActivityStateFilter=Activity status ProductsIntoElements=List of products/services into %s CurrentOutstandingBill=Current outstanding bill OutstandingBill=Max. for outstanding bill @@ -431,15 +384,10 @@ OutstandingBillReached=Max. for outstanding bill reached MonkeyNumRefModelDesc=Return numero with format %syymm-nnnn for customer code and %syymm-nnnn for supplier code where yy is year, mm is month and nnnn is a sequence with no break and no return to 0. LeopardNumRefModelDesc=The code is free. This code can be modified at any time. ManagingDirectors=Manager(s) name (CEO, director, president...) -SearchThirdparty=Search third party -SearchContact=Search contact MergeOriginThirdparty=Duplicate third party (third party you want to delete) MergeThirdparties=Merge third parties ConfirmMergeThirdparties=Are you sure you want to merge this third party into the current one ? All linked objects (invoices, orders, ...) will be moved to current third party so you will be able to delete the duplicate one. ThirdpartiesMergeSuccess=Thirdparties have been merged -ErrorThirdpartiesMerge=There was an error when deleting the thirdparties. Please check the log. Changes have been reverted. SaleRepresentativeLogin=Login of sales representative SaleRepresentativeFirstname=Firstname of sales representative SaleRepresentativeLastname=Lastname of sales representative -ModelModulesContact=Document Models of contact -ModelModulesThirdParties=Document models of third party diff --git a/htdocs/langs/en_US/compta.lang b/htdocs/langs/en_US/compta.lang index c2893c0dbcc..66869d57e3f 100644 --- a/htdocs/langs/en_US/compta.lang +++ b/htdocs/langs/en_US/compta.lang @@ -1,7 +1,4 @@ # Dolibarr language file - Source file is en_US - compta -Accountancy=Accountancy -AccountancyCard=Accountancy card -Treasury=Treasury MenuFinancial=Financial TaxModuleSetupToModifyRules=Go to Taxes module setup to modify rules for calculation TaxModuleSetupToModifyRulesLT=Go to Company setup to modify rules for calculation @@ -15,13 +12,9 @@ VATReportBuildWithOptionDefinedInModule=Amounts shown here are calculated using LTReportBuildWithOptionDefinedInModule=Amounts shown here are calculated using rules defined by Company setup. Param=Setup RemainingAmountPayment=Amount payment remaining : -AmountToBeCharged=Total amount to pay : -AccountsGeneral=Accounts Account=Account -Accounts=Accounts Accountparent=Account parent Accountsparent=Accounts parent -BillsForSuppliers=Bills for suppliers Income=Income Outcome=Expense ReportInOut=Income / Expense @@ -34,8 +27,6 @@ Balance=Balance Debit=Debit Credit=Credit Piece=Accounting Doc. -Withdrawal=Withdrawal -Withdrawals=Withdrawals AmountHTVATRealReceived=Net collected AmountHTVATRealPaid=Net paid VATToPay=VAT sells @@ -45,7 +36,6 @@ VATSummary=VAT Balance LT2SummaryES=IRPF Balance LT1SummaryES=RE Balance VATPaid=VAT paid -SalaryPaid=Salary paid LT2PaidES=IRPF Paid LT1PaidES=RE Paid LT2CustomerES=IRPF sales @@ -54,36 +44,27 @@ LT1CustomerES=RE sales LT1SupplierES=RE purchases VATCollected=VAT collected ToPay=To pay -ToGet=To get back SpecialExpensesArea=Area for all special payments -TaxAndDividendsArea=Sale taxes, social/fiscal taxes contributions and dividends area SocialContribution=Social or fiscal tax SocialContributions=Social or fiscal taxes SocialContributionsDeductibles=Deductible social or fiscal taxes SocialContributionsNondeductibles=Nondeductible social or fiscal taxes MenuSpecialExpenses=Special expenses MenuTaxAndDividends=Taxes and dividends -MenuSalaries=Salaries MenuSocialContributions=Social/fiscal taxes MenuNewSocialContribution=New social/fiscal tax NewSocialContribution=New social/fiscal tax ContributionsToPay=Social/fiscal taxes to pay AccountancyTreasuryArea=Accountancy/Treasury area -AccountancySetup=Accountancy setup NewPayment=New payment Payments=Payments PaymentCustomerInvoice=Customer invoice payment -PaymentSupplierInvoice=Supplier invoice payment PaymentSocialContribution=Social/fiscal tax payment PaymentVat=VAT payment -PaymentSalary=Salary payment ListPayment=List of payments -ListOfPayments=List of payments ListOfCustomerPayments=List of customer payments -ListOfSupplierPayments=List of supplier payments DateStartPeriod=Date start period DateEndPeriod=Date end period -NewVATPayment=New VAT payment newLT1Payment=New tax 2 payment newLT2Payment=New tax 3 payment LT1Payment=Tax 2 payment @@ -103,12 +84,10 @@ Refund=Refund SocialContributionsPayments=Social/fiscal taxes payments ShowVatPayment=Show VAT payment TotalToPay=Total to pay -TotalVATReceived=Total VAT received CustomerAccountancyCode=Customer accountancy code SupplierAccountancyCode=Supplier accountancy code CustomerAccountancyCodeShort=Cust. account. code SupplierAccountancyCodeShort=Sup. account. code -AccountNumberShort=Account number AccountNumber=Account number NewAccount=New account SalesTurnover=Sales turnover @@ -116,9 +95,6 @@ SalesTurnoverMinimum=Minimum sales turnover ByExpenseIncome=By expenses & incomes ByThirdParties=By third parties ByUserAuthorOfInvoice=By invoice author -AccountancyExport=Accountancy export -ErrorWrongAccountancyCodeForCompany=Bad customer accountancy code for %s -SuppliersProductsSellSalesTurnover=The generated turnover by the sales of supplier's products. CheckReceipt=Check deposit CheckReceiptShort=Check deposit LastCheckReceiptShort=Latest %s check receipts @@ -189,16 +165,12 @@ DescSellsJournal=Sales Journal DescPurchasesJournal=Purchases Journal InvoiceRef=Invoice ref. CodeNotDef=Not defined -AddRemind=Dispatch available amount -RemainToDivide= Remain to dispatch : WarningDepositsNotIncluded=Deposits invoices are not included in this version with this accountancy module. DatePaymentTermCantBeLowerThanObjectDate=Payment term date can't be lower than object date. Pcg_version=Pcg version Pcg_type=Pcg type Pcg_subtype=Pcg subtype InvoiceLinesToDispatch=Invoice lines to dispatch -InvoiceDispatched=Dispatched invoices -AccountancyDashboard=Accountancy summary ByProductsAndServices=By products and services RefExt=External ref ToCreateAPredefinedInvoice=To create a template invoice, create a standard invoice, then, without validating it, click onto button "%s". diff --git a/htdocs/langs/en_US/contracts.lang b/htdocs/langs/en_US/contracts.lang index 620d212c386..bb4bb033b03 100644 --- a/htdocs/langs/en_US/contracts.lang +++ b/htdocs/langs/en_US/contracts.lang @@ -1,12 +1,9 @@ # Dolibarr language file - Source file is en_US - contracts ContractsArea=Contracts area ListOfContracts=List of contracts -LastModifiedContracts=Latest %s modified contracts AllContracts=All contracts ContractCard=Contract card -ContractStatus=Contract status ContractStatusNotRunning=Not running -ContractStatusRunning=Running ContractStatusDraft=Draft ContractStatusValidated=Validated ContractStatusClosed=Closed @@ -17,7 +14,6 @@ ServiceStatusNotLateShort=Not expired ServiceStatusLate=Running, expired ServiceStatusLateShort=Expired ServiceStatusClosed=Closed -ServicesLegend=Services legend Contracts=Contracts ContractsSubscriptions=Contracts/Subscriptions ContractsAndLine=Contracts and line of contracts @@ -33,7 +29,6 @@ MenuClosedServices=Closed services NewContract=New contract NewContractSubscription=New contract/subscription AddContract=Create contract -SearchAContract=Search a contract DeleteAContract=Delete a contract CloseAContract=Close a contract ConfirmDeleteAContract=Are you sure you want to delete this contract and all its services ? @@ -46,22 +41,16 @@ ConfirmActivateService=Are you sure you want to activate this service with date RefContract=Contract reference DateContract=Contract date DateServiceActivate=Service activation date -DateServiceUnactivate=Service deactivation date -DateServiceStart=Date for beginning of service -DateServiceEnd=Date for end of service ShowContract=Show contract ListOfServices=List of services ListOfInactiveServices=List of not active services ListOfExpiredServices=List of expired active services ListOfClosedServices=List of closed services -ListOfRunningContractsLines=List of running contract lines ListOfRunningServices=List of running services NotActivatedServices=Inactive services (among validated contracts) BoardNotActivatedServices=Services to activate among validated contracts LastContracts=Latest %s contracts -LastActivatedServices=Latest %s activated services LastModifiedServices=Latest %s modified services -EditServiceLine=Edit service line ContractStartDate=Start date ContractEndDate=End date DateStartPlanned=Planned start date @@ -72,10 +61,7 @@ DateStartReal=Real start date DateStartRealShort=Real start date DateEndReal=Real end date DateEndRealShort=Real end date -NbOfServices=Nb of services CloseService=Close service -ServicesNomberShort=%s service(s) -RunningServices=Running services BoardRunningServices=Expired running services ServiceStatus=Status of service DraftContracts=Drafts contracts @@ -88,7 +74,6 @@ ConfirmMoveToAnotherContract=I choosed new target contract and confirm I want to ConfirmMoveToAnotherContractQuestion=Choose in which existing contract (of same third party), you want to move this service to ? PaymentRenewContractId=Renew contract line (number %s) ExpiredSince=Expiration date -RelatedContracts=Related contracts NoExpiredServices=No expired active services ListOfServicesToExpireWithDuration=List of Services to expire in %s days ListOfServicesToExpireWithDurationNeg=List of Services expired from more than %s days @@ -104,4 +89,3 @@ TypeContact_contrat_internal_SALESREPFOLL=Sales representative following-up cont TypeContact_contrat_external_BILLING=Billing customer contact TypeContact_contrat_external_CUSTOMER=Follow-up customer contact TypeContact_contrat_external_SALESREPSIGN=Signing contract customer contact -Error_CONTRACT_ADDON_NotDefined=Constant CONTRACT_ADDON not defined diff --git a/htdocs/langs/en_US/cron.lang b/htdocs/langs/en_US/cron.lang index b7f68681d30..d52433ed267 100644 --- a/htdocs/langs/en_US/cron.lang +++ b/htdocs/langs/en_US/cron.lang @@ -1,8 +1,5 @@ # Dolibarr language file - Source file is en_US - cron # About page -About = About -CronAbout = About Cron -CronAboutPage = Cron about page # Right Permission23101 = Read Scheduled job Permission23102 = Create/update Scheduled job @@ -18,15 +15,10 @@ CronExplainHowToRunUnix=On Unix environment you should use the following crontab CronExplainHowToRunWin=On Microsoft(tm) Windows environement you can use Scheduled task tools to run the command line each 5 minutes CronMethodDoesNotExists=Class %s does not contains any method %s # Menu -CronJobs=Scheduled jobs -CronListActive=List of enabled/scheduled jobs -CronListInactive=List of disabled jobs EnabledAndDisabled=Enabled and disabled # Page list -CronDateLastRun=Last run CronLastOutput=Last run output CronLastResult=Last result code -CronListOfCronJobs=List of scheduled jobs CronCommand=Command CronList=Scheduled jobs CronDelete=Delete scheduled jobs @@ -34,7 +26,6 @@ CronConfirmDelete=Are you sure you want to delete these scheduled jobs ? CronExecute=Launch scheduled jobs CronConfirmExecute=Are you sure you want to execute these scheduled jobs now ? CronInfo=Scheduled job module allow to execute job that have been planned -CronWaitingJobs=Waiting jobs CronTask=Job CronNone=None CronDtStart=Not before @@ -46,10 +37,6 @@ CronFrequency=Frequency CronClass=Class CronMethod=Method CronModule=Module -CronAction=Action -CronStatus=Status -CronStatusActive=Enabled -CronStatusInactive=Disabled CronNoJobs=No jobs registered CronPriority=Priority CronLabel=Description @@ -59,7 +46,6 @@ CronEach=Every JobFinished=Job launched and finished #Page card CronAdd= Add jobs -CronHourStart= Start hour and date of job CronEvery=Execute job each CronObject=Instance/Object to create CronArgs=Parameters @@ -81,12 +67,10 @@ CronCommandHelp=The system command line to execute. CronCreateJob=Create new Scheduled Job CronFrom=From # Info -CronInfoPage=Information # Common CronType=Job type CronType_method=Call method of a Dolibarr Class CronType_command=Shell command -CronMenu=Cron CronCannotLoadClass=Cannot load class %s or object %s UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Admin tools - Scheduled jobs" to see and edit scheduled jobs. JobDisabled=Job disabled diff --git a/htdocs/langs/en_US/deliveries.lang b/htdocs/langs/en_US/deliveries.lang index d4dfcbd81b8..4242cc7ea81 100644 --- a/htdocs/langs/en_US/deliveries.lang +++ b/htdocs/langs/en_US/deliveries.lang @@ -1,15 +1,11 @@ # Dolibarr language file - Source file is en_US - deliveries Delivery=Delivery DeliveryRef=Ref Delivery -Deliveries=Deliveries DeliveryCard=Delivery card DeliveryOrder=Delivery order -DeliveryOrders=Delivery orders DeliveryDate=Delivery date -DeliveryDateShort=Deliv. date CreateDeliveryOrder=Generate delivery order DeliveryStateSaved=Delivery state saved -QtyDelivered=Qty delivered SetDeliveryDate=Set shipping date ValidateDeliveryReceipt=Validate delivery receipt ValidateDeliveryReceiptConfirm=Are you sure you want to validate this delivery receipt ? @@ -31,4 +27,4 @@ Recipient=Recipient ErrorStockIsNotEnough=There's not enough stock Shippable=Shippable NonShippable=Not Shippable -ShowReceiving=Show delivery receipt \ No newline at end of file +ShowReceiving=Show delivery receipt diff --git a/htdocs/langs/en_US/donations.lang b/htdocs/langs/en_US/donations.lang index 24ce0cc17b0..89f9c1857f4 100644 --- a/htdocs/langs/en_US/donations.lang +++ b/htdocs/langs/en_US/donations.lang @@ -3,19 +3,12 @@ Donation=Donation Donations=Donations DonationRef=Donation ref. Donor=Donor -Donors=Donors AddDonation=Create a donation NewDonation=New donation DeleteADonation=Delete a donation ConfirmDeleteADonation=Are you sure you want to delete this donation ? ShowDonation=Show donation -DonationPromise=Gift promise -PromisesNotValid=Not validated promises -PromisesValid=Validated promises -DonationsPaid=Donations paid -DonationsReceived=Donations received PublicDonation=Public donation -DonationsNumber=Donation number DonationsArea=Donations area DonationStatusPromiseNotValidated=Draft promise DonationStatusPromiseValidated=Validated promise @@ -27,12 +20,9 @@ DonationTitle=Donation receipt DonationDatePayment=Payment date ValidPromess=Validate promise DonationReceipt=Donation receipt -BuildDonationReceipt=Build receipt DonationsModels=Documents models for donation receipts LastModifiedDonations=Latest %s modified donations -SearchADonation=Search a donation DonationRecipient=Donation recipient -ThankYou=Thank You IConfirmDonationReception=The recipient declare reception, as a donation, of the following amount MinimumAmount=Minimum amount is %s FreeTextOnDonations=Free text to show in footer diff --git a/htdocs/langs/en_US/ecm.lang b/htdocs/langs/en_US/ecm.lang index d5d69daa7cf..1f19562af27 100644 --- a/htdocs/langs/en_US/ecm.lang +++ b/htdocs/langs/en_US/ecm.lang @@ -1,14 +1,5 @@ # Dolibarr language file - Source file is en_US - ecm -DocsMine=My documents -DocsGenerated=Generated documents -DocsElements=Elements documents -DocsThirdParties=Documents third parties -DocsContracts=Documents contracts -DocsProposals=Documents proposals -DocsOrders=Documents orders -DocsInvoices=Documents invoices ECMNbOfDocs=Nb of documents in directory -ECMNbOfDocsSmall=Nb of doc. ECMSection=Directory ECMSectionManual=Manual directory ECMSectionAuto=Automatic directory @@ -18,7 +9,6 @@ ECMSections=Directories ECMRoot=Root ECMNewSection=New directory ECMAddSection=Add directory -ECMNewDocument=New document ECMCreationDate=Creation date ECMNbOfFilesInDir=Number of files in directory ECMNbOfSubDir=Number of sub-directories @@ -28,11 +18,9 @@ ECMArea=EDM area ECMAreaDesc=The EDM (Electronic Document Management) area allows you to save, share and search quickly all kind of documents in Dolibarr. ECMAreaDesc2=* Automatic directories are filled automatically when adding documents from card of an element.
* Manual directories can be used to save documents not linked to a particular element. ECMSectionWasRemoved=Directory %s has been deleted. -ECMDocumentsSection=Document of directory ECMSearchByKeywords=Search by keywords ECMSearchByEntity=Search by object ECMSectionOfDocuments=Directories of documents -ECMTypeManual=Manual ECMTypeAuto=Automatic ECMDocsBySocialContributions=Documents linked to social or fiscal taxes ECMDocsByThirdParties=Documents linked to third parties diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang old mode 100755 new mode 100644 index 3fe2f9b5852..ba9debb49ba --- a/htdocs/langs/en_US/errors.lang +++ b/htdocs/langs/en_US/errors.lang @@ -17,7 +17,6 @@ ErrorFailToCreateFile=Failed to create file '%s'. ErrorFailToRenameDir=Failed to rename directory '%s' into '%s'. ErrorFailToCreateDir=Failed to create directory '%s'. ErrorFailToDeleteDir=Failed to delete directory '%s'. -ErrorFailedToDeleteJoinedFiles=Cannot delete environment because joined files are present. Remove joined files first. ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as contact for this type. ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only. ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different. @@ -30,7 +29,6 @@ ErrorBarCodeRequired=Bar code required ErrorCustomerCodeAlreadyUsed=Customer code already used ErrorBarCodeAlreadyUsed=Bar code already used ErrorPrefixRequired=Prefix required -ErrorUrlNotValid=The website address is incorrect ErrorBadSupplierCodeSyntax=Bad syntax for supplier code ErrorSupplierCodeRequired=Supplier code required ErrorSupplierCodeAlreadyUsed=Supplier code already used @@ -83,7 +81,6 @@ ErrorFieldRefNotIn=Wrong value for field number %s (value '%s' is ErrorsOnXLines=Errors on %s source record(s) ErrorFileIsInfectedWithAVirus=The antivirus program was not able to validate the file (file might be infected by a virus) ErrorSpecialCharNotAllowedForField=Special characters are not allowed for field "%s" -ErrorDatabaseParameterWrong=Database setup parameter '%s' has a value not compatible to use Dolibarr (must have value '%s'). ErrorNumRefModel=A reference exists into database (%s) and is not compatible with this numbering rule. Remove record or renamed reference to activate this module. ErrorQtyTooLowForThisSupplier=Quantity too low for this supplier or no price defined on this product for this supplier ErrorModuleSetupNotComplete=Setup of module looks to be uncomplete. Go on Home - Setup - Modules to complete. @@ -93,12 +90,10 @@ ErrorBadMaskBadRazMonth=Error, bad reset value ErrorMaxNumberReachForThisMask=Max number reach for this mask ErrorCounterMustHaveMoreThan3Digits=Counter must have more than 3 digits ErrorSelectAtLeastOne=Error. Select at least one entry. -ErrorProductWithRefNotExist=Product with reference '%s' don't exist ErrorDeleteNotPossibleLineIsConsolidated=Delete not possible because record is linked to a bank transation that is conciliated ErrorProdIdAlreadyExist=%s is assigned to another third ErrorFailedToSendPassword=Failed to send password ErrorFailedToLoadRSSFile=Fails to get RSS feed. Try to add constant MAIN_SIMPLEXMLLOAD_DEBUG if error messages does not provide enough information. -ErrorPasswordDiffers=Passwords differs, please type them again. ErrorForbidden=Access denied.
You try to access to a page, area or feature of a disabled module or without being in an authenticated session or that is not allowed to your user. ErrorForbidden2=Permission for this login can be defined by your Dolibarr administrator from menu %s->%s. ErrorForbidden3=It seems that Dolibarr is not used through an authenticated session. Take a look at Dolibarr setup documentation to know how to manage authentications (htaccess, mod_auth or other...). @@ -106,7 +101,6 @@ ErrorNoImagickReadimage=Class Imagick is not found in this PHP. No preview can b ErrorRecordAlreadyExists=Record already exists ErrorCantReadFile=Failed to read file '%s' ErrorCantReadDir=Failed to read directory '%s' -ErrorFailedToFindEntity=Failed to read environment '%s' ErrorBadLoginPassword=Bad value for login or password ErrorLoginDisabled=Your account has been disabled ErrorFailedToRunExternalCommand=Failed to run external command. Check it is available and runnable by your PHP server. If PHP Safe Mode is enabled, check that command is inside a directory defined by parameter safe_mode_exec_dir. @@ -168,7 +162,6 @@ ErrorGlobalVariableUpdater3=The requested data was not found in result ErrorGlobalVariableUpdater4=SOAP client failed with error '%s' ErrorGlobalVariableUpdater5=No global variable selected ErrorFieldMustBeANumeric=Field %s must be a numeric value -ErrorFieldMustBeAnInteger=Field %s must be an integer ErrorMandatoryParametersNotProvided=Mandatory parameter(s) not provided ErrorOppStatusRequiredIfAmount=You set an estimated amount for this opportunity/lead. So you must also enter its status ErrorBadDefinitionOfMenuArrayInModuleDescriptor=Bad Definition Of Menu Array In Module Descriptor (bad value for key fk_menu) @@ -181,8 +174,6 @@ ErrorSupplierCountryIsNotDefined=Country for this supplier is not defined. Corre WarningPasswordSetWithNoAccount=A password was set for this member. However, no user account was created. So this password is stored but can't be used to login to Dolibarr. It may be used by an external module/interface but if you don't need to define any login nor password for a member, you can disable option "Manage a login for each member" from Member module setup. If you need to manage a login but don't need any password, you can keep this field empty to avoid this warning. Note: Email can also be used as a login if the member is linked to a user. WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined WarningSafeModeOnCheckExecDir=Warning, PHP option safe_mode is on so command must be stored inside a directory declared by php parameter safe_mode_exec_dir. -WarningAllowUrlFopenMustBeOn=Parameter allow_url_fopen must be set to on in filer php.ini for having this module working completely. You must modify this file manually. -WarningBuildScriptNotRunned=Script %s was not yet ran to build graphics, or there is no data to show. WarningBookmarkAlreadyExists=A bookmark with this title or this target (URL) already exists. WarningPassIsEmpty=Warning, database password is empty. This is a security hole. You should add a password to your database and change your conf.php file to reflect this. WarningConfFileMustBeReadOnly=Warning, your config file (htdocs/conf/conf.php) can be overwritten by the web server. This is a serious security hole. Modify permissions on file to be in read only mode for operating system user used by Web server. If you use Windows and FAT format for your disk, you must know that this file system does not allow to add permissions on file, so can't be completely safe. @@ -193,7 +184,6 @@ WarningUntilDirRemoved=All security warnings (visible by admin users only) will WarningCloseAlways=Warning, closing is done even if amount differs between source and target elements. Enable this feature with caution. WarningUsingThisBoxSlowDown=Warning, using this box slow down seriously all pages showing the box. WarningClickToDialUserSetupNotComplete=Setup of ClickToDial information for your user are not complete (see tab ClickToDial onto your user card). -WarningNotRelevant=Irrelevant operation for this dataset WarningFeatureDisabledWithDisplayOptimizedForBlindNoJs=Feature disabled when display setup is optimized for blind person or text browsers. WarningPaymentDateLowerThanInvoiceDate=Payment date (%s) is earlier than invoice date (%s) for invoice %s. WarningTooManyDataPleaseUseMoreFilters=Too many data (more than %s lines). Please use more filters or set the constant %s to a higher limit. diff --git a/htdocs/langs/en_US/expensereports.lang b/htdocs/langs/en_US/expensereports.lang deleted file mode 100644 index b378b12060d..00000000000 --- a/htdocs/langs/en_US/expensereports.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - expensereports -RelatedExpenseReports=associated expense reports \ No newline at end of file diff --git a/htdocs/langs/en_US/exports.lang b/htdocs/langs/en_US/exports.lang index 0b6a699224b..55e592dc91d 100644 --- a/htdocs/langs/en_US/exports.lang +++ b/htdocs/langs/en_US/exports.lang @@ -18,18 +18,11 @@ ExportableFields=Exportable fields ExportedFields=Exported fields ImportModelName=Import profile name ImportModelSaved=Import profile saved under name %s. -ImportableFields=Importable fields -ImportedFields=Imported fields DatasetToExport=Dataset to export DatasetToImport=Import file into dataset -NoDiscardedFields=No fields in source file are discarded -Dataset=Dataset ChooseFieldsOrdersAndTitle=Choose fields order... -FieldsOrder=Fields order FieldsTitle=Fields title -FieldOrder=Field order FieldTitle=Field title -ChooseExportFormat=Choose export format NowClickToGenerateToBuildExportFile=Now, select file format in combo box and click on "Generate" to build export file... AvailableFormats=Available formats LibraryShort=Library @@ -72,13 +65,10 @@ MoveField=Move field column number %s ExampleOfImportFile=Example_of_import_file SaveImportProfile=Save this import profile ErrorImportDuplicateProfil=Failed to save this import profile with this name. An existing profile already exists with this name. -ImportSummary=Import setup summary TablesTarget=Targeted tables FieldsTarget=Targeted fields -TableTarget=Targeted table FieldTarget=Targeted field FieldSource=Source field -DoNotImportFirstLine=Do not import first line of source file NbOfSourceLines=Number of lines in source file NowClickToTestTheImport=Check import parameters you have defined. If they are correct, click on button "%s" to launch a simulation of import process (no data will be changed in your database, it's only a simulation for the moment)... RunSimulateImportFile=Launch the import simulation @@ -119,7 +109,6 @@ ExportFieldAutomaticallyAdded=Field %s was automatically added. It will a CsvOptions=Csv Options Separator=Separator Enclosure=Enclosure -SuppliersProducts=Suppliers Products SpecialCode=Special code ExportStringFilter=%% allows replacing one or more characters in the text ExportDateFilter=YYYY, YYYYMM, YYYYMMDD : filters by one year/month/day
YYYY+YYYY, YYYYMM+YYYYMM, YYYYMMDD+YYYYMMDD : filters over a range of years/months/days
> YYYY, > YYYYMM, > YYYYMMDD : filters on all following years/months/days
< YYYY, < YYYYMM, < YYYYMMDD : filters on all previous years/months/days @@ -130,7 +119,6 @@ SetThisValueTo2ToExcludeFirstLine=For example, set this value to 3 to exclude th KeepEmptyToGoToEndOfFile=Keep this field empty to go up to the end of file ## filters SelectFilterFields=If you want to filter on some values, just input values here. -FilterableFields=Filterable Fields FilteredFields=Filtered fields FilteredFieldsValues=Value for filter FormatControlRule=Format control rule diff --git a/htdocs/langs/en_US/help.lang b/htdocs/langs/en_US/help.lang index a4c11246461..8c549f71514 100644 --- a/htdocs/langs/en_US/help.lang +++ b/htdocs/langs/en_US/help.lang @@ -22,6 +22,5 @@ ToGetHelpGoOnSparkAngels2=Sometimes, there is no company available at the moment BackToHelpCenter=Otherwise, click here to go back to help center home page. LinkToGoldMember=You can call one of the coach preselected by Dolibarr for your language (%s) by clicking his Widget (status and maximum price are automatically updated): PossibleLanguages=Supported languages -MakeADonation=Help Dolibarr project, make a donation SubscribeToFoundation=Help Dolibarr project, subscribe to the foundation SeeOfficalSupport=For official Dolibarr support in your language:
%s diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index a8e579c950c..b38e322d2d7 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -956,7 +956,6 @@ else } if (! empty($conf->expensereport->enabled) && $user->rights->expensereport->creer) { - $langs->load("expensereports"); $langs->load("trips"); print ''; } From f817b562ad4dcd3c3b678a7080eadc6b6440ba9b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 18 Jun 2016 17:17:45 +0200 Subject: [PATCH 126/212] Clean language files --- dev/translation/sanity_check_en_langfiles.php | 100 ++++++++++-------- htdocs/langs/en_US/holiday.lang | 45 -------- htdocs/langs/en_US/hrm.lang | 3 - htdocs/langs/en_US/incoterm.lang | 4 - htdocs/langs/en_US/install.lang | 18 ---- htdocs/langs/en_US/interventions.lang | 11 -- htdocs/langs/en_US/ldap.lang | 6 -- htdocs/langs/en_US/loan.lang | 6 +- htdocs/langs/en_US/mails.lang | 30 ------ 9 files changed, 55 insertions(+), 168 deletions(-) diff --git a/dev/translation/sanity_check_en_langfiles.php b/dev/translation/sanity_check_en_langfiles.php index 3adf0e92f7c..9c422338d90 100755 --- a/dev/translation/sanity_check_en_langfiles.php +++ b/dev/translation/sanity_check_en_langfiles.php @@ -255,57 +255,65 @@ if ((! empty($_REQUEST['unused']) && $_REQUEST['unused'] == 'true') || (isset($a $unused=array(); foreach ($langstrings_dist AS $value => $line) { - //$search = '\'trans("'.$value.'")\''; + $qualifiedforclean=1; + // Check if we must keep this key to be into file for removal + if (preg_match('/^Module\d+/', $value)) $qualifiedforclean=0; + if (preg_match('/^Permission\d+/', $value)) $qualifiedforclean=0; + if (preg_match('/^PermissionAdvanced\d+/', $value)) $qualifiedforclean=0; + if (preg_match('/^ProfId\d+/', $value)) $qualifiedforclean=0; + if (preg_match('/^Delays_/', $value)) $qualifiedforclean=0; + if (preg_match('/^BarcodeDesc/', $value)) $qualifiedforclean=0; + if (preg_match('/^Extrafield/', $value)) $qualifiedforclean=0; + if (preg_match('/^LocalTax/', $value)) $qualifiedforclean=0; + if (preg_match('/^Country/', $value)) $qualifiedforclean=0; + if (preg_match('/^Civility/', $value)) $qualifiedforclean=0; + if (preg_match('/^Currency/', $value)) $qualifiedforclean=0; + if (preg_match('/^DemandReasonTypeSRC/', $value)) $qualifiedforclean=0; + if (preg_match('/^PaperFormat/', $value)) $qualifiedforclean=0; + if (preg_match('/^Duration/', $value)) $qualifiedforclean=0; + if (preg_match('/^AmountLT/', $value)) $qualifiedforclean=0; + if (preg_match('/^TotalLT/', $value)) $qualifiedforclean=0; + if (preg_match('/^Month/', $value)) $qualifiedforclean=0; + if (preg_match('/^MonthShort/', $value)) $qualifiedforclean=0; + if (preg_match('/^Day\d/', $value)) $qualifiedforclean=0; + if (preg_match('/^Short/', $value)) $qualifiedforclean=0; + if (preg_match('/^ExportDataset_/', $value)) $qualifiedforclean=0; + if (preg_match('/^ImportDataset_/', $value)) $qualifiedforclean=0; + if (preg_match('/^ActionAC_/', $value)) $qualifiedforclean=0; + if (preg_match('/^TypeLocaltax/', $value)) $qualifiedforclean=0; + if (preg_match('/^StatusProspect/', $value)) $qualifiedforclean=0; + if (preg_match('/^PL_/', $value)) $qualifiedforclean=0; + if (preg_match('/^TE_/', $value)) $qualifiedforclean=0; + if (preg_match('/^JuridicalStatus/', $value)) $qualifiedforclean=0; + if (preg_match('/^CalcMode/', $value)) $qualifiedforclean=0; + if (preg_match('/^newLT/', $value)) $qualifiedforclean=0; + if (preg_match('/^LT\d/', $value)) $qualifiedforclean=0; + if (preg_match('/^TypeContact_contrat_/', $value)) $qualifiedforclean=0; + if (preg_match('/^ErrorPriceExpression/', $value)) $qualifiedforclean=0; + if (preg_match('/^Language_/', $value)) $qualifiedforclean=0; + if (preg_match('/^DescADHERENT_/', $value)) $qualifiedforclean=0; + if (preg_match('/^Duration/', $value)) $qualifiedforclean=0; + if (preg_match('/^FormatDate/', $value)) $qualifiedforclean=0; + if (preg_match('/^DateFormat/', $value)) $qualifiedforclean=0; + if (preg_match('/^.b$/', $value)) $qualifiedforclean=0; + if (preg_match('/^.*Bytes$/', $value)) $qualifiedforclean=0; + if (preg_match('/^By/', $value)) $qualifiedforclean=0; + + if (preg_match('/^(DoTest|Under|Limits|Cards|CurrentValue|DateLimit|DateAndHour|NbOfLines|NbOfObjects|NbOfReferes|TotalTTCShort|VATs)/', $value)) $qualifiedforclean=0; + + if (! $qualifiedforclean) + { + continue; + } + + //$search = '\'trans("'.$value.'")\''; $search = '-e "\''.$value.'\'" -e \'"'.$value.'"\''; $string = 'grep -R -m 1 -F --exclude=includes/* --include=*.php '.$search.' '.$htdocs.'* '.$scripts.'*'; //print $string."
\n"; exec($string,$output); if (empty($output)) { - $qualifiedforclean=1; - // Check if we must keep this key to be into file for removal - if (preg_match('/^Module\d+/', $value)) $qualifiedforclean=0; - if (preg_match('/^Permission\d+/', $value)) $qualifiedforclean=0; - if (preg_match('/^PermissionAdvanced\d+/', $value)) $qualifiedforclean=0; - if (preg_match('/^ProfId\d+/', $value)) $qualifiedforclean=0; - if (preg_match('/^Delays_/', $value)) $qualifiedforclean=0; - if (preg_match('/^BarcodeDesc/', $value)) $qualifiedforclean=0; - if (preg_match('/^Extrafield/', $value)) $qualifiedforclean=0; - if (preg_match('/^LocalTax/', $value)) $qualifiedforclean=0; - if (preg_match('/^Country/', $value)) $qualifiedforclean=0; - if (preg_match('/^Civility/', $value)) $qualifiedforclean=0; - if (preg_match('/^Currency/', $value)) $qualifiedforclean=0; - if (preg_match('/^DemandReasonTypeSRC/', $value)) $qualifiedforclean=0; - if (preg_match('/^PaperFormat/', $value)) $qualifiedforclean=0; - if (preg_match('/^Duration/', $value)) $qualifiedforclean=0; - if (preg_match('/^AmountLT/', $value)) $qualifiedforclean=0; - if (preg_match('/^TotalLT/', $value)) $qualifiedforclean=0; - if (preg_match('/^Month/', $value)) $qualifiedforclean=0; - if (preg_match('/^MonthShort/', $value)) $qualifiedforclean=0; - if (preg_match('/^Day\d/', $value)) $qualifiedforclean=0; - if (preg_match('/^ExportDataset_/', $value)) $qualifiedforclean=0; - if (preg_match('/^ImportDataset_/', $value)) $qualifiedforclean=0; - if (preg_match('/^ActionAC_/', $value)) $qualifiedforclean=0; - if (preg_match('/^TypeLocaltax/', $value)) $qualifiedforclean=0; - if (preg_match('/^StatusProspect/', $value)) $qualifiedforclean=0; - if (preg_match('/^PL_/', $value)) $qualifiedforclean=0; - if (preg_match('/^TE_/', $value)) $qualifiedforclean=0; - if (preg_match('/^JuridicalStatus/', $value)) $qualifiedforclean=0; - if (preg_match('/^CalcMode/', $value)) $qualifiedforclean=0; - if (preg_match('/^newLT/', $value)) $qualifiedforclean=0; - if (preg_match('/^LT\dSummary/', $value)) $qualifiedforclean=0; - if (preg_match('/^LT\dPaid/', $value)) $qualifiedforclean=0; - if (preg_match('/^LT\dPayment/', $value)) $qualifiedforclean=0; - if (preg_match('/^LT\dCustomer/', $value)) $qualifiedforclean=0; - if (preg_match('/^LT\dSupplier/', $value)) $qualifiedforclean=0; - if (preg_match('/^LT\dReport/', $value)) $qualifiedforclean=0; - if (preg_match('/^TypeContact_contrat_/', $value)) $qualifiedforclean=0; - if (preg_match('/^ErrorPriceExpression/', $value)) $qualifiedforclean=0; - - if ($qualifiedforclean) - { - $unused[$value] = $line; - echo $line; // $trad contains the \n - } + $unused[$value] = $line; + echo $line; // $trad contains the \n } else { diff --git a/htdocs/langs/en_US/holiday.lang b/htdocs/langs/en_US/holiday.lang index 9ff15079900..4113dd62aa0 100644 --- a/htdocs/langs/en_US/holiday.lang +++ b/htdocs/langs/en_US/holiday.lang @@ -5,8 +5,6 @@ CPTitreMenu=Leaves MenuReportMonth=Monthly statement MenuAddCP=New leave request NotActiveModCP=You must enable the module Leaves to view this page. -NotConfigModCP=You must configure the module Leaves to view this page. To do this, click here . -NoCPforUser=You don't have any available day. AddCP=Make a leave request DateDebCP=Start date DateFinCP=End date @@ -23,31 +21,26 @@ DescCP=Description SendRequestCP=Create leave request DelayToRequestCP=Leave requests must be made at least %s day(s) before them. MenuConfCP=Balance of leaves -UpdateAllCP=Update the leaves SoldeCPUser=Leaves balance is %s days. ErrorEndDateCP=You must select an end date greater than the start date. ErrorSQLCreateCP=An SQL error occurred during the creation: ErrorIDFicheCP=An error has occurred, the leave request does not exist. ReturnCP=Return to previous page ErrorUserViewCP=You are not authorized to read this leave request. -InfosCP=Information of the leave request InfosWorkflowCP=Information Workflow RequestByCP=Requested by TitreRequestCP=Leave request NbUseDaysCP=Number of days of vacation consumed EditCP=Edit DeleteCP=Delete -ActionValidCP=Validate ActionRefuseCP=Refuse ActionCancelCP=Cancel StatutCP=Status -SendToValidationCP=Send to validation TitleDeleteCP=Delete the leave request ConfirmDeleteCP=Confirm the deletion of this leave request? ErrorCantDeleteCP=Error you don't have the right to delete this leave request. CantCreateCP=You don't have the right to make leave requests. InvalidValidatorCP=You must choose an approbator to your leave request. -CantUpdate=You cannot update this leave request. NoDateDebut=You must select a start date. NoDateFin=You must select an end date. ErrorDureeCP=Your leave request does not contain working day. @@ -77,7 +70,6 @@ UserUpdateCP=For the user PrevSoldeCP=Previous Balance NewSoldeCP=New Balance alreadyCPexist=A leave request has already been done on this period. -UserName=Name FirstDayOfHoliday=First day of vacation LastDayOfHoliday=Last day of vacation BoxTitleLastLeaveRequests=Latest %s modified leave requests @@ -86,47 +78,12 @@ ManualUpdate=Manual update HolidaysCancelation=Leave request cancelation ## Configuration du Module ## -ConfCP=Configuration of leave request module -DescOptionCP=Description of the option -ValueOptionCP=Value -GroupToValidateCP=Group with the ability to approve leave requests -ConfirmConfigCP=Validate the configuration LastUpdateCP=Latest automatic update of leaves allocation MonthOfLastMonthlyUpdate=Month of latest automatic update of leaves allocation UpdateConfCPOK=Updated successfully. -ErrorUpdateConfCP=An error occurred during the update, please try again. -AddCPforUsers=Please add the balance of leaves allocation of users by clicking here. -DelayForSubmitCP=Deadline to make a leave requests -AlertapprobatortorDelayCP=Prevent the approbator if the leave request does not match the deadline -AlertValidatorDelayCP=Préevent the approbator if the leave request exceed delay -AlertValidorSoldeCP=Prevent the approbator if the leave request exceed the balance -nbUserCP=Number of users supported in the module Leaves -nbHolidayDeductedCP=Number of leave days to be deducted per day of vacation taken -nbHolidayEveryMonthCP=Number of leave days added every month Module27130Name= Management of leave requests Module27130Desc= Management of leave requests -TitleOptionMainCP=Main settings of leave request -TitleOptionEventCP=Settings of leave requets for events -ValidEventCP=Validate -UpdateEventCP=Update events -CreateEventCP=Create -NameEventCP=Event name -OkCreateEventCP=The addition of the event went well. -ErrorCreateEventCP=Error creating the event. -UpdateEventOkCP=The update of the event went well. -ErrorUpdateEventCP=Error while updating the event. -DeleteEventCP=Delete Event -DeleteEventOkCP=The event has been deleted. -ErrorDeleteEventCP=Error while deleting the event. -TitleDeleteEventCP=Delete a exceptional leave -TitleCreateEventCP=Create a exceptional leave -TitleUpdateEventCP=Edit or delete a exceptional leave -DeleteEventOptionCP=Delete -UpdateEventOptionCP=Update ErrorMailNotSend=An error occurred while sending email: -NoCPforMonth=No leave this month. -nbJours=Number days -TitleAdminCP=Configuration of Leaves NoticePeriod=Notice period #Messages HolidaysToValidate=Validate leave requests @@ -139,8 +96,6 @@ HolidaysRefused=Request denied HolidaysRefusedBody=Your leave request for %s to %s has been denied for the following reason : HolidaysCanceled=Canceled leaved request HolidaysCanceledBody=Your leave request for %s to %s has been canceled. -NewByMonth=Added per month -Affect=Followed by a counter FollowedByACounter=1: This type of leave need to be followed by a counter. Counter is incremented manually or automatically and when a leave request is validated, counter is decremented.
0: Not followed by a counter. NoLeaveWithCounterDefined=There is no leave types defined that need to be followed by a counter GoIntoDictionaryHolidayTypes=Go into Home - Setup - Dictionaries - Type of leaves to setup the different types of leaves. diff --git a/htdocs/langs/en_US/hrm.lang b/htdocs/langs/en_US/hrm.lang index 1c6ec8e61fc..6730da53d2d 100644 --- a/htdocs/langs/en_US/hrm.lang +++ b/htdocs/langs/en_US/hrm.lang @@ -12,9 +12,6 @@ CloseEtablishment=Close establishment DictionaryDepartment=HRM - Department list DictionaryFunction=HRM - Function list # Module -ListOfEmployees=List of employees Employees=Employees Employee=Employee -Employe=Employe NewEmployee=New employee -EmployeeCard=Employee card diff --git a/htdocs/langs/en_US/incoterm.lang b/htdocs/langs/en_US/incoterm.lang index 4fce5519c3a..7ff371e3a95 100644 --- a/htdocs/langs/en_US/incoterm.lang +++ b/htdocs/langs/en_US/incoterm.lang @@ -1,7 +1,3 @@ Module62000Name=Incoterm Module62000Desc=Add features to manage Incoterm IncotermLabel=Incoterms -IncotermSetupTitle1=Feature -IncotermSetupTitle2=Status -IncotermSetup=Setup of module Incoterm -IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) \ No newline at end of file diff --git a/htdocs/langs/en_US/install.lang b/htdocs/langs/en_US/install.lang index eacd6937e92..f9d1d1338c6 100644 --- a/htdocs/langs/en_US/install.lang +++ b/htdocs/langs/en_US/install.lang @@ -1,9 +1,7 @@ # Dolibarr language file - Source file is en_US - install InstallEasy=Just follow the instructions step by step. MiscellaneousChecks=Prerequisites check -DolibarrWelcome=Welcome to Dolibarr ConfFileExists=Configuration file %s exists. -ConfFileDoesNotExists=Configuration file %s does not exist ! ConfFileDoesNotExistsAndCouldNotBeCreated=Configuration file %s does not exist and could not be created ! ConfFileCouldBeCreated=Configuration file %s could be created. ConfFileIsNotWritable=Configuration file %s is not writable. Check permissions. For first install, your web server must be granted to be able to write into this file during configuration process ("chmod 666" for example on a Unix like OS). @@ -27,14 +25,12 @@ ErrorFailedToCreateDatabase=Failed to create database '%s'. ErrorFailedToConnectToDatabase=Failed to connect to database '%s'. ErrorDatabaseVersionTooLow=Database version (%s) too old. Version %s or higher is required. ErrorPHPVersionTooLow=PHP version too old. Version %s is required. -WarningPHPVersionTooLow=PHP version too old. Version %s or more is expected. This version should allow install but is not supported. ErrorConnectedButDatabaseNotFound=Connection to server successfull but database '%s' not found. ErrorDatabaseAlreadyExists=Database '%s' already exists. IfDatabaseNotExistsGoBackAndUncheckCreate=If database does not exists, go back and check option "Create database". IfDatabaseExistsGoBackAndCheckCreate=If database already exists, go back and uncheck "Create database" option. WarningBrowserTooOld=Too old version of browser. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommanded. PHPVersion=PHP Version -YouCanContinue=You can continue... License=Using license ConfigurationFile=Configuration file WebPagesDirectory=Directory where web pages are stored @@ -43,7 +39,6 @@ URLRoot=URL Root ForceHttps=Force secure connections (https) CheckToForceHttps=Check this option to force secure connections (https).
This requires that the web server is configured with an SSL certificate. DolibarrDatabase=Dolibarr Database -DatabaseChoice=Database choice DatabaseType=Database type DriverType=Driver type Server=Server @@ -63,7 +58,6 @@ CheckToCreateUser=Check box if database owner does not exist and must be created DatabaseRootLoginDescription=Login of the user allowed to create new databases or new users, mandatory if your database or its owner does not already exists. KeepEmptyIfNoPassword=Leave empty if user has no password (avoid this) SaveConfigurationFile=Save values -ConfigurationSaving=Saving configuration file ServerConnection=Server connection DatabaseCreation=Database creation UserCreation=User creation @@ -93,9 +87,7 @@ LoginAlreadyExists=Already exists DolibarrAdminLogin=Dolibarr admin login AdminLoginAlreadyExists=Dolibarr administrator account '%s' already exists. Go back, if you want to create another one. WarningRemoveInstallDir=Warning, for security reasons, once the install or upgrade is complete, to avoid using install tools again, you should add a file called install.lock into Dolibarr document directory, in order to avoid malicious use of it. -ThisPHPDoesNotSupportTypeBase=This PHP system does not support any interface to access database type %s FunctionNotAvailableInThisPHP=Not available on this PHP -MigrateScript=Migration script ChoosedMigrateScript=Choose migration script DataMigration=Data migration DatabaseMigration=Structure database migration @@ -113,22 +105,12 @@ AlreadyDone=Already migrated DatabaseVersion=Database version ServerVersion=Database server version YouMustCreateItAndAllowServerToWrite=You must create this directory and allow for the web server to write into it. -CharsetChoice=Character set choice -CharacterSetClient=Character set used for generated HTML web pages -CharacterSetClientComment=Choose character set for web display.
Default proposed character set is the one of your database. DBSortingCollation=Character sorting order -DBSortingCollationComment=Choose page code that defines character's sorting order used by database. This parameter is also called 'collation' by some databases.
This parameter can't be defined if database already exists. -CharacterSetDatabase=Character set for database -CharacterSetDatabaseComment=Choose character set wanted for database creation.
This parameter can't be defined if database already exists. YouAskDatabaseCreationSoDolibarrNeedToConnect=You ask to create database %s, but for this, Dolibarr need to connect to server %s with super user %s permissions. YouAskLoginCreationSoDolibarrNeedToConnect=You ask to create database login %s, but for this, Dolibarr need to connect to server %s with super user %s permissions. BecauseConnectionFailedParametersMayBeWrong=As connection failed, host or super user parameters must be wrong. OrphelinsPaymentsDetectedByMethod=Orphans payment detected by method %s RemoveItManuallyAndPressF5ToContinue=Remove it manually and press F5 to continue. -KeepDefaultValuesWamp=You use the Dolibarr setup wizard from DoliWamp, so values proposed here are already optimized. Change them only if you know what you do. -KeepDefaultValuesDeb=You use the Dolibarr setup wizard from a Linux package (Ubuntu, Debian, Fedora...), so values proposed here are already optimized. Only the password of the database owner to create must be completed. Change other parameters only if you know what you do. -KeepDefaultValuesMamp=You use the Dolibarr setup wizard from DoliMamp, so values proposed here are already optimized. Change them only if you know what you do. -KeepDefaultValuesProxmox=You use the Dolibarr setup wizard from a Proxmox virtual appliance, so values proposed here are already optimized. Change them only if you know what you do. FieldRenamed=Field renamed IfLoginDoesNotExistsCheckCreateUser=If login does not exists yet, you must check option "Create user" ErrorConnection=Server "%s", database name "%s", login "%s", or database password may be wrong or PHP client version may be too old compared to database version. diff --git a/htdocs/langs/en_US/interventions.lang b/htdocs/langs/en_US/interventions.lang index 9df35ba9e38..26959e39ab9 100644 --- a/htdocs/langs/en_US/interventions.lang +++ b/htdocs/langs/en_US/interventions.lang @@ -5,12 +5,10 @@ InterventionCard=Intervention card NewIntervention=New intervention AddIntervention=Create intervention ListOfInterventions=List of interventions -EditIntervention=Edit intervention ActionsOnFicheInter=Actions on intervention LastInterventions=Latest %s interventions AllInterventions=All interventions CreateDraftIntervention=Create draft -CustomerDoesNotHavePrefix=Customer does not have a prefix InterventionContact=Intervention contact DeleteIntervention=Delete intervention ValidateIntervention=Validate intervention @@ -27,7 +25,6 @@ InterventionCardsAndInterventionLines=Interventions and lines of interventions InterventionClassifyBilled=Classify "Billed" InterventionClassifyUnBilled=Classify "Unbilled" StatusInterInvoiced=Billed -RelatedInterventions=Related interventions ShowIntervention=Show intervention SendInterventionRef=Submission of intervention %s SendInterventionByMail=Send intervention by Email @@ -38,20 +35,12 @@ InterventionClassifiedBilledInDolibarr=Intervention %s set as billed InterventionClassifiedUnbilledInDolibarr=Intervention %s set as unbilled InterventionSentByEMail=Intervention %s sent by EMail InterventionDeletedInDolibarr=Intervention %s deleted -SearchAnIntervention=Search an intervention InterventionsArea=Interventions area DraftFichinter=Draft interventions LastModifiedInterventions=Latest %s modified interventions ##### Types de contacts ##### -TypeContact_fichinter_internal_INTERREPFOLL=Representative following-up intervention -TypeContact_fichinter_internal_INTERVENING=Intervening -TypeContact_fichinter_external_BILLING=Billing customer contact TypeContact_fichinter_external_CUSTOMER=Following-up customer contact # Modele numérotation -ArcticNumRefModelDesc1=Generic number model -ArcticNumRefModelError=Failed to activate -PacificNumRefModelDesc1=Return numero with format %syymm-nnnn where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 -PacificNumRefModelError=An intervention card starting with $syymm already exists and is not compatible with this model of sequence. Remove it or rename it to activate this module. PrintProductsOnFichinter=Print also lines of type "product" (not only services) on intervention card PrintProductsOnFichinterDetails=interventions generated from orders InterventionStatistics=Statistics of interventions diff --git a/htdocs/langs/en_US/ldap.lang b/htdocs/langs/en_US/ldap.lang index 02e457446a6..23f0df862b9 100644 --- a/htdocs/langs/en_US/ldap.lang +++ b/htdocs/langs/en_US/ldap.lang @@ -2,25 +2,19 @@ DomainPassword=Password for domain YouMustChangePassNextLogon=Password for user %s on the domain %s must be changed. UserMustChangePassNextLogon=User must change password on the domain %s -LdapUacf_NORMAL_ACCOUNT=User account -LdapUacf_DONT_EXPIRE_PASSWORD=Password never expires -LdapUacf_ACCOUNTDISABLE=Account is disabled in the domain %s LDAPInformationsForThisContact=Information in LDAP database for this contact LDAPInformationsForThisUser=Information in LDAP database for this user LDAPInformationsForThisGroup=Information in LDAP database for this group LDAPInformationsForThisMember=Information in LDAP database for this member -LDAPAttribute=LDAP attribute LDAPAttributes=LDAP attributes LDAPCard=LDAP card LDAPRecordNotFound=Record not found in LDAP database LDAPUsers=Users in LDAP database -LDAPGroups=Groups in LDAP database LDAPFieldStatus=Status LDAPFieldFirstSubscriptionDate=First subscription date LDAPFieldFirstSubscriptionAmount=First subscription amount LDAPFieldLastSubscriptionDate=Last subscription date LDAPFieldLastSubscriptionAmount=Last subscription amount -SynchronizeDolibarr2Ldap=Synchronize user (Dolibarr -> LDAP) UserSynchronized=User synchronized GroupSynchronized=Group synchronized MemberSynchronized=Member synchronized diff --git a/htdocs/langs/en_US/loan.lang b/htdocs/langs/en_US/loan.lang index 4ca8c615e5a..de0d5a0525f 100644 --- a/htdocs/langs/en_US/loan.lang +++ b/htdocs/langs/en_US/loan.lang @@ -12,14 +12,10 @@ Nbterms=Number of terms LoanAccountancyCapitalCode=Accountancy code capital LoanAccountancyInsuranceCode=Accountancy code insurance LoanAccountancyInterestCode=Accountancy code interest -LoanPayment=Loan payment ConfirmDeleteLoan=Confirm deleting this loan LoanDeleted=Loan Deleted Successfully ConfirmPayLoan=Confirm classify paid this loan LoanPaid=Loan Paid -ErrorLoanCapital=Loan amount has to be numeric and greater than zero. -ErrorLoanLength=Loan length has to be numeric and greater than zero. -ErrorLoanInterest=Annual interest has to be numeric and greater than zero. # Calc LoanCalc=Bank Loans Calculator PurchaseFinanceInfo=Purchase & Financing Information @@ -50,4 +46,4 @@ YouWillSpend=You will spend %s in year %s ConfigLoan=Configuration of the module loan LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Accountancy code capital by default LOAN_ACCOUNTING_ACCOUNT_INTEREST=Accountancy code interest by default -LOAN_ACCOUNTING_ACCOUNT_INSURANCE=Accountancy code insurance by default \ No newline at end of file +LOAN_ACCOUNTING_ACCOUNT_INSURANCE=Accountancy code insurance by default diff --git a/htdocs/langs/en_US/mails.lang b/htdocs/langs/en_US/mails.lang index 7eba3525fc1..79c7aff2029 100644 --- a/htdocs/langs/en_US/mails.lang +++ b/htdocs/langs/en_US/mails.lang @@ -1,11 +1,9 @@ # Dolibarr language file - Source file is en_US - mails Mailing=EMailing EMailing=EMailing -Mailings=EMailings EMailings=EMailings AllEMailings=All eMailings MailCard=EMailing card -MailTargets=Targets MailRecipients=Recipients MailRecipient=Recipient MailTitle=Description @@ -27,16 +25,11 @@ ResetMailing=Resend emailing DeleteMailing=Delete emailing DeleteAMailing=Delete an emailing PreviewMailing=Preview emailing -PrepareMailing=Prepare emailing CreateMailing=Create emailing -MailingDesc=This page allows you to send emailings to a group of people. -MailingResult=Sending emails result TestMailing=Test email ValidMailing=Valid emailing -ApproveMailing=Approve emailing MailingStatusDraft=Draft MailingStatusValidated=Validated -MailingStatusApproved=Approved MailingStatusSent=Sent MailingStatusSentPartialy=Sent partialy MailingStatusSentCompletely=Sent completely @@ -45,7 +38,6 @@ MailingStatusNotSent=Not sent MailSuccessfulySent=Email successfully sent (from %s to %s) MailingSuccessfullyValidated=EMailing successfully validated MailUnsubcribe=Unsubscribe -Unsuscribe=Unsubscribe MailingStatusNotContact=Don't contact anymore MailingStatusReadAndUnsubscribe=Read and unsubscribe ErrorMailRecipientIsEmpty=Email recipient is empty @@ -53,12 +45,10 @@ WarningNoEMailsAdded=No new Email to add to recipient's list. ConfirmValidMailing=Are you sure you want to validate this emailing ? ConfirmResetMailing=Warning, by reinitializing emailing %s, you allow to make a mass sending of this email another time. Are you sure you this is what you want to do ? ConfirmDeleteMailing=Are you sure you want to delete this emailling ? -NbOfRecipients=Number of recipients NbOfUniqueEMails=Nb of unique emails NbOfEMails=Nb of EMails TotalNbOfDistinctRecipients=Number of distinct recipients NoTargetYet=No recipients defined yet (Go on tab 'Recipients') -AddRecipients=Add recipients RemoveRecipient=Remove recipient CommonSubstitutions=Common substitutions YouCanAddYourOwnPredefindedListHere=To create your email selector module, see htdocs/core/modules/mailings/README. @@ -74,37 +64,18 @@ DateLastSend=Date of latest sending DateSending=Date sending SentTo=Sent to %s MailingStatusRead=Read -CheckRead=Read Receipt YourMailUnsubcribeOK=The email %s is correctly unsubcribe from mailing list -MailtoEMail=Hyper link to email -ActivateCheckRead=Allow to use the "Unsubcribe" link ActivateCheckReadKey=Key used to encrypt URL used for "Read Receipt" and "Unsubcribe" feature EMailSentToNRecipients=EMail sent to %s recipients. XTargetsAdded=%s recipients added into target list -EachInvoiceWillBeAttachedToEmail=A document using default invoice document template will be created and attached to each email. OnlyPDFattachmentSupported=If the PDF document was already generated for the invoice, it will be attached to email. If not, no email will be sent (also, note that only pdf invoice are supported as attachment in mass sending in this version). -MailTopicSendRemindUnpaidInvoices=Reminder of invoice %s (%s) -SendRemind=Send reminder by EMails -RemindSent=%s reminder(s) sent AllRecipientSelected=All thirdparties selected and if an email is set. -NoRemindSent=No EMail reminder sent ResultOfMailSending=Result of mass EMail sending NbSelected=Nb selected NbIgnored=Nb ignored NbSent=Nb sent # Libelle des modules de liste de destinataires mailing -MailingModuleDescContactCompanies=Contacts/addresses of all third parties (customer, prospect, supplier, ...) -MailingModuleDescDolibarrUsers=Dolibarr users -MailingModuleDescFundationMembers=Foundation members with emails -MailingModuleDescEmailsFromFile=EMails from a text file (email;lastname;firstname;other) -MailingModuleDescEmailsFromUser=EMails from user input (email;lastname;firstname;other) -MailingModuleDescContactsCategories=Third parties (by category) -MailingModuleDescDolibarrContractsLinesExpired=Third parties with expired contract's lines -MailingModuleDescContactsByCompanyCategory=Contacts/addresses of third parties (by third parties category) -MailingModuleDescContactsByCategory=Contacts/addresses of third parties (by category) -MailingModuleDescMembersCategories=Foundation members (by categories) -MailingModuleDescContactsByFunction=Contacts/addresses of third parties (by position/function) LineInFile=Line %s in file RecipientSelectionModules=Defined requests for recipient's selection MailSelectedRecipients=Selected recipients @@ -116,7 +87,6 @@ MailNoChangePossible=Recipients for validated emailing can't be changed SearchAMailing=Search mailing SendMailing=Send emailing SendMail=Send email -SentBy=Sent by MailingNeedCommand=For security reason, sending an emailing is better when performed from command line. If you have one, ask your server administrator to launch the following command to send the emailing to all recipients: MailingNeedCommand2=You can however send them online by adding parameter MAILING_LIMIT_SENDBYWEB with value of max number of emails you want to send by session. For this, go on Home - Setup - Other. ConfirmSendingEmailing=If you can't or prefer sending them with your www browser, please confirm you are sure you want to send emailing now from your browser ? From d0a15d32b2e04e0e3600d0b32e1d3592c12d602f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 18 Jun 2016 19:48:58 +0200 Subject: [PATCH 127/212] Clean language files --- dev/translation/sanity_check_en_langfiles.php | 30 +++++++- htdocs/langs/en_US/main.lang | 57 --------------- htdocs/langs/en_US/margins.lang | 7 +- htdocs/langs/en_US/members.lang | 35 --------- htdocs/langs/en_US/opensurvey.lang | 7 -- htdocs/langs/en_US/orders.lang | 26 ------- htdocs/langs/en_US/other.lang | 16 ---- htdocs/langs/en_US/paypal.lang | 2 - htdocs/langs/en_US/printing.lang | 35 +-------- htdocs/langs/en_US/products.lang | 73 ------------------- htdocs/langs/en_US/projects.lang | 15 ---- htdocs/langs/en_US/propal.lang | 22 ------ htdocs/langs/en_US/receiptprinter.lang | 54 -------------- htdocs/langs/en_US/resource.lang | 4 - htdocs/langs/en_US/sendings.lang | 20 ----- htdocs/langs/en_US/stocks.lang | 15 ---- htdocs/langs/en_US/supplier_proposal.lang | 13 +--- htdocs/langs/en_US/suppliers.lang | 10 +-- htdocs/langs/en_US/trips.lang | 16 ---- htdocs/langs/en_US/users.lang | 23 ------ htdocs/langs/en_US/website.lang | 3 +- htdocs/langs/en_US/withdrawals.lang | 13 ---- 22 files changed, 32 insertions(+), 464 deletions(-) diff --git a/dev/translation/sanity_check_en_langfiles.php b/dev/translation/sanity_check_en_langfiles.php index 9c422338d90..d32f45c6161 100755 --- a/dev/translation/sanity_check_en_langfiles.php +++ b/dev/translation/sanity_check_en_langfiles.php @@ -292,15 +292,39 @@ if ((! empty($_REQUEST['unused']) && $_REQUEST['unused'] == 'true') || (isset($a if (preg_match('/^ErrorPriceExpression/', $value)) $qualifiedforclean=0; if (preg_match('/^Language_/', $value)) $qualifiedforclean=0; if (preg_match('/^DescADHERENT_/', $value)) $qualifiedforclean=0; + // main.lang if (preg_match('/^Duration/', $value)) $qualifiedforclean=0; if (preg_match('/^FormatDate/', $value)) $qualifiedforclean=0; if (preg_match('/^DateFormat/', $value)) $qualifiedforclean=0; if (preg_match('/^.b$/', $value)) $qualifiedforclean=0; if (preg_match('/^.*Bytes$/', $value)) $qualifiedforclean=0; - if (preg_match('/^By/', $value)) $qualifiedforclean=0; - if (preg_match('/^(DoTest|Under|Limits|Cards|CurrentValue|DateLimit|DateAndHour|NbOfLines|NbOfObjects|NbOfReferes|TotalTTCShort|VATs)/', $value)) $qualifiedforclean=0; - + // orders + if (preg_match('/^OrderSource/', $value)) $qualifiedforclean=0; + if (preg_match('/^TypeContact_/', $value)) $qualifiedforclean=0; + // other.lang + if (preg_match('/^Notify_/', $value)) $qualifiedforclean=0; + if (preg_match('/^PredefinedMail/', $value)) $qualifiedforclean=0; + if (preg_match('/^DemoCompany/', $value)) $qualifiedforclean=0; + if (preg_match('/^WeightUnit/', $value)) $qualifiedforclean=0; + if (preg_match('/^LengthUnit/', $value)) $qualifiedforclean=0; + if (preg_match('/^SurfaceUnit/', $value)) $qualifiedforclean=0; + if (preg_match('/^VolumeUnit/', $value)) $qualifiedforclean=0; + if (preg_match('/^SizeUnit/', $value)) $qualifiedforclean=0; + if (preg_match('/^EMailText/', $value)) $qualifiedforclean=0; + if (preg_match('/ById$/', $value)) $qualifiedforclean=0; + if (preg_match('/ByLogin$/', $value)) $qualifiedforclean=0; + // products + if (preg_match('/GlobalVariableUpdaterType$/', $value)) $qualifiedforclean=0; + if (preg_match('/GlobalVariableUpdaterHelp$/', $value)) $qualifiedforclean=0; + if (preg_match('/OppStatus/', $value)) $qualifiedforclean=0; + if (preg_match('/AvailabilityType/', $value)) $qualifiedforclean=0; + + if (preg_match('/sms/i', $value)) $qualifiedforclean=0; + if (preg_match('/TF_/i', $value)) $qualifiedforclean=0; + if (preg_match('/WithBankUsing/i', $value)) $qualifiedforclean=0; + if (preg_match('/descWORKFLOW_/i', $value)) $qualifiedforclean=0; + if (! $qualifiedforclean) { continue; diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index 750e02fa11c..4b41f0ba038 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -45,10 +45,8 @@ ErrorLogoFileNotFound=Logo file '%s' was not found ErrorGoToGlobalSetup=Go to 'Company/Foundation' setup to fix this ErrorGoToModuleSetup=Go to Module setup to fix this ErrorFailedToSendMail=Failed to send mail (sender=%s, receiver=%s) -ErrorAttachedFilesDisabled=File attaching is disabled on this server ErrorFileNotUploaded=File was not uploaded. Check that size does not exceed maximum allowed, that free space is available on disk and that there is not already a file with same name in this directory. ErrorInternalErrorDetected=Error detected -ErrorNoRequestRan=No request ran ErrorWrongHostParameter=Wrong host parameter ErrorYourCountryIsNotDefined=Your country is not defined. Go to Home-Setup-Edit and post again the form. ErrorRecordIsUsedByChild=Failed to delete this record. This record is used by at least one child records. @@ -69,7 +67,6 @@ SelectDate=Select a date SeeAlso=See also %s SeeHere=See here BackgroundColorByDefault=Default background color -FileNotUploaded=The file was not uploaded FileUploaded=The file was successfully uploaded FileWasNotUploaded=A file is selected for attachment but was not yet uploaded. Click on "Attach file" for this. NbOfEntries=Nb of entries @@ -79,8 +76,6 @@ RecordSaved=Record saved RecordDeleted=Record deleted LevelOfFeature=Level of features NotDefined=Not defined -DefinedAndHasThisValue=Defined and value to -IsNotDefined=undefined DolibarrInHttpAuthenticationSoPasswordUseless=Dolibarr authentication mode is setup to %s in configuration file conf.php.
This means that password database is extern to Dolibarr, so changing this field may have no effects. Administrator=Administrator Undefined=Undefined @@ -94,7 +89,6 @@ ConnectedSince=Connected since AuthenticationMode=Authentification mode RequestedUrl=Requested Url DatabaseTypeManager=Database type manager -RequestLastAccess=Latest database access request RequestLastAccessInError=Latest database access request error ReturnCodeLastAccessInError=Return code for latest database access request error InformationLastAccessInError=Information for latest database access request error @@ -115,7 +109,6 @@ Yes=Yes no=no No=No All=All -Alls=All Home=Home Help=Help OnlineHelp=Online help @@ -139,8 +132,6 @@ AddLink=Add link RemoveLink=Remove link AddToDraft=Add to draft Update=Update -AddActionToDo=Add event to do -AddActionDone=Add event done Close=Close CloseBox=Remove widget from your dashboard Confirm=Confirm @@ -158,7 +149,6 @@ Save=Save SaveAs=Save As TestConnection=Test connection ToClone=Clone -ConfirmCloneAction=Are you sure you want to clone this event ? ConfirmClone=Choose data you want to clone : NoCloneOptionsSpecified=No data to clone defined. Of=of @@ -187,13 +177,11 @@ Groups=Groups NoUserGroupDefined=No user group defined Password=Password PasswordRetype=Retype your password -NoteSomeFeaturesAreDisabled=Note that a lot of features/modules are disabled in this demonstration. Name=Name Person=Person Parameter=Parameter Parameters=Parameters Value=Value -GlobalValue=Global value PersonalValue=Personal value NewValue=New value CurrentValue=Current value @@ -202,7 +190,6 @@ Type=Type Language=Language MultiLanguage=Multi-language Note=Note -CurrentNote=Current note Title=Title Label=Label RefOrLabel=Ref. or label @@ -220,7 +207,6 @@ AmountByMonth=Amount by month Numero=Number Limit=Limit Limits=Limits -DevelopmentTeam=Development Team Logout=Logout NoLogoutProcessWithAuthMode=No applicative disconnect feature with authentication mode %s Connection=Connection @@ -253,8 +239,6 @@ DateOperationShort=Oper. Date DateLimit=Limit date DateRequest=Request date DateProcess=Process date -DatePlanShort=Date planed -DateRealShort=Date real. DateBuild=Report build date DatePayment=Date of payment DateApprove=Approving date @@ -308,7 +292,6 @@ Copy=Copy Paste=Paste Default=Default DefaultValue=Default value -DefaultGlobalValue=Global value Price=Price UnitPrice=Unit price UnitPriceHT=Unit price (net) @@ -316,7 +299,6 @@ UnitPriceTTC=Unit price PriceU=U.P. PriceUHT=U.P. (net) PriceUHTCurrency=U.P (currency) -SupplierProposalUHT=U.P. net Requested PriceUTTC=U.P. (inc. tax) Amount=Amount AmountInvoice=Invoice amount @@ -335,10 +317,7 @@ AmountLT1ES=Amount RE AmountLT2ES=Amount IRPF AmountTotal=Total amount AmountAverage=Average amount -PriceQtyHT=Price for this quantity (net of tax) PriceQtyMinHT=Price quantity min. (net of tax) -PriceQtyTTC=Price for this quantity (inc. tax) -PriceQtyMinTTC=Price quantity min. (inc. of tax) Percentage=Percentage Total=Total SubTotal=Subtotal @@ -355,7 +334,6 @@ TotalLT1=Total tax 2 TotalLT2=Total tax 3 TotalLT1ES=Total RE TotalLT2ES=Total IRPF -IncludedVAT=Included tax HT=Net of tax TTC=Inc. tax VAT=Sales tax @@ -383,9 +361,7 @@ CommercialProposalsShort=Commercial proposals Comment=Comment Comments=Comments ActionsToDo=Events to do -ActionsDone=Events done ActionsToDoShort=To do -ActionsRunningshort=Started ActionsDoneShort=Done ActionNotApplicable=Not applicable ActionRunningNotStarted=To start @@ -398,7 +374,6 @@ ContactsAddressesForCompany=Contacts/addresses for this third party AddressesForCompany=Addresses for this third party ActionsOnCompany=Events about this third party ActionsOnMember=Events about this member -NActions=%s events NActionsLate=%s late RequestAlreadyDone=Request already recorded Filter=Filter @@ -411,15 +386,11 @@ Generate=Generate Duration=Duration TotalDuration=Total duration Summary=Summary -MyBookmarks=My bookmarks -OtherInformationsBoxes=Other widgets -DolibarrBoard=Dolibarr board DolibarrStateBoard=Statistics DolibarrWorkBoard=Work tasks board Available=Available NotYetAvailable=Not yet available NotAvailable=Not available -Popularity=Popularity Categories=Tags/categories Category=Tag/category By=By @@ -438,7 +409,6 @@ ApprovedBy2=Approved by (second approval) Approved=Approved Refused=Refused ReCalculate=Recalculate -ResultOk=Success ResultKo=Failure Reporting=Reporting Reportings=Reporting @@ -458,11 +428,9 @@ ByCompanies=By third parties ByUsers=By users Links=Links Link=Link -Receipts=Receipts Rejects=Rejects Preview=Preview NextStep=Next step -PreviousStep=Previous step Datas=Data None=None NoneF=None @@ -534,10 +502,8 @@ ReportDescription=Description Report=Report Keyword=Keyword Legend=Legend -FillTownFromZip=Fill city from zip Fill=Fill Reset=Reset -ShowLog=Show log File=File Files=Files NotAllowed=Not allowed @@ -548,10 +514,8 @@ Examples=Examples NoExample=No example FindBug=Report a bug NbOfThirdParties=Number of third parties -NbOfCustomers=Number of customers NbOfLines=Number of lines NbOfObjects=Number of objects -NbOfReferers=Number of referrers NbOfObjectReferers=Number of related items Referers=Related items TotalQuantity=Total quantity @@ -566,20 +530,13 @@ Internals=Internal Externals=External Warning=Warning Warnings=Warnings -BuildPDF=Build PDF -RebuildPDF=Rebuild PDF BuildDoc=Build Doc -RebuildDoc=Rebuild Doc Entity=Environment Entities=Entities -EventLogs=Logs CustomerPreview=Customer preview SupplierPreview=Supplier preview -AccountancyPreview=Accountancy preview ShowCustomerPreview=Show customer preview ShowSupplierPreview=Show supplier preview -ShowAccountancyPreview=Show accountancy preview -ShowProspectPreview=Show prospect preview RefCustomer=Ref. customer Currency=Currency InfoAdmin=Information for administrators @@ -590,7 +547,6 @@ UndoExpandAll=Undo expand Reason=Reason FeatureNotYetSupported=Feature not yet supported CloseWindow=Close window -Question=Question Response=Response Priority=Priority SendByMail=Send by EMail @@ -601,7 +557,6 @@ EMail=E-mail NoEMail=No email NoMobilePhone=No mobile phone Owner=Owner -DetectedVersion=Detected version FollowingConstantsWillBeSubstituted=The following constants will be replaced with the corresponding value. Refresh=Refresh BackToList=Back to list @@ -611,7 +566,6 @@ CanBeModifiedIfKo=Can be modified if not valid RecordModifiedSuccessfully=Record modified successfully RecordsModified=%s records modified AutomaticCode=Automatic code -NotManaged=Not managed FeatureDisabled=Feature disabled MoveBox=Move widget Offered=Offered @@ -620,18 +574,14 @@ SessionName=Session name Method=Method Receive=Receive PartialWoman=Partial -PartialMan=Partial TotalWoman=Total -TotalMan=Total NeverReceived=Never received Canceled=Canceled YouCanChangeValuesForThisListFromDictionarySetup=You can change values for this list from menu setup - dictionary YouCanSetDefaultValueInModuleSetup=You can set the default value used when creating a new record into module setup Color=Color Documents=Linked files -DocumentsNb=Linked files (%s) Documents2=Documents -BuildDocuments=Generated documents UploadDisabled=Upload disabled MenuECM=Documents MenuAWStats=AWStats @@ -654,7 +604,6 @@ Page=Page Notes=Notes AddNewLine=Add new line AddFile=Add file -ListOfFiles=List of available files FreeZone=Free entry FreeLineOfType=Free entry of type CloneMainAttributes=Clone object with its main attributes @@ -662,7 +611,6 @@ PDFMerge=PDF Merge Merge=Merge PrintContentArea=Show page to print main content area MenuManager=Menu manager -NoMenu=No sub-menu WarningYouAreInMaintenanceMode=Warning, you are in a maintenance mode, so only login %s is allowed to use application at the moment. CoreErrorTitle=System error CoreErrorMessage=Sorry, an error occurred. Check the logs or contact your system administrator. @@ -689,7 +637,6 @@ Frequency=Frequency IM=Instant messaging NewAttribute=New attribute AttributeCode=Attribute code -OptionalFieldsSetup=Extra attributes setup URLPhoto=URL of photo/logo SetLinkToAnotherThirdParty=Link to another third party CreateDraft=Create draft @@ -705,8 +652,6 @@ ByMonth=By month ByDay=By day BySalesRepresentative=By sales representative LinkedToSpecificUsers=Linked to a particular user contact -DeleteAFile=Delete a file -ConfirmDeleteAFile=Are you sure you want to delete file NoResults=No results AdminTools=Admin tools SystemTools=System tools @@ -714,7 +659,6 @@ ModulesSystemTools=Modules tools Test=Test Element=Element NoPhotoYet=No pictures available yet -HomeDashboard=Home summary Dashboard=Dashboard Deductible=Deductible from=from @@ -750,7 +694,6 @@ ConfirmDeleteLine=Are you sure you want to delete this line ? NoPDFAvailableForDocGenAmongChecked=No PDF were available for the document generation among checked records TooManyRecordForMassAction=Too many records selected for mass action. The action is restricted to a list of %s records. MassFilesArea=Area for files built by mass actions -HideTempMassFilesArea=Hide area of files built by mass actions ShowTempMassFilesArea=Show area of files built by mass actions RelatedObjects=Related Objects ClassifyBilled=Classify billed diff --git a/htdocs/langs/en_US/margins.lang b/htdocs/langs/en_US/margins.lang index 32e6abf355e..12a61c146be 100644 --- a/htdocs/langs/en_US/margins.lang +++ b/htdocs/langs/en_US/margins.lang @@ -20,7 +20,6 @@ UserMargins=User margins ProductService=Product or Service AllProducts=All products and services ChooseProduct/Service=Choose product or service -Launch=Start ForceBuyingPriceIfNull=Force buying/cost price to selling price if not defined ForceBuyingPriceIfNullDetails=If buying/cost price not defined, and this option "ON", margin will be zero on line (buying/cost price = selling price), otherwise ("OFF"), marge will be equal to suggested default. MARGIN_METHODE_FOR_DISCOUNT=Margin method for global discounts @@ -29,15 +28,11 @@ UseDiscountAsService=As a service UseDiscountOnTotal=On subtotal MARGIN_METHODE_FOR_DISCOUNT_DETAILS=Defines if a global discount is treated as a product, a service, or only on subtotal for margin calculation. MARGIN_TYPE=Buying/Cost price suggested by default for margin calculation -MargeBrute=Raw margin -MargeNette=Net margin MargeType1=Margin on Best supplier price MargeType2=Margin on Weighted Average Price (WAP) MargeType3=Margin on Cost Price -MARGIN_TYPE_DETAILS=Raw margin : Selling price - Buying price
Net margin : Selling price - Cost price MarginTypeDesc=* Margin on best buying price = Selling price - Best supplier price defined on product card
* Margin on Weighted Average Price (WAP) = Selling price - Product Weighted Average Price (WAP) or best supplier price if WAP not yet defined
* Margin on Cost price = Selling price - Cost price defined on product card or WAP if cost price not defined, or best supplier price if WAP not yet defined CostPrice=Cost price -BuyingCost=Cost price UnitCharges=Unit charges Charges=Charges AgentContactType=Commercial agent contact type @@ -45,4 +40,4 @@ AgentContactTypeDetails=Define what contact type (linked on invoices) will be us rateMustBeNumeric=Rate must be a numeric value markRateShouldBeLesserThan100=Mark rate should be lower than 100 ShowMarginInfos=Show margin infos -CheckMargins=Margins detail \ No newline at end of file +CheckMargins=Margins detail diff --git a/htdocs/langs/en_US/members.lang b/htdocs/langs/en_US/members.lang index 7ebbe1dde4f..527a5bd7db3 100644 --- a/htdocs/langs/en_US/members.lang +++ b/htdocs/langs/en_US/members.lang @@ -1,19 +1,14 @@ # Dolibarr language file - Source file is en_US - members MembersArea=Members area -PublicMembersArea=Public members area MemberCard=Member card SubscriptionCard=Subscription card Member=Member Members=Members -MemberAccount=Member login ShowMember=Show member card UserNotLinkedToMember=User not linked to a member ThirdpartyNotLinkedToMember=Third-party not linked to a member MembersTickets=Members Tickets FundationMembers=Foundation members -Attributs=Attributes -ErrorMemberTypeNotDefined=Member type not defined -ListOfPublicMembers=List of public members ListOfValidatedPublicMembers=List of validated public members ErrorThisMemberIsNotPublic=This member is not public ErrorMemberIsAlreadyLinkedToThisThirdParty=Another member (name: %s, login: %s) is already linked to a third party %s. Remove this link first because a third party can't be linked to only a member (and vice versa). @@ -36,21 +31,16 @@ MenuMembersUpToDate=Up to date members MenuMembersNotUpToDate=Out of date members MenuMembersResiliated=Resiliated members MembersWithSubscriptionToReceive=Members with subscription to receive -DateAbonment=Subscription date DateSubscription=Subscription date -DateNextSubscription=Next subscription DateEndSubscription=Subscription end date EndSubscription=End subscription SubscriptionId=Subscription id MemberId=Member id NewMember=New member -NewType=New member type MemberType=Member type MemberTypeId=Member type id MemberTypeLabel=Member type label MembersTypes=Members types -MembersAttributes=Members attributes -SearchAMember=Search a member MemberStatusDraft=Draft (needs to be validated) MemberStatusDraftShort=Draft MemberStatusActive=Validated (waiting subscription) @@ -62,17 +52,9 @@ MemberStatusPaidShort=Up to date MemberStatusResiliated=Resiliated member MemberStatusResiliatedShort=Resiliated MembersStatusToValid=Draft members -MembersStatusToValidShort=Draft members -MembersStatusValidated=Validated members -MembersStatusPaid=Subscription up to date -MembersStatusPaidShort=Up to date -MembersStatusNotPaid=Subscription out of date -MembersStatusNotPaidShort=Out of date MembersStatusResiliated=Resiliated members -MembersStatusResiliatedShort=Resiliated members NewCotisation=New contribution PaymentSubscription=New contribution payment -EditMember=Edit member SubscriptionEndDate=Subscription's end date MembersTypeSetup=Members type setup NewSubscription=New subscription @@ -81,8 +63,6 @@ Subscription=Subscription Subscriptions=Subscriptions SubscriptionLate=Late SubscriptionNotReceived=Subscription never received -SubscriptionLateShort=Late -SubscriptionNotReceivedShort=Never received ListOfSubscriptions=List of subscriptions SendCardByMail=Send card by Email AddMember=Create member @@ -90,7 +70,6 @@ NoTypeDefinedGoToSetup=No member types defined. Go to menu "Members types" NewMemberType=New member type WelcomeEMail=Welcome e-mail SubscriptionRequired=Subscription required -EditType=Edit member type DeleteType=Delete VoteAllowed=Vote allowed Physical=Physical @@ -111,23 +90,18 @@ PublicMemberList=Public member list BlankSubscriptionForm=Public auto-subscription form BlankSubscriptionFormDesc=Dolibarr can provide you a public URL to allow external visitors to ask to subscribe to the foundation. If an online payment module is enabled, a payment form will also be automatically provided. EnablePublicSubscriptionForm=Enable the public auto-subscription form -MemberPublicLinks=Public links/pages ExportDataset_member_1=Members and subscriptions ImportDataset_member_1=Members -LastMembers=Latest %s members LastMembersModified=Latest %s modified members LastSubscriptionsModified=Latest %s modified subscriptions -AttributeName=Attribute name String=String Text=Text Int=Int DateAndTime=Date and time PublicMemberCard=Member public card -MemberNotOrNoMoreExpectedToSubscribe=Member not or no more expected to subscribe SubscriptionNotRecorded=Subscription not recorded AddSubscription=Create subscription ShowSubscription=Show subscription -MemberModifiedInDolibarr=Member modified in Dolibarr SendAnEMailToMember=Send information email to member DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Subject of the e-mail received in case of auto-inscription of a guest DescADHERENT_AUTOREGISTER_NOTIF_MAIL=E-mail received in case of auto-inscription of a guest @@ -147,12 +121,9 @@ DescADHERENT_CARD_HEADER_TEXT=Text printed on top of member cards DescADHERENT_CARD_TEXT=Text printed on member cards (align on left) DescADHERENT_CARD_TEXT_RIGHT=Text printed on member cards (align on right) DescADHERENT_CARD_FOOTER_TEXT=Text printed on bottom of member cards -GlobalConfigUsedIfNotDefined=Text defined in Foundation module setup will be used if not defined here -MayBeOverwrited=This text can be overwrited by value defined for member's type ShowTypeCard=Show type '%s' HTPasswordExport=htpassword file generation NoThirdPartyAssociatedToMember=No third party associated to this member -ThirdPartyDolibarr=Dolibarr third party MembersAndSubscriptions= Members and Subscriptions MoreActions=Complementary action on recording MoreActionsOnSubscription=Complementary action, suggested by default when recording a subscription @@ -171,7 +142,6 @@ MembersStatisticsByCountries=Members statistics by country MembersStatisticsByState=Members statistics by state/province MembersStatisticsByTown=Members statistics by town MembersStatisticsByRegion=Members statistics by region -MemberByRegion=Members by region NbOfMembers=Number of members NoValidatedMemberYet=No validated members found MembersByCountryDesc=This screen show you statistics on members by countries. Graphic depends however on Google online graph service and is available only if an internet connection is is working. @@ -192,11 +162,6 @@ TurnoverOrBudget=Turnover (for a company) or Budget (for a foundation) DefaultAmount=Default amount of subscription CanEditAmount=Visitor can choose/edit amount of its subscription MEMBER_NEWFORM_PAYONLINE=Jump on integrated online payment page -Associations=Foundations -Collectivités=Organizations -Particuliers=Personal -Entreprises=Companies -DOLIBARRFOUNDATION_PAYMENT_FORM=To make your subscription payment using a bank transfer, see page http://wiki.dolibarr.org/index.php/Subscribe.
To pay using a Credit Card or Paypal, click on button at bottom of this page.
ByProperties=By characteristics MembersStatisticsByProperties=Members statistics by characteristics MembersByNature=This screen show you statistics on members by nature. diff --git a/htdocs/langs/en_US/opensurvey.lang b/htdocs/langs/en_US/opensurvey.lang index bc90d1488e3..f42ea006eb6 100644 --- a/htdocs/langs/en_US/opensurvey.lang +++ b/htdocs/langs/en_US/opensurvey.lang @@ -3,7 +3,6 @@ Survey=Poll Surveys=Polls OrganizeYourMeetingEasily=Organize your meetings and polls easily. First select type of poll... NewSurvey=New poll -NoSurveysInDatabase=%s poll(s) into database. OpenSurveyArea=Polls area AddACommentForPoll=You can add a comment into poll... AddComment=Add comment @@ -40,26 +39,20 @@ NbOfVoters=Nb of voters SurveyResults=Results PollAdminDesc=You are allowed to change all vote lines of this poll with button "Edit". You can, as well, remove a column or a line with %s. You can also add a new column with %s. 5MoreChoices=5 more choices -Abstention=Abstention Against=Against YouAreInivitedToVote=You are invited to vote for this poll VoteNameAlreadyExists=This name was already used for this poll -ErrorPollDoesNotExists=Error, poll %s does not exists. -OpenSurveyNothingToSetup=There is no specific setup to do. -PollWillExpire=Your poll will expire automatically %s days after the last date of your poll. AddADate=Add a date AddStartHour=Add start hour AddEndHour=Add end hour votes=vote(s) NoCommentYet=No comments have been posted for this poll yet -CanEditVotes=Can change vote of others CanComment=Voters can comment in the poll CanSeeOthersVote=Voters can see other people's vote SelectDayDesc=For each selected day, you can choose, or not, meeting hours in the following format :
- empty,
- "8h", "8H" or "8:00" to give a meeting's start hour,
- "8-11", "8h-11h", "8H-11H" or "8:00-11:00" to give a meeting's start and end hour,
- "8h15-11h15", "8H15-11H15" or "8:15-11:15" for the same thing but with minutes. BackToCurrentMonth=Back to current month ErrorOpenSurveyFillFirstSection=You haven't filled the first section of the poll creation ErrorOpenSurveyOneChoice=Enter at least one choice -ErrorOpenSurveyDateFormat=Date must have the format YYYY-MM-DD ErrorInsertingComment=There was an error while inserting your comment MoreChoices=Enter more choices for the voters SurveyExpiredInfo=The poll has been closed or voting delay has expired. diff --git a/htdocs/langs/en_US/orders.lang b/htdocs/langs/en_US/orders.lang index b7ed77b30ba..a57bce0569f 100644 --- a/htdocs/langs/en_US/orders.lang +++ b/htdocs/langs/en_US/orders.lang @@ -6,7 +6,6 @@ OrderId=Order Id Order=Order Orders=Orders OrderLine=Order line -OrderFollow=Follow up OrderDate=Order date OrderDateShort=Order date OrderToProcess=Order to process @@ -20,7 +19,6 @@ CustomerOrder=Customer order CustomersOrders=Customer orders CustomersOrdersRunning=Current customer orders CustomersOrdersAndOrdersLines=Customer orders and order lines -OrdersToValid=Customer orders to validate OrdersToBill=Customer orders delivered OrdersInProcess=Customer orders in process OrdersToProcess=Customer orders to process @@ -35,7 +33,6 @@ StatusOrderProcessedShort=Processed StatusOrderDelivered=Delivered StatusOrderDeliveredShort=Delivered StatusOrderToBillShort=Delivered -StatusOrderToBill2Short=To bill StatusOrderApprovedShort=Approved StatusOrderRefusedShort=Refused StatusOrderBilledShort=Billed @@ -49,7 +46,6 @@ StatusOrderOnProcess=Ordered - Standby reception StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Processed StatusOrderToBill=Delivered -StatusOrderToBill2=To bill StatusOrderApproved=Approved StatusOrderRefused=Refused StatusOrderBilled=Billed @@ -58,13 +54,8 @@ StatusOrderReceivedAll=Everything received ShippingExist=A shipment exists ProductQtyInDraft=Product quantity into draft orders ProductQtyInDraftOrWaitingApproved=Product quantity into draft or approved orders, not yet ordered -DraftOrWaitingApproved=Draft or approved not yet ordered -DraftOrWaitingShipped=Draft or validated not yet shipped MenuOrdersToBill=Orders delivered MenuOrdersToBill2=Billable orders -SearchOrder=Search order -SearchACustomerOrder=Search a customer order -SearchASupplierOrder=Search a supplier order ShipProduct=Ship product CreateOrder=Create Order RefuseOrder=Refuse order @@ -76,22 +67,16 @@ DeleteOrder=Delete order CancelOrder=Cancel order OrderReopened= Order %s Reopened AddOrder=Create order -AddToMyOrders=Add to my orders -AddToOtherOrders=Add to other orders AddToDraftOrders=Add to draft order ShowOrder=Show order OrdersOpened=Orders to process -NoOpenedOrders=No open orders -NoOtherOpenedOrders=No other open orders NoDraftOrders=No draft orders NoOrder=No order NoSupplierOrder=No supplier order -OtherOrders=Other orders LastOrders=Latest %s customer orders LastCustomerOrders=Latest %s customer orders LastSupplierOrders=Latest %s supplier orders LastModifiedOrders=Latest %s modified orders -LastClosedOrders=Latest %s closed orders AllOrders=All orders NbOfOrders=Number of orders OrdersStatistics=Order's statistics @@ -101,7 +86,6 @@ AmountOfOrdersByMonthHT=Amount of orders by month (net of tax) ListOfOrders=List of orders CloseOrder=Close order ConfirmCloseOrder=Are you sure you want to set this order to deliverd ? Once an order is delivered, it can be set to billed. -ConfirmCloseOrderIfSending=Are you sure you want to close this order ? You must close an order only when all shipping are done. ConfirmDeleteOrder=Are you sure you want to delete this order ? ConfirmValidateOrder=Are you sure you want to validate this order under name %s ? ConfirmUnvalidateOrder=Are you sure you want to restore order %s to draft status ? @@ -109,24 +93,17 @@ ConfirmCancelOrder=Are you sure you want to cancel this order ? ConfirmMakeOrder=Are you sure you want to confirm you made this order on %s ? GenerateBill=Generate invoice ClassifyShipped=Classify delivered -ComptaCard=Accountancy card DraftOrders=Draft orders DraftSuppliersOrders=Draft suppliers orders -RelatedOrders=Related orders -RelatedCustomerOrders=Related customer orders -RelatedSupplierOrders=Related supplier orders OnProcessOrders=In process orders RefOrder=Ref. order RefCustomerOrder=Ref. order for customer -RefCustomerOrderShort=Ref. order for cust. RefOrderSupplier=Ref. order for supplier SendOrderByMail=Send order by mail ActionsOnOrder=Events on order NoArticleOfTypeProduct=No article of type 'product' so no shippable article for this order OrderMode=Order method AuthorRequest=Request author -UseCustomerContactAsOrderRecipientIfExist=Use customer contact address if defined instead of third party address as order recipient address -RunningOrders=Orders on process UserWithApproveOrderGrant=Users granted with "approve orders" permission. PaymentOrderRef=Payment of order %s CloneOrder=Clone order @@ -151,8 +128,6 @@ TypeContact_order_supplier_external_CUSTOMER=Supplier contact following-up order Error_COMMANDE_SUPPLIER_ADDON_NotDefined=Constant COMMANDE_SUPPLIER_ADDON not defined Error_COMMANDE_ADDON_NotDefined=Constant COMMANDE_ADDON not defined -Error_FailedToLoad_COMMANDE_SUPPLIER_ADDON_File=Failed to load module file '%s' -Error_FailedToLoad_COMMANDE_ADDON_File=Failed to load module file '%s' Error_OrderNotChecked=No orders to invoice selected # Sources OrderSource0=Commercial proposal @@ -163,7 +138,6 @@ OrderSource4=Fax campaign OrderSource5=Commercial OrderSource6=Store QtyOrdered=Qty ordered -AddDeliveryCostLine=Add a delivery cost line indicating the weight of the order # Documents models PDFEinsteinDescription=A complete order model (logo...) PDFEdisonDescription=A simple order model diff --git a/htdocs/langs/en_US/other.lang b/htdocs/langs/en_US/other.lang index 66f734f3c1c..1d0452a2596 100644 --- a/htdocs/langs/en_US/other.lang +++ b/htdocs/langs/en_US/other.lang @@ -77,11 +77,9 @@ DemoCompanyServiceOnly=Manage a freelance activity selling service only DemoCompanyShopWithCashDesk=Manage a shop with a cash desk DemoCompanyProductAndStocks=Manage a small or medium company selling products DemoCompanyAll=Manage a small or medium company with multiple activities (all main modules) -GoToDemo=Go to demo CreatedBy=Created by %s ModifiedBy=Modified by %s ValidatedBy=Validated by %s -CanceledBy=Canceled by %s ClosedBy=Closed by %s CreatedById=User id who created ModifiedById=User id who made latest change @@ -95,10 +93,7 @@ CanceledByLogin=User login who canceled ClosedByLogin=User login who closed FileWasRemoved=File %s was removed DirWasRemoved=Directory %s was removed -FeatureNotYetAvailableShort=Available in a future version FeatureNotYetAvailable=Feature not yet available in the current version -FeatureExperimental=Experimental feature. Not stable in the current version -FeatureDevelopment=Development feature. Not stable in the current version FeaturesSupported=Supported features Width=Width Height=Height @@ -110,7 +105,6 @@ Right=Right CalculatedWeight=Calculated weight CalculatedVolume=Calculated volume Weight=Weight -TotalWeight=Total weight WeightUnitton=tonne WeightUnitkg=kg WeightUnitg=g @@ -129,7 +123,6 @@ SurfaceUnitmm2=mm² SurfaceUnitfoot2=ft² SurfaceUnitinch2=in² Volume=Volume -TotalVolume=Total volume VolumeUnitm3=m³ VolumeUnitdm3=dm³ (L) VolumeUnitcm3=cm³ (ml) @@ -151,7 +144,6 @@ SendNewPasswordDesc=This form allows you to request a new password. It will be s BackToLoginPage=Back to login page AuthenticationDoesNotAllowSendNewPassword=Authentication mode is %s.
In this mode, Dolibarr can't know nor change your password.
Contact your system administrator if you want to change your password. EnableGDLibraryDesc=Install or enable GD library on your PHP installation to use this option. -EnablePhpAVModuleDesc=You need to install a module compatible with your anti-virus. (Clamav : php4-clamavlib ou php5-clamavlib) ProfIdShortDesc=Prof Id %s is an information depending on third party country.
For example, for country %s, it's code %s. DolibarrDemo=Dolibarr ERP/CRM demo StatsByNumberOfUnits=Statistics in number of products/services units @@ -210,11 +202,8 @@ SourcesRepository=Repository for sources Chart=Chart ##### Calendar common ##### -AddCalendarEntry=Add entry in calendar %s NewCompanyToDolibarr=Company %s added ContractValidatedInDolibarr=Contract %s validated -ContractCanceledInDolibarr=Contract %s canceled -ContractClosedInDolibarr=Contract %s closed PropalClosedSignedInDolibarr=Proposal %s signed PropalClosedRefusedInDolibarr=Proposal %s refused PropalValidatedInDolibarr=Proposal %s validated @@ -222,9 +211,6 @@ PropalClassifiedBilledInDolibarr=Proposal %s classified billed InvoiceValidatedInDolibarr=Invoice %s validated InvoicePaidInDolibarr=Invoice %s changed to paid InvoiceCanceledInDolibarr=Invoice %s canceled -PaymentDoneInDolibarr=Payment %s done -CustomerPaymentDoneInDolibarr=Customer payment %s done -SupplierPaymentDoneInDolibarr=Supplier payment %s done MemberValidatedInDolibarr=Member %s validated MemberResiliatedInDolibarr=Member %s resiliated MemberDeletedInDolibarr=Member %s deleted @@ -241,10 +227,8 @@ LibraryUsed=Librairy used LibraryVersion=Version ExportableDatas=Exportable data NoExportableData=No exportable data (no modules with exportable data loaded, or missing permissions) -ToExport=Export NewExport=New export ##### External sites ##### -ExternalSites=External sites WebsiteSetup=Setup of module website WEBSITE_PAGEURL=URL of page WEBSITE_TITLE=Title diff --git a/htdocs/langs/en_US/paypal.lang b/htdocs/langs/en_US/paypal.lang index 54f8cb1980f..179c9027089 100644 --- a/htdocs/langs/en_US/paypal.lang +++ b/htdocs/langs/en_US/paypal.lang @@ -3,7 +3,6 @@ PaypalSetup=PayPal module setup PaypalDesc=This module offer pages to allow payment on PayPal by customers. This can be used for a free payment or for a payment on a particular Dolibarr object (invoice, order, ...) PaypalOrCBDoPayment=Pay with credit card or Paypal PaypalDoPayment=Pay with Paypal -PaypalCBDoPayment=Pay with credit card PAYPAL_API_SANDBOX=Mode test/sandbox PAYPAL_API_USER=API username PAYPAL_API_PASSWORD=API password @@ -15,7 +14,6 @@ PaypalModeOnlyPaypal=PayPal only PAYPAL_CSS_URL=Optionnal Url of CSS style sheet on payment page ThisIsTransactionId=This is id of transaction: %s PAYPAL_ADD_PAYMENT_URL=Add the url of Paypal payment when you send a document by mail -PAYPAL_IPN_MAIL_ADDRESS=E-mail address for the instant notification of payment (IPN) PredefinedMailContentLink=You can click on the secure link below to make your payment (PayPal) if it is not already done.\n\n%s\n\n YouAreCurrentlyInSandboxMode=You are currently in the "sandbox" mode NewPaypalPaymentReceived=New Paypal payment received diff --git a/htdocs/langs/en_US/printing.lang b/htdocs/langs/en_US/printing.lang index 427b4973e80..14577a126e4 100644 --- a/htdocs/langs/en_US/printing.lang +++ b/htdocs/langs/en_US/printing.lang @@ -5,7 +5,6 @@ PrintingSetup=Setup of Direct Printing System PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. MenuDirectPrinting=Direct Printing jobs DirectPrint=Direct print -ModuleDriverSetup=Setup Module Driver PrintingDriverDesc=Configuration variables for printing driver. ListDrivers=List of drivers PrintTestDesc=List of Printers. @@ -14,10 +13,8 @@ NoActivePrintingModuleFound=No active module to print document PleaseSelectaDriverfromList=Please select a driver from list. PleaseConfigureDriverfromList=Please configure the selected driver from list. SetupDriver=Driver setup -TestDriver=Test TargetedPrinter=Targeted printer UserConf=Setup per user -PRINTGCP=Google Cloud Print PRINTGCP_INFO=Google OAuth API setup PRINTGCP_AUTHLINK=Authentication PRINTGCP_TOKEN_ACCESS=Google Cloud Print OAuth Token @@ -26,21 +23,6 @@ PRINTGCP_TOKEN_EXPIRED=Token Expired PRINTGCP_TOKEN_EXPIRE_AT=Token expire at PRINTGCP_DELETE_TOKEN=Delete saved token PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. -PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. -PrintTestDescprintgcp=List of Printers for Google Cloud Print. -PRINTGCP_LOGIN=Google Account Login -PRINTGCP_PASSWORD=Google Account Password -STATE_ONLINE=Online -STATE_UNKNOWN=Unknown -STATE_OFFLINE=Offline -STATE_DORMANT=Offline for quite a while -TYPE_GOOGLE=Google -TYPE_HP=HP Printer -TYPE_DOCS=DOCS -TYPE_DRIVE=Google Drive -TYPE_FEDEX=Fedex -TYPE_ANDROID_CHROME_SNAPSHOT=Android -TYPE_IOS_CHROME_SNAPSHOT=IOS GCP_Name=Name GCP_displayName=Display Name GCP_Id=Printer Id @@ -48,21 +30,14 @@ GCP_OwnerName=Owner Name GCP_State=Printer State GCP_connectionStatus=Online State GCP_Type=Printer Type -PRINTIPP=PrintIPP Driver -PrintIPPSetup=Setup of Direct Print module PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. -PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. -PrintTestDescprintipp=List of Printers for driver PrintIPP. -PRINTIPP_ENABLED=Show "Direct print" icon in document lists PRINTIPP_HOST=Print server PRINTIPP_PORT=Port PRINTIPP_USER=Login PRINTIPP_PASSWORD=Password -NoPrinterFound=No printers found (check your CUPS setup) NoDefaultPrinterDefined=No default printer defined DefaultPrinter=Default printer Printer=Printer -CupsServer=CUPS Server IPP_Uri=Printer Uri IPP_Name=Printer Name IPP_State=Printer State @@ -73,14 +48,6 @@ IPP_Color=Color IPP_Device=Device IPP_Media=Printer media IPP_Supported=Type of media -STATE_IPP_idle=Idle -STATE_IPP_stopped=Stopped -STATE_IPP_paused=Paused -STATE_IPP_toner-low-report=Low Toner -STATE_IPP_none=None -MEDIA_IPP_stationery=Stationery -MEDIA_IPP_thermal=Thermal -IPP_COLOR_print-black=BW Printer DirectPrintingJobsDesc=This page lists printing jobs found for available printers. GoogleAuthNotConfigured=Google OAuth setup not done. Enable module OAuth and set a Google ID/Secret. -GoogleAuthConfigured=Google OAuth credentials found into setup of module OAuth. \ No newline at end of file +GoogleAuthConfigured=Google OAuth credentials found into setup of module OAuth. diff --git a/htdocs/langs/en_US/products.lang b/htdocs/langs/en_US/products.lang index c0509e6a902..a6f2ba51f23 100644 --- a/htdocs/langs/en_US/products.lang +++ b/htdocs/langs/en_US/products.lang @@ -14,8 +14,6 @@ Create=Create Reference=Reference NewProduct=New product NewService=New service -ProductCode=Product code -ServiceCode=Service code ProductVatMassChange=Mass VAT change ProductVatMassChangeDesc=This page can be used to modify a VAT rate defined on products or services from a value to another. Warning, this change is done on all database. MassBarcodeInit=Mass barcode init @@ -25,29 +23,17 @@ ProductAccountancySellCode=Accountancy code (sell) ProductOrService=Product or Service ProductsAndServices=Products and Services ProductsOrServices=Products or Services -ProductsAndServicesOnSell=Products and Services for sale or for purchase -ProductsAndServicesNotOnSell=Products and Services not for sale -ProductsAndServicesStatistics=Products and Services statistics -ProductsStatistics=Products statistics ProductsOnSell=Product for sale or for purchase ProductsNotOnSell=Product not for sale and not for purchase ProductsOnSellAndOnBuy=Products for sale and for purchase ServicesOnSell=Services for sale or for purchase ServicesNotOnSell=Services not for sale ServicesOnSellAndOnBuy=Services for sale and for purchase -InternalRef=Internal reference -LastRecorded=Latest recorded products/services on sell -LastRecordedProductsAndServices=Latest %s recorded products/services LastModifiedProductsAndServices=Latest %s modified products/services LastRecordedProducts=Latest %s recorded products LastRecordedServices=Latest %s recorded services -LastProducts=Latest products -CardProduct0=Product card -CardProduct1=Service card -CardContract=Contract card Stock=Stock Stocks=Stocks -Movement=Movement Movements=Movements Sell=Sales Buy=Purchases @@ -62,7 +48,6 @@ ProductStatusOnBuy=For purchase ProductStatusNotOnBuy=Not for purchase ProductStatusOnBuyShort=For purchase ProductStatusNotOnBuyShort=Not for purchase -UpdatePrice=Update price UpdateVAT=Update vat UpdateDefaultPrice=Update default price UpdateLevelPrices=Update prices for each level @@ -70,22 +55,12 @@ AppliedPricesFrom=Applied prices from SellingPrice=Selling price SellingPriceHT=Selling price (net of tax) SellingPriceTTC=Selling price (inc. tax) -PublicPrice=Public price -CurrentPrice=Current price CostPriceDescription=This price (net of tax) can be used to store the average amount this product cost to your company. It may be any price you calculate yourself, for example from the average buying price plus average production and distribution cost. CostPriceUsage=In a future version, this value could be used for margin calculation. NewPrice=New price MinPrice=Min. selling price -MinPriceHT=Min. selling price (net of tax) -MinPriceTTC=Min. selling price (inc. tax) CantBeLessThanMinPrice=The selling price can't be lower than minimum allowed for this product (%s without tax). This message can also appears if you type a too important discount. -ContractStatus=Contract status ContractStatusClosed=Closed -ContractStatusRunning=Ongoing -ContractStatusExpired=expired -ContractStatusOnHold=On hold -ContractStatusToRun=Make ongoing -ContractNotRunning=This contract is not ongoing ErrorProductAlreadyExists=A product with reference %s already exists. ErrorProductBadRefOrLabel=Wrong value for reference or label. ErrorProductClone=There was a problem while trying to clone the product or service. @@ -97,30 +72,19 @@ ShowService=Show service ProductsAndServicesArea=Product and Services area ProductsArea=Product area ServicesArea=Services area -AddToMyProposals=Add to my proposals -AddToOtherProposals=Add to other proposals -AddToMyBills=Add to my bills -AddToOtherBills=Add to other bills -CorrectStock=Correct stock ListOfStockMovements=List of stock movements BuyingPrice=Buying price PriceForEachProduct=Products with specific prices -NoPriceSpecificToCustomer=This customer has no specific prices. All standard prices for products/services will be used. SupplierCard=Supplier card -AllWays=Path to find your product in stock -NoCat=Your product is not in any category -PrimaryWay=Primary path PriceRemoved=Price removed BarCode=Barcode BarcodeType=Barcode type SetDefaultBarcodeType=Set barcode type BarcodeValue=Barcode value NoteNotVisibleOnBill=Note (not visible on invoices, proposals...) -CreateCopy=Create copy ServiceLimitedDuration=If product is a service with limited duration: MultiPricesAbility=Several level of prices per product/service MultiPricesNumPrices=Number of prices -MultiPriceLevelsName=Price categories AssociatedProductsAbility=Activate the package feature AssociatedProducts=Package product AssociatedProductsNumber=Number of products composing this package product @@ -128,12 +92,10 @@ ParentProductsNumber=Number of parent packaging product ParentProducts=Parent products IfZeroItIsNotAVirtualProduct=If 0, this product is not a package product IfZeroItIsNotUsedByVirtualProduct=If 0, this product is not used by any package product -EditAssociate=Associate Translation=Translation KeywordFilter=Keyword filter CategoryFilter=Category filter ProductToAddSearch=Search product to add -AddDel=Add/Delete NoMatchFound=No match found ProductAssociationList=List of products/services that are component of this virtual product/package ProductParentList=List of package products/services with this product as a component @@ -147,22 +109,13 @@ ImportDataset_produit_1=Products ImportDataset_service_1=Services DeleteProductLine=Delete product line ConfirmDeleteProductLine=Are you sure you want to delete this product line? -NoProductMatching=No product/service match your criteria -MatchingProducts=Matching products/services -NoStockForThisProduct=No stock for this product -NoStock=No Stock -Restock=Restock ProductSpecial=Special QtyMin=Minimum Qty -PriceQty=Price for this quantity PriceQtyMin=Price for this min. qty (w/o discount) VATRateForSupplierProduct=VAT Rate (for this supplier/product) DiscountQtyMin=Default discount for qty NoPriceDefinedForThisSupplier=No price/qty defined for this supplier/product NoSupplierPriceDefinedForThisProduct=No supplier price/qty defined for this product -RecordedProducts=Products recorded -RecordedServices=Services recorded -RecordedProductsAndServices=Products/services recorded PredefinedProductsToSell=Predefined products to sell PredefinedServicesToSell=Predefined services to sell PredefinedProductsAndServicesToSell=Predefined products/services to sell @@ -171,7 +124,6 @@ PredefinedServicesToPurchase=Predefined services to purchase PredefinedProductsAndServicesToPurchase=Predefined products/services to puchase NotPredefinedProducts=Not predefined products/services GenerateThumb=Generate thumb -ProductCanvasAbility=Use special "canvas" addons ServiceNb=Service #%s ListProductServiceByPopularity=List of products/services by popularity ListProductByPopularity=List of products by popularity @@ -192,7 +144,6 @@ SuppliersPrices=Supplier prices SuppliersPricesOfProductsOrServices=Supplier prices (of products or services) CustomCode=Customs code CountryOrigin=Origin country -HiddenIntoCombo=Hidden into select lists Nature=Nature ShortLabel=Short label Unit=Unit @@ -211,42 +162,24 @@ gram=gram g=g meter=meter m=m -linearmeter=linear meter lm=lm -squaremeter=square meter m2=m² -cubicmeter=cubic meter m3=m³ liter=liter l=L ProductCodeModel=Product ref template ServiceCodeModel=Service ref template -AddThisProductCard=Create product card -HelpAddThisProductCard=This option allows you to create or clone a product if it does not exist. -AddThisServiceCard=Create service card -HelpAddThisServiceCard=This option allows you to create or clone a service if it does not exist. CurrentProductPrice=Current price AlwaysUseNewPrice=Always use current price of product/service AlwaysUseFixedPrice=Use the fixed price PriceByQuantity=Different prices by quantity PriceByQuantityRange=Quantity range -ProductsDashboard=Products/Services summary -UpdateOriginalProductLabel=Modify original label -HelpUpdateOriginalProductLabel=Allows to edit the name of the product MultipriceRules=Price level rules UseMultipriceRules=Use price level rules (defined into product module setup) to autocalculate prices of all other level according to first level PercentVariationOver=%% variation over %s PercentDiscountOver=%% discount over %s ### composition fabrication -Building=Production and items dispatchment Build=Produce -BuildIt=Produce & Dispatch -BuildindListInfo=Available quantity for production per warehouse (set it to 0 for no further action) -QtyNeed=Qty -UnitPmp=Net unit VWAP -CostPmpHT=Net total VWAP -ProductUsedForBuild=Auto consumed by production -ProductBuilded=Production completed ProductsMultiPrice=Products and prices for each price level ProductsOrServiceMultiPrice=Customer prices (of products or services, multi-prices) ProductSellByQuarterHT=Products turnover quarterly before tax @@ -297,12 +230,6 @@ AddUpdater=Add Updater GlobalVariables=Global variables VariableToUpdate=Variable to update GlobalVariableUpdaters=Global variable updaters -GlobalVariableUpdaterType0=JSON data -GlobalVariableUpdaterHelp0=Parses JSON data from specified URL, VALUE specifies the location of relevant value, -GlobalVariableUpdaterHelpFormat0=format is {"URL": "http://example.com/urlofjson", "VALUE": "array1,array2,targetvalue"} -GlobalVariableUpdaterType1=WebService data -GlobalVariableUpdaterHelp1=Parses WebService data from specified URL, NS specifies the namespace, VALUE specifies the location of relevant value, DATA should contain the data to send and METHOD is the calling WS method -GlobalVariableUpdaterHelpFormat1=format is {"URL": "http://example.com/urlofws", "VALUE": "array,targetvalue", "NS": "http://example.com/urlofns", "METHOD": "myWSMethod", "DATA": {"your": "data, "to": "send"}} UpdateInterval=Update interval (minutes) LastUpdated=Last updated CorrectlyUpdated=Correctly updated diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index 6d1c8e4e3cb..1a370ecf47a 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -26,18 +26,13 @@ DeleteAProject=Delete a project DeleteATask=Delete a task ConfirmDeleteAProject=Are you sure you want to delete this project ? ConfirmDeleteATask=Are you sure you want to delete this task ? -OfficerProject=Officer project -LastProjects=Latest %s projects -AllProjects=All projects OpenedProjects=Open projects OpenedTasks=Open tasks OpportunitiesStatusForOpenedProjects=Opportunities amount of open projects by status OpportunitiesStatusForProjects=Opportunities amount of projects by status -ProjectsList=List of projects ShowProject=Show project SetProject=Set project NoProject=No project defined or owned -NbOpenTasks=Nb of open tasks NbOfProjects=Nb of projects TimeSpent=Time spent TimeSpentByYou=Time spent by you @@ -53,7 +48,6 @@ TasksOnOpenedProject=Tasks on open projects WorkloadNotDefined=Workload not defined NewTimeSpent=New time spent MyTimeSpent=My time spent -MyTasks=My tasks Tasks=Tasks Task=Task TaskDateStart=Task start date @@ -61,10 +55,8 @@ TaskDateEnd=Task end date TaskDescription=Task description NewTask=New task AddTask=Create task -AddDuration=Add duration Activity=Activity Activities=Tasks/activities -MyActivity=My activity MyActivities=My tasks/activities MyProjects=My projects MyProjectsArea=My projects Area @@ -87,7 +79,6 @@ ListExpenseReportsAssociatedProject=List of expense reports associated with the ListDonationsAssociatedProject=List of donations associated with the project ListActionsAssociatedProject=List of events associated with the project ListTaskTimeUserProject=List of time consumed on tasks of project -TaskTimeUserProject=Time consumed on tasks of project ActivityOnProjectToday=Activity on project today ActivityOnProjectYesterday=Activity on project yesterday ActivityOnProjectThisWeek=Activity on project this week @@ -150,18 +141,13 @@ TypeContact_project_task_internal_TASKCONTRIBUTOR=Contributor TypeContact_project_task_external_TASKCONTRIBUTOR=Contributor SelectElement=Select element AddElement=Link to element -UnlinkElement=Unlink element # Documents models DocumentModelBeluga=Project template for linked objects overview DocumentModelBaleine=Project report template for tasks PlannedWorkload=Planned workload PlannedWorkloadShort=Workload -WorkloadOccupation=Workload assignation ProjectReferers=Related items -SearchAProject=Search a project -SearchATask=Search a task ProjectMustBeValidatedFirst=Project must be validated first -ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a resource to allocate time InputPerDay=Input per day InputPerWeek=Input per week @@ -170,7 +156,6 @@ TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projects with this user as contact TasksWithThisUserAsContact=Tasks assigned to this user ResourceNotAssignedToProject=Not assigned to project -ResourceNotAssignedToTask=Not assigned to task ResourceNotAssignedToTheTask=Not assigned to the task AssignTaskToMe=Assign task to me AssignTask=Assign diff --git a/htdocs/langs/en_US/propal.lang b/htdocs/langs/en_US/propal.lang index 943cde76835..8c8c37a7bb1 100644 --- a/htdocs/langs/en_US/propal.lang +++ b/htdocs/langs/en_US/propal.lang @@ -3,27 +3,21 @@ Proposals=Commercial proposals Proposal=Commercial proposal ProposalShort=Proposal ProposalsDraft=Draft commercial proposals -ProposalDraft=Draft commercial proposal ProposalsOpened=Open commercial proposals Prop=Commercial proposals CommercialProposal=Commercial proposal -CommercialProposals=Commercial proposals ProposalCard=Proposal card NewProp=New commercial proposal -NewProposal=New commercial proposal NewPropal=New proposal Prospect=Prospect -ProspectList=Prospect list DeleteProp=Delete commercial proposal ValidateProp=Validate commercial proposal AddProp=Create proposal ConfirmDeleteProp=Are you sure you want to delete this commercial proposal ? ConfirmValidateProp=Are you sure you want to validate this commercial proposal under name %s ? LastPropals=Latest %s proposals -LastClosedProposals=Latest %s closed proposals LastModifiedProposals=Latest %s modified proposals AllPropals=All proposals -LastProposals=Latest proposals SearchAProposal=Search a proposal NoProposal=No proposal ProposalsStatistics=Commercial proposal's statistics @@ -33,17 +27,12 @@ NbOfProposals=Number of commercial proposals ShowPropal=Show proposal PropalsDraft=Drafts PropalsOpened=Open -PropalsNotBilled=Closed not billed PropalStatusDraft=Draft (needs to be validated) PropalStatusValidated=Validated (proposal is open) -PropalStatusOpened=Validated (proposal is open) -PropalStatusClosed=Closed PropalStatusSigned=Signed (needs billing) PropalStatusNotSigned=Not signed (closed) PropalStatusBilled=Billed PropalStatusDraftShort=Draft -PropalStatusValidatedShort=Validated -PropalStatusOpenedShort=Open PropalStatusClosedShort=Closed PropalStatusSignedShort=Signed PropalStatusNotSignedShort=Not signed @@ -52,24 +41,14 @@ PropalsToClose=Commercial proposals to close PropalsToBill=Signed commercial proposals to bill ListOfProposals=List of commercial proposals ActionsOnPropal=Events on proposal -NoOpenedPropals=No open commercial proposals -NoOtherOpenedPropals=No other open commercial proposals -NoPropal=No commercial proposal RefProposal=Commercial proposal ref SendPropalByMail=Send commercial proposal by mail -AssociatedDocuments=Documents associated with the proposal: -ErrorCantOpenDir=Can't open directory DatePropal=Date of proposal DateEndPropal=Validity ending date -DateEndPropalShort=Date end ValidityDuration=Validity duration CloseAs=Set status to SetAcceptedRefused=Set accepted/refused -BuildBill=Build invoice ErrorPropalNotFound=Propal %s not found -Estimate=Estimate : -EstimateShort=Estimate -OtherPropals=Other proposals AddToDraftProposals=Add to draft proposal NoDraftProposals=No draft proposals CopyPropalFrom=Create commercial proposal by copying existing proposal @@ -96,7 +75,6 @@ TypeContact_propal_external_BILLING=Customer invoice contact TypeContact_propal_external_CUSTOMER=Customer contact following-up proposal # Document models DocModelAzurDescription=A complete proposal model (logo...) -DocModelJauneDescription=Jaune proposal model DefaultModelPropalCreate=Default model creation DefaultModelPropalToBill=Default template when closing a business proposal (to be invoiced) DefaultModelPropalClosed=Default template when closing a business proposal (unbilled) diff --git a/htdocs/langs/en_US/receiptprinter.lang b/htdocs/langs/en_US/receiptprinter.lang index a2f3ba26a21..756461488cc 100644 --- a/htdocs/langs/en_US/receiptprinter.lang +++ b/htdocs/langs/en_US/receiptprinter.lang @@ -35,64 +35,10 @@ DOL_ALIGN_RIGHT=Right align text DOL_USE_FONT_A=Use font A of printer DOL_USE_FONT_B=Use font B of printer DOL_USE_FONT_C=Use font C of printer -DOL_BOLD=Text Bold -/DOL_BOLD=End of Text Bold -DOL_DOUBLE_HEIGHT=Text double height -/DOL_DOUBLE_HEIGHT=End of Text double height -DOL_DOUBLE_WIDTH=Text double width -/DOL_DOUBLE_WIDTH=End of Text double width -DOL_UNDERLINE=Underline text -/DOL_UNDERLINE=End of Underline text -DOL_UNDERLINE_2DOTS=Underline with double line -/DOL_UNDERLINE_2DOTS=End of Underline with double line -DOL_EMPHASIZED=Emphasized text -/DOL_EMPHASIZED=End of Emphasized text -DOL_SWITCH_COLORS=Print in white on black -/DOL_SWITCH_COLORS=End of Print in white on black DOL_PRINT_BARCODE=Print barcode DOL_PRINT_BARCODE_CUSTOMER_ID=Print barcode customer id -DOL_SET_PRINT_WIDTH_57=Ticket print width of 57mm DOL_CUT_PAPER_FULL=Cut ticket completely DOL_CUT_PAPER_PARTIAL=Cut ticket partially DOL_OPEN_DRAWER=Open cash drawer DOL_ACTIVATE_BUZZER=Activate buzzer DOL_PRINT_QRCODE=Print QR Code -DOL_PRINT_DATE=Print date AAAA-MM-DD -DOL_PRINT_DATE_TIME=Print date and time AAAA-MM-DD HH:MM:SS -DOL_PRINT_YEAR=Print Year -DOL_PRINT_MONTH_LETTERS=Print month in letters (example : november) -DOL_PRINT_MONTH=Print month number -DOL_PRINT_DAY=Print day number -DOL_PRINT_DAY_LETTERS=Print day number -DOL_PRINT_TABLE=Print table number (for restaurant, bar...) -DOL_PRINT_CUTLERY=Print number of cutlery (for restaurant) -DOL_PRINT_PAYMENT=Print payment method -DOL_PRINT_LOGO=Print logo stored on printer. Example : 32|32 -DOL_PRINT_LOGO_OLD=Print logo stored on printer. Must be followed by logo code. For old printers. -DOL_PRINT_ORDER_LINES=Print order lines -DOL_PRINT_ORDER_TAX=Print order total tax -DOL_PRINT_ORDER_LOCAL_TAX=Print order local tax -DOL_PRINT_ORDER_TOTAL=Print order total -DOL_PRINT_ORDER_NUMBER=Print order number -DOL_PRINT_ORDER_NUMBER_UNIQUE=Print order number after validation -DOL_PRINT_CUSTOMER_FIRSTNAME=Print customer name -DOL_PRINT_CUSTOMER_LASTNAME=Print customer surname -DOL_PRINT_CUSTOMER_MAIL=Print customer mail -DOL_PRINT_CUSTOMER_PHONE=Print customer phone -DOL_PRINT_CUSTOMER_MOBILE=Print customer mobile -DOL_PRINT_CUSTOMER_SKYPE=Print customer skype -DOL_PRINT_CUSTOMER_TAX_NUMBER=Print customer VAT number -DOL_PRINT_CUSTOMER_ACCOUNT_BALANCE=Print customer account balance -DOL_PRINT_VENDOR_LASTNAME=Print vendor surname -DOL_PRINT_VENDOR_FIRSTNAME=Print vendor name -DOL_PRINT_VENDOR_MAIL=Print vendor mail -DOL_PRINT_CUSTOMER_POINTS=Print customer points -DOL_PRINT_ORDER_POINTS=Print number of points for this order -DOL_PRINT_IF_CUSTOMER=Print the line IF a customer is affected to the order -DOL_PRINT_IF_VENDOR=Print the line IF a vendor is affected to the order -DOL_PRINT_IF_HAPPY_HOUR=Print the line IF Happy Hour -DOL_PRINT_IF_NUM_ORDER_UNIQUE=Print the line IF order is validated -DOL_PRINT_IF_CUSTOMER_POINTS=Print the line IF customer points > 0 -DOL_PRINT_IF_ORDER_POINTS=Print the line IF points of the order > 0 -DOL_PRINT_IF_CUSTOMER_TAX_NUMBER=Print the line IF customer has vat number -DOL_PRINT_IF_CUSTOMER_ACCOUNT_BALANCE_POSITIVE=Print the line IF customer balance > 0 diff --git a/htdocs/langs/en_US/resource.lang b/htdocs/langs/en_US/resource.lang index cdff0391c30..f95121db351 100644 --- a/htdocs/langs/en_US/resource.lang +++ b/htdocs/langs/en_US/resource.lang @@ -1,7 +1,6 @@ # Dolibarr language file - Source file is en_US - resource MenuResourceIndex=Resources MenuResourceAdd=New resource -MenuResourcePlanning=Resource planning DeleteResource=Delete resource ConfirmDeleteResourceElement=Confirm delete the resource for this element NoResourceInDatabase=No resource in database. @@ -18,8 +17,6 @@ ResourceFormLabel_description=Resource description ResourcesLinkedToElement=Resources linked to element ShowResource=Show resource -ShowResourcePlanning=Show resource planning -GotoDate=Go to date ResourceElementPage=Element resources ResourceCreatedWithSuccess=Resource successfully created @@ -27,7 +24,6 @@ RessourceLineSuccessfullyDeleted=Resource line successfully deleted RessourceLineSuccessfullyUpdated=Resource line successfully updated ResourceLinkedWithSuccess=Resource linked with success -TitleResourceCard=Resource card ConfirmDeleteResource=Confirm to delete this resource RessourceSuccessfullyDeleted=Resource successfully deleted DictionaryResourceType=Type of resources diff --git a/htdocs/langs/en_US/sendings.lang b/htdocs/langs/en_US/sendings.lang index 270c92b3045..5a4ef0da435 100644 --- a/htdocs/langs/en_US/sendings.lang +++ b/htdocs/langs/en_US/sendings.lang @@ -10,42 +10,31 @@ Receivings=Delivery Receipts SendingsArea=Shipments area ListOfSendings=List of shipments SendingMethod=Shipping method -SendingReceipt=Shipping receipt LastSendings=Latest %s shipments -SearchASending=Search for shipment StatisticsOfSendings=Statistics for shipments NbOfSendings=Number of shipments NumberOfShipmentsByMonth=Number of shipments by month SendingCard=Shipment card NewSending=New shipment CreateASending=Create a shipment -CreateSending=Create shipment QtyShipped=Qty shipped QtyToShip=Qty to ship QtyReceived=Qty received KeepToShip=Remain to ship OtherSendingsForSameOrder=Other shipments for this order -SendingsForSameOrder=Shipments for this order SendingsAndReceivingForSameOrder=Shipments and receivings for this order SendingsToValidate=Shipments to validate StatusSendingCanceled=Canceled StatusSendingDraft=Draft StatusSendingValidated=Validated (products to ship or already shipped) StatusSendingProcessed=Processed -StatusSendingCanceledShort=Canceled StatusSendingDraftShort=Draft StatusSendingValidatedShort=Validated StatusSendingProcessedShort=Processed SendingSheet=Shipment sheet -Carriers=Carriers -Carrier=Carrier -CarriersArea=Carriers area -NewCarrier=New carrier ConfirmDeleteSending=Are you sure you want to delete this shipment ? ConfirmValidateSending=Are you sure you want to validate this shipment with reference %s ? ConfirmCancelSending=Are you sure you want to cancel this shipment ? -GenericTransport=Generic transport -Enlevement=Gotten by customer DocumentModelSimple=Simple document model DocumentModelMerou=Merou A5 model WarningNoQtyLeftToSend=Warning, no products waiting to be shipped. @@ -57,11 +46,7 @@ SendShippingRef=Submission of shipment %s ActionsOnShipping=Events on shipment LinkToTrackYourPackage=Link to track your package ShipmentCreationIsDoneFromOrder=For the moment, creation of a new shipment is done from the order card. -RelatedShippings=Related shipments ShipmentLine=Shipment line -CarrierList=List of transporters -SendingRunning=Product from ordered customer orders -SuppliersReceiptRunning=Product from ordered supplier orders ProductQtyInCustomersOrdersRunning=Product quantity into opened customers orders ProductQtyInSuppliersOrdersRunning=Product quantity into opened suppliers orders ProductQtyInShipmentAlreadySent=Product quantity from opened customer order already sent @@ -69,14 +54,9 @@ ProductQtyInSuppliersShipmentAlreadyRecevied=Product quantity from opened suppli NoProductToShipFoundIntoStock=No product to ship found into warehouse %s. Correct stock or go back to choose another warehouse. WeightVolShort=Weight/Vol. ValidateOrderFirstBeforeShipment=You must first validate the order before being able to make shipments. -CloseShippeOrdersAutomatically=Classify the order "Delivered" if entirely shipped. # Sending methods -SendingMethodCATCH=Catch by customer -SendingMethodTRANS=Transporter -SendingMethodCOLSUI=Colissimo # ModelDocument -DocumentModelSirocco=Simple document model for delivery receipts DocumentModelTyphon=More complete document model for delivery receipts (logo...) Error_EXPEDITION_ADDON_NUMBER_NotDefined=Constant EXPEDITION_ADDON_NUMBER not defined SumOfProductVolumes=Sum of product volumes diff --git a/htdocs/langs/en_US/stocks.lang b/htdocs/langs/en_US/stocks.lang index c0f304bce35..d295e4b3451 100644 --- a/htdocs/langs/en_US/stocks.lang +++ b/htdocs/langs/en_US/stocks.lang @@ -5,8 +5,6 @@ Warehouses=Warehouses NewWarehouse=New warehouse / Stock area WarehouseEdit=Modify warehouse MenuNewWarehouse=New warehouse -WarehouseOpened=Warehouse open -WarehouseClosed=Warehouse closed WarehouseSource=Source warehouse WarehouseSourceNotDefined=No warehouse defined, AddOne=Add one @@ -17,11 +15,8 @@ DeleteSending=Delete sending Stock=Stock Stocks=Stocks StocksByLotSerial=Stocks by lot/serial -Movement=Movement Movements=Movements ErrorWarehouseRefRequired=Warehouse reference name is required -ErrorWarehouseLabelRequired=Warehouse label is required -CorrectStock=Correct stock ListOfWarehouses=List of warehouses ListOfStockMovements=List of stock movements StocksArea=Warehouses area @@ -41,7 +36,6 @@ StockMovements=Stock movements LabelMovement=Movement label NumberOfUnit=Number of units UnitPurchaseValue=Unit purchase price -TotalStock=Total in stock StockTooLow=Stock too low StockLowerThanLimit=Stock lower than alert limit EnhancedValue=Value @@ -63,7 +57,6 @@ DeStockOnShipmentOnClosing=Decrease real stocks on shipping classification close ReStockOnBill=Increase real stocks on suppliers invoices/credit notes validation ReStockOnValidateOrder=Increase real stocks on suppliers orders approbation ReStockOnDispatchOrder=Increase real stocks on manual dispatching into warehouses, after supplier order receiving -ReStockOnDeleteInvoice=Increase real stocks on invoice deletion OrderStatusNotReadyToDispatch=Order has not yet or no more a status that allows dispatching of products in stock warehouses. StockDiffPhysicTeoric=Explanation for difference between physical and theoretical stock NoPredefinedProductToDispatch=No predefined products for this object. So no dispatching in stock is required. @@ -73,10 +66,6 @@ StockLimit=Stock limit for alert PhysicalStock=Physical stock RealStock=Real Stock VirtualStock=Virtual stock -MininumStock=Minimum stock -StockUp=Stock up -MininumStockShort=Stock min -StockUpShort=Stock up IdWarehouse=Id warehouse DescWareHouse=Description warehouse LieuWareHouse=Localisation warehouse @@ -96,10 +85,8 @@ ThisWarehouseIsPersonalStock=This warehouse represents personal stock of %s %s SelectWarehouseForStockDecrease=Choose warehouse to use for stock decrease SelectWarehouseForStockIncrease=Choose warehouse to use for stock increase NoStockAction=No stock action -LastWaitingSupplierOrders=Orders waiting for receptions DesiredStock=Desired optimal stock DesiredStockDesc=This stock amount will be the value used to fill the stock by replenishment feature. -DesiredMaxStock=Desired maximum stock StockToBuy=To order Replenishment=Replenishment ReplenishmentOrders=Replenishment orders @@ -122,7 +109,6 @@ Replenishments=Replenishments NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) MassMovement=Mass movement -MassStockMovement=Mass stock movement SelectProductInAndOutWareHouse=Select a product, a quantity, a source warehouse and a target warehouse, then click "%s". Once this is done for all required movements, click onto "%s". RecordMovement=Record transfert ReceivingForSameOrder=Receipts for this order @@ -137,7 +123,6 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse -WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when "Product lot" module is on. It will be used to list which lot/serial are available for products requiring lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. InventoryCodeShort=Inv./Mov. code NoPendingReceptionOnSupplierOrder=No pending reception due to open supplier order ThisSerialAlreadyExistWithDifferentDate=This lot/serial number (%s) already exists but with different eatby or sellby date (found %s but you enter %s). diff --git a/htdocs/langs/en_US/supplier_proposal.lang b/htdocs/langs/en_US/supplier_proposal.lang index 394d4cabe01..86127b11a96 100644 --- a/htdocs/langs/en_US/supplier_proposal.lang +++ b/htdocs/langs/en_US/supplier_proposal.lang @@ -13,34 +13,23 @@ SupplierProposalArea=Supplier proposals area SupplierProposalShort=Supplier proposal SupplierProposals=Supplier proposals NewAskPrice=New price request -NewAsk=New request ShowSupplierProposal=Show price request AddSupplierProposal=Create a price request SupplierProposalRefFourn=Supplier ref SupplierProposalDate=Delivery date SupplierProposalRefFournNotice=Before closing to "Accepted", think to grasp suppliers references. -RelatedSupplierProposal=Related price requests suppliers ConfirmValidateAsk=Are you sure you want to validate this price request under name %s ? -DateAsk=Date of request DeleteAsk=Delete request ValidateAsk=Validate request -AddAsk=Create a request -SupplierProposalDraft=Drafts -SupplierProposalOpened=Open SupplierProposalStatusDraft=Draft (needs to be validated) SupplierProposalStatusValidated=Validated (request is open) -SupplierProposalStatusOpened=Validated (request is open) SupplierProposalStatusClosed=Closed SupplierProposalStatusSigned=Accepted SupplierProposalStatusNotSigned=Refused -SupplierProposalStatusBilled=Billed SupplierProposalStatusDraftShort=Draft -SupplierProposalStatusValidatedShort=Validated -SupplierProposalStatusOpenedShort=Open SupplierProposalStatusClosedShort=Closed SupplierProposalStatusSignedShort=Accepted SupplierProposalStatusNotSignedShort=Refused -SupplierProposalStatusBilledShort=Billed CopyAskFrom=Create price request by copying existing a request CreateEmptyAsk=Create blank request CloneAsk=Clone price request @@ -60,4 +49,4 @@ ListOfSupplierProposal=List of supplier proposal requests SupplierProposalsToClose=Supplier proposals to close SupplierProposalsToProcess=Supplier proposals to process LastSupplierProposals=Last price requests -AllPriceRequests=All requests \ No newline at end of file +AllPriceRequests=All requests diff --git a/htdocs/langs/en_US/suppliers.lang b/htdocs/langs/en_US/suppliers.lang index 8c96a0a68e8..10b4a5e60c8 100644 --- a/htdocs/langs/en_US/suppliers.lang +++ b/htdocs/langs/en_US/suppliers.lang @@ -1,7 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Suppliers -AddSupplier=Create a supplier -SupplierRemoved=Supplier removed SuppliersInvoice=Suppliers invoice ShowSupplierInvoice=Show Supplier Invoice NewSupplier=New supplier @@ -11,14 +9,11 @@ ShowSupplier=Show supplier OrderDate=Order date BuyingPriceMin=Minimum purchase price BuyingPriceMinShort=Min purchase price -SellingPriceMinShort=Min sell price -TotalBuyingPriceMin=Total of subproducts buying prices TotalBuyingPriceMinShort=Total of subproducts purchase prices TotalSellingPriceMinShort=Total of subproducts sell prices SomeSubProductHaveNoPrices=Some sub-products have no price defined AddSupplierPrice=Add supplier price ChangeSupplierPrice=Change supplier price -ProductHasAlreadyReferenceInThisSupplier=This product has already a reference in this supplier ReferenceSupplierIsAlreadyAssociatedWithAProduct=This reference supplier is already associated with a reference: %s NoRecordedSuppliers=No suppliers recorded SupplierPayment=Supplier payment @@ -33,12 +28,9 @@ ConfirmApproveThisOrder=Are you sure you want to approve order %s ? DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Are you sure you want to deny this order %s ? ConfirmCancelThisOrder=Are you sure you want to cancel this order %s ? -AddCustomerOrder=Create customer order -AddCustomerInvoice=Create customer invoice AddSupplierOrder=Create supplier order AddSupplierInvoice=Create supplier invoice ListOfSupplierProductForSupplier=List of products and prices for supplier %s -NoneOrBatchFileNeverRan=None or batch %s not ran recently SentToSuppliers=Sent to suppliers ListOfSupplierOrders=List of supplier orders MenuOrdersSupplierToBill=Supplier orders to invoice @@ -48,4 +40,4 @@ UseDoubleApproval=Use double approval when amount (without tax) is higher than ( SupplierReputation=Supplier reputation DoNotOrderThisProductToThisSupplier=Do not order NotTheGoodQualitySupplier=Wrong quality -ReputationForThisProduct=Reputation \ No newline at end of file +ReputationForThisProduct=Reputation diff --git a/htdocs/langs/en_US/trips.lang b/htdocs/langs/en_US/trips.lang index 9b96843f98d..33f98d6d5a7 100644 --- a/htdocs/langs/en_US/trips.lang +++ b/htdocs/langs/en_US/trips.lang @@ -1,7 +1,6 @@ # Dolibarr language file - Source file is en_US - trips ExpenseReport=Expense report ExpenseReports=Expense reports -Trip=Expense report Trips=Expense reports TripsAndExpenses=Expenses reports TripsAndExpensesStatistics=Expense reports statistics @@ -12,21 +11,18 @@ ListOfFees=List of fees ShowTrip=Show expense report NewTrip=New expense report CompanyVisited=Company/foundation visited -Kilometers=Kilometers FeesKilometersOrAmout=Amount or kilometers DeleteTrip=Delete expense report ConfirmDeleteTrip=Are you sure you want to delete this expense report ? ListTripsAndExpenses=List of expense reports ListToApprove=Waiting for approval ExpensesArea=Expense reports area -SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' ExpenseReportWaitingForApproval=A new expense report has been submitted for approval ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s TripId=Id expense report AnyOtherInThisListCanValidate=Person to inform for validation. TripSociete=Information company -TripSalarie=Informations user TripNDF=Informations expense report PDFStandardExpenseReports=Standard template to generate a PDF document for expense report ExpenseReportLine=Expense report line @@ -43,13 +39,8 @@ TF_HOTEL=Hotel TF_TAXI=Taxi ErrorDoubleDeclaration=You have declared another expense report into a similar date range. -AucuneNDF=No expense reports found for this criteria AucuneLigne=There is no expense report declared yet -AddLine=Add a line -AddLineMini=Add -Date_DEBUT=Period date start -Date_FIN=Period date end ModePaiement=Payment mode VALIDATOR=User responsible for approval @@ -64,21 +55,15 @@ MOTIF_CANCEL=Reason DATE_REFUS=Deny date DATE_SAVE=Validation date -DATE_VALIDE=Validation date DATE_CANCEL=Cancelation date DATE_PAIEMENT=Payment date -TO_PAID=Pay BROUILLONNER=Reopen -SendToValid=Sent on approval -ModifyInfoGen=Edit ValidateAndSubmit=Validate and submit for approval ValidatedWaitingApproval=Validated (waiting for approval) -NOT_VALIDATOR=You are not allowed to approve this expense report NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. -RefuseTrip=Deny an expense report ConfirmRefuseTrip=Are you sure you want to deny this expense report ? ValideTrip=Approve expense report @@ -87,7 +72,6 @@ ConfirmValideTrip=Are you sure you want to approve this expense report ? PaidTrip=Pay an expense report ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? -CancelTrip=Cancel an expense report ConfirmCancelTrip=Are you sure you want to cancel this expense report ? BrouillonnerTrip=Move back expense report to status "Draft" diff --git a/htdocs/langs/en_US/users.lang b/htdocs/langs/en_US/users.lang index 13f816c7a3e..a8447504235 100644 --- a/htdocs/langs/en_US/users.lang +++ b/htdocs/langs/en_US/users.lang @@ -1,9 +1,7 @@ # Dolibarr language file - Source file is en_US - users HRMArea=HRM area UserCard=User card -ContactCard=Contact card GroupCard=Group card -NoContactCard=No card among contacts Permission=Permission Permissions=Permissions EditPassword=Edit password @@ -11,8 +9,6 @@ SendNewPassword=Regenerate and send password ReinitPassword=Regenerate password PasswordChangedTo=Password changed to: %s SubjectNewPassword=Your new password for Dolibarr -AvailableRights=Available permissions -OwnedRights=Owned permissions GroupRights=Group permissions UserRights=User permissions UserGUISetup=User display setup @@ -20,31 +16,23 @@ DisableUser=Disable DisableAUser=Disable a user DeleteUser=Delete DeleteAUser=Delete a user -DisableGroup=Disable -DisableAGroup=Disable a group EnableAUser=Enable a user -EnableAGroup=Enable a group DeleteGroup=Delete DeleteAGroup=Delete a group ConfirmDisableUser=Are you sure you want to disable user %s ? -ConfirmDisableGroup=Are you sure you want to disable group %s ? ConfirmDeleteUser=Are you sure you want to delete user %s ? ConfirmDeleteGroup=Are you sure you want to delete group %s ? ConfirmEnableUser=Are you sure you want to enable user %s ? -ConfirmEnableGroup=Are you sure you want to enable group %s ? ConfirmReinitPassword=Are you sure you want to generate a new password for user %s ? ConfirmSendNewPassword=Are you sure you want to generate and send new password for user %s ? NewUser=New user CreateUser=Create user -SearchAGroup=Search a group -SearchAUser=Search a user LoginNotDefined=Login is not defined. NameNotDefined=Name is not defined. ListOfUsers=List of users SuperAdministrator=Super Administrator SuperAdministratorDesc=Global administrator AdministratorDesc=Administrator -AdministratorDescEntity=Administrator (for its company) DefaultRights=Default permissions DefaultRightsDesc=Define here default permissions that are automatically granted to a new created user (Go on user card to change permission of an existing user). DolibarrUsers=Dolibarr users @@ -57,7 +45,6 @@ RemoveFromGroup=Remove from group PasswordChangedAndSentTo=Password changed and sent to %s. PasswordChangeRequestSent=Request to change password for %s sent to %s. MenuUsersAndGroups=Users & Groups -MenuMyUserCard=My user card LastGroupsCreated=Latest %s created groups LastUsersCreated=Latest %s users created ShowGroup=Show group @@ -65,25 +52,17 @@ ShowUser=Show user NonAffectedUsers=Non assigned users UserModified=User modified successfully PhotoFile=Photo file -UserWithDolibarrAccess=User with Dolibarr access ListOfUsersInGroup=List of users in this group ListOfGroupsForUser=List of groups for this user -UsersToAdd=Users to add to this group -GroupsToAdd=Groups to add to this user -NoLogin=No login LinkToCompanyContact=Link to third party / contact LinkedToDolibarrMember=Link to member LinkedToDolibarrUser=Link to Dolibarr user LinkedToDolibarrThirdParty=Link to Dolibarr third party CreateDolibarrLogin=Create a user CreateDolibarrThirdParty=Create a third party -LoginAccountDisable=Account disabled, put a new login to activate it. LoginAccountDisableInDolibarr=Account disabled in Dolibarr. -LoginAccountDisableInLdap=Account disabled in the domain. UsePersonalValue=Use personal value -GuiLanguage=Interface language InternalUser=Internal user -MyInformations=My data ExportDataset_user_1=Dolibarr's users and properties DomainUser=Domain user %s Reactivate=Reactivate @@ -94,8 +73,6 @@ Inherited=Inherited UserWillBeInternalUser=Created user will be an internal user (because not linked to a particular third party) UserWillBeExternalUser=Created user will be an external user (because linked to a particular third party) IdPhoneCaller=Id phone caller -UserLogged=User %s login -UserLogoff=User %s logout NewUserCreated=User %s created NewUserPassword=Password change for %s EventUserModified=User %s modified diff --git a/htdocs/langs/en_US/website.lang b/htdocs/langs/en_US/website.lang index d43b65fc0f8..64e5041061a 100644 --- a/htdocs/langs/en_US/website.lang +++ b/htdocs/langs/en_US/website.lang @@ -4,7 +4,6 @@ WebsiteSetupDesc=Create here as much entry as number of different websites you n DeleteWebsite=Delete website ConfirmDeleteWebsite=Are you sure you want to delete this web site. All its pages and content will also be removed. WEBSITE_PAGENAME=Page name/alias -WEBSITE_URL=Web site URL WEBSITE_CSS_URL=URL of external CSS file WEBSITE_CSS_INLINE=CSS content MediaFiles=Media library @@ -21,4 +20,4 @@ PageAdded=Page '%s' added ViewSiteInNewTab=View site in new tab ViewPageInNewTab=View page in new tab SetAsHomePage=Set as Home page -RealURL=Real URL \ No newline at end of file +RealURL=Real URL diff --git a/htdocs/langs/en_US/withdrawals.lang b/htdocs/langs/en_US/withdrawals.lang index 1b282432a16..54b3de3915b 100644 --- a/htdocs/langs/en_US/withdrawals.lang +++ b/htdocs/langs/en_US/withdrawals.lang @@ -1,24 +1,16 @@ # Dolibarr language file - Source file is en_US - withdrawals -StandingOrdersArea=Standing orders area CustomersStandingOrdersArea=Customers standing orders area StandingOrders=Standing orders StandingOrder=Standing orders NewStandingOrder=New standing order StandingOrderToProcess=To process -StandingOrderProcessed=Processed -Withdrawals=Withdrawals -Withdrawal=Withdrawal WithdrawalsReceipts=Withdrawal receipts WithdrawalReceipt=Withdrawal receipt -WithdrawalReceiptShort=Receipt LastWithdrawalReceipts=Latest %s withdrawal receipts -WithdrawedBills=Withdrawal invoices WithdrawalsLines=Withdrawal lines RequestStandingOrderToTreat=Request for standing orders to process RequestStandingOrderTreated=Request for standing orders processed NotPossibleForThisStatusOfWithdrawReceiptORLine=Not yet possible. Withdraw status must be set to 'credited' before declaring reject on specific lines. -CustomersStandingOrders=Customer standing orders -CustomerStandingOrder=Customer standing order NbOfInvoiceToWithdraw=Nb. of invoice with withdraw request NbOfInvoiceToWithdrawWithInfo=Nb. of invoice with withdraw request for customers having defined bank account information InvoiceWaitingWithdraw=Invoice waiting for withdraw @@ -32,7 +24,6 @@ WithdrawRejectStatistics=Withdraw reject's statistics LastWithdrawalReceipt=Latest %s withdrawal receipts MakeWithdrawRequest=Make a withdraw request ThirdPartyBankCode=Third party bank code -ThirdPartyDeskCode=Third party desk code NoInvoiceCouldBeWithdrawed=No invoice withdrawed with success. Check that invoice are on companies with a valid BAN. ClassCredited=Classify credited ClassCreditedConfirm=Are you sure you want to classify this withdrawal receipt as credited on your bank account? @@ -48,7 +39,6 @@ RefusedReason=Reason for rejection RefusedInvoicing=Billing the rejection NoInvoiceRefused=Do not charge the rejection InvoiceRefused=Invoice refused (Charge the rejection to customer) -StatusUnknown=Unknown StatusWaiting=Waiting StatusTrans=Sent StatusCredited=Credited @@ -67,10 +57,8 @@ CreateGuichet=Only office CreateBanque=Only bank OrderWaiting=Waiting for treatment NotifyTransmision=Withdrawal Transmission -NotifyEmision=Withdrawal Emission NotifyCredit=Withdrawal Credit NumeroNationalEmetter=National Transmitter Number -PleaseSelectCustomerBankBANToWithdraw=Select information about customer bank account to withdraw WithBankUsingRIB=For bank accounts using RIB WithBankUsingBANBIC=For bank accounts using IBAN/BIC/SWIFT BankToReceiveWithdraw=Bank account to receive withdraws @@ -95,7 +83,6 @@ InfoCreditMessage=The standing order %s has been paid by the bank
Data of pay InfoTransSubject=Transmission of standing order %s to bank InfoTransMessage=The standing order %s has been sent to bank by %s %s.

InfoTransData=Amount: %s
Method: %s
Date: %s -InfoFoot=This is an automated message sent by Dolibarr InfoRejectSubject=Standing order refused InfoRejectMessage=Hello,

the standing order of invoice %s related to the company %s, with an amount of %s has been refused by the bank.

--
%s ModeWarning=Option for real mode was not set, we stop after this simulation From cd122462aa816e8fa407682c39d44a9410adc978 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 19 Jun 2016 11:19:11 +0200 Subject: [PATCH 128/212] Fix errors on files/dir permissions on dolfilemanager. --- htdocs/core/filemanagerdol/connectors/php/basexml.php | 2 ++ .../core/filemanagerdol/connectors/php/commands.php | 10 +++++----- .../core/filemanagerdol/connectors/php/connector.php | 3 ++- htdocs/core/filemanagerdol/connectors/php/io.php | 11 +++++++---- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/htdocs/core/filemanagerdol/connectors/php/basexml.php b/htdocs/core/filemanagerdol/connectors/php/basexml.php index a14b843b465..f1fe5365e7a 100644 --- a/htdocs/core/filemanagerdol/connectors/php/basexml.php +++ b/htdocs/core/filemanagerdol/connectors/php/basexml.php @@ -102,6 +102,8 @@ function SendError($number, $text) { SetXmlHeaders(); + dol_syslog('Error: '.$number.' '.$text, LOG_ERR); + // Create the XML document header echo '' ; diff --git a/htdocs/core/filemanagerdol/connectors/php/commands.php b/htdocs/core/filemanagerdol/connectors/php/commands.php index 0449635aaac..3f02b9f39fb 100644 --- a/htdocs/core/filemanagerdol/connectors/php/commands.php +++ b/htdocs/core/filemanagerdol/connectors/php/commands.php @@ -266,15 +266,15 @@ function FileUpload($resourceType, $currentFolder, $sCommand, $CKEcallback = '') break ; } - $permissions = 0777; - + $permissions = '0777'; if ( isset( $Config['ChmodOnUpload'] ) && $Config['ChmodOnUpload'] ) { - $permissions = $Config['ChmodOnUpload'] ; + $permissions = (string) $Config['ChmodOnUpload'] ; } - + $permissionsdec = octdec($permissions); + dol_syslog("commands.php permission = ".$permissions." ".$permissionsdec." ".decoct($permissionsdec)); $oldumask = umask(0); - chmod($sFilePath, $permissions); + chmod($sFilePath, $permissionsdec); umask($oldumask); } diff --git a/htdocs/core/filemanagerdol/connectors/php/connector.php b/htdocs/core/filemanagerdol/connectors/php/connector.php index 23d4eb79d77..2f3c6f64388 100644 --- a/htdocs/core/filemanagerdol/connectors/php/connector.php +++ b/htdocs/core/filemanagerdol/connectors/php/connector.php @@ -55,8 +55,9 @@ function DoResponse() // Check if it is an allowed command if (! IsAllowedCommand($sCommand)) + { SendError(1, 'The "' . $sCommand . '" command isn\'t allowed'); - + } // Check if it is an allowed type. if (! IsAllowedType($sResourceType)) SendError(1, 'Invalid type specified'); diff --git a/htdocs/core/filemanagerdol/connectors/php/io.php b/htdocs/core/filemanagerdol/connectors/php/io.php index 72aea0e0eb0..731509b6e10 100644 --- a/htdocs/core/filemanagerdol/connectors/php/io.php +++ b/htdocs/core/filemanagerdol/connectors/php/io.php @@ -181,14 +181,17 @@ function CreateServerFolder($folderPath, $lastFolder = null) } else { - $permissions = 0777 ; - if ( isset( $Config['ChmodOnFolderCreate'] ) ) + $permissions = '0777'; + if ( isset( $Config['ChmodOnFolderCreate'] ) && $Config['ChmodOnFolderCreate']) { - $permissions = $Config['ChmodOnFolderCreate'] ; + $permissions = (string) $Config['ChmodOnFolderCreate']; } + $permissionsdec = octdec($permissions); + $permissionsdec |= octdec('0111'); // Set x bit required for directories + dol_syslog("io.php permission = ".$permissions." ".$permissionsdec." ".decoct($permissionsdec)); // To create the folder with 0777 permissions, we need to set umask to zero. $oldumask = umask(0); - mkdir($folderPath, $permissions); + mkdir($folderPath, $permissionsdec); umask($oldumask); } From 0cbfb28a0f2a7510afed58c2d1f72dd0a4acda18 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 19 Jun 2016 11:45:13 +0200 Subject: [PATCH 129/212] FIX using media files in dolfilemanager with spaces inside. --- .../browser/default/frmresourceslist.php | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/htdocs/core/filemanagerdol/browser/default/frmresourceslist.php b/htdocs/core/filemanagerdol/browser/default/frmresourceslist.php index cf6306f9672..65703379dbe 100644 --- a/htdocs/core/filemanagerdol/browser/default/frmresourceslist.php +++ b/htdocs/core/filemanagerdol/browser/default/frmresourceslist.php @@ -71,7 +71,7 @@ function ProtectPath(path) oListManager.GetFolderRowHtml = function( folderName, folderPath ) { // Build the link to view the folder. - var sLink = '' ; + var sLink = '' ; return '' + '' + @@ -84,10 +84,11 @@ oListManager.GetFolderRowHtml = function( folderName, folderPath ) '<\/td><\/tr>' ; } +// Note: fileUrl must be already "URL encoded" oListManager.GetFileRowHtml = function( fileName, fileUrl, fileSize ) { // Build the link to view the folder. - var sLink = '' ; + var sLink = '' ; // Get the file icon. var sIcon = oIcons.GetIcon( fileName ); @@ -123,11 +124,13 @@ function GetUrlParam( paramName ) return '' ; } +// Note fileUrl must be already "URL encoded" function OpenFile( fileUrl ) { funcNum = GetUrlParam('CKEditorFuncNum'); - window.top.opener.CKEDITOR.tools.callFunction(funcNum, encodeURI( fileUrl ).replace( '#', '%23' )); - + //window.top.opener.CKEDITOR.tools.callFunction(funcNum, encodeURI( fileUrl ).replace( '#', '%23' )); + window.top.opener.CKEDITOR.tools.callFunction(funcNum, fileUrl.replace( '#', '%23' )); + /////////////////////////////////// window.top.close(); window.top.opener.focus(); From eac5cbb0dd5ba06ff13c93e79e64a4461e54c596 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 19 Jun 2016 11:59:55 +0200 Subject: [PATCH 130/212] FIX Fix the reposition on the clear target button. --- htdocs/comm/mailing/cibles.php | 5 +++-- htdocs/core/lib/functions.lib.php | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/htdocs/comm/mailing/cibles.php b/htdocs/comm/mailing/cibles.php index 56dfd753911..d09be0897c3 100644 --- a/htdocs/comm/mailing/cibles.php +++ b/htdocs/comm/mailing/cibles.php @@ -122,9 +122,10 @@ if (GETPOST('clearlist')) // Loading Class $obj = new MailingTargets($db); $obj->clear_target($id); - + /* Avoid this to allow reposition header("Location: ".$_SERVER['PHP_SELF']."?id=".$id); exit; + */ } if ($action == 'delete') @@ -400,7 +401,7 @@ if ($object->fetch($id) >= 0) $cleartext=''; if ($allowaddtarget) { - $cleartext=$langs->trans("ToClearAllRecipientsClickHere").' '.''; + $cleartext=$langs->trans("ToClearAllRecipientsClickHere").' '.'id.'" class="button reposition">'.$langs->trans("TargetsReset").''; } print_barre_liste($langs->trans("MailSelectedRecipients"),$page,$_SERVER["PHP_SELF"],$param,$sortfield,$sortorder,$cleartext,$num,$nbtotalofrecords,'title_generic',0,'','',$limit); diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 88bdd5aa3b6..e37b3c3b565 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -5329,6 +5329,7 @@ function printCommonFooter($zone='private') print "\n"; if (! empty($conf->use_javascript_ajax)) { + print ''."\n"; print '