From 44746c1899ceddd876f6a775a7e80455ca723691 Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Fri, 15 Apr 2016 13:46:20 +0200 Subject: [PATCH 001/245] 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 b472a244db5ebacdc6b448bd4053c57b4e428dc8 Mon Sep 17 00:00:00 2001 From: Alexis Algoud Date: Mon, 25 Apr 2016 18:33:39 +0200 Subject: [PATCH 002/245] NEW decrease stock on expedition closing/classifying --- htdocs/admin/stock.php | 25 +++++- htdocs/commande/list.php | 2 +- htdocs/core/class/conf.class.php | 1 + htdocs/expedition/class/expedition.class.php | 81 ++++++++++++++++++++ htdocs/product/class/product.class.php | 2 +- htdocs/product/stock/product.php | 2 +- htdocs/product/stock/replenish.php | 4 +- 7 files changed, 112 insertions(+), 5 deletions(-) diff --git a/htdocs/admin/stock.php b/htdocs/admin/stock.php index 98ff43360a8..6d40faecf4b 100644 --- a/htdocs/admin/stock.php +++ b/htdocs/admin/stock.php @@ -52,14 +52,17 @@ if($action) // Mode of stock decrease if ($action == 'STOCK_CALCULATE_ON_BILL' || $action == 'STOCK_CALCULATE_ON_VALIDATE_ORDER' - || $action == 'STOCK_CALCULATE_ON_SHIPMENT') + || $action == 'STOCK_CALCULATE_ON_SHIPMENT' + || $action == 'STOCK_CALCULATE_ON_SHIPMENT_CLASSIFY_BILLED') { $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_BILL", '','chaine',0,'',$conf->entity); $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_VALIDATE_ORDER", '','chaine',0,'',$conf->entity); $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SHIPMENT", '','chaine',0,'',$conf->entity); + $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SHIPMENT_CLASSIFY_BILLED", '','chaine',0,'',$conf->entity); if ($action == 'STOCK_CALCULATE_ON_BILL') $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_BILL", GETPOST('STOCK_CALCULATE_ON_BILL','alpha'),'chaine',0,'',$conf->entity); if ($action == 'STOCK_CALCULATE_ON_VALIDATE_ORDER') $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_VALIDATE_ORDER", GETPOST('STOCK_CALCULATE_ON_VALIDATE_ORDER','alpha'),'chaine',0,'',$conf->entity); if ($action == 'STOCK_CALCULATE_ON_SHIPMENT') $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SHIPMENT", GETPOST('STOCK_CALCULATE_ON_SHIPMENT','alpha'),'chaine',0,'',$conf->entity); + if ($action == 'STOCK_CALCULATE_ON_SHIPMENT_CLASSIFY_BILLED') $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SHIPMENT_CLASSIFY_BILLED", GETPOST('STOCK_CALCULATE_ON_SHIPMENT_CLASSIFY_BILLED','alpha'),'chaine',0,'',$conf->entity); } // Mode of stock increase if ($action == 'STOCK_CALCULATE_ON_SUPPLIER_BILL' @@ -203,6 +206,26 @@ else print "\n\n"; $found++; +$var=!$var; +print ""; +print ''.$langs->trans("DeStockOnShipmentClassifyBilled").''; +print ''; +if (! empty($conf->expedition->enabled)) +{ + print "
"; + print ''; + print ""; + print $form->selectyesno("STOCK_CALCULATE_ON_SHIPMENT_CLASSIFY_BILLED",$conf->global->STOCK_CALCULATE_ON_SHIPMENT_CLASSIFY_BILLED,1,$disabled); + print ''; + print "
\n"; +} +else +{ + print $langs->trans("ModuleMustBeEnabledFirst", $langs->transnoentitiesnoconv("Module80Name")); +} +print "\n\n"; +$found++; + /*if (! $found) { $var=!$var; diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index d26c5dea5dd..8894b40b9e3 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -471,7 +471,7 @@ if ($resql) // stock order and stock order_supplier $stock_order=0; $stock_order_supplier=0; - if (! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT)) // What about other options ? + if (! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT) || ! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT_CLASSIFY_BILLED)) // What about other options ? { if (! empty($conf->commande->enabled)) { diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php index 0bd28092bff..4e5a64722e4 100644 --- a/htdocs/core/class/conf.class.php +++ b/htdocs/core/class/conf.class.php @@ -379,6 +379,7 @@ class Conf $this->global->STOCK_CALCULATE_ON_BILL=0; $this->global->STOCK_CALCULATE_ON_VALIDATE_ORDER=0; $this->global->STOCK_CALCULATE_ON_SHIPMENT=1; + $this->global->STOCK_CALCULATE_ON_SHIPMENT_CLASSIFY_BILLED=0; $this->global->STOCK_CALCULATE_ON_SUPPLIER_BILL=0; $this->global->STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER=0; $this->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER=1; diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index 373cb5f2666..9fd9448a955 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -1779,6 +1779,87 @@ class Expedition extends CommonObject //TODO: Option to set order billed if 100% of order is shipped $this->statut=2; $this->billed=1; + + + // If stock increment is done on sending (recommanded choice) + if (! $error && ! empty($conf->stock->enabled) && ! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT_CLASSIFY_BILLED)) + { + require_once DOL_DOCUMENT_ROOT.'/product/stock/class/mouvementstock.class.php'; + + $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 + $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"; + $sql.= " FROM ".MAIN_DB_PREFIX."commandedet as cd,"; + $sql.= " ".MAIN_DB_PREFIX."expeditiondet as ed"; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."expeditiondet_batch as edb on edb.fk_expeditiondet = ed.rowid"; + $sql.= " WHERE ed.fk_expedition = ".$this->id; + $sql.= " AND cd.rowid = ed.fk_origin_line"; + + dol_syslog(get_class($this)."::valid select details", LOG_DEBUG); + $resql=$this->db->query($sql); + if ($resql) + { + $cpt = $this->db->num_rows($resql); + for ($i = 0; $i < $cpt; $i++) + { + $obj = $this->db->fetch_object($resql); + if (empty($obj->edbrowid)) + { + $qty = $obj->qty; + } + else + { + $qty = $obj->edbqty; + } + if ($qty <= 0) continue; + dol_syslog(get_class($this)."::valid movement index ".$i." ed.rowid=".$obj->rowid." edb.rowid=".$obj->edbrowid); + + //var_dump($this->lines[$i]); + $mouvS = new MouvementStock($this->db); + $mouvS->origin = &$this; + + if (empty($obj->edbrowid)) + { + // line without batch detail + + // We decrement stock of product (and sub-products) -> update table llx_product_stock (key of this table is fk_product+fk_entrepot) and add a movement record + $result=$mouvS->livraison($user, $obj->fk_product, $obj->fk_entrepot, $qty, $obj->subprice, $langs->trans("ShipmentValidatedInDolibarr",$numref)); + if ($result < 0) { + $error++; break; + } + } + else + { + // line with batch detail + + // We decrement stock of product (and sub-products) -> update table llx_product_stock (key of this table is fk_product+fk_entrepot) and add a movement record + $result=$mouvS->livraison($user, $obj->fk_product, $obj->fk_entrepot, $qty, $obj->subprice, $langs->trans("ShipmentValidatedInDolibarr",$numref), '', $obj->eatby, $obj->sellby, $obj->batch); + if ($result < 0) { + $error++; break; + } + + // We update content of table llx_product_batch (will be rename into llx_product_stock_batch inantoher version) + // We can set livraison_batch to deprecated and adapt livraison to handle batch too (mouvS->_create also calls mouvS->_create_batch) + if (! empty($conf->productbatch->enabled)) + { + $result=$mouvS->livraison_batch($obj->fk_origin_stock, $qty); // ->fk_origin_stock = id into table llx_product_batch (will be rename into llx_product_stock_batch in another version) + if ($result < 0) { $error++; $this->errors[]=$mouvS->error; break; } + } + } + } + } + else + { + $this->db->rollback(); + $this->error=$this->db->error(); + return -2; + } + } + return 1; } else diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 1939299cf63..0b86747b614 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -3401,7 +3401,7 @@ class Product extends CommonObject } // Stock decrease mode - if (! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT)) { + if (! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT) || ! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT_CLASSIFY_BILLED)) { $this->stock_theorique=$this->stock_reel-$stock_commande_client+$stock_sending_client; } if (! empty($conf->global->STOCK_CALCULATE_ON_VALIDATE_ORDER)) { diff --git a/htdocs/product/stock/product.php b/htdocs/product/stock/product.php index 42fadf54923..eb5e8cdb3e3 100644 --- a/htdocs/product/stock/product.php +++ b/htdocs/product/stock/product.php @@ -483,7 +483,7 @@ if ($id > 0 || $ref) // Real stock $object->load_stock(); $text_stock_options = ''; - $text_stock_options.= (! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT)?$langs->trans("DeStockOnShipment").'
':''); + $text_stock_options.= (!empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT) || !empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT_CLASSIFY_BILLED)?$langs->trans("DeStockOnShipment").'
':''); $text_stock_options.= (! empty($conf->global->STOCK_CALCULATE_ON_VALIDATE_ORDER)?$langs->trans("DeStockOnValidateOrder").'
':''); $text_stock_options.= (! empty($conf->global->STOCK_CALCULATE_ON_BILL)?$langs->trans("DeStockOnBill").'
':''); $text_stock_options.= (! empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_BILL)?$langs->trans("ReStockOnBill").'
':''); diff --git a/htdocs/product/stock/replenish.php b/htdocs/product/stock/replenish.php index 8773d10ad4d..af840e5119e 100644 --- a/htdocs/product/stock/replenish.php +++ b/htdocs/product/stock/replenish.php @@ -228,7 +228,9 @@ if ($action == 'order' && isset($_POST['valid'])) $form = new Form($db); $virtualdiffersfromphysical=0; -if (! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT) || ! empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER)) +if (! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT) + || ! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT_CLASSIFY_BILLED) + || ! empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER)) { $virtualdiffersfromphysical=1; // According to increase/decrease stock options, virtual and physical stock may differs. } From bf1f805bf6a268ab7fa571a6565cfaed39211e04 Mon Sep 17 00:00:00 2001 From: Alexis Algoud Date: Mon, 25 Apr 2016 18:40:38 +0200 Subject: [PATCH 003/245] FIX trad --- htdocs/langs/en_US/stocks.lang | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/langs/en_US/stocks.lang b/htdocs/langs/en_US/stocks.lang index e6b9f82730c..16d46f0af98 100644 --- a/htdocs/langs/en_US/stocks.lang +++ b/htdocs/langs/en_US/stocks.lang @@ -59,6 +59,7 @@ RuleForStockManagementIncrease=Rule for automatic stock management increase (man DeStockOnBill=Decrease real stocks on customers invoices/credit notes validation DeStockOnValidateOrder=Decrease real stocks on customers orders validation DeStockOnShipment=Decrease real stocks on shipping validation +DeStockOnShipmentClassifyBilled=Decrease real stocks on shipping classification billed 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 From 91bea8b9fea47e61db78791074e63487730ce2bb Mon Sep 17 00:00:00 2001 From: Alexis Algoud Date: Mon, 25 Apr 2016 18:54:28 +0200 Subject: [PATCH 004/245] fix inclusion --- htdocs/expedition/class/expedition.class.php | 89 +++++++++++++++++++- htdocs/langs/en_US/other.lang | 2 + 2 files changed, 87 insertions(+), 4 deletions(-) diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index 68091044951..9468475c32c 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -1801,7 +1801,7 @@ class Expedition extends CommonObject */ function set_billed() { - global $conf; + global $conf,$langs,$user; $sql = 'UPDATE '.MAIN_DB_PREFIX.'expedition SET fk_statut=2'; $sql .= ' WHERE rowid = '.$this->id.' AND fk_statut > 0'; @@ -1851,7 +1851,6 @@ class Expedition extends CommonObject if ($qty <= 0) continue; dol_syslog(get_class($this)."::valid movement index ".$i." ed.rowid=".$obj->rowid." edb.rowid=".$obj->edbrowid); - //var_dump($this->lines[$i]); $mouvS = new MouvementStock($this->db); $mouvS->origin = &$this; @@ -1860,7 +1859,7 @@ class Expedition extends CommonObject // line without batch detail // We decrement stock of product (and sub-products) -> update table llx_product_stock (key of this table is fk_product+fk_entrepot) and add a movement record - $result=$mouvS->livraison($user, $obj->fk_product, $obj->fk_entrepot, $qty, $obj->subprice, $langs->trans("ShipmentValidatedInDolibarr",$numref)); + $result=$mouvS->livraison($user, $obj->fk_product, $obj->fk_entrepot, $qty, $obj->subprice, $langs->trans("ShipmentClassifyBilledInDolibarr",$numref)); if ($result < 0) { $error++; break; } @@ -1909,7 +1908,7 @@ class Expedition extends CommonObject */ function reOpen() { - global $conf; + global $conf,$langs,$user; $sql = 'UPDATE '.MAIN_DB_PREFIX.'expedition SET fk_statut=1'; $sql .= ' WHERE rowid = '.$this->id.' AND fk_statut > 0'; @@ -1919,6 +1918,88 @@ class Expedition extends CommonObject { $this->statut=1; $this->billed=0; + + + // If stock increment is done on sending (recommanded choice) + if (! $error && ! empty($conf->stock->enabled) && ! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT_CLASSIFY_BILLED)) + { + require_once DOL_DOCUMENT_ROOT.'/product/stock/class/mouvementstock.class.php'; + + $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 + $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"; + $sql.= " FROM ".MAIN_DB_PREFIX."commandedet as cd,"; + $sql.= " ".MAIN_DB_PREFIX."expeditiondet as ed"; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."expeditiondet_batch as edb on edb.fk_expeditiondet = ed.rowid"; + $sql.= " WHERE ed.fk_expedition = ".$this->id; + $sql.= " AND cd.rowid = ed.fk_origin_line"; + + dol_syslog(get_class($this)."::valid select details", LOG_DEBUG); + $resql=$this->db->query($sql); + if ($resql) + { + $cpt = $this->db->num_rows($resql); + for ($i = 0; $i < $cpt; $i++) + { + $obj = $this->db->fetch_object($resql); + if (empty($obj->edbrowid)) + { + $qty = $obj->qty; + } + else + { + $qty = $obj->edbqty; + } + if ($qty <= 0) continue; + dol_syslog(get_class($this)."::reopen expedition movement index ".$i." ed.rowid=".$obj->rowid." edb.rowid=".$obj->edbrowid); + + //var_dump($this->lines[$i]); + $mouvS = new MouvementStock($this->db); + $mouvS->origin = &$this; + + if (empty($obj->edbrowid)) + { + // line without batch detail + + // We decrement stock of product (and sub-products) -> update table llx_product_stock (key of this table is fk_product+fk_entrepot) and add a movement record + $result=$mouvS->livraison($user, $obj->fk_product, $obj->fk_entrepot, -$qty, $obj->subprice, $langs->trans("ShipmentUnClassifyBilledInDolibarr",$numref)); + if ($result < 0) { + $error++; break; + } + } + else + { + // line with batch detail + + // We decrement stock of product (and sub-products) -> update table llx_product_stock (key of this table is fk_product+fk_entrepot) and add a movement record + $result=$mouvS->livraison($user, $obj->fk_product, $obj->fk_entrepot, -$qty, $obj->subprice, $langs->trans("ShipmentValidatedInDolibarr",$numref), '', $obj->eatby, $obj->sellby, $obj->batch); + if ($result < 0) { + $error++; break; + } + + // We update content of table llx_product_batch (will be rename into llx_product_stock_batch inantoher version) + // We can set livraison_batch to deprecated and adapt livraison to handle batch too (mouvS->_create also calls mouvS->_create_batch) + if (! empty($conf->productbatch->enabled)) + { + $result=$mouvS->livraison_batch($obj->fk_origin_stock, -$qty); // ->fk_origin_stock = id into table llx_product_batch (will be rename into llx_product_stock_batch in another version) + if ($result < 0) { $error++; $this->errors[]=$mouvS->error; break; } + } + } + } + } + else + { + $this->db->rollback(); + $this->error=$this->db->error(); + return -2; + } + } + + return 1; } else diff --git a/htdocs/langs/en_US/other.lang b/htdocs/langs/en_US/other.lang index 3000eecf33b..489a0b82fdd 100644 --- a/htdocs/langs/en_US/other.lang +++ b/htdocs/langs/en_US/other.lang @@ -228,6 +228,8 @@ MemberResiliatedInDolibarr=Member %s resiliated MemberDeletedInDolibarr=Member %s deleted MemberSubscriptionAddedInDolibarr=Subscription for member %s added ShipmentValidatedInDolibarr=Shipment %s validated +ShipmentClassifyBilledInDolibarr=Shipment %s classify billed +ShipmentUnClassifyBilledInDolibarr=Shipment %s classify reopened ShipmentDeletedInDolibarr=Shipment %s deleted ##### Export ##### Export=Export From 8d0e5479a0f61cb87812151348f825debffc52a0 Mon Sep 17 00:00:00 2001 From: Alexis Algoud Date: Sat, 14 May 2016 19:22:27 +0200 Subject: [PATCH 005/245] Rename var --- htdocs/admin/stock.php | 12 ++++++------ htdocs/commande/list.php | 2 +- htdocs/core/class/conf.class.php | 2 +- htdocs/expedition/class/expedition.class.php | 12 ++++++------ htdocs/langs/en_US/other.lang | 4 ++-- htdocs/langs/en_US/stocks.lang | 2 +- htdocs/product/class/product.class.php | 2 +- htdocs/product/stock/product.php | 2 +- 8 files changed, 19 insertions(+), 19 deletions(-) diff --git a/htdocs/admin/stock.php b/htdocs/admin/stock.php index 6d40faecf4b..4e9957fe48d 100644 --- a/htdocs/admin/stock.php +++ b/htdocs/admin/stock.php @@ -53,16 +53,16 @@ if($action) if ($action == 'STOCK_CALCULATE_ON_BILL' || $action == 'STOCK_CALCULATE_ON_VALIDATE_ORDER' || $action == 'STOCK_CALCULATE_ON_SHIPMENT' - || $action == 'STOCK_CALCULATE_ON_SHIPMENT_CLASSIFY_BILLED') + || $action == 'STOCK_CALCULATE_ON_SHIPMENT_CLOSE') { $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_BILL", '','chaine',0,'',$conf->entity); $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_VALIDATE_ORDER", '','chaine',0,'',$conf->entity); $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SHIPMENT", '','chaine',0,'',$conf->entity); - $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SHIPMENT_CLASSIFY_BILLED", '','chaine',0,'',$conf->entity); + $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SHIPMENT_CLOSE", '','chaine',0,'',$conf->entity); if ($action == 'STOCK_CALCULATE_ON_BILL') $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_BILL", GETPOST('STOCK_CALCULATE_ON_BILL','alpha'),'chaine',0,'',$conf->entity); if ($action == 'STOCK_CALCULATE_ON_VALIDATE_ORDER') $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_VALIDATE_ORDER", GETPOST('STOCK_CALCULATE_ON_VALIDATE_ORDER','alpha'),'chaine',0,'',$conf->entity); if ($action == 'STOCK_CALCULATE_ON_SHIPMENT') $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SHIPMENT", GETPOST('STOCK_CALCULATE_ON_SHIPMENT','alpha'),'chaine',0,'',$conf->entity); - if ($action == 'STOCK_CALCULATE_ON_SHIPMENT_CLASSIFY_BILLED') $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SHIPMENT_CLASSIFY_BILLED", GETPOST('STOCK_CALCULATE_ON_SHIPMENT_CLASSIFY_BILLED','alpha'),'chaine',0,'',$conf->entity); + if ($action == 'STOCK_CALCULATE_ON_SHIPMENT_CLOSE') $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SHIPMENT_CLOSE", GETPOST('STOCK_CALCULATE_ON_SHIPMENT_CLOSE','alpha'),'chaine',0,'',$conf->entity); } // Mode of stock increase if ($action == 'STOCK_CALCULATE_ON_SUPPLIER_BILL' @@ -208,14 +208,14 @@ $found++; $var=!$var; print ""; -print ''.$langs->trans("DeStockOnShipmentClassifyBilled").''; +print ''.$langs->trans("DeStockOnShipmentOnClosing").''; print ''; if (! empty($conf->expedition->enabled)) { print "
"; print ''; - print ""; - print $form->selectyesno("STOCK_CALCULATE_ON_SHIPMENT_CLASSIFY_BILLED",$conf->global->STOCK_CALCULATE_ON_SHIPMENT_CLASSIFY_BILLED,1,$disabled); + print ""; + print $form->selectyesno("STOCK_CALCULATE_ON_SHIPMENT_CLOSE",$conf->global->STOCK_CALCULATE_ON_SHIPMENT_CLOSE,1,$disabled); print ''; print "
\n"; } diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index 769e2ba5054..cb39e41869d 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -740,7 +740,7 @@ if ($resql) // stock order and stock order_supplier $stock_order=0; $stock_order_supplier=0; - if (! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT) || ! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT_CLASSIFY_BILLED)) // What about other options ? + if (! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT) || ! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT_CLOSE)) // What about other options ? { if (! empty($conf->commande->enabled)) { diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php index 5cfb7ffb00e..c2fa67a7493 100644 --- a/htdocs/core/class/conf.class.php +++ b/htdocs/core/class/conf.class.php @@ -403,7 +403,7 @@ class Conf $this->global->STOCK_CALCULATE_ON_BILL=0; $this->global->STOCK_CALCULATE_ON_VALIDATE_ORDER=0; $this->global->STOCK_CALCULATE_ON_SHIPMENT=1; - $this->global->STOCK_CALCULATE_ON_SHIPMENT_CLASSIFY_BILLED=0; + $this->global->STOCK_CALCULATE_ON_SHIPMENT_CLOSE=0; $this->global->STOCK_CALCULATE_ON_SUPPLIER_BILL=0; $this->global->STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER=0; $this->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER=1; diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index 21e0adf518b..201e2edaa08 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -1856,7 +1856,7 @@ class Expedition extends CommonObject // line without batch detail // We decrement stock of product (and sub-products) -> update table llx_product_stock (key of this table is fk_product+fk_entrepot) and add a movement record - $result=$mouvS->livraison($user, $obj->fk_product, $obj->fk_entrepot, $qty, $obj->subprice, $langs->trans("ShipmentClassifyBilledInDolibarr",$numref)); + $result=$mouvS->livraison($user, $obj->fk_product, $obj->fk_entrepot, $qty, $obj->subprice, $langs->trans("ShipmentClassifyClosedInDolibarr",$numref)); if ($result < 0) { $error++; break; } @@ -1866,7 +1866,7 @@ class Expedition extends CommonObject // line with batch detail // We decrement stock of product (and sub-products) -> update table llx_product_stock (key of this table is fk_product+fk_entrepot) and add a movement record - $result=$mouvS->livraison($user, $obj->fk_product, $obj->fk_entrepot, $qty, $obj->subprice, $langs->trans("ShipmentValidatedInDolibarr",$numref), '', $obj->eatby, $obj->sellby, $obj->batch); + $result=$mouvS->livraison($user, $obj->fk_product, $obj->fk_entrepot, $qty, $obj->subprice, $langs->trans("ShipmentClassifyClosedInDolibarr",$numref), '', $obj->eatby, $obj->sellby, $obj->batch); if ($result < 0) { $error++; break; } @@ -1943,8 +1943,8 @@ class Expedition extends CommonObject $this->billed=0; - // If stock increment is done on sending (recommanded choice) - if (! $error && ! empty($conf->stock->enabled) && ! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT_CLASSIFY_BILLED)) + // If stock increment is done on closing + if (! $error && ! empty($conf->stock->enabled) && ! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT_CLOSE)) { require_once DOL_DOCUMENT_ROOT.'/product/stock/class/mouvementstock.class.php'; @@ -1989,7 +1989,7 @@ class Expedition extends CommonObject // line without batch detail // We decrement stock of product (and sub-products) -> update table llx_product_stock (key of this table is fk_product+fk_entrepot) and add a movement record - $result=$mouvS->livraison($user, $obj->fk_product, $obj->fk_entrepot, -$qty, $obj->subprice, $langs->trans("ShipmentUnClassifyBilledInDolibarr",$numref)); + $result=$mouvS->livraison($user, $obj->fk_product, $obj->fk_entrepot, -$qty, $obj->subprice, $langs->trans("ShipmentUnClassifyCloseddInDolibarr",$numref)); if ($result < 0) { $error++; break; } @@ -1999,7 +1999,7 @@ class Expedition extends CommonObject // line with batch detail // We decrement stock of product (and sub-products) -> update table llx_product_stock (key of this table is fk_product+fk_entrepot) and add a movement record - $result=$mouvS->livraison($user, $obj->fk_product, $obj->fk_entrepot, -$qty, $obj->subprice, $langs->trans("ShipmentValidatedInDolibarr",$numref), '', $obj->eatby, $obj->sellby, $obj->batch); + $result=$mouvS->livraison($user, $obj->fk_product, $obj->fk_entrepot, -$qty, $obj->subprice, $langs->trans("ShipmentUnClassifyCloseddInDolibarr",$numref), '', $obj->eatby, $obj->sellby, $obj->batch); if ($result < 0) { $error++; break; } diff --git a/htdocs/langs/en_US/other.lang b/htdocs/langs/en_US/other.lang index c8e417f9d0c..0d57f7bf11b 100644 --- a/htdocs/langs/en_US/other.lang +++ b/htdocs/langs/en_US/other.lang @@ -229,8 +229,8 @@ MemberResiliatedInDolibarr=Member %s resiliated MemberDeletedInDolibarr=Member %s deleted MemberSubscriptionAddedInDolibarr=Subscription for member %s added ShipmentValidatedInDolibarr=Shipment %s validated -ShipmentClassifyBilledInDolibarr=Shipment %s classify billed -ShipmentUnClassifyBilledInDolibarr=Shipment %s classify reopened +ShipmentClassifyClosedInDolibarr=Shipment %s classify billed +ShipmentUnClassifyCloseddInDolibarr=Shipment %s classify reopened ShipmentDeletedInDolibarr=Shipment %s deleted ##### Export ##### Export=Export diff --git a/htdocs/langs/en_US/stocks.lang b/htdocs/langs/en_US/stocks.lang index 5d35d32d32a..6b1a28eae17 100644 --- a/htdocs/langs/en_US/stocks.lang +++ b/htdocs/langs/en_US/stocks.lang @@ -59,7 +59,7 @@ RuleForStockManagementIncrease=Rule for automatic stock management increase (man DeStockOnBill=Decrease real stocks on customers invoices/credit notes validation DeStockOnValidateOrder=Decrease real stocks on customers orders validation DeStockOnShipment=Decrease real stocks on shipping validation -DeStockOnShipmentClassifyBilled=Decrease real stocks on shipping classification billed +DeStockOnShipmentOnClosing=Decrease real stocks on shipping classification closed 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 diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 7006f7c459a..ed3acf69931 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -3416,7 +3416,7 @@ class Product extends CommonObject } // Stock decrease mode - if (! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT) || ! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT_CLASSIFY_BILLED)) { + if (! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT) || ! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT_CLOSE)) { $this->stock_theorique=$this->stock_reel-$stock_commande_client+$stock_sending_client; } if (! empty($conf->global->STOCK_CALCULATE_ON_VALIDATE_ORDER)) { diff --git a/htdocs/product/stock/product.php b/htdocs/product/stock/product.php index f84180240b8..c4201896dc6 100644 --- a/htdocs/product/stock/product.php +++ b/htdocs/product/stock/product.php @@ -482,7 +482,7 @@ if ($id > 0 || $ref) // Real stock $text_stock_options = ''; - $text_stock_options.= (!empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT) || !empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT_CLASSIFY_BILLED)?$langs->trans("DeStockOnShipment").'
':''); + $text_stock_options.= (!empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT) || !empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT_CLOSE)?$langs->trans("DeStockOnShipment").'
':''); $text_stock_options.= (! empty($conf->global->STOCK_CALCULATE_ON_VALIDATE_ORDER)?$langs->trans("DeStockOnValidateOrder").'
':''); $text_stock_options.= (! empty($conf->global->STOCK_CALCULATE_ON_BILL)?$langs->trans("DeStockOnBill").'
':''); $text_stock_options.= (! empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_BILL)?$langs->trans("ReStockOnBill").'
':''); From 32a0f4c530ecd7224c99ac283803fd3065aa2790 Mon Sep 17 00:00:00 2001 From: florian HENRY Date: Fri, 20 May 2016 20:03:29 +0200 Subject: [PATCH 006/245] Add trigger into expedition class --- htdocs/expedition/class/expedition.class.php | 24 ++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index 6d3f7b05966..fd2d7ff1777 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -1806,6 +1806,14 @@ class Expedition extends CommonObject { // TODO: Add option/checkbox to set order billed if 100% of order is shipped $this->statut=2; + + // Call trigger + $result=$this->call_trigger('SHIPPING_CLOSED',$user); + if ($result < 0) { + return -1; + } + // End call triggers + return 1; } else @@ -1831,6 +1839,15 @@ class Expedition extends CommonObject { $this->statut=2; $this->billed=1; + + // Call trigger + $result=$this->call_trigger('SHIPPING_BILLED',$user); + if ($result < 0) { + return -1; + } + // End call triggers + + return 1; } else @@ -1856,6 +1873,13 @@ class Expedition extends CommonObject { $this->statut=1; $this->billed=0; + + // Call trigger + $result=$this->call_trigger('SHIPPING_REOPENED',$user); + if ($result < 0) { + return -1; + } + return 1; } else From 82d6f4c8080dec3cdb04f2dcef959776fd4bd4fc Mon Sep 17 00:00:00 2001 From: florian HENRY Date: Fri, 20 May 2016 20:09:30 +0200 Subject: [PATCH 007/245] add trigger on set draft order --- htdocs/commande/class/commande.class.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index a2788ba9808..30b06a351d2 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -464,6 +464,12 @@ class Commande extends CommonOrder } } + if (!$error) { + // Call trigger + $result=$this->call_trigger('ORDER_SETDRAFT',$user); + if ($result < 0) $error++; + } + if (!$error) { $this->statut=self::STATUS_DRAFT; From acdf781202054005f70634f8624561eb595c40e9 Mon Sep 17 00:00:00 2001 From: florian HENRY Date: Fri, 20 May 2016 20:12:23 +0200 Subject: [PATCH 008/245] change tirrger name to harmonised --- htdocs/expedition/class/expedition.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index fd2d7ff1777..b9aaa01b667 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -1875,7 +1875,7 @@ class Expedition extends CommonObject $this->billed=0; // Call trigger - $result=$this->call_trigger('SHIPPING_REOPENED',$user); + $result=$this->call_trigger('SHIPPING_REOPEN',$user); if ($result < 0) { return -1; } From 4e707af0fd371387ae2acf72b51cf8acb63e5638 Mon Sep 17 00:00:00 2001 From: florian HENRY Date: Mon, 23 May 2016 09:16:47 +0200 Subject: [PATCH 009/245] Add demo information and transsaction management --- .../interface_90_all_Demo.class.php-NORUN | 4 ++ htdocs/expedition/class/expedition.class.php | 47 ++++++++++++++++--- 2 files changed, 45 insertions(+), 6 deletions(-) diff --git a/htdocs/core/triggers/interface_90_all_Demo.class.php-NORUN b/htdocs/core/triggers/interface_90_all_Demo.class.php-NORUN index f25a99f3b59..717ef6585f5 100644 --- a/htdocs/core/triggers/interface_90_all_Demo.class.php-NORUN +++ b/htdocs/core/triggers/interface_90_all_Demo.class.php-NORUN @@ -119,6 +119,7 @@ class InterfaceDemo extends DolibarrTriggers case 'ORDER_CANCEL': case 'ORDER_SENTBYMAIL': case 'ORDER_CLASSIFY_BILLED': + case 'ORDER_SETDRAFT': case 'LINEORDER_INSERT': case 'LINEORDER_UPDATE': case 'LINEORDER_DELETE': @@ -258,6 +259,9 @@ class InterfaceDemo extends DolibarrTriggers case 'SHIPPING_MODIFY': case 'SHIPPING_VALIDATE': case 'SHIPPING_SENTBYMAIL': + case 'SHIPPING_BILLED': + case 'SHIPPING_CLOSED': + case 'SHIPPING_REOPEN': case 'SHIPPING_DELETE': dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); break; diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index b9aaa01b667..b2f5d4bde40 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -1798,6 +1798,10 @@ class Expedition extends CommonObject function setClosed() { + $error=0; + + $this->db->begin(); + $sql = 'UPDATE '.MAIN_DB_PREFIX.'expedition SET fk_statut=2'; $sql .= ' WHERE rowid = '.$this->id.' AND fk_statut > 0'; @@ -1810,15 +1814,23 @@ class Expedition extends CommonObject // Call trigger $result=$this->call_trigger('SHIPPING_CLOSED',$user); if ($result < 0) { - return -1; + $error++; } - // End call triggers + } else { + $error++; + $this->errors[]=$this->db->lasterror; + } + + if (empty($error)) { + $this->db->commit(); return 1; } else { + $this->db->rollback(); dol_print_error($this->db); + return -1; } } @@ -1830,6 +1842,9 @@ class Expedition extends CommonObject */ function set_billed() { + $error=0; + + $this->db->begin(); $sql = 'UPDATE '.MAIN_DB_PREFIX.'expedition SET fk_statut=2, billed=1'; // TODO Update only billed $sql .= ' WHERE rowid = '.$this->id.' AND fk_statut > 0'; @@ -1843,16 +1858,23 @@ class Expedition extends CommonObject // Call trigger $result=$this->call_trigger('SHIPPING_BILLED',$user); if ($result < 0) { - return -1; + $error++; } - // End call triggers - + } else { + $error++; + $this->errors[]=$this->db->lasterror; + } + + if (empty($error)) { + $this->db->commit(); return 1; } else { + $this->db->rollback(); dol_print_error($this->db); + return -1; } } @@ -1865,6 +1887,10 @@ class Expedition extends CommonObject function reOpen() { + $error=0; + + $this->db->begin(); + $sql = 'UPDATE '.MAIN_DB_PREFIX.'expedition SET fk_statut=1'; $sql .= ' WHERE rowid = '.$this->id.' AND fk_statut > 0'; @@ -1877,14 +1903,23 @@ class Expedition extends CommonObject // Call trigger $result=$this->call_trigger('SHIPPING_REOPEN',$user); if ($result < 0) { - return -1; + $error++; } + } else { + $error++; + $this->errors[]=$this->db->lasterror; + } + + if (empty($error)) { + $this->db->commit(); return 1; } else { + $this->db->rollback(); dol_print_error($this->db); + return -1; } } From e2e95641a3198d527fe1b39667dd3eb803aca3b8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 23 May 2016 12:27:02 +0200 Subject: [PATCH 010/245] FIX Search supplier ref on contract --- htdocs/contrat/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/contrat/list.php b/htdocs/contrat/list.php index 669f2b09775..e9a9e2cb8bc 100644 --- a/htdocs/contrat/list.php +++ b/htdocs/contrat/list.php @@ -180,7 +180,7 @@ if ($resql) print ''; print ''; print ''; - print ''; + print ''; print ''; print ''; print ''; From 37d366478ff5dbcd4b134ba300bb0ba8944b9e4a Mon Sep 17 00:00:00 2001 From: florian HENRY Date: Mon, 23 May 2016 14:18:29 +0200 Subject: [PATCH 011/245] change trigger position --- htdocs/commande/class/commande.class.php | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index f89d7d5d5a2..44f14bb09e5 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -464,12 +464,6 @@ class Commande extends CommonOrder } } - if (!$error) { - // Call trigger - $result=$this->call_trigger('ORDER_SETDRAFT',$user); - if ($result < 0) $error++; - } - if (!$error) { $this->statut=self::STATUS_DRAFT; @@ -484,9 +478,20 @@ class Commande extends CommonOrder } } - $this->statut=self::STATUS_DRAFT; - $this->db->commit(); - return 1; + if (!$error) { + // Call trigger + $result=$this->call_trigger('ORDER_SETDRAFT',$user); + if ($result < 0) $error++; + } + + if (!$error) { + $this->statut=self::STATUS_DRAFT; + $this->db->commit(); + return 1; + }else { + $this->db->rollback(); + return -1; + } } else { From c581b05c26a22855b57a97b203882fe468ba7cf2 Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 23 May 2016 18:38:55 +0200 Subject: [PATCH 012/245] Fix: Update Peru regions and departaments --- .../install/mysql/data/llx_10_c_regions.sql | 27 ++- .../mysql/data/llx_20_c_departements.sql | 221 +++++++++++++++--- 2 files changed, 221 insertions(+), 27 deletions(-) diff --git a/htdocs/install/mysql/data/llx_10_c_regions.sql b/htdocs/install/mysql/data/llx_10_c_regions.sql index e525ec1088f..46999c537ed 100644 --- a/htdocs/install/mysql/data/llx_10_c_regions.sql +++ b/htdocs/install/mysql/data/llx_10_c_regions.sql @@ -295,4 +295,29 @@ INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) va INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) values ( 232, 23209, '', 0, 'Zuliana', 1); -- Regions Peru (id country=181) -insert into llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) values ( 181, 18101, '', 0, 'Perú', 1); \ No newline at end of file +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) values ( 181, 18101, '', 0, 'Amazonas', 1); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) values ( 181, 18102, '', 0, 'Ancash', 1); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) values ( 181, 18103, '', 0, 'Apurimac', 1); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) values ( 181, 18104, '', 0, 'Arequipa', 1); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) values ( 181, 18105, '', 0, 'Ayacucho', 1); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) values ( 181, 18106, '', 0, 'Cajamarca', 1); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) values ( 181, 18107, '', 0, 'Callao', 1); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) values ( 181, 18108, '', 0, 'Cuzco', 1); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) values ( 181, 18109, '', 0, 'Huancavelica', 1); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) values ( 181, 18110, '', 0, 'Huanuco', 1); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) values ( 181, 18111, '', 0, 'Ica', 1); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) values ( 181, 18112, '', 0, 'Junin', 1); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) values ( 181, 18113, '', 0, 'La Libertad', 1); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) values ( 181, 18114, '', 0, 'Lambayeque', 1); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) values ( 181, 18115, '', 0, 'Lima Metropolitana', 1); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) values ( 181, 18116, '', 0, 'Lima', 1); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) values ( 181, 18117, '', 0, 'Loreto', 1); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) values ( 181, 18118, '', 0, 'Madre de Dios', 1); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) values ( 181, 18119, '', 0, 'Moquegua', 1); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) values ( 181, 18120, '', 0, 'Pasco', 1); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) values ( 181, 18121, '', 0, 'Piura', 1); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) values ( 181, 18122, '', 0, 'Puno', 1); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) values ( 181, 18123, '', 0, 'San Martín', 1); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) values ( 181, 18124, '', 0, 'Tacna', 1); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) values ( 181, 18125, '', 0, 'Tumbes', 1); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) values ( 181, 18126, '', 0, 'Ucayali', 1); \ No newline at end of file diff --git a/htdocs/install/mysql/data/llx_20_c_departements.sql b/htdocs/install/mysql/data/llx_20_c_departements.sql index fb7fa83517b..c50bdf94987 100644 --- a/htdocs/install/mysql/data/llx_20_c_departements.sql +++ b/htdocs/install/mysql/data/llx_20_c_departements.sql @@ -1285,29 +1285,198 @@ INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, nc INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('LU0012', 14003, '', 0, '', 'Mersch', 1); -- Provinces Perú (id country=181) -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('AMA', 18101, '', 0, '', 'Amazonas', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('ANC', 18101, '', 0, '', 'Ancash', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('APU', 18101, '', 0, '', 'Apurimac', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('ARE', 18101, '', 0, '', 'Arequipa', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('AYA', 18101, '', 0, '', 'Ayacucho', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('CAJ', 18101, '', 0, '', 'Cajamarca', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('CUS', 18101, '', 0, '', 'Cuzco', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('CAL', 18101, '', 0, '', 'Callao', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('HUV', 18101, '', 0, '', 'Huancavelica', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('HUC', 18101, '', 0, '', 'Huanuco', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('ICA', 18101, '', 0, '', 'Ica', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('JUN', 18101, '', 0, '', 'Junin', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('LAL', 18101, '', 0, '', 'La Libertad', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('LAM', 18101, '', 0, '', 'Lambayeque', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('LIM', 18101, '', 0, '', 'Lima', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('LMA', 18101, '', 0, '', 'Lima Metropolitana', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('LOR', 18101, '', 0, '', 'Loreto', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('MDD', 18101, '', 0, '', 'Madre de Dios', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('MOQ', 18101, '', 0, '', 'Moquegua', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('PAS', 18101, '', 0, '', 'Pasco', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('PIU', 18101, '', 0, '', 'Piura', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('PUN', 18101, '', 0, '', 'Puno', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('SAM', 18101, '', 0, '', 'San Martin', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('TAC', 18101, '', 0, '', 'Tacna', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('TUM', 18101, '', 0, '', 'Tumbes', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('UCA', 18101, '', 0, '', 'Ucayali', 1); \ No newline at end of file +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0101', 18101, '', 0, '', 'Chachapoyas', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0102', 18101, '', 0, '', 'Bagua', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0103', 18101, '', 0, '', 'Bongará', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0104', 18101, '', 0, '', 'Condorcanqui', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0105', 18101, '', 0, '', 'Luya', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0106', 18101, '', 0, '', 'Rodríguez de Mendoza', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0107', 18101, '', 0, '', 'Utcubamba', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0201', 18102, '', 0, '', 'Huaraz', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0202', 18102, '', 0, '', 'Aija', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0203', 18102, '', 0, '', 'Antonio Raymondi', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0204', 18102, '', 0, '', 'Asunción', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0205', 18102, '', 0, '', 'Bolognesi', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0206', 18102, '', 0, '', 'Carhuaz', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0207', 18102, '', 0, '', 'Carlos Fermín Fitzcarrald', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0208', 18102, '', 0, '', 'Casma', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0209', 18102, '', 0, '', 'Corongo', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0210', 18102, '', 0, '', 'Huari', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0211', 18102, '', 0, '', 'Huarmey', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0212', 18102, '', 0, '', 'Huaylas', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0213', 18102, '', 0, '', 'Mariscal Luzuriaga', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0214', 18102, '', 0, '', 'Ocros', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0215', 18102, '', 0, '', 'Pallasca', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0216', 18102, '', 0, '', 'Pomabamba', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0217', 18102, '', 0, '', 'Recuay', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0218', 18102, '', 0, '', 'Papá', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0219', 18102, '', 0, '', 'Sihuas', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0220', 18102, '', 0, '', 'Yungay', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0301', 18103, '', 0, '', 'Abancay', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0302', 18103, '', 0, '', 'Andahuaylas', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0303', 18103, '', 0, '', 'Antabamba', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0304', 18103, '', 0, '', 'Aymaraes', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0305', 18103, '', 0, '', 'Cotabambas', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0306', 18103, '', 0, '', 'Chincheros', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0307', 18103, '', 0, '', 'Grau', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0401', 18104, '', 0, '', 'Arequipa', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0402', 18104, '', 0, '', 'Camaná', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0403', 18104, '', 0, '', 'Caravelí', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0404', 18104, '', 0, '', 'Castilla', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0405', 18104, '', 0, '', 'Caylloma', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0406', 18104, '', 0, '', 'Condesuyos', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0407', 18104, '', 0, '', 'Islay', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0408', 18104, '', 0, '', 'La Unión', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0501', 18105, '', 0, '', 'Huamanga', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0502', 18105, '', 0, '', 'Cangallo', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0503', 18105, '', 0, '', 'Huanca Sancos', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0504', 18105, '', 0, '', 'Huanta', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0505', 18105, '', 0, '', 'La Mar', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0506', 18105, '', 0, '', 'Lucanas', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0507', 18105, '', 0, '', 'Parinacochas', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0508', 18105, '', 0, '', 'Páucar del Sara Sara', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0509', 18105, '', 0, '', 'Sucre', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0510', 18105, '', 0, '', 'Víctor Fajardo', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0511', 18105, '', 0, '', 'Vilcas Huamán', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0601', 18106, '', 0, '', 'Cajamarca', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0602', 18106, '', 0, '', 'Cajabamba', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0603', 18106, '', 0, '', 'Celendín', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0604', 18106, '', 0, '', 'Chota', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0605', 18106, '', 0, '', 'Contumazá', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0606', 18106, '', 0, '', 'Cutervo', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0607', 18106, '', 0, '', 'Hualgayoc', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0608', 18106, '', 0, '', 'Jaén', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0609', 18106, '', 0, '', 'San Ignacio', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0610', 18106, '', 0, '', 'San Marcos', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0611', 18106, '', 0, '', 'San Miguel', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0612', 18106, '', 0, '', 'San Pablo', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0613', 18106, '', 0, '', 'Santa Cruz', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0701', 18107, '', 0, '', 'Callao', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0801', 18108, '', 0, '', 'Cusco', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0802', 18108, '', 0, '', 'Acomayo', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0803', 18108, '', 0, '', 'Anta', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0804', 18108, '', 0, '', 'Calca', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0805', 18108, '', 0, '', 'Canas', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0806', 18108, '', 0, '', 'Canchis', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0807', 18108, '', 0, '', 'Chumbivilcas', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0808', 18108, '', 0, '', 'Espinar', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0809', 18108, '', 0, '', 'La Convención', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0810', 18108, '', 0, '', 'Paruro', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0811', 18108, '', 0, '', 'Paucartambo', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0812', 18108, '', 0, '', 'Quispicanchi', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0813', 18108, '', 0, '', 'Urubamba', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0901', 18109, '', 0, '', 'Huancavelica', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0902', 18109, '', 0, '', 'Acobamba', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0903', 18109, '', 0, '', 'Angaraes', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0904', 18109, '', 0, '', 'Castrovirreyna', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0905', 18109, '', 0, '', 'Churcampa', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0906', 18109, '', 0, '', 'Huaytará', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('0907', 18109, '', 0, '', 'Tayacaja', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1001', 18110, '', 0, '', 'Huánuco', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1002', 18110, '', 0, '', 'Ambón', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1003', 18110, '', 0, '', 'Dos de Mayo', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1004', 18110, '', 0, '', 'Huacaybamba', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1005', 18110, '', 0, '', 'Huamalíes', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1006', 18110, '', 0, '', 'Leoncio Prado', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1007', 18110, '', 0, '', 'Marañón', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1008', 18110, '', 0, '', 'Pachitea', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1009', 18110, '', 0, '', 'Puerto Inca', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1010', 18110, '', 0, '', 'Lauricocha', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1011', 18110, '', 0, '', 'Yarowilca', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1101', 18111, '', 0, '', 'Ica', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1102', 18111, '', 0, '', 'Chincha', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1103', 18111, '', 0, '', 'Nazca', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1104', 18111, '', 0, '', 'Palpa', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1105', 18111, '', 0, '', 'Pisco', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1201', 18112, '', 0, '', 'Huancayo', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1202', 18112, '', 0, '', 'Concepción', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1203', 18112, '', 0, '', 'Chanchamayo', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1204', 18112, '', 0, '', 'Jauja', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1205', 18112, '', 0, '', 'Junín', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1206', 18112, '', 0, '', 'Satipo', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1207', 18112, '', 0, '', 'Tarma', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1208', 18112, '', 0, '', 'Yauli', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1209', 18112, '', 0, '', 'Chupaca', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1301', 18113, '', 0, '', 'Trujillo', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1302', 18113, '', 0, '', 'Ascope', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1303', 18113, '', 0, '', 'Bolívar', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1304', 18113, '', 0, '', 'Chepén', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1305', 18113, '', 0, '', 'Julcán', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1306', 18113, '', 0, '', 'Otuzco', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1307', 18113, '', 0, '', 'Pacasmayo', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1308', 18113, '', 0, '', 'Pataz', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1309', 18113, '', 0, '', 'Sánchez Carrión', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1310', 18113, '', 0, '', 'Santiago de Chuco', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1311', 18113, '', 0, '', 'Gran Chimú', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1312', 18113, '', 0, '', 'Virú', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1401', 18114, '', 0, '', 'Chiclayo', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1402', 18114, '', 0, '', 'Ferreñafe', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1403', 18114, '', 0, '', 'Lambayeque', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1501', 18115, '', 0, '', 'Lima', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1502', 18116, '', 0, '', 'Huaura', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1503', 18116, '', 0, '', 'Barranca', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1504', 18116, '', 0, '', 'Cajatambo', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1505', 18116, '', 0, '', 'Canta', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1506', 18116, '', 0, '', 'Cañete', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1507', 18116, '', 0, '', 'Huaral', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1508', 18116, '', 0, '', 'Huarochirí', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1509', 18116, '', 0, '', 'Oyón', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1510', 18116, '', 0, '', 'Yauyos', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1601', 18117, '', 0, '', 'Maynas', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1602', 18117, '', 0, '', 'Alto Amazonas', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1603', 18117, '', 0, '', 'Loreto', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1604', 18117, '', 0, '', 'Mariscal Ramón Castilla', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1605', 18117, '', 0, '', 'Requena', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1606', 18117, '', 0, '', 'Ucayali', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1607', 18117, '', 0, '', 'Datem del Marañón', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1701', 18118, '', 0, '', 'Tambopata', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1702', 18118, '', 0, '', 'Manú', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1703', 18118, '', 0, '', 'Tahuamanu', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1801', 18119, '', 0, '', 'Mariscal Nieto', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1802', 18119, '', 0, '', 'General Sánchez Cerro', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1803', 18119, '', 0, '', 'Ilo', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1901', 18120, '', 0, '', 'Pasco', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1902', 18120, '', 0, '', 'Daniel Alcides Carrión', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('1903', 18120, '', 0, '', 'Oxapampa', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2001', 18121, '', 0, '', 'Piura', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2002', 18121, '', 0, '', 'Ayabaca', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2003', 18121, '', 0, '', 'Huancabamba', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2004', 18121, '', 0, '', 'Morropón', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2005', 18121, '', 0, '', 'Paita', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2006', 18121, '', 0, '', 'Sullana', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2007', 18121, '', 0, '', 'Talara', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2008', 18121, '', 0, '', 'Sechura', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2101', 18122, '', 0, '', 'Puno', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2102', 18122, '', 0, '', 'Azángaro', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2103', 18122, '', 0, '', 'Carabaya', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2104', 18122, '', 0, '', 'Chucuito', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2105', 18122, '', 0, '', 'El Collao', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2106', 18122, '', 0, '', 'Huancané', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2107', 18122, '', 0, '', 'Lampa', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2108', 18122, '', 0, '', 'Melgar', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2109', 18122, '', 0, '', 'Moho', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2110', 18122, '', 0, '', 'San Antonio de Putina', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2111', 18122, '', 0, '', 'San Román', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2112', 18122, '', 0, '', 'Sandia', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2113', 18122, '', 0, '', 'Yunguyo', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2201', 18123, '', 0, '', 'Moyobamba', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2202', 18123, '', 0, '', 'Bellavista', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2203', 18123, '', 0, '', 'El Dorado', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2204', 18123, '', 0, '', 'Huallaga', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2205', 18123, '', 0, '', 'Lamas', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2206', 18123, '', 0, '', 'Mariscal Cáceres', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2207', 18123, '', 0, '', 'Picota', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2208', 18123, '', 0, '', 'La Rioja', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2209', 18123, '', 0, '', 'San Martín', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2210', 18123, '', 0, '', 'Tocache', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2301', 18124, '', 0, '', 'Tacna', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2302', 18124, '', 0, '', 'Candarave', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2303', 18124, '', 0, '', 'Jorge Basadre', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2304', 18124, '', 0, '', 'Tarata', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2401', 18125, '', 0, '', 'Tumbes', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2402', 18125, '', 0, '', 'Contralmirante Villar', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2403', 18125, '', 0, '', 'Zarumilla', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2501', 18126, '', 0, '', 'Coronel Portillo', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2502', 18126, '', 0, '', 'Atalaya', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2503', 18126, '', 0, '', 'Padre Abad', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2504', 18126, '', 0, '', 'Purús', 1); \ No newline at end of file From e55da4f262cb62bbd27ec73809c5ea714026050f Mon Sep 17 00:00:00 2001 From: oliverpool Date: Tue, 24 May 2016 11:25:27 +0200 Subject: [PATCH 013/245] Fix contributing link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8758ff8fc77..a3a542b194e 100644 --- a/README.md +++ b/README.md @@ -151,7 +151,7 @@ Administrator, user, developer and translator's documentations are available alo ## CONTRIBUTING -See file [CONTRIBUTING](https://github.com/Dolibarr/dolibarr/blob/develop/CONTRIBUTING.md) +See file [CONTRIBUTING](https://github.com/Dolibarr/dolibarr/blob/develop/.github/CONTRIBUTING.md) ## CREDITS From e0812dddd26d68a6f008c25d87ff030eb088eb78 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 24 May 2016 15:59:56 +0200 Subject: [PATCH 014/245] Enhance css --- htdocs/theme/eldy/style.css.php | 5 +++-- htdocs/theme/md/style.css.php | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 0d53504f337..eecd6d1bfc7 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -81,7 +81,7 @@ $dol_use_jmobile=$conf->dol_use_jmobile; // Colors $colorbackhmenu1='110,120,160'; // topmenu $colorbackvmenu1='255,255,255'; // vmenu -$colortopbordertitle1='40,40,40'; // top border of title +$colortopbordertitle1='120,120,120'; // top border of title $colorbacktitle1='230,230,230'; // title of tables,list $colorbacktabcard1='255,255,255'; // card $colorbacktabactive='234,234,234'; @@ -129,6 +129,7 @@ if (empty($conf->global->THEME_ELDY_ENABLE_PERSONALIZED)) // Case of option availables only if THEME_ELDY_ENABLE_PERSONALIZED is on $colorbackhmenu1 =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_TOPMENU_BACK1)?$colorbackhmenu1:$conf->global->THEME_ELDY_TOPMENU_BACK1) :(empty($user->conf->THEME_ELDY_TOPMENU_BACK1)?$colorbackhmenu1:$user->conf->THEME_ELDY_TOPMENU_BACK1); $colorbackvmenu1 =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_VERMENU_BACK1)?$colorbackvmenu1:$conf->global->THEME_ELDY_VERMENU_BACK1) :(empty($user->conf->THEME_ELDY_VERMENU_BACK1)?$colorbackvmenu1:$user->conf->THEME_ELDY_VERMENU_BACK1); +$colortopbordertitle1=empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_TOPBORDER_TITLE1)?$colortopbordertitle1:$conf->global->THEME_ELDY_TOPBORDER_TITLE1) :(empty($user->conf->THEME_ELDY_TOPBORDER_TITLE1)?$colortopbordertitle1:$user->conf->THEME_ELDY_TOPBORDER_TITLE1); $colorbacktitle1 =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_BACKTITLE1) ?$colorbacktitle1:$conf->global->THEME_ELDY_BACKTITLE1) :(empty($user->conf->THEME_ELDY_BACKTITLE1)?$colorbacktitle1:$user->conf->THEME_ELDY_BACKTITLE1); $colorbacktabcard1 =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_BACKTABCARD1) ?$colorbacktabcard1:$conf->global->THEME_ELDY_BACKTABCARD1) :(empty($user->conf->THEME_ELDY_BACKTABCARD1)?$colorbacktabcard1:$user->conf->THEME_ELDY_BACKTABCARD1); $colorbacktabactive =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_BACKTABACTIVE)?$colorbacktabactive:$conf->global->THEME_ELDY_BACKTABACTIVE):(empty($user->conf->THEME_ELDY_BACKTABACTIVE)?$colorbacktabactive:$user->conf->THEME_ELDY_BACKTABACTIVE); @@ -151,7 +152,7 @@ if (! empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)) $colorbacklinepairhover=((! isset($user->conf->THEME_ELDY_USE_HOVER) || $user->conf->THEME_ELDY_USE_HOVER === '0')?'':($user->conf->THEME_ELDY_USE_HOVER === '1'?'edf4fb':$user->conf->THEME_ELDY_USE_HOVER)); } -$colortopbordertitle1=$colorbackhmenu1; +//$colortopbordertitle1=$colorbackhmenu1; // Set text color to black or white diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 78208e06ce4..3c43d92c3a6 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -131,6 +131,7 @@ if (empty($conf->global->THEME_ELDY_ENABLE_PERSONALIZED)) // Case of option availables only if THEME_ELDY_ENABLE_PERSONALIZED is on $colorbackhmenu1 =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_TOPMENU_BACK1)?$colorbackhmenu1:$conf->global->THEME_ELDY_TOPMENU_BACK1) :(empty($user->conf->THEME_ELDY_TOPMENU_BACK1)?$colorbackhmenu1:$user->conf->THEME_ELDY_TOPMENU_BACK1); $colorbackvmenu1 =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_VERMENU_BACK1)?$colorbackvmenu1:$conf->global->THEME_ELDY_VERMENU_BACK1) :(empty($user->conf->THEME_ELDY_VERMENU_BACK1)?$colorbackvmenu1:$user->conf->THEME_ELDY_VERMENU_BACK1); +$colortopbordertitle1=empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_TOPBORDER_TITLE1)?$colortopbordertitle1:$conf->global->THEME_ELDY_TOPBORDER_TITLE1) :(empty($user->conf->THEME_ELDY_TOPBORDER_TITLE1)?$colortopbordertitle1:$user->conf->THEME_ELDY_TOPBORDER_TITLE1); $colorbacktitle1 =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_BACKTITLE1) ?$colorbacktitle1:$conf->global->THEME_ELDY_BACKTITLE1) :(empty($user->conf->THEME_ELDY_BACKTITLE1)?$colorbacktitle1:$user->conf->THEME_ELDY_BACKTITLE1); $colorbacktabcard1 =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_BACKTABCARD1) ?$colorbacktabcard1:$conf->global->THEME_ELDY_BACKTABCARD1) :(empty($user->conf->THEME_ELDY_BACKTABCARD1)?$colorbacktabcard1:$user->conf->THEME_ELDY_BACKTABCARD1); $colorbacktabactive =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_BACKTABACTIVE)?$colorbacktabactive:$conf->global->THEME_ELDY_BACKTABACTIVE):(empty($user->conf->THEME_ELDY_BACKTABACTIVE)?$colorbacktabactive:$user->conf->THEME_ELDY_BACKTABACTIVE); @@ -153,7 +154,7 @@ if (! empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)) $colorbacklinepairhover=((! isset($user->conf->THEME_ELDY_USE_HOVER) || $user->conf->THEME_ELDY_USE_HOVER === '0')?'':($user->conf->THEME_ELDY_USE_HOVER === '1'?'edf4fb':$user->conf->THEME_ELDY_USE_HOVER)); } -$colortopbordertitle1=$colorbackhmenu1; +if (empty($colortopbordertitle1)) $colortopbordertitle1=$colorbackhmenu1; // Set text color to black or white From 9bd9cda22420c73dfe5b97a3c672c1bbcbc5db09 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 24 May 2016 16:02:43 +0200 Subject: [PATCH 015/245] Move to HTML5 --- htdocs/core/class/conf.class.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php index 914c7077c8b..a127c05bf3c 100644 --- a/htdocs/core/class/conf.class.php +++ b/htdocs/core/class/conf.class.php @@ -378,6 +378,8 @@ class Conf // Set some default values + $this->global->MAIN_ACTIVATE_HTML5=1; + // societe if (empty($this->global->SOCIETE_CODECLIENT_ADDON)) $this->global->SOCIETE_CODECLIENT_ADDON="mod_codeclient_leopard"; if (empty($this->global->SOCIETE_CODECOMPTA_ADDON)) $this->global->SOCIETE_CODECOMPTA_ADDON="mod_codecompta_panicum"; From a587ba496caf8cea11f433dacb112ae3d0080f65 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 24 May 2016 18:40:47 +0200 Subject: [PATCH 016/245] NEW Can select fields on supplier orders --- htdocs/admin/supplier_payment.php | 17 +- htdocs/commande/list.php | 21 +- .../class/fournisseur.commande.class.php | 26 +- htdocs/fourn/commande/card.php | 4 +- htdocs/fourn/commande/list.php | 882 ++++++++++++++---- htdocs/langs/en_US/admin.lang | 2 + htdocs/langs/en_US/orders.lang | 5 +- 7 files changed, 743 insertions(+), 214 deletions(-) diff --git a/htdocs/admin/supplier_payment.php b/htdocs/admin/supplier_payment.php index 41737f7a9d5..bc960c7bd2c 100644 --- a/htdocs/admin/supplier_payment.php +++ b/htdocs/admin/supplier_payment.php @@ -1,5 +1,6 @@ + * 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 @@ -16,9 +17,9 @@ */ /** - * \file htdocs/admin/payment.php - * \ingroup facture - * \brief Page to setup invoices payments + * \file htdocs/admin/supplier_payment.php + * \ingroup supplier + * \brief Page to setup supplier invoices payments */ require '../main.inc.php'; @@ -30,6 +31,8 @@ $langs->load("admin"); $langs->load("errors"); $langs->load('other'); $langs->load('bills'); +$langs->load('orders'); + if (! $user->admin) accessforbidden(); @@ -80,16 +83,18 @@ $form=new Form($db); $linkback=''.$langs->trans("BackToModuleList").''; print load_fiche_titre($langs->trans("SupplierPaymentSetup"),$linkback,'title_setup'); -print "
"; +print "
"; $head = supplierorder_admin_prepare_head(); -dol_fiche_head($head, 'supplierpayment', $langs->trans("SupplierPayment"), 0, 'invoice'); +dol_fiche_head($head, 'supplierpayment', $langs->trans("Suppliers"), 0, 'company'); /* * Numbering module */ -print load_fiche_titre($langs->trans("SupplierPaymentsNumberingModule")); +if (empty($conf->global->SUPPLIER_PAYMENT_ADDON)) $conf->global->SUPPLIER_PAYMENT_ADDON = 'mod_supplier_payment_bronan'; + +print load_fiche_titre($langs->trans("PaymentsNumberingModule")); print ''; print ''; diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index 5878b640dc7..78dedadea43 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -72,7 +72,7 @@ $optioncss = GETPOST('optioncss','alpha'); $billed = GETPOST('billed','int'); // Security check -$id = (GETPOST('orderid')?GETPOST('orderid'):GETPOST('id','int')); +$id = (GETPOST('orderid')?GETPOST('orderid','int'):GETPOST('id','int')); if ($user->societe_id) $socid=$user->societe_id; $result = restrictedArea($user, 'commande', $id,''); @@ -124,6 +124,9 @@ $arrayfields=array( 'typent.code'=>array('label'=>$langs->trans("ThirdPartyType"), 'checked'=>$checkedtypetiers), 'c.date_commande'=>array('label'=>$langs->trans("OrderDateShort"), 'checked'=>1), 'c.date_delivery'=>array('label'=>$langs->trans("DateDeliveryPlanned"), 'checked'=>1, 'enabled'=>empty($conf->global->ORDER_DISABLE_DELIVERY_DATE)), + 'c.total_ht'=>array('label'=>$langs->trans("AmountHT"), 'checked'=>1), + 'c.total_vat'=>array('label'=>$langs->trans("AmountVAT"), 'checked'=>0), + 'c.total_ttc'=>array('label'=>$langs->trans("AmountTTC"), 'checked'=>0), 'c.datec'=>array('label'=>$langs->trans("DateCreation"), 'checked'=>0, 'position'=>500), 'c.tms'=>array('label'=>$langs->trans("DateModificationShort"), 'checked'=>0, 'position'=>500), 'c.fk_statut'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000), @@ -220,7 +223,7 @@ llxHeader('',$langs->trans("Orders"),$help_url); $sql = 'SELECT'; if ($sall || $search_product_category > 0) $sql = 'SELECT DISTINCT'; -$sql.= ' s.rowid as socid, s.nom as name, s.town, s.zip, s.fk_pays, s.client, s.code_client, '; +$sql.= ' s.rowid as socid, s.nom as name, s.town, s.zip, s.fk_pays, s.client, s.code_client,'; $sql.= " typent.code as typent_code,"; $sql.= " state.code_departement as state_code, state.nom as state_name,"; $sql.= ' c.rowid, c.ref, c.total_ht, c.tva as total_tva, c.total_ttc, c.ref_client,'; @@ -253,6 +256,7 @@ if ($search_product_category > 0) $sql.=" AND cp.fk_categorie = ".$search_produc if ($socid > 0) $sql.= ' AND s.rowid = '.$socid; if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; if ($search_ref) $sql .= natural_search('c.ref', $search_ref); +if ($search_ref_customer) $sql.= natural_search('c.ref_client', $search_ref_customer); if ($sall) $sql .= natural_search(array_keys($fieldstosearchall), $sall); if ($billed != '' && $billed >= 0) $sql.=' AND c.facture = '.$billed; if ($viewstatut <> '') @@ -310,7 +314,6 @@ if ($search_state) $sql.= natural_search("state.nom",$search_state); if ($search_country) $sql .= " AND s.fk_pays IN (".$search_country.')'; if ($search_type_thirdparty) $sql .= " AND s.fk_typent IN (".$search_type_thirdparty.')'; if ($search_company) $sql .= natural_search('s.nom', $search_company); -if ($search_ref_customer) $sql.= natural_search('c.ref_client', $search_ref_customer); if ($search_sale > 0) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$search_sale; if ($search_user > 0) $sql.= " AND ec.fk_c_type_contact = tc.rowid AND tc.element='commande' AND tc.source='internal' AND ec.element_id = c.rowid AND ec.fk_socpeople = ".$search_user; if ($search_total_ht != '') $sql.= natural_search('c.total_ht', $search_total_ht, 1); @@ -348,7 +351,7 @@ $sql.= $db->plimit($limit + 1,$offset); $resql = $db->query($sql); if ($resql) { - if ($socid) + if ($socid > 0) { $soc = new Societe($db); $soc->fetch($socid); @@ -393,6 +396,8 @@ if ($resql) if ($search_user > 0) $param.='&search_user='.$search_user; if ($search_sale > 0) $param.='&search_sale='.$search_sale; if ($search_total_ht != '') $param.='&search_total_ht='.$search_total_ht; + if ($search_total_vat != '') $param.='&search_total_vat='.$search_total_vat; + if ($search_total_ttc != '') $param.='&search_total_ttc='.$search_total_ttc; if ($optioncss != '') $param.='&optioncss='.$optioncss; // Add $param from extra fields foreach ($search_array_options as $key => $val) @@ -479,7 +484,7 @@ if ($resql) if (! empty($arrayfields['c.date_commande']['checked'])) print_liste_field_titre($arrayfields['c.date_commande']['label'],$_SERVER["PHP_SELF"],'c.date_commande','',$param, 'align="center"',$sortfield,$sortorder); if (! empty($arrayfields['c.date_delivery']['checked'])) print_liste_field_titre($arrayfields['c.date_delivery']['label'],$_SERVER["PHP_SELF"],'c.date_livraison','',$param, 'align="center"',$sortfield,$sortorder); if (! empty($arrayfields['c.total_ht']['checked'])) print_liste_field_titre($arrayfields['c.total_ht']['label'],$_SERVER["PHP_SELF"],'c.total_ht','',$param, 'align="right"',$sortfield,$sortorder); - if (! empty($arrayfields['c.tva']['checked'])) print_liste_field_titre($arrayfields['c.tva']['label'],$_SERVER["PHP_SELF"],'c.total_vat','',$param, 'align="right"',$sortfield,$sortorder); + if (! empty($arrayfields['c.total_vat']['checked'])) print_liste_field_titre($arrayfields['c.total_vat']['label'],$_SERVER["PHP_SELF"],'c.tva','',$param, 'align="right"',$sortfield,$sortorder); if (! empty($arrayfields['c.total_ttc']['checked'])) print_liste_field_titre($arrayfields['c.total_ttc']['label'],$_SERVER["PHP_SELF"],'c.total_ttc','',$param, 'align="right"',$sortfield,$sortorder); // Extra fields if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) @@ -642,7 +647,7 @@ if ($resql) print $form->selectarray('viewstatut', $liststatus, $viewstatut, -4); print ''; } - // Status + // Status billed if (! empty($arrayfields['c.facture']['checked'])) { print '\n"; + print '\n"; if (! $i) $totalarray['nbfield']++; if (! $i) $totalarray['totalvatfield']=$totalarray['nbfield']; - $totalarray['totalvat'] += $obj->total_vat; + $totalarray['totalvat'] += $obj->total_tva; } // Amount TTC if (! empty($arrayfields['c.total_ttc']['checked'])) diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index f8c57d7cc94..5e42a915582 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -2657,11 +2657,31 @@ class CommandeFournisseur extends CommonOrder { global $conf; - $now = dol_now(); - $date_to_test = empty($this->date_livraison) ? $this->date_commande : $this->date_livraison; + if (empty($this->date_delivery) && ! empty($this->date_livraison)) $this->date_delivery = $this->date_livraison; // For backward compatibility - return ($this->statut != 3) && $date_to_test && $date_to_test < ($now - $conf->commande->fournisseur->warning_delay); + $now = dol_now(); + $date_to_test = empty($this->date_delivery) ? $this->date_commande : $this->date_delivery; + + return ($this->statut > 0 && $this->statut < 4) && $date_to_test && $date_to_test < ($now - $conf->commande->fournisseur->warning_delay); } + + /** + * Show the customer delayed info + * + * @return string Show delayed information + */ + public function showDelay() + { + global $conf, $langs; + + if (empty($this->date_delivery) && ! empty($this->date_livraison)) $this->date_delivery = $this->date_livraison; // For backward compatibility + + if (empty($this->date_delivery)) $text=$langs->trans("OrderDate").' '.dol_print_date($this->date_commande, 'day'); + else $text=$text=$langs->trans("DeliveryDate").' '.dol_print_date($this->date_delivery, 'day'); + $text.=' '.($conf->commande->fournisseur->warning_delay>0?'+':'-').' '.round(abs($conf->commande->fournisseur->warning_delay)/3600/24,1).' '.$langs->trans("days").' < '.$langs->trans("Today"); + + return $text; + } } diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index 8d18914d62c..81e7c93c3c3 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -2076,7 +2076,6 @@ elseif (! empty($object->id)) print '
'; @@ -929,10 +934,10 @@ if ($resql) // Amount VAT if (! empty($arrayfields['c.total_vat']['checked'])) { - print ''.price($obj->total_vat)."'.price($obj->total_tva)."
'; - if ($action != 'editdate_livraison') print ''; print '
'; print $langs->trans('DateDeliveryPlanned'); print 'id.'">'.img_edit($langs->trans('SetDeliveryDate'),1).'
'; print ''; @@ -2096,6 +2095,9 @@ elseif (! empty($object->id)) $usehourmin='day'; if (! empty($conf->global->SUPPLIER_ORDER_USE_HOUR_FOR_DELIVERY_DATE)) $usehourmin='dayhour'; print $object->date_livraison ? dol_print_date($object->date_livraison, $usehourmin) : ' '; + if ($object->hasDelay() && ! empty($object->date_livraison)) { + print ' '.img_picto($langs->trans("Late").' : '.$object->showDelay(), "warning"); + } } print ''; diff --git a/htdocs/fourn/commande/list.php b/htdocs/fourn/commande/list.php index 844b7e9f700..c22db88bcbe 100644 --- a/htdocs/fourn/commande/list.php +++ b/htdocs/fourn/commande/list.php @@ -34,27 +34,49 @@ require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formorder.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; +require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; $langs->load("orders"); $langs->load("sendings"); - +$langs->load('deliveries'); +$langs->load('companies'); +$langs->load('compta'); +$langs->load('bills'); +$langs->load('projects'); $orderyear=GETPOST("orderyear","int"); $ordermonth=GETPOST("ordermonth","int"); $orderday=GETPOST("orderday","int"); -$sall=GETPOST('search_all'); +$deliveryyear=GETPOST("deliveryyear","int"); +$deliverymonth=GETPOST("deliverymonth","int"); +$deliveryday=GETPOST("deliveryday","int"); +$search_product_category=GETPOST('search_product_category','int'); $search_ref=GETPOST('search_ref'); $search_refsupp=GETPOST('search_refsupp'); -$search_company=GETPOST('search_company'); -$search_user=GETPOST('search_user'); +$search_company=GETPOST('search_company','alpha'); +$search_town=GETPOST('search_town','alpha'); +$search_zip=GETPOST('search_zip','alpha'); +$search_state=trim(GETPOST("search_state")); +$search_country=GETPOST("search_country",'int'); +$search_type_thirdparty=GETPOST("search_type_thirdparty",'int'); +$search_user=GETPOST('search_user','int'); +$search_request_author=GETPOST('search_request_author','int'); $search_ht=GETPOST('search_ht'); $search_ttc=GETPOST('search_ttc'); $search_status=(GETPOST('search_status','alpha')!=''?GETPOST('search_status','alpha'):GETPOST('statut','alpha')); // alpha and not intbecause it can be '6,7' $optioncss = GETPOST('optioncss','alpha'); +$sall=GETPOST('search_all'); +$socid = GETPOST('socid','int'); +$search_sale=GETPOST('search_sale','int'); +$search_total_ht=GETPOST('search_total_ht','alpha'); +$search_total_vat=GETPOST('search_total_vat','alpha'); +$search_total_ttc=GETPOST('search_total_ttc','alpha'); +$optioncss = GETPOST('optioncss','alpha'); +$billed = GETPOST('billed','int'); $page = GETPOST('page','int'); -$socid = GETPOST('socid','int'); $sortorder = GETPOST('sortorder','alpha'); $sortfield = GETPOST('sortfield','alpha'); @@ -63,10 +85,12 @@ $billed=GETPOST('billed','int'); $viewstatut=GETPOST('viewstatut'); // Security check -$orderid = GETPOST('orderid'); +$orderid = GETPOST('orderid','int'); if ($user->societe_id) $socid=$user->societe_id; $result = restrictedArea($user, 'fournisseur', $orderid, '', 'commande'); +$diroutputmassaction=$conf->commande->dir_output . '/temp/massgeneration/'.$user->id; + $limit = GETPOST("limit")?GETPOST("limit","int"):$conf->liste_limit; $sortfield = GETPOST("sortfield",'alpha'); $sortorder = GETPOST("sortorder",'alpha'); @@ -78,46 +102,142 @@ $pagenext = $page + 1; if (! $sortfield) $sortfield='cf.ref'; if (! $sortorder) $sortorder='DESC'; -// Purge search criteria -if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers -{ - $ordermonth=''; - $orderyear=''; - $orderday=''; - $search_ref=''; - $search_refsupp=''; - $search_company=''; - $search_user=''; - $search_ht=''; - $search_ttc=''; - $search_status=''; - $billed=''; -} - if ($search_status == '') $search_status=-1; +// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array +$contextpage='supplierorderlist'; + +// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array +$hookmanager->initHooks(array('orderlist')); +$extrafields = new ExtraFields($db); + +// fetch optionals attributes and labels +$extralabels = $extrafields->fetch_name_optionals_label('commande_fournisseur'); +$search_array_options=$extrafields->getOptionalsFromPost($extralabels,'','search_'); + // List of fields to search into when doing a "search in all" $fieldstosearchall = array( 'cf.ref'=>'Ref', - 'cf.ref_supplier'=>'RefSupplier', + 'cf.ref_supplier'=>'RefSupplierOrder', //'pd.description'=>'Description', 's.nom'=>"ThirdParty", 'cf.note_public'=>'NotePublic', ); if (empty($user->socid)) $fieldstosearchall["cf.note_private"]="NotePrivate"; +$checkedtypetiers=0; +$arrayfields=array( + 'cf.ref'=>array('label'=>$langs->trans("Ref"), 'checked'=>1), + 'cf.ref_supplier'=>array('label'=>$langs->trans("RefOrderSupplier"), 'checked'=>1, 'enabled'=>$conf->global->SUPPLIER_ORDER_HIDE_REF_SUPPLIER), + 'p.project_ref'=>array('label'=>$langs->trans("ProjectRef"), 'enabled'=>$conf->global->PROJECT_SHOW_REF_INTO_LISTS), + 'u.login'=>array('label'=>$langs->trans("AuthorRequest"), 'checked'=>1), + 's.nom'=>array('label'=>$langs->trans("ThirdParty"), 'checked'=>1), + 's.town'=>array('label'=>$langs->trans("Town"), 'checked'=>1), + 's.zip'=>array('label'=>$langs->trans("Zip"), 'checked'=>1), + 'state.nom'=>array('label'=>$langs->trans("StateShort"), 'checked'=>0), + 'country.code_iso'=>array('label'=>$langs->trans("Country"), 'checked'=>0), + 'typent.code'=>array('label'=>$langs->trans("ThirdPartyType"), 'checked'=>$checkedtypetiers), + 'cf.date_commande'=>array('label'=>$langs->trans("OrderDateShort"), 'checked'=>1), + 'cf.date_delivery'=>array('label'=>$langs->trans("DateDeliveryPlanned"), 'checked'=>1, 'enabled'=>empty($conf->global->ORDER_DISABLE_DELIVERY_DATE)), + 'cf.total_ht'=>array('label'=>$langs->trans("AmountHT"), 'checked'=>1), + 'cf.total_vat'=>array('label'=>$langs->trans("AmountVAT"), 'checked'=>0), + 'cf.total_ttc'=>array('label'=>$langs->trans("AmountTTC"), 'checked'=>0), + 'cf.datec'=>array('label'=>$langs->trans("DateCreation"), 'checked'=>0, 'position'=>500), + 'cf.tms'=>array('label'=>$langs->trans("DateModificationShort"), 'checked'=>0, 'position'=>500), + 'cf.fk_statut'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000), + 'cf.billed'=>array('label'=>$langs->trans("Billed"), 'checked'=>1, 'position'=>1000, 'enabled'=>1) +); +// Extra fields +if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) +{ + foreach($extrafields->attribute_label as $key => $val) + { + $arrayfields["ef.".$key]=array('label'=>$extrafields->attribute_label[$key], 'checked'=>$extrafields->attribute_list[$key], 'position'=>$extrafields->attribute_pos[$key], 'enabled'=>$extrafields->attribute_perms[$key]); + } +} + + + +/* + * Actions + */ + +if (GETPOST('cancel')) { $action='list'; $massaction=''; } +if (! GETPOST('confirmmassaction')) { $massaction=''; } + +$parameters=array('socid'=>$socid); +$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks +if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); + +include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php'; + +// 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 +{ + $ordermonth=''; + $orderyear=''; + $orderday=''; + $search_categ=''; + $search_user=''; + $search_sale=''; + $search_product_category=''; + $search_ref=''; + $search_refsupp=''; + $search_company=''; + $search_town=''; + $search_zip=""; + $search_state=""; + $search_type=''; + $search_country=''; + $search_type_thirdparty=''; + $search_request_author=-1; + $search_total_ht=''; + $search_total_vat=''; + $search_total_ttc=''; + $search_status=-1; + $orderyear=''; + $ordermonth=''; + $orderday=''; + $deliveryday=''; + $deliverymonth=''; + $deliveryyear=''; + $billed=''; + $search_array_options=array(); + +} + +if (empty($reshook)) +{ + // Mass actions. Controls on number of lines checked + $maxformassaction=1000; + if (! empty($massaction) && count($toselect) < 1) + { + $error++; + setEventMessages($langs->trans("NoLineChecked"), null, "warnings"); + } + if (! $error && count($toselect) > $maxformassaction) + { + setEventMessages($langs->trans('TooManyRecordForMassAction',$maxformassaction), null, 'errors'); + $error++; + } + +} + /* * View */ +$now=dol_now(); + $form=new Form($db); $thirdpartytmp = new Fournisseur($db); $commandestatic=new CommandeFournisseur($db); $formfile = new FormFile($db); $formorder = new FormOrder($db); $formother = new FormOther($db); +$formcompany=new FormCompany($db); $title = $langs->trans("SuppliersOrders"); if ($socid > 0) @@ -134,75 +254,58 @@ if ($status) } if ($billed) $title.=' - '.$langs->trans("Billed"); +//$help_url="EN:Module_Customers_Orders|FR:Module_Commandes_Clients|ES:Módulo_Pedidos_de_clientes"; +$help_url=''; +llxHeader('',$title,$help_url); -llxHeader('',$title); - - -if ($sortorder == "") $sortorder="DESC"; -if ($sortfield == "") $sortfield="cf.date_creation"; -$offset = $conf->liste_limit * $page ; - - -/* - * Mode list - */ - -$sql = "SELECT s.rowid as socid, s.nom as name, cf.date_commande as dc,"; -$sql.= " cf.rowid, cf.ref, cf.ref_supplier, cf.fk_statut, cf.billed, cf.total_ht, cf.tva as total_tva, cf.total_ttc, cf.fk_user_author, cf.date_livraison,"; +$sql = 'SELECT'; +if ($sall || $search_product_category > 0) $sql = 'SELECT DISTINCT'; +$sql.= ' s.rowid as socid, s.nom as name, s.town, s.zip, s.fk_pays, s.client, s.code_client,'; +$sql.= " typent.code as typent_code,"; +$sql.= " state.code_departement as state_code, state.nom as state_name,"; +$sql.= " cf.rowid, cf.ref, cf.ref_supplier, cf.fk_statut, cf.billed, cf.total_ht, cf.tva as total_tva, cf.total_ttc, cf.fk_user_author, cf.date_commande as date_commande, cf.date_livraison as date_delivery,"; +$sql.= ' cf.date_creation as date_creation, cf.tms as date_update,'; $sql.= " p.rowid as project_id, p.ref as project_ref,"; -$sql.= " u.firstname,"; -$sql.= " u.lastname,"; -$sql.= " u.photo,"; -$sql.= " u.login"; -$sql.= " FROM ".MAIN_DB_PREFIX."societe as s,"; -$sql.= " ".MAIN_DB_PREFIX."commande_fournisseur as cf"; +$sql.= " u.firstname, u.lastname, u.photo, u.login"; +// Add fields from extrafields +foreach ($extrafields->attribute_label as $key => $val) $sql.=($extrafields->attribute_type[$key] != 'separate' ? ",ef.".$key.' as options_'.$key : ''); +// Add fields from hooks +$parameters=array(); +$reshook=$hookmanager->executeHooks('printFieldListSelect',$parameters); // Note that $action and $object may have been modified by hook +$sql.=$hookmanager->resPrint; +$sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; +$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_country as country on (country.rowid = s.fk_pays)"; +$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_typent as typent on (typent.id = s.fk_typent)"; +$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_departements as state on (state.rowid = s.fk_departement)"; +$sql.= ", ".MAIN_DB_PREFIX."commande_fournisseur as cf"; +if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."commande_fournisseur_extrafields as ef on (cf.rowid = ef.fk_object)"; +if ($sall || $search_product_category > 0) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'commande_fournisseurdet as pd ON cf.rowid=pd.fk_commande'; +if ($search_product_category > 0) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'categorie_product as cp ON cp.fk_product=pd.fk_product'; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."user as u ON cf.fk_user_author = u.rowid"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."projet as p ON p.rowid = cf.fk_projet"; -if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; -$sql.= " WHERE cf.fk_soc = s.rowid "; -$sql.= " AND cf.entity = ".$conf->entity; +// We'll need this table joined to the select in order to filter by sale +if ($search_sale > 0 || (!$user->rights->societe->client->voir && ! $socid)) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; +if ($search_user > 0) +{ + $sql.=", ".MAIN_DB_PREFIX."element_contact as ec"; + $sql.=", ".MAIN_DB_PREFIX."c_type_contact as tc"; +} +$sql.= ' WHERE cf.fk_soc = s.rowid'; +$sql.= ' AND cf.entity IN ('.getEntity('supplier_order', 1).')'; +if ($socid > 0) $sql.= " AND s.rowid = ".$socid; if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; -if ($search_ref) -{ - $sql .= natural_search('cf.ref', $search_ref); -} -if ($search_company) -{ - $sql .= natural_search('s.nom', $search_company); -} -if ($search_user) -{ - $sql.= " AND u.login LIKE '%".$db->escape($search_user)."%'"; -} -if ($search_ht != '') -{ - $sql .= natural_search("cf.total_ht",$search_ht, 1); -} -if ($search_ttc != '') -{ - $sql .= natural_search("cf.total_ttc", $search_ttc, 1); -} -if ($sall) -{ - $sql .= natural_search(array_keys($fieldstosearchall), $sall); -} -if ($socid) $sql.= " AND s.rowid = ".$socid; +if ($search_ref) $sql .= natural_search('cf.ref', $search_ref); +if ($search_refsupp) $sql.= natural_search("cf.ref_supplier", $search_refsupp); +if ($sall) $sql .= natural_search(array_keys($fieldstosearchall), $sall); +if ($search_company) $sql .= natural_search('s.nom', $search_company); +if ($search_request_author > 0) $sql.= " AND u.login LIKE '%".$db->escape($search_request_author)."%'"; +if ($billed != '' && $billed >= 0) $sql .= " AND cf.billed = ".$billed; //Required triple check because statut=0 means draft filter if (GETPOST('statut', 'alpha') !== '') { $sql .= " AND cf.fk_statut IN (".GETPOST('statut', 'alpha').")"; } - -if ($billed != '' && $billed >= 0) -{ - $sql .= " AND cf.billed = ".$billed; -} - -if ($search_refsupp) -{ - $sql.= " AND (cf.ref_supplier LIKE '%".$db->escape($search_refsupp)."%')"; -} if ($search_status != '' && $search_status >= 0) { if (strstr($search_status, ',')) $sql.=" AND cf.fk_statut IN (".$db->escape($search_status).")"; @@ -212,15 +315,58 @@ if ($ordermonth > 0) { if ($orderyear > 0 && empty($orderday)) $sql.= " AND cf.date_commande BETWEEN '".$db->idate(dol_get_first_day($orderyear,$ordermonth,false))."' AND '".$db->idate(dol_get_last_day($orderyear,$ordermonth,false))."'"; - else if ($orderyear > 0 && ! empty($orderday)) - $sql.= " AND cf.date_commande BETWEEN '".$db->idate(dol_mktime(0, 0, 0, $ordermonth, $orderday, $orderyear))."' AND '".$db->idate(dol_mktime(23, 59, 59, $ordermonth, $orderday, $orderyear))."'"; - else - $sql.= " AND date_format(cf.date_commande, '%m') = '".$ordermonth."'"; + else if ($orderyear > 0 && ! empty($orderday)) + $sql.= " AND cf.date_commande BETWEEN '".$db->idate(dol_mktime(0, 0, 0, $ordermonth, $orderday, $orderyear))."' AND '".$db->idate(dol_mktime(23, 59, 59, $ordermonth, $orderday, $orderyear))."'"; + else + $sql.= " AND date_format(cf.date_commande, '%m') = '".$ordermonth."'"; } else if ($orderyear > 0) { $sql.= " AND cf.date_commande BETWEEN '".$db->idate(dol_get_first_day($orderyear,1,false))."' AND '".$db->idate(dol_get_last_day($orderyear,12,false))."'"; } +if ($deliverymonth > 0) +{ + if ($deliveryyear > 0 && empty($deliveryday)) + $sql.= " AND cf.date_livraison BETWEEN '".$db->idate(dol_get_first_day($deliveryyear,$deliverymonth,false))."' AND '".$db->idate(dol_get_last_day($deliveryyear,$deliverymonth,false))."'"; + else if ($deliveryyear > 0 && ! empty($deliveryday)) + $sql.= " AND cf.date_livraison BETWEEN '".$db->idate(dol_mktime(0, 0, 0, $deliverymonth, $deliveryday, $deliveryyear))."' AND '".$db->idate(dol_mktime(23, 59, 59, $deliverymonth, $deliveryday, $deliveryyear))."'"; + else + $sql.= " AND date_format(cf.date_livraison, '%m') = '".$deliverymonth."'"; +} +else if ($deliveryyear > 0) +{ + $sql.= " AND cf.date_livraison BETWEEN '".$db->idate(dol_get_first_day($deliveryyear,1,false))."' AND '".$db->idate(dol_get_last_day($deliveryyear,12,false))."'"; +} +if ($search_town) $sql.= natural_search('s.town', $search_town); +if ($search_zip) $sql.= natural_search("s.zip",$search_zip); +if ($search_state) $sql.= natural_search("state.nom",$search_state); +if ($search_country) $sql .= " AND s.fk_pays IN (".$search_country.')'; +if ($search_type_thirdparty) $sql .= " AND s.fk_typent IN (".$search_type_thirdparty.')'; +if ($search_company) $sql .= natural_search('s.nom', $search_company); +if ($search_sale > 0) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$search_sale; +if ($search_user > 0) $sql.= " AND ec.fk_c_type_contact = tc.rowid AND tc.element='supplier_order' AND tc.source='internal' AND ec.element_id = cf.rowid AND ec.fk_socpeople = ".$search_user; +if ($search_total_ht != '') $sql.= natural_search('cf.total_ht', $search_total_ht, 1); +if ($search_total_vat != '') $sql.= natural_search('cf.tva', $search_total_vat, 1); +if ($search_total_ttc != '') $sql.= natural_search('cf.total_ttc', $search_total_ttc, 1); + +// Add where from extra fields +foreach ($search_array_options as $key => $val) +{ + $crit=$val; + $tmpkey=preg_replace('/search_options_/','',$key); + $typ=$extrafields->attribute_type[$tmpkey]; + $mode=0; + if (in_array($typ, array('int','double'))) $mode=1; // Search on a numeric + if ($val && ( ($crit != '' && ! in_array($typ, array('select'))) || ! empty($crit))) + { + $sql .= natural_search('ef.'.$tmpkey, $crit, $mode); + } +} +// Add where from hooks +$parameters=array(); +$reshook=$hookmanager->executeHooks('printFieldListWhere',$parameters); // Note that $action and $object may have been modified by hook +$sql.=$hookmanager->resPrint; + $sql.= $db->order($sortfield,$sortorder); $nbtotalofrecords = 0; @@ -234,28 +380,55 @@ $sql.= $db->plimit($limit+1, $offset); $resql = $db->query($sql); if ($resql) -{ - +{ + if ($socid > 0) + { + $soc = new Societe($db); + $soc->fetch($socid); + $title = $langs->trans('ListOfSupplierOrders') . ' - '.$soc->name; + } + else + { + $title = $langs->trans('ListOfSupplierOrders'); + } + $num = $db->num_rows($resql); - $i = 0; - $param=""; + $param=''; + if ($socid > 0) $param.='&socid='.$socid; + if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; if ($orderday) $param.='&orderday='.$orderday; if ($ordermonth) $param.='&ordermonth='.$ordermonth; if ($orderyear) $param.='&orderyear='.$orderyear; - if ($search_ref) $param.="&search_ref=".$search_ref; - if ($search_company) $param.="&search_company=".$search_company; - if ($search_user) $param.="&search_user=".$search_user; - if ($search_ttc) $param.="&search_ttc=".$search_ttc; + if ($deliveryday) $param.='&deliveryday='.$deliveryday; + if ($deliverymonth) $param.='&deliverymonth='.$deliverymonth; + if ($deliveryyear) $param.='&deliveryyear='.$deliveryyear; + if ($search_ref) $param.='&search_ref='.$search_ref; + if ($search_company) $param.='&search_company='.$search_company; + if ($search_user > 0) $param.='&search_user='.$search_user; + if ($search_request_author > 0) $param.='&search_request_author='.$search_request_author; + if ($search_sale > 0) $param.='&search_sale='.$search_sale; + if ($search_total_ht != '') $param.='&search_total_ht='.$search_total_ht; + if ($search_total_ttc != '') $param.="&search_total_ttc=".$search_total_ttc; if ($search_refsupp) $param.="&search_refsupp=".$search_refsupp; - if ($socid) $param.="&socid=".$socid; if ($search_status >= 0) $param.="&search_status=".$search_status; if ($billed != '') $param.="billed=".$billed; if ($optioncss != '') $param.='&optioncss='.$optioncss; - - print '
'; + // 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); + } + + //$massactionbutton=$form->selectMassAction('', $massaction == 'presend' ? array() : array('presend'=>$langs->trans("SendByMail"), 'builddoc'=>$langs->trans("PDFMerge"))); + + // Lignes des champs de filtre + print ''; if ($optioncss != '') print ''; print ''; + print ''; print ''; print ''; print ''; @@ -268,142 +441,463 @@ if ($resql) foreach($fieldstosearchall as $key => $val) $fieldstosearchall[$key]=$langs->trans($val); print $langs->trans("FilterOnInto", $sall) . join(', ',$fieldstosearchall); } - - print ''; + + $moreforfilter=''; + + // If the user can view prospects other than his' + if ($user->rights->societe->client->voir || $socid) + { + $langs->load("commercial"); + $moreforfilter.='
'; + $moreforfilter.=$langs->trans('ThirdPartiesOfSaleRepresentative'). ': '; + $moreforfilter.=$formother->select_salesrepresentatives($search_sale, 'search_sale', $user, 0, 1, 'maxwidth300'); + $moreforfilter.='
'; + } + // If the user can view other users + if ($user->rights->user->user->lire) + { + $moreforfilter.='
'; + $moreforfilter.=$langs->trans('LinkedToSpecificUsers'). ': '; + $moreforfilter.=$form->select_dolusers($search_user, 'search_user', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); + $moreforfilter.='
'; + } + // If the user can view prospects other than his' + if ($conf->categorie->enabled && ($user->rights->produit->lire || $user->rights->service->lire)) + { + include_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; + $moreforfilter.='
'; + $moreforfilter.=$langs->trans('IncludingProductWithTag'). ': '; + $cate_arbo = $form->select_all_categories(Categorie::TYPE_PRODUCT, null, 'parent', null, null, 1); + $moreforfilter.=$form->selectarray('search_product_category', $cate_arbo, $search_product_category, 1, 0, 0, '', 0, 0, 0, 0, '', 1); + $moreforfilter.='
'; + } + $parameters=array(); + $reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook + if (empty($reshook)) $moreforfilter .= $hookmanager->resPrint; + else $moreforfilter = $hookmanager->resPrint; + if (! empty($moreforfilter)) + { + print '
'; + print $moreforfilter; + print '
'; + } + + $varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage; + $selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields + + print '
'."\n"; + print ''; - print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"cf.ref","",$param,'',$sortfield,$sortorder); - if (empty($conf->global->SUPPLIER_ORDER_HIDE_REF_SUPPLIER)) print_liste_field_titre($langs->trans("RefSupplier"),$_SERVER["PHP_SELF"],"cf.ref_supplier","",$param,'',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("ThirdParty"),$_SERVER["PHP_SELF"],"s.nom","",$param,'',$sortfield,$sortorder); - if (! empty($conf->global->PROJECT_SHOW_REF_INTO_LISTS)) print_liste_field_titre($langs->trans("Project"),$_SERVER["PHP_SELF"],"p.ref","",$param,'',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("Author"),$_SERVER["PHP_SELF"],"u.login","",$param,'',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("AmountHT"),$_SERVER["PHP_SELF"],"cf.total_ht","",$param,'align="right"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("AmountTTC"),$_SERVER["PHP_SELF"],"cf.total_ttc","",$param,'align="right"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("OrderDate"),$_SERVER["PHP_SELF"],"dc","",$param,'align="center"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans('DateDeliveryPlanned'),$_SERVER["PHP_SELF"],'cf.date_livraison','',$param, 'align="right"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"cf.fk_statut","",$param,'align="right"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans('Billed'),$_SERVER["PHP_SELF"],'cf.billed','',$param,'align="center"',$sortfield,$sortorder,''); - print_liste_field_titre('',$_SERVER["PHP_SELF"],"",'','','',$sortfield,$sortorder,'maxwidthsearch '); + if (! empty($arrayfields['cf.ref']['checked'])) print_liste_field_titre($arrayfields['cf.ref']['label'],$_SERVER["PHP_SELF"],"cf.ref","",$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['cf.ref_supplier']['checked'])) print_liste_field_titre($arrayfields['cf.ref_supplier']['label'],$_SERVER["PHP_SELF"],"cf.ref_supplier","",$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['p.project_ref']['checked'])) print_liste_field_titre($arrayfields['p.project_ref']['label'],$_SERVER["PHP_SELF"],"p.ref","",$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['u.login']['checked'])) print_liste_field_titre($arrayfields['u.login']['label'],$_SERVER["PHP_SELF"],"u.login","",$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['s.nom']['checked'])) print_liste_field_titre($arrayfields['s.nom']['label'],$_SERVER["PHP_SELF"],"s.nom","",$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['s.town']['checked'])) print_liste_field_titre($arrayfields['s.town']['label'],$_SERVER["PHP_SELF"],'s.town','',$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['s.zip']['checked'])) print_liste_field_titre($arrayfields['s.zip']['label'],$_SERVER["PHP_SELF"],'s.zip','',$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['state.nom']['checked'])) print_liste_field_titre($arrayfields['state.nom']['label'],$_SERVER["PHP_SELF"],"state.nom","",$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['country.code_iso']['checked'])) print_liste_field_titre($arrayfields['country.code_iso']['label'],$_SERVER["PHP_SELF"],"country.code_iso","",$param,'align="center"',$sortfield,$sortorder); + if (! empty($arrayfields['typent.code']['checked'])) print_liste_field_titre($arrayfields['typent.code']['label'],$_SERVER["PHP_SELF"],"typent.code","",$param,'align="center"',$sortfield,$sortorder); + if (! empty($arrayfields['cf.fk_author']['checked'])) print_liste_field_titre($arrayfields['cf.fk_author']['label'],$_SERVER["PHP_SELF"],"u.login","",$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['cf.date_commande']['checked'])) print_liste_field_titre($arrayfields['cf.date_commande']['label'],$_SERVER["PHP_SELF"],"cf.date_commande","",$param,'align="center"',$sortfield,$sortorder); + if (! empty($arrayfields['cf.date_delivery']['checked'])) print_liste_field_titre($arrayfields['cf.date_delivery']['label'],$_SERVER["PHP_SELF"],'cf.date_livraison','',$param, 'align="right"',$sortfield,$sortorder); + if (! empty($arrayfields['cf.total_ht']['checked'])) print_liste_field_titre($arrayfields['cf.total_ht']['label'],$_SERVER["PHP_SELF"],"cf.total_ht","",$param,'align="right"',$sortfield,$sortorder); + if (! empty($arrayfields['cf.total_vat']['checked'])) print_liste_field_titre($arrayfields['cf.total_vat']['label'],$_SERVER["PHP_SELF"],"cf.tva","",$param,'align="right"',$sortfield,$sortorder); + if (! empty($arrayfields['cf.total_ttc']['checked'])) print_liste_field_titre($arrayfields['cf.total_ttc']['label'],$_SERVER["PHP_SELF"],"cf.total_ttc","",$param,'align="right"',$sortfield,$sortorder); + // Extra fields + if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) + { + foreach($extrafields->attribute_label as $key => $val) + { + if (! empty($arrayfields["ef.".$key]['checked'])) + { + $align=$extrafields->getAlignFlag($key); + print_liste_field_titre($extralabels[$key],$_SERVER["PHP_SELF"],"ef.".$key,"",$param,($align?'align="'.$align.'"':''),$sortfield,$sortorder); + } + } + } + // Hook fields + $parameters=array('arrayfields'=>$arrayfields); + $reshook=$hookmanager->executeHooks('printFieldListTitle',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + if (! empty($arrayfields['cf.datec']['checked'])) print_liste_field_titre($arrayfields['cf.datec']['label'],$_SERVER["PHP_SELF"],"cf.date_creation","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); + if (! empty($arrayfields['cf.tms']['checked'])) print_liste_field_titre($arrayfields['cf.tms']['label'],$_SERVER["PHP_SELF"],"cf.tms","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); + if (! empty($arrayfields['cf.fk_statut']['checked'])) print_liste_field_titre($arrayfields['cf.fk_statut']['label'],$_SERVER["PHP_SELF"],"cf.fk_statut","",$param,'align="right"',$sortfield,$sortorder); + if (! empty($arrayfields['cf.billed']['checked'])) print_liste_field_titre($arrayfields['cf.billed']['label'],$_SERVER["PHP_SELF"],'cf.billed','',$param,'align="center"',$sortfield,$sortorder,''); + print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"],"",'','','align="right"',$sortfield,$sortorder,'maxwidthsearch '); print "\n"; print ''; - - print ''; - if (empty($conf->global->SUPPLIER_ORDER_HIDE_REF_SUPPLIER)) print ''; - print ''; - if (! empty($conf->global->PROJECT_SHOW_REF_INTO_LISTS)) + // Ref + if (! empty($arrayfields['cf.ref']['checked'])) + { + print ''; + } + // Ref customer + if (! empty($arrayfields['cf.ref_supplier']['checked'])) + { + print ''; + } + // Project ref + if (! empty($arrayfields['p.project_ref']['checked'])) + { + print ''; + } + // Request author + if (! empty($arrayfields['u.login']['checked'])) { print ''; } - print ''; - print ''; - print ''; - print ''; + } + // Town + if (! empty($arrayfields['s.town']['checked'])) print ''; + // Zip + if (! empty($arrayfields['s.zip']['checked'])) print ''; + // State + if (! empty($arrayfields['state.nom']['checked'])) + { + print ''; + } + // Country + if (! empty($arrayfields['country.code_iso']['checked'])) + { + print ''; + } + // Company type + if (! empty($arrayfields['typent.code']['checked'])) + { + print ''; + } + // Date order + if (! empty($arrayfields['cf.date_commande']['checked'])) + { + print ''; + } + // Date delivery + if (! empty($arrayfields['cf.date_delivery']['checked'])) + { + print ''; + } + if (! empty($arrayfields['cf.total_ht']['checked'])) + { + // Amount + print ''; + } + if (! empty($arrayfields['cf.total_vat']['checked'])) + { + // Amount + print ''; + } + if (! empty($arrayfields['cf.total_ttc']['checked'])) + { + // Amount + print ''; + } + // Extra fields + if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) + { + foreach($extrafields->attribute_label as $key => $val) + { + if (! empty($arrayfields["ef.".$key]['checked'])) + { + $align=$extrafields->getAlignFlag($key); + $typeofextrafield=$extrafields->attribute_type[$key]; + print ''; + } + } + } + // Fields from hook + $parameters=array('arrayfields'=>$arrayfields); + $reshook=$hookmanager->executeHooks('printFieldListOption',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + // Date creation + if (! empty($arrayfields['cf.datec']['checked'])) + { + print ''; + } + // Date modification + if (! empty($arrayfields['cf.tms']['checked'])) + { + print ''; + } + // Status + if (! empty($arrayfields['cf.fk_statut']['checked'])) + { + print ''; + } + // Status billed + if (! empty($arrayfields['cf.billed']['checked'])) + { + print ''; + } + // Action column + print ''; - print ''; - print ''; - print ''; - print ''; + print "\n"; - $var=true; - - $userstatic = new User($db); + $total=0; + $subtotal=0; + $productstat_cache=array(); + + $userstatic = new User($db); $objectstatic=new CommandeFournisseur($db); $projectstatic=new Project($db); - while ($i < min($num,$conf->liste_limit)) + $i=0; + $var=true; + $totalarray=array(); + while ($i < min($num,$limit)) { $obj = $db->fetch_object($resql); $var=!$var; + $objectstatic->id=$obj->rowid; $objectstatic->ref=$obj->ref; $objectstatic->ref_supplier = $obj->ref_supplier; $objectstatic->total_ht = $obj->total_ht; $objectstatic->total_tva = $obj->total_tva; $objectstatic->total_ttc = $obj->total_ttc; - + $objectstatic->date_delivery = $db->jdate($obj->date_delivery); + $objectstatic->statut = $obj->fk_statut; + print ""; // Ref - print ''."\n"; - + if (! empty($arrayfields['cf.ref']['checked'])) + { + print ''."\n"; + if (! $i) $totalarray['nbfield']++; + } // Ref Supplier - if (empty($conf->global->SUPPLIER_ORDER_HIDE_REF_SUPPLIER)) print ''."\n"; - - // Thirdparty - print ''."\n"; - + if (! empty($arrayfields['cf.ref_supplier']['checked'])) + { + print ''."\n"; + if (! $i) $totalarray['nbfield']++; + } // Project - if (! empty($conf->global->PROJECT_SHOW_REF_INTO_LISTS)) - { + if (! empty($arrayfields['p.project_ref']['checked'])) + { $projectstatic->id=$obj->project_id; $projectstatic->ref=$obj->project_ref; print ''; - } - - // Author - $userstatic->id = $obj->fk_user_author; - $userstatic->lastname = $obj->lastname; - $userstatic->firstname = $obj->firstname; - $userstatic->login = $obj->login; - $userstatic->photo = $obj->photo; - print ""; - - // Amount net - print '"; - - // Amount with tax - print '"; - - // Date - print '"; + if (! $i) $totalarray['nbfield']++; } - else + // Thirdparty + if (! empty($arrayfields['s.nom']['checked'])) + { + print ''."\n"; + if (! $i) $totalarray['nbfield']++; + } + // Town + if (! empty($arrayfields['s.town']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + // Zip + if (! empty($arrayfields['s.zip']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + // State + if (! empty($arrayfields['state.nom']['checked'])) + { + print "\n"; + if (! $i) $totalarray['nbfield']++; + } + // Country + if (! empty($arrayfields['country.code_iso']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + // Type ent + if (! empty($arrayfields['typent.code']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + + // Order date + if (! empty($arrayfields['cf.date_commande']['checked'])) { - print "-"; + print ''; + if (! $i) $totalarray['nbfield']++; } - print ''; - - // Delivery date - print ''; - - // Statut - print ''; - - // Billed - print ''; + // Plannned date of delivery + if (! empty($arrayfields['cf.date_delivery']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + // Amount HT + if (! empty($arrayfields['cf.total_ht']['checked'])) + { + print '\n"; + if (! $i) $totalarray['nbfield']++; + if (! $i) $totalarray['totalhtfield']=$totalarray['nbfield']; + $totalarray['totalht'] += $obj->total_ht; + } + // Amount VAT + if (! empty($arrayfields['cf.total_vat']['checked'])) + { + print '\n"; + if (! $i) $totalarray['nbfield']++; + if (! $i) $totalarray['totalvatfield']=$totalarray['nbfield']; + $totalarray['totalvat'] += $obj->total_tva; + } + // Amount TTC + if (! empty($arrayfields['cf.total_ttc']['checked'])) + { + print '\n"; + if (! $i) $totalarray['nbfield']++; + if (! $i) $totalarray['totalttcfield']=$totalarray['nbfield']; + $totalarray['totalttc'] += $obj->total_ttc; + } - print ''; + // Extra fields + if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) + { + foreach($extrafields->attribute_label as $key => $val) + { + if (! empty($arrayfields["ef.".$key]['checked'])) + { + print 'getAlignFlag($key); + if ($align) print ' align="'.$align.'"'; + print '>'; + $tmpkey='options_'.$key; + print $extrafields->showOutputField($key, $obj->$tmpkey, '', 1); + print ''; + if (! $i) $totalarray['nbfield']++; + } + } + } + // Fields from hook + $parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $reshook=$hookmanager->executeHooks('printFieldListValue',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + // Date creation + if (! empty($arrayfields['cf.datec']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + // Date modification + if (! empty($arrayfields['cf.tms']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + // Status + if (! empty($arrayfields['cf.fk_statut']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + // Billed + if (! empty($arrayfields['cf.billed']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + + // Action column + print ''; + if (! $i) $totalarray['nbfield']++; print "\n"; $i++; diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 88d1646027c..5dd707d35dd 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1204,6 +1204,8 @@ SuggestPaymentByChequeToAddress=Suggest payment by cheque to FreeLegalTextOnInvoices=Free text on invoices WatermarkOnDraftInvoices=Watermark on draft invoices (none if empty) PaymentsNumberingModule=Payments numbering model +SuppliersPayment=Suppliers payments +SupplierPaymentSetup=Suppliers payments setup ##### Proposals ##### PropalSetup=Commercial proposals module setup CreateForm=Create forms diff --git a/htdocs/langs/en_US/orders.lang b/htdocs/langs/en_US/orders.lang index d05491e5814..46c28f14578 100644 --- a/htdocs/langs/en_US/orders.lang +++ b/htdocs/langs/en_US/orders.lang @@ -118,8 +118,9 @@ RelatedCustomerOrders=Related customer orders RelatedSupplierOrders=Related supplier orders OnProcessOrders=In process orders RefOrder=Ref. order -RefCustomerOrder=Ref. customer order -RefCustomerOrderShort=Ref. cust. 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 From 1617f3c62a7448701f94a772a06c9ebeddabae7c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 24 May 2016 20:24:51 +0200 Subject: [PATCH 017/245] Fix colspan --- htdocs/societe/soc.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/societe/soc.php b/htdocs/societe/soc.php index 71df6128afb..b5060a99398 100644 --- a/htdocs/societe/soc.php +++ b/htdocs/societe/soc.php @@ -974,11 +974,11 @@ else if ($conf->use_javascript_ajax) { print ''; - print ''; - print ''; - print ''; + print ''; + print ''; - print ''; + print ''; } // Alias names (commercial, trademark or alias names) From b476153b8bac7c799a61ff3ff018d6755aa0f418 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 25 May 2016 00:02:48 +0200 Subject: [PATCH 018/245] Move POS at end of top menu --- htdocs/core/modules/modCashDesk.class.php | 2 +- htdocs/langs/en_US/admin.lang | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/modules/modCashDesk.class.php b/htdocs/core/modules/modCashDesk.class.php index 4668305662e..93c0f3016ed 100644 --- a/htdocs/core/modules/modCashDesk.class.php +++ b/htdocs/core/modules/modCashDesk.class.php @@ -100,7 +100,7 @@ class modCashDesk extends DolibarrModules 'mainmenu'=>'cashdesk', 'url'=>'/cashdesk/index.php?user=__LOGIN__', 'langs'=>'cashdesk', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory. - 'position'=>100, + 'position'=>900, 'enabled'=>'$conf->cashdesk->enabled', 'perms'=>'$user->rights->cashdesk->use', // Use 'perms'=>'1' if you want your menu with no permission rules 'target'=>'pointofsale', diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 5dd707d35dd..efd99fdb226 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -562,7 +562,7 @@ Module39000Desc=Lot or serial number, eat-by and sell-by date management on prod Module50000Name=PayBox Module50000Desc=Module to offer an online payment page by credit card with PayBox Module50100Name=Point of sales -Module50100Desc=Point of sales module +Module50100Desc=Point of sales module (POS). Module50200Name=Paypal Module50200Desc=Module to offer an online payment page by credit card with Paypal Module50400Name=Accounting (advanced) From 1ce91bac06f445c955e710d061caab0bb038d0ce Mon Sep 17 00:00:00 2001 From: gauthier Date: Wed, 25 May 2016 11:25:19 +0200 Subject: [PATCH 019/245] FIX : same page added several times on mergepropal option --- htdocs/core/modules/propale/doc/pdf_azur.modules.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/propale/doc/pdf_azur.modules.php b/htdocs/core/modules/propale/doc/pdf_azur.modules.php index f8e6874f3b2..54ffdf0c437 100644 --- a/htdocs/core/modules/propale/doc/pdf_azur.modules.php +++ b/htdocs/core/modules/propale/doc/pdf_azur.modules.php @@ -710,7 +710,7 @@ class pdf_azur extends ModelePDFPropales if (file_exists($infile) && is_readable($infile)) { $pagecount = $pdf->setSourceFile($infile); for($i = 1; $i <= $pagecount; $i ++) { - $tplIdx = $pdf->importPage(1); + $tplIdx = $pdf->importPage($i); if ($tplIdx!==false) { $s = $pdf->getTemplatesize($tplIdx); $pdf->AddPage($s['h'] > $s['w'] ? 'P' : 'L'); From 71ee941cf84f3954b69bd0a6927cc6eb575dc02e Mon Sep 17 00:00:00 2001 From: gauthier Date: Wed, 25 May 2016 12:25:39 +0200 Subject: [PATCH 020/245] FIX : SQL error function on getAvailableDiscounts function, on bill create mode if socid is empty --- htdocs/compta/facture.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index c13d8197801..ccfd057ccde 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -1935,7 +1935,7 @@ if ($action == 'create') $dateinvoice = (empty($dateinvoice)?(empty($conf->global->MAIN_AUTOFILL_DATE)?-1:''):$dateinvoice); // Do not set 0 here (0 for a date is 1970) } - $absolute_discount = $soc->getAvailableDiscounts(); + if(!empty($soc->id)) $absolute_discount = $soc->getAvailableDiscounts(); if (! empty($conf->use_javascript_ajax)) { From b410aa57b98bd3732d725dd4a0ddb47cf85f48bd Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 25 May 2016 15:36:48 +0200 Subject: [PATCH 021/245] Fix: Fetching category on label is not enough. We must introduce type --- htdocs/categories/class/categorie.class.php | 11 ++++++----- htdocs/langs/en_US/categories.lang | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index 672ea7b6408..e4c6f162d23 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -167,9 +167,10 @@ class Categorie extends CommonObject * * @param int $id Id of category * @param string $label Label of category + * @param string $type Type of category * @return int <0 if KO, >0 if OK */ - function fetch($id,$label='') + function fetch($id,$label='',$type='') { global $conf; @@ -182,10 +183,10 @@ class Categorie extends CommonObject { $sql.= " WHERE rowid = '".$id."'"; } - else { - if ($label) $sql.= " WHERE label = '".$this->db->escape($label)."' AND entity IN (".getEntity('category',1).")"; + $sql.= " WHERE label = '".$this->db->escape($label)."' AND entity IN (".getEntity('category',1).")"; + if ($type) $sql.= " AND type = '".$this->db->escape($type)."'"; } dol_syslog(get_class($this)."::fetch", LOG_DEBUG); @@ -255,9 +256,9 @@ class Categorie extends CommonObject if ($this->already_exists()) { - $this->error=$langs->trans("ImpossibleAddCat"); + $this->error=$langs->trans("ImpossibleAddCat", $this->label); $this->error.=" : ".$langs->trans("CategoryExistsAtSameLevel"); - dol_syslog($this->error, LOG_ERR); + dol_syslog($this->error, LOG_WARNING); return -4; } diff --git a/htdocs/langs/en_US/categories.lang b/htdocs/langs/en_US/categories.lang index 0235b51ccb3..4a569316425 100644 --- a/htdocs/langs/en_US/categories.lang +++ b/htdocs/langs/en_US/categories.lang @@ -39,7 +39,7 @@ 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 +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. From b8d5d6a383e0b066350b43462c26272cbc883e55 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 26 May 2016 19:38:52 +0200 Subject: [PATCH 022/245] Fix bad placeholder --- htdocs/fourn/facture/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index 97c2d782afb..38dcdc87759 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -1352,7 +1352,7 @@ if ($action == 'create') } else { - print $form->select_company(GETPOST('socid','int'),'socid','s.fournisseur = 1',1); + print $form->select_company(GETPOST('socid','int'),'socid','s.fournisseur = 1','SelectThirdParty'); } print ''; From 6ba86e9d0363b554464a28dbef739c6f7a9598ee Mon Sep 17 00:00:00 2001 From: Ion Agorria Date: Thu, 26 May 2016 20:53:01 +0200 Subject: [PATCH 023/245] Fill ref_supplier in product supplier price --- htdocs/fourn/class/fournisseur.product.class.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/fourn/class/fournisseur.product.class.php b/htdocs/fourn/class/fournisseur.product.class.php index 05024f9991a..e033371e9e5 100644 --- a/htdocs/fourn/class/fournisseur.product.class.php +++ b/htdocs/fourn/class/fournisseur.product.class.php @@ -466,6 +466,7 @@ class ProductFournisseur extends Product $prodfourn->product_fourn_price_id = $record["product_fourn_pri_id"]; $prodfourn->product_fourn_id = $record["product_fourn_id"]; $prodfourn->fourn_ref = $record["ref_fourn"]; + $prodfourn->ref_supplier = $record["ref_fourn"]; $prodfourn->fourn_price = $record["price"]; $prodfourn->fourn_qty = $record["quantity"]; $prodfourn->fourn_remise_percent = $record["remise_percent"]; From 97278c254e547d9631824b25570649989dab07fc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 26 May 2016 21:12:36 +0200 Subject: [PATCH 024/245] Doc comment --- htdocs/categories/class/categorie.class.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index e4c6f162d23..61bcbac238c 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -1273,11 +1273,11 @@ class Categorie extends CommonObject * Return list of categories (object instances or labels) linked to element of id $id and type $type * Should be named getListOfCategForObject * - * @param int $id Id of element - * @param string $type Type of category ('customer', 'supplier', 'contact', 'product', 'member'). Old mode (0, 1, 2, ...) is deprecated. - * @param string $mode 'object'=Get array of fetched category instances, 'label'=Get array of category - * labels, 'id'= Get array of category IDs - * @return mixed Array of category objects or < 0 if KO + * @param int $id Id of element + * @param string $type Type of category ('customer', 'supplier', 'contact', 'product', 'member'). Old mode (0, 1, 2, ...) is deprecated. + * @param string $mode 'id'=Get array of category ids, 'object'=Get array of fetched category instances, 'label'=Get array of category + * labels, 'id'= Get array of category IDs + * @return mixed Array of category objects or < 0 if KO */ function containing($id, $type, $mode='object') { From db56e1b8a1ba58daf81534315234e80773bcbab2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 26 May 2016 21:17:43 +0200 Subject: [PATCH 025/245] FIX Missing columns in migration --- htdocs/install/mysql/migration/3.9.0-4.0.0.sql | 2 ++ htdocs/install/mysql/tables/llx_expensereport_det.sql | 7 +++++++ 2 files changed, 9 insertions(+) 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 5342dd56f7b..f603846de50 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 @@ -350,6 +350,8 @@ ALTER TABLE llx_expensereport_det ADD COLUMN multicurrency_total_ht double(24,8) ALTER TABLE llx_expensereport_det ADD COLUMN multicurrency_total_tva double(24,8) DEFAULT 0; ALTER TABLE llx_expensereport_det ADD COLUMN multicurrency_total_ttc double(24,8) DEFAULT 0; +ALTER TABLE llx_expensereport_det ADD COLUMN fk_facture integer DEFAULT 0; + ALTER TABLE llx_product_lang ADD COLUMN import_key varchar(14) DEFAULT NULL; ALTER TABLE llx_actioncomm MODIFY COLUMN elementtype varchar(255) DEFAULT NULL; diff --git a/htdocs/install/mysql/tables/llx_expensereport_det.sql b/htdocs/install/mysql/tables/llx_expensereport_det.sql index c5333c4fca5..4684a70399d 100644 --- a/htdocs/install/mysql/tables/llx_expensereport_det.sql +++ b/htdocs/install/mysql/tables/llx_expensereport_det.sql @@ -40,6 +40,13 @@ CREATE TABLE llx_expensereport_det date date NOT NULL, info_bits integer DEFAULT 0, -- TVA NPR ou non special_code integer DEFAULT 0, -- code pour les lignes speciales + fk_multicurrency integer, + multicurrency_code varchar(255), + multicurrency_subprice double(24,8) DEFAULT 0, + multicurrency_total_ht double(24,8) DEFAULT 0, + multicurrency_total_tva double(24,8) DEFAULT 0, + multicurrency_total_ttc double(24,8) DEFAULT 0; + fk_facture integer DEFAULT 0, -- ID of customer invoice line if expense is rebilled to a customer rang integer DEFAULT 0, -- position of line import_key varchar(14) ) ENGINE=innodb; \ No newline at end of file From 9a3251bcc9562d86c2b9e31898cdf29036bba9c9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 26 May 2016 21:18:08 +0200 Subject: [PATCH 026/245] FIX Missing columns in migration --- htdocs/install/mysql/tables/llx_expensereport_det.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/install/mysql/tables/llx_expensereport_det.sql b/htdocs/install/mysql/tables/llx_expensereport_det.sql index 4684a70399d..0a7853d2a8b 100644 --- a/htdocs/install/mysql/tables/llx_expensereport_det.sql +++ b/htdocs/install/mysql/tables/llx_expensereport_det.sql @@ -45,7 +45,7 @@ CREATE TABLE llx_expensereport_det multicurrency_subprice double(24,8) DEFAULT 0, multicurrency_total_ht double(24,8) DEFAULT 0, multicurrency_total_tva double(24,8) DEFAULT 0, - multicurrency_total_ttc double(24,8) DEFAULT 0; + multicurrency_total_ttc double(24,8) DEFAULT 0, fk_facture integer DEFAULT 0, -- ID of customer invoice line if expense is rebilled to a customer rang integer DEFAULT 0, -- position of line import_key varchar(14) From 27da82df1f39a708a65f84269ddf603e186a7a23 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 26 May 2016 21:20:10 +0200 Subject: [PATCH 027/245] FIX Missing columns in migration --- htdocs/install/mysql/tables/llx_expensereport.sql | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/htdocs/install/mysql/tables/llx_expensereport.sql b/htdocs/install/mysql/tables/llx_expensereport.sql index c61ed8a9335..a6f93d9cb37 100755 --- a/htdocs/install/mysql/tables/llx_expensereport.sql +++ b/htdocs/install/mysql/tables/llx_expensereport.sql @@ -53,6 +53,13 @@ CREATE TABLE llx_expensereport ( fk_bank_account integer DEFAULT NULL, model_pdf varchar(50) DEFAULT NULL, + fk_multicurrency integer, + multicurrency_code varchar(255), + multicurrency_tx double(24,8) DEFAULT 1, + multicurrency_total_ht double(24,8) DEFAULT 0, + multicurrency_total_tva double(24,8) DEFAULT 0, + multicurrency_total_ttc double(24,8) DEFAULT 0, + import_key varchar(14), extraparams varchar(255) -- for other parameters with json format ) ENGINE=innodb; From 7278d1f2c6f773d8b2411f170d2eac802d37ac8a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 27 May 2016 10:38:15 +0200 Subject: [PATCH 028/245] NEW Add hidden option BANK_DISABLE_CHECK_DEPOSIT to disable check deposit feature. --- htdocs/core/menus/init_menu_auguria.sql | 6 +++--- htdocs/core/menus/standard/eldy.lib.php | 2 +- htdocs/index.php | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/core/menus/init_menu_auguria.sql b/htdocs/core/menus/init_menu_auguria.sql index 98b281d04dd..a8aa94e8253 100644 --- a/htdocs/core/menus/init_menu_auguria.sql +++ b/htdocs/core/menus/init_menu_auguria.sql @@ -246,9 +246,9 @@ 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->comptabilite->enabled && $leftmenu=="ca"', __HANDLER__, 'left', 2706__+MAX_llx_menu__, 'accountancy', '', 2700__+MAX_llx_menu__, '/compta/journal/sellsjournal.php?leftmenu=ca', 'SellsJournal', 1, 'main', '$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire', '', 0, 1, __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->comptabilite->enabled && $leftmenu=="ca"', __HANDLER__, 'left', 2707__+MAX_llx_menu__, 'accountancy', '', 2700__+MAX_llx_menu__, '/compta/journal/purchasesjournal.php?leftmenu=ca', 'PurchasesJournal', 1, 'main', '$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire', '', 0, 1, __ENTITY__); -- Check deposit -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '! empty($conf->banque->enabled) && (! empty($conf->facture->enabled)) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON)', __HANDLER__, 'left', 1711__+MAX_llx_menu__, 'accountancy', 'checks', 14__+MAX_llx_menu__, '/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank', 'MenuChequeDeposits', 0, 'bills', '$user->rights->banque->lire', '', 2, 9, __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 ('', '! empty($conf->banque->enabled) && (! empty($conf->facture->enabled)) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON)', __HANDLER__, 'left', 1712__+MAX_llx_menu__, 'accountancy', '', 1711__+MAX_llx_menu__, '/compta/paiement/cheque/card.php?leftmenu=checks&action=new', 'NewCheckDeposit', 1, 'compta', '$user->rights->banque->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 ('', '! empty($conf->banque->enabled) && (! empty($conf->facture->enabled)) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON)', __HANDLER__, 'left', 1713__+MAX_llx_menu__, 'accountancy', '', 1711__+MAX_llx_menu__, '/compta/paiement/cheque/list.php?leftmenu=checks', 'List', 1, 'bills', '$user->rights->banque->lire', '', 2, 1, __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 ('', 'empty($conf->global->BANK_DISABLE_CHECK_DEPOSIT) && ! empty($conf->banque->enabled) && (! empty($conf->facture->enabled) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON))', __HANDLER__, 'left', 1711__+MAX_llx_menu__, 'accountancy', 'checks', 14__+MAX_llx_menu__, '/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank', 'MenuChequeDeposits', 0, 'bills', '$user->rights->banque->lire', '', 2, 9, __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 ('', 'empty($conf->global->BANK_DISABLE_CHECK_DEPOSIT) && ! empty($conf->banque->enabled) && (! empty($conf->facture->enabled) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON))', __HANDLER__, 'left', 1712__+MAX_llx_menu__, 'accountancy', '', 1711__+MAX_llx_menu__, '/compta/paiement/cheque/card.php?leftmenu=checks&action=new', 'NewCheckDeposit', 1, 'compta', '$user->rights->banque->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 ('', 'empty($conf->global->BANK_DISABLE_CHECK_DEPOSIT) && ! empty($conf->banque->enabled) && (! empty($conf->facture->enabled) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON))', __HANDLER__, 'left', 1713__+MAX_llx_menu__, 'accountancy', '', 1711__+MAX_llx_menu__, '/compta/paiement/cheque/list.php?leftmenu=checks', 'List', 1, 'bills', '$user->rights->banque->lire', '', 2, 1, __ENTITY__); -- Withdrawal 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->prelevement->enabled', __HANDLER__, 'left', 2500__+MAX_llx_menu__, 'accountancy', 'withdraw', 14__+MAX_llx_menu__, '/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank', 'StandingOrders', 0, 'withdrawals', '$user->rights->prelevement->bons->lire', '', 2, 9, __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->prelevement->enabled && $leftmenu=="withdraw"', __HANDLER__, 'left', 2502__+MAX_llx_menu__, 'accountancy', '', 2500__+MAX_llx_menu__, '/compta/prelevement/create.php?leftmenu=withdraw', 'NewStandingOrder', 1, 'withdrawals', '$user->rights->prelevement->bons->lire', '', 2, 0, __ENTITY__); diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 5474b1dfffe..d3fbf000be3 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -1089,7 +1089,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu } // Gestion cheques - if (! empty($conf->banque->enabled) && (! empty($conf->facture->enabled)) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON)) + if (empty($conf->global->BANK_DISABLE_CHECK_DEPOSIT) && ! empty($conf->banque->enabled) && (! empty($conf->facture->enabled) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON))) { $newmenu->add("/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank",$langs->trans("MenuChequeDeposits"),0,$user->rights->banque->cheque, '', $mainmenu, 'checks'); $newmenu->add("/compta/paiement/cheque/card.php?leftmenu=checks&action=new&mainmenu=bank",$langs->trans("NewChequeDeposit"),1,$user->rights->banque->cheque); diff --git a/htdocs/index.php b/htdocs/index.php index 5e9492d9b50..b28038e63c9 100644 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -481,7 +481,7 @@ if (! empty($conf->banque->enabled) && $user->rights->banque->lire && ! $user->s } // Number of cheque to send -if (! empty($conf->banque->enabled) && $user->rights->banque->lire && ! $user->societe_id) +if (! empty($conf->banque->enabled) && $user->rights->banque->lire && ! $user->societe_id && empty($conf->global->BANK_DISABLE_CHECK_DEPOSIT)) { include_once DOL_DOCUMENT_ROOT.'/compta/paiement/cheque/class/remisecheque.class.php'; $board=new RemiseCheque($db); From 5dec8f1935e98900fafa358fc2106f13bf641dcc Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Fri, 27 May 2016 10:56:39 +0200 Subject: [PATCH 029/245] Fix: Bad encoding and use original function 'implode' instead aliases 'join' --- htdocs/main.inc.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index bd65a1e63bd..b7c0aee8962 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -7,7 +7,7 @@ * Copyright (C) 2005-2015 Regis Houssin * Copyright (C) 2011-2014 Philippe Grand * Copyright (C) 2008 Matteli - * Copyright (C) 2011-2013 Juanjo Menent + * Copyright (C) 2011-2016 Juanjo Menent * Copyright (C) 2012 Christophe Battarel * Copyright (C) 2014-2015 Marcos García * Copyright (C) 2015 Raphaël Doursenaud @@ -567,7 +567,7 @@ if (! defined('NOLOGIN')) if (GETPOST('textbrowser')) $paramsurl[]='textbrowser='.GETPOST('textbrowser','int'); if (GETPOST('nojs')) $paramsurl[]='nojs='.GETPOST('nojs','int'); if (GETPOST('lang')) $paramsurl[]='lang='.GETPOST('lang','alpha'); - header('Location: '.DOL_URL_ROOT.'/index.php'.($count(paramsurl)?'?'.join('&',$paramsurl):'')); + header('Location: '.DOL_URL_ROOT.'/index.php'.(count($paramsurl)?'?'.implode('&',$paramsurl):'')); exit; } } @@ -625,7 +625,7 @@ if (! defined('NOLOGIN')) if (GETPOST('textbrowser')) $paramsurl[]='textbrowser='.GETPOST('textbrowser','int'); if (GETPOST('nojs')) $paramsurl[]='nojs='.GETPOST('nojs','int'); if (GETPOST('lang')) $paramsurl[]='lang='.GETPOST('lang','alpha'); - header('Location: '.DOL_URL_ROOT.'/index.php'.($count(paramsurl)?'?'.join('&',$paramsurl):'')); + header('Location: '.DOL_URL_ROOT.'/index.php'.(count($paramsurl)?'?'.implode('&',$paramsurl):'')); exit; } else From c653acd4ce5d985151439b5340bfa655de1b5fc0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 27 May 2016 14:56:59 +0200 Subject: [PATCH 030/245] Minor fixes --- htdocs/admin/facture.php | 4 ++-- htdocs/commande/class/commande.class.php | 5 +++++ htdocs/langs/en_US/admin.lang | 1 + htdocs/theme/md/style.css.php | 4 ++-- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/htdocs/admin/facture.php b/htdocs/admin/facture.php index 1b7c67e40f9..bae4b0abd88 100644 --- a/htdocs/admin/facture.php +++ b/htdocs/admin/facture.php @@ -566,7 +566,7 @@ foreach ($dirmodels as $reldir) else { print ""; } @@ -578,7 +578,7 @@ foreach ($dirmodels as $reldir) } else { - print 'scandir.'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"),'off').''; + print 'scandir.'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("SetAsDefault"),'off').''; } print ''; diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index cd730352d79..7da8959fe71 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -1394,6 +1394,11 @@ class Commande extends CommonOrder return -2; } } + else + { + dol_syslog(get_class($this)."::addline status of order must be Draft to allow use of ->addline()", LOG_ERR); + return -3; + } } diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index efd99fdb226..d9b55da40ec 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -411,6 +411,7 @@ RefreshPhoneLink=Refresh link LinkToTest=Clickable link generated for user %s (click phone number to test) KeepEmptyToUseDefault=Keep empty to use default value DefaultLink=Default link +SetAsDefault=Set as default ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) ExternalModule=External module - Installed into directory %s BarcodeInitForThirdparties=Mass barcode init for thirdparties diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 3c43d92c3a6..704c46fe9cb 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -1723,7 +1723,7 @@ div.tabs { clear:both; height:100%; } -div.tabsElem { margin-top: 8px; } /* To avoid overlap of tabs when not browser */ +div.tabsElem { margin-top: 6px; } /* To avoid overlap of tabs when not browser */ div.tabBar { color: #; @@ -1788,7 +1788,7 @@ a.tabTitle { a.tab:link, a.tab:visited, a.tab:hover, a.tab#active { font-family: ; - padding: 5px 12px 5px; + padding: 7px 12px 7px; margin: 0em 0.2em; text-decoration: none; white-space: nowrap; From 9511187f6e8fc51362f1873d1a5be7c24ec7914f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 27 May 2016 16:49:55 +0200 Subject: [PATCH 031/245] FIX Change to status "Shipment in progress" for orders is done whane validating and not creating a shipment. --- htdocs/expedition/class/expedition.class.php | 25 +++++++++++--------- htdocs/projet/list.php | 2 ++ 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index 6d3f7b05966..d41ea53fade 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -282,13 +282,6 @@ class Expedition extends CommonObject { $error++; } - - // TODO uniformiser les statuts - $ret = $this->setStatut(2,$this->origin_id,$this->origin); - if (! $ret) - { - $error++; - } } // Actions on extra fields (by external module or standard code) @@ -702,7 +695,7 @@ class Expedition extends CommonObject { // line without batch detail - // We decrement stock of product (and sub-products) -> update table llx_product_stock (key of this table is fk_product+fk_entrepot) and add a movement record + // We decrement stock of product (and sub-products) -> update table llx_product_stock (key of this table is fk_product+fk_entrepot) and add a movement record. $result=$mouvS->livraison($user, $obj->fk_product, $obj->fk_entrepot, $qty, $obj->subprice, $langs->trans("ShipmentValidatedInDolibarr",$numref)); if ($result < 0) { $error++; @@ -714,8 +707,8 @@ class Expedition extends CommonObject { // line with batch detail - // We decrement stock of product (and sub-products) -> update table llx_product_stock (key of this table is fk_product+fk_entrepot) and add a movement record - // ->fk_origin_stock = id into table llx_product_batch (may be rename into llx_product_stock_batch in another version) + // We decrement stock of product (and sub-products) -> update table llx_product_stock (key of this table is fk_product+fk_entrepot) and add a movement record. + // Note: ->fk_origin_stock = id into table llx_product_batch (may be rename into llx_product_stock_batch in another version) $result=$mouvS->livraison($user, $obj->fk_product, $obj->fk_entrepot, $qty, $obj->subprice, $langs->trans("ShipmentValidatedInDolibarr",$numref), '', $obj->eatby, $obj->sellby, $obj->batch, $obj->fk_origin_stock); if ($result < 0) { $error++; @@ -731,12 +724,22 @@ class Expedition extends CommonObject $this->error=$this->db->error(); return -2; } + + // TODO Close order if check box "close order if remain to ship is 0" is on and if sum of all validated shipment = products or order to ship (because we are in case of stock movement on shipment validation) + + } + + // Change status of order to "shipment in process" + $ret = $this->setStatut(Commande::STATUS_SHIPMENTONPROCESS, $this->origin_id, $this->origin); + if (! $ret) + { + $error++; } if (! $error && ! $notrigger) { // Call trigger - $result=$this->call_trigger('SHIPPING_VALIDATE',$user); // TODO Add option in workflow module on this trigger to close order if sum of shipment = product to ship of order + $result=$this->call_trigger('SHIPPING_VALIDATE',$user); if ($result < 0) { $error++; } // End call triggers } diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index 7968b0a809a..2ad8d972638 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -621,6 +621,8 @@ if ($resql) $userstatic->lastname=$val['lastname']; $userstatic->firstname=$val['firstname']; $userstatic->email=$val['email']; + $userstatic->statut=$val['statut']; + $userstatic->entity=$val['entity']; print $userstatic->getNomUrl(1); $j++; if ($j < $nbofsalesrepresentative) print ', '; From ef1e4d05ec3a41de0ed8a20beb96475eddac8b20 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 27 May 2016 17:01:23 +0200 Subject: [PATCH 032/245] Doc comment --- htdocs/expedition/class/expedition.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index d41ea53fade..14b5a1a40b5 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -725,7 +725,7 @@ class Expedition extends CommonObject return -2; } - // TODO Close order if check box "close order if remain to ship is 0" is on and if sum of all validated shipment = products or order to ship (because we are in case of stock movement on shipment validation) + // FIXME Set status of order to "delivered" if check box "set order as delivered if remain to ship is 0" is on and if sum of all validated shipment = products or order to ship (because we are in case of stock movement on shipment validation) } From 22d6d9497e64de587851ccb58775ce9bdf8e057f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 29 May 2016 11:20:12 +0200 Subject: [PATCH 033/245] Fix ambiguous test on ldap return of getAttributes --- htdocs/adherents/ldap.php | 4 ++-- htdocs/contact/ldap.php | 4 ++-- htdocs/core/class/ldap.class.php | 6 +++--- htdocs/user/group/ldap.php | 2 +- htdocs/user/ldap.php | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/htdocs/adherents/ldap.php b/htdocs/adherents/ldap.php index 4d9a779d579..a5f61a45642 100644 --- a/htdocs/adherents/ldap.php +++ b/htdocs/adherents/ldap.php @@ -191,12 +191,12 @@ if ($result > 0) } else { - $records=$ldap->getAttribute($dn,$search); + $records = $ldap->getAttribute($dn,$search); //print_r($records); // Affichage arbre - if (count($records) && $records != false && (! isset($records['count']) || $records['count'] > 0)) + if ((! is_numeric($records) || $records != 0) && (! isset($records['count']) || $records['count'] > 0)) { if (! is_array($records)) { diff --git a/htdocs/contact/ldap.php b/htdocs/contact/ldap.php index a626c57b6af..af8fccfd7b9 100644 --- a/htdocs/contact/ldap.php +++ b/htdocs/contact/ldap.php @@ -170,12 +170,12 @@ if ($result > 0) $info=$object->_load_ldap_info(); $dn=$object->_load_ldap_dn($info,1); $search = "(".$object->_load_ldap_dn($info,2).")"; - $records=$ldap->getAttribute($dn,$search); + $records = $ldap->getAttribute($dn,$search); //var_dump($records); // Affichage arbre - if (count($records) && $records != false && (! isset($records['count']) || $records['count'] > 0)) + if ((! is_numeric($records) || $records != 0) && (! isset($records['count']) || $records['count'] > 0)) { if (! is_array($records)) { diff --git a/htdocs/core/class/ldap.class.php b/htdocs/core/class/ldap.class.php index 8ea3221c648..f3845734ec5 100644 --- a/htdocs/core/class/ldap.class.php +++ b/htdocs/core/class/ldap.class.php @@ -823,7 +823,7 @@ class Ldap * * @param string $dn DN entry key * @param string $filter Filter - * @return int|false|array <0 or false if KO, array if OK + * @return int|array <0 or false if KO, array if OK */ function getAttribute($dn,$filter) { @@ -848,7 +848,7 @@ class Ldap { $this->ldapErrorCode = -1; $this->ldapErrorText = "Couldn't find entry"; - return false; // Couldn't find entry... + return 0; // Couldn't find entry... } // Get values @@ -856,7 +856,7 @@ class Ldap { $this->ldapErrorCode = ldap_errno($this->connection); $this->ldapErrorText = ldap_error($this->connection); - return false; // No matching attributes + return 0; // No matching attributes } // Return an array containing the attributes. diff --git a/htdocs/user/group/ldap.php b/htdocs/user/group/ldap.php index 199041551c5..bf39a128137 100644 --- a/htdocs/user/group/ldap.php +++ b/htdocs/user/group/ldap.php @@ -177,7 +177,7 @@ if ($result > 0) //var_dump($records); // Affichage arbre - if (count($records) && $records != false && (! isset($records['count']) || $records['count'] > 0)) + if ((! is_numeric($records) || $records != 0) && (! isset($records['count']) || $records['count'] > 0)) { if (! is_array($records)) { diff --git a/htdocs/user/ldap.php b/htdocs/user/ldap.php index e8a6a8fc1c9..1da5911861c 100644 --- a/htdocs/user/ldap.php +++ b/htdocs/user/ldap.php @@ -181,12 +181,12 @@ if ($result > 0) $info=$object->_load_ldap_info(); $dn=$object->_load_ldap_dn($info,1); $search = "(".$object->_load_ldap_dn($info,2).")"; - $records=$ldap->getAttribute($dn,$search); + $records = $ldap->getAttribute($dn,$search); //print_r($records); // Affichage arbre - if (count($records) && $records != false && (! isset($records['count']) || $records['count'] > 0)) + if ((! is_numeric($records) || $records != 0) && (! isset($records['count']) || $records['count'] > 0)) { if (! is_array($records)) { From 0c6e8b626a50e77b45fbc8c72645eaec915cb733 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 29 May 2016 11:20:27 +0200 Subject: [PATCH 034/245] Fix var not initialized --- htdocs/compta/facture/class/facture-rec.class.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/compta/facture/class/facture-rec.class.php b/htdocs/compta/facture/class/facture-rec.class.php index 13c10a5da0c..3a19605ee5b 100644 --- a/htdocs/compta/facture/class/facture-rec.class.php +++ b/htdocs/compta/facture/class/facture-rec.class.php @@ -761,6 +761,8 @@ class FactureRec extends CommonInvoice $nownotime=dol_mktime(0, 0, 0, $arraynow['mon'], $arraynow['mday'], $arraynow['year']); $prodids = array(); + $num_prods = 0; + $sql = "SELECT rowid"; $sql.= " FROM ".MAIN_DB_PREFIX."product"; $sql.= " WHERE entity IN (".getEntity('product', 1).")"; From 0b6bda910b6679a5af5713fb48a8a50a2c355e3e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 29 May 2016 11:23:32 +0200 Subject: [PATCH 035/245] Removed scrutinizer warning --- htdocs/admin/modules.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php index 2dff436ffe6..1151ef4abb9 100644 --- a/htdocs/admin/modules.php +++ b/htdocs/admin/modules.php @@ -605,7 +605,7 @@ if ($mode != 'marketplace') else $text.=$langs->trans("No"); $text.='
'.$langs->trans("AddMenus").': '; - if (isset($objMod->menu) && is_array($objMod->menu) && $objMod->menu) + if (isset($objMod->menu) && is_array($objMod->menu) && ! empty($objMod->menu)) { $text.=$langs->trans("Yes"); } From d8c6ae0b1729a41797adb50b5f8817bf932c6351 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 29 May 2016 11:26:05 +0200 Subject: [PATCH 036/245] Removed warnings --- htdocs/api/admin/explorer.php | 1 - htdocs/api/class/api_generic.class.php | 2 -- htdocs/api/index.php | 1 - 3 files changed, 4 deletions(-) diff --git a/htdocs/api/admin/explorer.php b/htdocs/api/admin/explorer.php index 262b3f69476..53ff102e89b 100644 --- a/htdocs/api/admin/explorer.php +++ b/htdocs/api/admin/explorer.php @@ -43,7 +43,6 @@ if (empty($conf->global->MAIN_MODULE_API)) exit; } -use \Luracast\Restler\Defaults; $api = new DolibarrApi($db); diff --git a/htdocs/api/class/api_generic.class.php b/htdocs/api/class/api_generic.class.php index 038621b6235..9a630a9da47 100644 --- a/htdocs/api/class/api_generic.class.php +++ b/htdocs/api/class/api_generic.class.php @@ -15,9 +15,7 @@ * along with this program. If not, see . */ -use Luracast\Restler\Restler; use Luracast\Restler\RestException; -use Luracast\Restler\Defaults; require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php'; require_once DOL_DOCUMENT_ROOT.'/api/class/api.class.php'; diff --git a/htdocs/api/index.php b/htdocs/api/index.php index 2fbad04ecbb..660c90d3476 100644 --- a/htdocs/api/index.php +++ b/htdocs/api/index.php @@ -55,7 +55,6 @@ if (empty($conf->global->MAIN_MODULE_API)) exit; } -use \Luracast\Restler\Defaults; $api = new DolibarrApi($db); From 889ff16906013991b9560140e9677132815f84ae Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 29 May 2016 11:56:19 +0200 Subject: [PATCH 037/245] FIX #5239 --- 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 d4f1a38fbbb..fb162927f03 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -2778,7 +2778,7 @@ function dol_print_error($db='',$error='',$errors=null) if (empty($msg)) continue; if ($_SERVER['DOCUMENT_ROOT']) // Mode web { - $out.="".$langs->trans("Message").": ".$msg."
\n" ; + $out.="".$langs->trans("Message").": ".dol_escape_htmltag($msg)."
\n" ; } else // Mode CLI { From a1a335025ff7bcb40a2b698b051bd6a6af1667db Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 29 May 2016 12:05:11 +0200 Subject: [PATCH 038/245] FIX #5230 --- htdocs/contrat/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index cce04ee8291..f7b18696993 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -1025,7 +1025,7 @@ if ($action == 'create') $projectid = (!empty($objectsrc->fk_project)?$objectsrc->fk_project:''); - $soc = $objectsrc->client; + $soc = $objectsrc->thirdparty; $note_private = (! empty($objectsrc->note_private) ? $objectsrc->note_private : ''); $note_public = (! empty($objectsrc->note_public) ? $objectsrc->note_public : ''); From ade417855beb83857d0f5d4b6e08a67849c161ea Mon Sep 17 00:00:00 2001 From: Ion Agorria Date: Sun, 29 May 2016 13:45:26 +0200 Subject: [PATCH 039/245] Fill ref_supplier in product get_buyprice --- htdocs/product/class/product.class.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 50f5cd0c19a..928a7c91657 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -1353,7 +1353,8 @@ class Product extends CommonObject } $this->buyprice = $obj->price; // deprecated $this->fourn_pu = $obj->price / $obj->quantity; // Prix unitaire du produit pour le fournisseur $fourn_id - $this->ref_fourn = $obj->ref_fourn; // Ref supplier + $this->ref_fourn = $obj->ref_fourn; // deprecated + $this->ref_supplier = $obj->ref_fourn; // Ref supplier $this->vatrate_supplier = $obj->tva_tx; // Vat ref supplier $result=$obj->fk_product; return $result; From 3ddf427ff1202fda92678e38057603377033c36b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 29 May 2016 23:56:58 +0200 Subject: [PATCH 040/245] FIX Legal issue for GB. Add hidden option for this. --- htdocs/compta/facture.php | 55 ++++++++++++++++++- htdocs/compta/facture/class/facture.class.php | 7 ++- .../modules/facture/doc/pdf_crabe.modules.php | 8 +++ .../install/mysql/migration/3.9.0-4.0.0.sql | 2 + htdocs/install/mysql/tables/llx_facture.sql | 5 +- htdocs/langs/en_US/bills.lang | 1 + 6 files changed, 73 insertions(+), 5 deletions(-) diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index 27ba03499c8..385dc6dcd4c 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -312,6 +312,15 @@ if (empty($reshook)) if ($result < 0) dol_print_error($db, $object->error); } + else if ($action == 'setdate_pointoftax' && $user->rights->facture->creer) + { + $object->fetch($id); + $date_pointoftax = dol_mktime(12, 0, 0, $_POST['date_pointoftaxmonth'], $_POST['date_pointoftaxday'], $_POST['date_pointoftaxyear']); + $object->date_pointoftax=$date_pointoftax; + $result = $object->update($user); + if ($result < 0) dol_print_error($db, $object->error); + } + else if ($action == 'setconditions' && $user->rights->facture->creer) { $object->fetch($id); @@ -702,12 +711,15 @@ if (empty($reshook)) setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("ReplaceInvoice")), null, 'errors'); } + $date_pointoftax = dol_mktime(12, 0, 0, $_POST['date_pointoftaxmonth'], $_POST['date_pointoftaxday'], $_POST['date_pointoftaxyear']); + if (! $error) { // This is a replacement invoice $result = $object->fetch($_POST['fac_replacement']); $object->fetch_thirdparty(); $object->date = $dateinvoice; + $object->date_pointoftax = $date_pointoftax; $object->note_public = trim($_POST['note_public']); $object->note = trim($_POST['note']); $object->ref_client = $_POST['ref_client']; @@ -752,11 +764,14 @@ if (empty($reshook)) setEventMessages($langs->trans("ErrorFieldRequired", $langs->trans("Date")), null, 'errors'); } + $date_pointoftax = dol_mktime(12, 0, 0, $_POST['date_pointoftaxmonth'], $_POST['date_pointoftaxday'], $_POST['date_pointoftaxyear']); + if (! $error) { $object->socid = GETPOST('socid','int'); $object->number = $_POST['facnumber']; $object->date = $dateinvoice; + $object->date_pointoftax = $date_pointoftax; $object->note_public = trim($_POST['note_public']); $object->note = trim($_POST['note']); $object->ref_client = $_POST['ref_client']; @@ -858,12 +873,15 @@ if (empty($reshook)) setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), null, 'errors'); } + $date_pointoftax = dol_mktime(12, 0, 0, $_POST['date_pointoftaxmonth'], $_POST['date_pointoftaxday'], $_POST['date_pointoftaxyear']); + if (! $error) { $object->socid = GETPOST('socid','int'); $object->type = $_POST['type']; $object->number = $_POST['facnumber']; - $object->date = $dateinvoice; + $object->date = $dateinvoice; + $object->date_pointoftax = $date_pointoftax; $object->note_public = trim($_POST['note_public']); $object->note_private = trim($_POST['note_private']); $object->ref_client = $_POST['ref_client']; @@ -904,6 +922,8 @@ if (empty($reshook)) setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), null, 'errors'); } + $date_pointoftax = dol_mktime(12, 0, 0, $_POST['date_pointoftaxmonth'], $_POST['date_pointoftaxday'], $_POST['date_pointoftaxyear']); + if (! $error) { // Si facture standard @@ -911,6 +931,7 @@ if (empty($reshook)) $object->type = GETPOST('type'); $object->number = $_POST['facnumber']; $object->date = $dateinvoice; + $object->date_pointoftax = $date_pointoftax; $object->note_public = trim($_POST['note_public']); $object->note_private = trim($_POST['note_private']); $object->ref_client = $_POST['ref_client']; @@ -1203,7 +1224,7 @@ if (empty($reshook)) { // If some invoice's lines coming from page $id = $object->create($user); - for($i = 1; $i <= $NBLINES; $i ++) { + for ($i = 1; $i <= $NBLINES; $i ++) { if ($_POST['idprod' . $i]) { $product = new Product($db); $product->fetch($_POST['idprod' . $i]); @@ -1224,6 +1245,8 @@ if (empty($reshook)) $mesg = '
' . $langs->trans("ErrorFieldRequired", $langs->trans("Date")) . '
'; } + $date_pointoftax = dol_mktime(12, 0, 0, $_POST['date_pointoftaxmonth'], $_POST['date_pointoftaxday'], $_POST['date_pointoftaxyear']); + if (!($_POST['situations'] > 0)) { $error++; $mesg = '
' . $langs->trans("ErrorFieldRequired", $langs->trans("InvoiceSituation")) . '
'; @@ -1248,6 +1271,7 @@ if (empty($reshook)) $object->fetch_thirdparty(); $object->date = $datefacture; + $object->date_pointoftax = $date_pointoftax; $object->note_public = trim($_POST['note_public']); $object->note = trim($_POST['note']); $object->ref_client = $_POST['ref_client']; @@ -2396,6 +2420,15 @@ if ($action == 'create') print $form->select_date($datefacture?$datefacture:$dateinvoice, '', '', '', '', "add", 1, 1, 1); print '
'; + // Date point of tax + if (! empty($conf->global->INVOICE_POINTOFTAX_DATE)) + { + print ''; + } + // Payment term print ''; + if (! empty($conf->global->INVOICE_POINTOFTAX_DATE)) + { + // Date invoice + print ''; + } + // Conditions de reglement print ''; -/* This property seems not used in code, so i comment it $var=!$var; print ''; print ''; @@ -290,7 +289,7 @@ print ''; print ''; print ''; -*/ + print '
'; + //print ''; print ''; - if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print ''; - print ''; - $formother->select_year($orderyear?$orderyear:-1,'orderyear',1, 20, 5); + // Thirpdarty + if (! empty($arrayfields['s.nom']['checked'])) + { + print ''; + print ''; + print ''; + print $form->select_country($search_country,'search_country','',0,'maxwidth100'); + print ''; + print $form->selectarray("search_type_thirdparty", $formcompany->typent_array(0), $search_type_thirdparty, 0, 0, 0, '', 0, 0, 0, (empty($conf->global->SOCIETE_SORT_ON_TYPEENT)?'ASC':$conf->global->SOCIETE_SORT_ON_TYPEENT)); + print ''; + if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print ''; + print ''; + $formother->select_year($orderyear?$orderyear:-1,'orderyear',1, 20, 5); + print ''; + if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print ''; + print ''; + $formother->select_year($deliveryyear?$deliveryyear:-1,'deliveryyear',1, 20, 5); + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + { + $crit=$val; + $tmpkey=preg_replace('/search_options_/','',$key); + $searchclass=''; + if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; + if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + print ''; + } + print ''; + print ''; + print ''; + $formorder->selectSupplierOrderStatus((strstr($search_status, ',')?-1:$search_status),1,'search_status'); + print ''; + print $form->selectyesno('billed', $billed, 1, 0, 1); + print ''; + $searchpitco=$form->showFilterAndCheckAddButtons(0); + print $searchpitco; print ' '; - $formorder->selectSupplierOrderStatus((strstr($search_status, ',')?-1:$search_status),1,'search_status'); - print ''; - print $form->selectyesno('billed', $billed, 1, 0, 1); - print ''; - $searchpitco=$form->showFilterAndCheckAddButtons(0); - print $searchpitco; - print '
'; - print $objectstatic->getNomUrl(1); - $filename=dol_sanitizeFileName($obj->ref); - $filedir=$conf->fournisseur->dir_output.'/commande' . '/' . dol_sanitizeFileName($obj->ref); - print $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir); - print ''; + print $objectstatic->getNomUrl(1); + $filename=dol_sanitizeFileName($obj->ref); + $filedir=$conf->fournisseur->dir_output.'/commande' . '/' . dol_sanitizeFileName($obj->ref); + print $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir); + print ''.$obj->ref_supplier.''; - $thirdpartytmp->id = $obj->socid; - $thirdpartytmp->name = $obj->name; - print $thirdpartytmp->getNomUrl(1,'supplier'); - print ''.$obj->ref_supplier.''; if ($obj->project_id > 0) print $projectstatic->getNomUrl(1); print '"; - if ($userstatic->id) print $userstatic->getNomUrl(1); - else print " "; - print "'.price($obj->total_ht)."'.price($obj->total_ttc)."'; - if ($obj->dc) + if (! $i) $totalarray['nbfield']++; + } + // Author + $userstatic->id = $obj->fk_user_author; + $userstatic->lastname = $obj->lastname; + $userstatic->firstname = $obj->firstname; + $userstatic->login = $obj->login; + $userstatic->photo = $obj->photo; + if (! empty($arrayfields['s.nom']['checked'])) { - print dol_print_date($db->jdate($obj->dc),"day"); + print ""; + if ($userstatic->id) print $userstatic->getNomUrl(1); + else print " "; + print "'; + $thirdpartytmp->id = $obj->socid; + $thirdpartytmp->name = $obj->name; + print $thirdpartytmp->getNomUrl(1,'supplier'); + print ''; + print $obj->town; + print ''; + print $obj->zip; + print '".$obj->state_name."'; + $tmparray=getCountry($obj->fk_pays,'all'); + print $tmparray['label']; + print ''; + if (count($typenArray)==0) $typenArray = $formcompany->typent_array(1); + print $typenArray[$obj->typent_code]; + print ''; + if ($obj->date_commande) print dol_print_date($db->jdate($obj->date_commande), 'day'); + else print ''; + print ''; - print dol_print_date($db->jdate($obj->date_livraison), 'day'); - print ''.$commandestatic->LibStatut($obj->fk_statut, 5).''.yn($obj->billed).''; + print dol_print_date($db->jdate($obj->date_delivery), 'day'); + if ($objectstatic->hasDelay() && ! empty($objectstatic->date_delivery)) { + print ' '.img_picto($langs->trans("Late").' : '.$objectstatic->showDelay(), "warning"); + } + print ''.price($obj->total_ht)."'.price($obj->total_tva)."'.price($obj->total_ttc)."'; + print dol_print_date($db->jdate($obj->date_creation), 'dayhour'); + print ''; + print dol_print_date($db->jdate($obj->date_update), 'dayhour'); + print ''.$objectstatic->LibStatut($obj->fk_statut, 5, $obj->billed, 1).''.yn($obj->billed).'
'.fieldLabel('FirstName','firstname').' 
'.fieldLabel('UserTitle','civility_id').''; + print '
'.fieldLabel('UserTitle','civility_id').''; print $formcompany->select_civility($object->civility_id).' 
\n"; - print 'scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"),'switch_off').''; + print 'scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("SetAsDefault"),'switch_off').''; print "
' . $langs->trans('DatePointOfTax') . ''; + $date_pointoftax = dol_mktime(12, 0, 0, $_POST['date_pointoftaxmonth'], $_POST['date_pointoftaxday'], $_POST['date_pointoftaxyear']); + print $form->select_date($date_pointoftax?$date_pointoftax:-1, 'date_pointoftax', '', '', '', "add", 1, 1, 1); + print '
' . $langs->trans('PaymentConditionsShort') . ''; $form->select_conditions_paiements(isset($_POST['cond_reglement_id']) ? $_POST['cond_reglement_id'] : $cond_reglement_id, 'cond_reglement_id'); @@ -3460,6 +3493,24 @@ else if ($id > 0 || ! empty($ref)) print '
'; + print ''; + print ''; + print '
'; + print $langs->trans('DatePointOfTax'); + print 'id . '">' . img_edit($langs->trans('SetDate'), 1) . '
'; + print '
'; + if ($action == 'editdate_pointoftax') { + $form->form_date($_SERVER['PHP_SELF'] . '?facid=' . $object->id, $object->date_pointoftax, 'date_pointoftax'); + } else { + print dol_print_date($object->date_pointoftax, 'daytext'); + } + print '
'; print ''; print ''; } else { - print ''; } @@ -442,7 +428,7 @@ if ($conf->produit->enabled) print "
'; diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index bea200f2656..6e46ead1da5 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -336,6 +336,7 @@ class Facture extends CommonInvoice $sql.= ", remise_absolue"; $sql.= ", remise_percent"; $sql.= ", datef"; + $sql.= ", date_pointoftax"; $sql.= ", note_private"; $sql.= ", note_public"; $sql.= ", ref_client, ref_int"; @@ -358,6 +359,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.= ", ".($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"); @@ -665,6 +667,7 @@ class Facture extends CommonInvoice $facture->type = $this->type; $facture->socid = $this->socid; $facture->date = $this->date; + $facture->date_pointoftax = $this->date_pointoftax; $facture->note_public = $this->note_public; $facture->note_private = $this->note_private; $facture->ref_client = $this->ref_client; @@ -1014,7 +1017,7 @@ class Facture extends CommonInvoice $sql = 'SELECT f.rowid,f.facnumber,f.ref_client,f.ref_ext,f.ref_int,f.type,f.fk_soc,f.amount,f.tva, f.localtax1, f.localtax2, f.total, f.total_ttc, f.revenuestamp'; $sql.= ', f.remise_percent, f.remise_absolue, f.remise'; - $sql.= ', f.datef as df'; + $sql.= ', f.datef as df, f.date_pointoftax'; $sql.= ', f.date_lim_reglement as dlr'; $sql.= ', f.datec as datec'; $sql.= ', f.date_valid as datev'; @@ -1054,6 +1057,7 @@ class Facture extends CommonInvoice $this->ref_int = $obj->ref_int; $this->type = $obj->type; $this->date = $this->db->jdate($obj->df); + $this->date_pointoftax = $this->db->jdate($obj->date_pointoftax); $this->date_creation = $this->db->jdate($obj->datec); $this->date_validation = $this->db->jdate($obj->datev); $this->datem = $this->db->jdate($obj->datem); @@ -1328,6 +1332,7 @@ class Facture extends CommonInvoice $sql.= " fk_soc=".(isset($this->socid)?$this->socid:"null").","; $sql.= " datec=".(strval($this->date_creation)!='' ? "'".$this->db->idate($this->date_creation)."'" : 'null').","; $sql.= " datef=".(strval($this->date)!='' ? "'".$this->db->idate($this->date)."'" : 'null').","; + $sql.= " date_pointoftax=".(strval($this->date_pointoftax)!='' ? "'".$this->db->idate($this->date_pointoftax)."'" : 'null').","; $sql.= " date_valid=".(strval($this->date_validation)!='' ? "'".$this->db->idate($this->date_validation)."'" : 'null').","; $sql.= " paye=".(isset($this->paye)?$this->paye:"null").","; $sql.= " remise_percent=".(isset($this->remise_percent)?$this->remise_percent:"null").","; diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php index 046a47a699e..4615c783dfe 100644 --- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php @@ -1530,6 +1530,14 @@ class pdf_crabe extends ModelePDFFactures $pdf->SetTextColor(0,0,60); $pdf->MultiCell($w, 3, $outputlangs->transnoentities("DateInvoice")." : " . dol_print_date($object->date,"day",false,$outputlangs), '', 'R'); + if (! empty($conf->global->INVOICE_POINTOFTAX_DATE)) + { + $posy+=4; + $pdf->SetXY($posx,$posy); + $pdf->SetTextColor(0,0,60); + $pdf->MultiCell($w, 3, $outputlangs->transnoentities("DatePointOfTax")." : " . dol_print_date($object->date_pointoftax,"day",false,$outputlangs), '', 'R'); + } + if ($object->type != 2) { $posy+=3; 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 f603846de50..140b0c15089 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 @@ -108,6 +108,8 @@ 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; + 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; ALTER TABLE llx_facturedet ADD COLUMN fk_contract_line integer NULL AFTER rang; diff --git a/htdocs/install/mysql/tables/llx_facture.sql b/htdocs/install/mysql/tables/llx_facture.sql index b503401cd37..b8e97f4dc1e 100644 --- a/htdocs/install/mysql/tables/llx_facture.sql +++ b/htdocs/install/mysql/tables/llx_facture.sql @@ -37,8 +37,9 @@ create table llx_facture increment varchar(10), fk_soc integer NOT NULL, datec datetime, -- date de creation de la facture - datef date, -- date de la facture - date_valid date, -- date de validation + datef date, -- date invoice + date_pointoftax date, -- date point of tax (for GB) + date_valid date, -- date validation tms timestamp, -- date creation/modification paye smallint DEFAULT 0 NOT NULL, amount double(24,8) DEFAULT 0 NOT NULL, diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang index a4e2ba643b3..a94c192ef4a 100644 --- a/htdocs/langs/en_US/bills.lang +++ b/htdocs/langs/en_US/bills.lang @@ -223,6 +223,7 @@ RelatedRecurringCustomerInvoices=Related recurring customer invoices MenuToValid=To valid DateMaxPayment=Payment due before DateInvoice=Invoice date +DatePointOfTax=Point of tax NoInvoice=No invoice ClassifyBill=Classify invoice SupplierBillsToPay=Unpaid supplier invoices From 46a0f3dab04238d586aeb3c98e1e25a3d1296686 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 30 May 2016 01:30:28 +0200 Subject: [PATCH 041/245] Fix minor bugs --- htdocs/comm/card.php | 1 + htdocs/core/lib/company.lib.php | 2 +- htdocs/core/lib/functions.lib.php | 4 +- htdocs/societe/consumption.php | 75 ++++++++++++++++--------------- htdocs/societe/notify/card.php | 7 +-- htdocs/societe/price.php | 5 --- htdocs/theme/eldy/style.css.php | 11 ++++- htdocs/theme/md/style.css.php | 11 ++++- 8 files changed, 62 insertions(+), 54 deletions(-) diff --git a/htdocs/comm/card.php b/htdocs/comm/card.php index e1828e911c7..256a31fd947 100644 --- a/htdocs/comm/card.php +++ b/htdocs/comm/card.php @@ -457,6 +457,7 @@ if ($id > 0) // Categories if (!empty($conf->categorie->enabled) && !empty($user->rights->categorie->lire)) { + $langs->load("categories"); print '
' . $langs->trans("CustomersCategoriesShort") . ''; print $form->showCategories( $object->id, 'customer', 1 ); diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index b2b6d8274a5..4d51b703ef0 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -163,7 +163,7 @@ function societe_prepare_head(Societe $object) if(!empty($object->note_private)) $nbNote++; if(!empty($object->note_public)) $nbNote++; $head[$h][0] = DOL_URL_ROOT.'/societe/note.php?id='.$object->id; - $head[$h][1] = $langs->trans("Note"); + $head[$h][1] = $langs->trans("Notes"); if ($nbNote > 0) $head[$h][1].= ' '.$nbNote.''; $head[$h][2] = 'note'; $h++; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index fb162927f03..62d4321966b 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -718,8 +718,8 @@ function dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $pi { $limittitle=30; $out.=''; - if ($picto) $out.=img_picto('',($pictoisfullpath?'':'object_').$picto,'',$pictoisfullpath).' '; - $out.=dol_trunc($title,$limittitle); + if ($picto) $out.=img_picto($title,($pictoisfullpath?'':'object_').$picto,'',$pictoisfullpath).' '; + //$out.=''.dol_trunc($title,$limittitle).''; $out.=''; } diff --git a/htdocs/societe/consumption.php b/htdocs/societe/consumption.php index d5b68057ff1..078328c2502 100644 --- a/htdocs/societe/consumption.php +++ b/htdocs/societe/consumption.php @@ -276,44 +276,47 @@ if ($type_element == 'contract') $thirdTypeSelect='customer'; } -$sql = $sql_select; -$sql.= ' d.description as description,'; -if ($type_element != 'fichinter' && $type_element != 'contract') $sql.= ' d.label, d.fk_product as product_id, d.fk_product as fk_product, d.info_bits, d.date_start, d.date_end, d.qty, d.qty as prod_qty,'; -if ($type_element == 'contract') $sql.= ' d.label, d.fk_product as product_id, d.fk_product as fk_product, d.info_bits, d.date_ouverture as date_start, d.date_cloture as date_end, d.qty, d.qty as prod_qty,'; -if ($type_element != 'fichinter') $sql.= ' p.ref as ref, p.rowid as prod_id, p.rowid as fk_product, p.fk_product_type as prod_type, p.fk_product_type as fk_product_type, p.entity as pentity,'; -$sql.= " s.rowid as socid "; -if ($type_element != 'fichinter') $sql.= ", p.ref as prod_ref, p.label as product_label"; -$sql.= " FROM ".MAIN_DB_PREFIX."societe as s, ".$tables_from; -if ($type_element != 'fichinter') $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON d.fk_product = p.rowid '; -$sql.= $where; -if ($month > 0) { - if ($year > 0) { - $start = dol_mktime(0, 0, 0, $month, 1, $year); - $end = dol_time_plus_duree($start,1,'m') - 1; - $sql.= " AND ".$dateprint." BETWEEN '".$db->idate($start)."' AND '".$db->idate($end)."'"; - } else { - $sql.= " AND date_format(".$dateprint.", '%m') = '".sprintf('%02d',$month)."'"; - } -} else if ($year > 0) { - $start = dol_mktime(0, 0, 0, 1, 1, $year); - $end = dol_time_plus_duree($start,1,'y') - 1; - $sql.= " AND ".$dateprint." BETWEEN '".$db->idate($start)."' AND '".$db->idate($end)."'"; -} -if ($sref) $sql.= " AND ".$doc_number." LIKE '%".$db->escape($sref)."%'"; -if ($sprod_fulldescr) +if ($sql_select) { - $sql.= " AND (d.description LIKE '%".$db->escape($sprod_fulldescr)."%'"; - if (GETPOST('type_element') != 'fichinter') $sql.= " OR p.ref LIKE '%".$db->escape($sprod_fulldescr)."%'"; - if (GETPOST('type_element') != 'fichinter') $sql.= " OR p.label LIKE '%".$db->escape($sprod_fulldescr)."%'"; - $sql.=")"; + $sql = $sql_select; + $sql.= ' d.description as description,'; + if ($type_element != 'fichinter' && $type_element != 'contract') $sql.= ' d.label, d.fk_product as product_id, d.fk_product as fk_product, d.info_bits, d.date_start, d.date_end, d.qty, d.qty as prod_qty,'; + if ($type_element == 'contract') $sql.= ' d.label, d.fk_product as product_id, d.fk_product as fk_product, d.info_bits, d.date_ouverture as date_start, d.date_cloture as date_end, d.qty, d.qty as prod_qty,'; + if ($type_element != 'fichinter') $sql.= ' p.ref as ref, p.rowid as prod_id, p.rowid as fk_product, p.fk_product_type as prod_type, p.fk_product_type as fk_product_type, p.entity as pentity,'; + $sql.= " s.rowid as socid "; + if ($type_element != 'fichinter') $sql.= ", p.ref as prod_ref, p.label as product_label"; + $sql.= " FROM ".MAIN_DB_PREFIX."societe as s, ".$tables_from; + if ($type_element != 'fichinter') $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON d.fk_product = p.rowid '; + $sql.= $where; + if ($month > 0) { + if ($year > 0) { + $start = dol_mktime(0, 0, 0, $month, 1, $year); + $end = dol_time_plus_duree($start,1,'m') - 1; + $sql.= " AND ".$dateprint." BETWEEN '".$db->idate($start)."' AND '".$db->idate($end)."'"; + } else { + $sql.= " AND date_format(".$dateprint.", '%m') = '".sprintf('%02d',$month)."'"; + } + } else if ($year > 0) { + $start = dol_mktime(0, 0, 0, 1, 1, $year); + $end = dol_time_plus_duree($start,1,'y') - 1; + $sql.= " AND ".$dateprint." BETWEEN '".$db->idate($start)."' AND '".$db->idate($end)."'"; + } + if ($sref) $sql.= " AND ".$doc_number." LIKE '%".$db->escape($sref)."%'"; + if ($sprod_fulldescr) + { + $sql.= " AND (d.description LIKE '%".$db->escape($sprod_fulldescr)."%'"; + if (GETPOST('type_element') != 'fichinter') $sql.= " OR p.ref LIKE '%".$db->escape($sprod_fulldescr)."%'"; + if (GETPOST('type_element') != 'fichinter') $sql.= " OR p.label LIKE '%".$db->escape($sprod_fulldescr)."%'"; + $sql.=")"; + } + $sql.= $db->order($sortfield,$sortorder); + + $resql=$db->query($sql); + $totalnboflines = $db->num_rows($resql); + + $sql.= $db->plimit($limit + 1, $offset); + //print $sql; } -$sql.= $db->order($sortfield,$sortorder); - -$resql=$db->query($sql); -$totalnboflines = $db->num_rows($resql); - -$sql.= $db->plimit($limit + 1, $offset); -//print $sql; // Define type of elements $typeElementString = $form->selectarray("type_element", $elementTypeArray, GETPOST('type_element'), 2); diff --git a/htdocs/societe/notify/card.php b/htdocs/societe/notify/card.php index cfbf3529bba..9e412f1a7f0 100644 --- a/htdocs/societe/notify/card.php +++ b/htdocs/societe/notify/card.php @@ -162,11 +162,6 @@ if ($result > 0) print '
'; print ''; - // Alias names (commercial, trademark or alias names) - print '"; - // Prefix if (! empty($conf->global->SOCIETE_USEPREFIX)) // Old not used prefix field { @@ -258,7 +253,7 @@ if ($result > 0) } else { - print ''; } diff --git a/htdocs/societe/price.php b/htdocs/societe/price.php index f9b924c9240..45eba9b397f 100644 --- a/htdocs/societe/price.php +++ b/htdocs/societe/price.php @@ -158,11 +158,6 @@ print '
'; print '
'; print '
'.$langs->trans('AliasNames').''; - print $object->name_alias; - print "
'; + print '
'; print $langs->trans("YouMustCreateContactFirst"); print '
'; -// Alias names (commercial, trademark or alias names) -print '"; - if (! empty($conf->global->SOCIETE_USEPREFIX)) // Old not used prefix field { print ''; diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index eecd6d1bfc7..97163053197 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -307,7 +307,7 @@ span.timesheetalreadyrecorded input { select.flat, form.flat select { font-weight: normal; } -.optiongrey { +.optiongrey, .opacitymedium { opacity: 0.5; } .opacityhigh { @@ -588,6 +588,13 @@ div.myavailability { .titlefield { width: 25%; } .titlefieldcreate { width: 20%; } +/* Force values for small screen */ +@media only screen and (max-width: 1400px) +{ + .titlefield { width: 30% !important; } + .titlefieldcreate { width: 30% !important; } +} + /* Force values for small screen */ @media only screen and (max-width: 570px) { @@ -1779,7 +1786,7 @@ a.tabTitle { a.tab:link, a.tab:visited, a.tab:hover, a.tab#active { font-family: ; - padding: 7px 12px 7px; + padding: 7px 9px 7px; margin: 0em 0.2em; text-decoration: none; white-space: nowrap; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 704c46fe9cb..68fd5d25e5f 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -306,7 +306,7 @@ select.flat, form.flat select { input:disabled { background:#f4f4f4; } -.optiongrey { +.optiongrey, .opacitymedium { opacity: 0.5; } .opacityhigh { @@ -587,6 +587,13 @@ div.myavailability { .titlefield { width: 30%; } .titlefieldcreate { width: 20%; } +/* Force values for small screen */ +@media only screen and (max-width: 1400px) +{ + .titlefield { width: 30% !important; } + .titlefieldcreate { width: 30% !important; } +} + /* Force values for small screen */ @media only screen and (max-width: 570px) { @@ -1788,7 +1795,7 @@ a.tabTitle { a.tab:link, a.tab:visited, a.tab:hover, a.tab#active { font-family: ; - padding: 7px 12px 7px; + padding: 7px 9px 7px; margin: 0em 0.2em; text-decoration: none; white-space: nowrap; From 2290f6a123af34dd89ff16695f045934eb27c8e0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 30 May 2016 13:11:44 +0200 Subject: [PATCH 042/245] FIX Menu statistics was not visible if module proposal was not enabled --- htdocs/core/menus/standard/eldy.lib.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 06e4ceab5b8..6c5af367c03 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -1099,7 +1099,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $langs->load("stocks"); $newmenu->add("/product/reassortlot.php?type=0", $langs->trans("StocksByLotSerial"), 1, $user->rights->produit->lire && $user->rights->stock->lire); } - if (! empty($conf->propal->enabled)) + if (! empty($conf->propal->enabled) || ! empty($conf->commande->enabled) || ! empty($conf->facture->enabled) || ! empty($conf->fournisseur->enabled) || ! empty($conf->supplier_proposal->enabled)) { $newmenu->add("/product/stats/card.php?id=all&leftmenu=stats&type=0", $langs->trans("Statistics"), 1, $user->rights->produit->lire && $user->rights->propale->lire); } @@ -1111,7 +1111,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $newmenu->add("/product/index.php?leftmenu=service&type=1", $langs->trans("Services"), 0, $user->rights->service->lire, '', $mainmenu, 'service'); $newmenu->add("/product/card.php?leftmenu=service&action=create&type=1", $langs->trans("NewService"), 1, $user->rights->service->creer); $newmenu->add("/product/list.php?leftmenu=service&type=1", $langs->trans("List"), 1, $user->rights->service->lire); - if (! empty($conf->propal->enabled)) + if (! empty($conf->propal->enabled) || ! empty($conf->commande->enabled) || ! empty($conf->facture->enabled) || ! empty($conf->fournisseur->enabled) || ! empty($conf->supplier_proposal->enabled)) { $newmenu->add("/product/stats/card.php?id=all&leftmenu=stats&type=1", $langs->trans("Statistics"), 1, $user->rights->service->lire && $user->rights->propale->lire); } From 3cc8207bb734eab987e6b31a31997112de0ce2a2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 30 May 2016 17:20:34 +0200 Subject: [PATCH 043/245] FIX Filter on category tag for suppliers --- htdocs/societe/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php index 80e54742765..e9b98ad7164 100644 --- a/htdocs/societe/list.php +++ b/htdocs/societe/list.php @@ -359,7 +359,7 @@ $sql.= " ,".MAIN_DB_PREFIX."c_stcomm as st"; // We'll need this table joined to the select in order to filter by sale if ($search_sale || (!$user->rights->societe->client->voir && !$socid)) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; // We'll need this table joined to the select in order to filter by categ -if ($search_categ) $sql.= ", ".MAIN_DB_PREFIX."categorie_societe as cs"; +if ($search_categ) $sql.= ", ".MAIN_DB_PREFIX."categorie_".($type=='f'?"fournisseur":"societe")." as cs"; $sql.= " WHERE s.fk_stcomm = st.id"; $sql.= " AND s.entity IN (".getEntity('societe', 1).")"; if (! $user->rights->societe->client->voir && ! $socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; From ed148f70b3d1113c532a1fbe0b1381044f7956b6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 30 May 2016 18:12:27 +0200 Subject: [PATCH 044/245] FIX Filter on assigned to was preselected on current user on list "All events" (instead of no filtering) --- htdocs/comm/action/index.php | 2 +- htdocs/core/modules/modAgenda.class.php | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/comm/action/index.php b/htdocs/comm/action/index.php index fe7b15c66fe..cf2b475e10d 100644 --- a/htdocs/comm/action/index.php +++ b/htdocs/comm/action/index.php @@ -48,7 +48,7 @@ $filtert = GETPOST("usertodo","int",3)?GETPOST("usertodo","int",3):GETPOST("filt $usergroup = GETPOST("usergroup","int",3); $showbirthday = empty($conf->use_javascript_ajax)?GETPOST("showbirthday","int"):1; -// If not choice done on calendar owner, we filter on user. +// If not choice done on calendar owner (like on left menu link "Agenda"), we filter on user. if (empty($filtert) && empty($conf->global->AGENDA_ALL_CALENDARS)) { $filtert=$user->id; diff --git a/htdocs/core/modules/modAgenda.class.php b/htdocs/core/modules/modAgenda.class.php index 482846032dc..45cc2680af0 100644 --- a/htdocs/core/modules/modAgenda.class.php +++ b/htdocs/core/modules/modAgenda.class.php @@ -266,7 +266,7 @@ class modAgenda extends DolibarrModules 'type'=>'left', 'titre'=>'MenuToDoActions', 'mainmenu'=>'agenda', - 'url'=>'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo', + 'url'=>'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filtert=-1', 'langs'=>'agenda', 'position'=>105, 'perms'=>'$user->rights->agenda->allactions->read', @@ -278,7 +278,7 @@ class modAgenda extends DolibarrModules 'type'=>'left', 'titre'=>'MenuDoneActions', 'mainmenu'=>'agenda', - 'url'=>'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done', + 'url'=>'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filtert=-1', 'langs'=>'agenda', 'position'=>106, 'perms'=>'$user->rights->agenda->allactions->read', @@ -327,7 +327,7 @@ class modAgenda extends DolibarrModules 'type'=>'left', 'titre'=>'MenuToDoActions', 'mainmenu'=>'agenda', - 'url'=>'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo', + 'url'=>'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filtert=-1', 'langs'=>'agenda', 'position'=>115, 'perms'=>'$user->rights->agenda->allactions->read', @@ -339,7 +339,7 @@ class modAgenda extends DolibarrModules 'type'=>'left', 'titre'=>'MenuDoneActions', 'mainmenu'=>'agenda', - 'url'=>'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done', + 'url'=>'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filtert=-1', 'langs'=>'agenda', 'position'=>116, 'perms'=>'$user->rights->agenda->allactions->read', From 460d7ce915020a140233f811d8ff666b8664d8ab Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 30 May 2016 19:38:28 +0200 Subject: [PATCH 045/245] FIX Split of credit note into discount page generates records not correctly recognised as credit note. --- htdocs/comm/remx.php | 16 ++++++++-------- htdocs/commande/card.php | 4 ++-- htdocs/compta/facture.php | 10 +++++----- htdocs/core/class/html.form.class.php | 8 ++++---- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/htdocs/comm/remx.php b/htdocs/comm/remx.php index 07989b457de..a4aff6d71c1 100644 --- a/htdocs/comm/remx.php +++ b/htdocs/comm/remx.php @@ -341,22 +341,22 @@ if ($socid > 0) $var = !$var; print ""; print ''; - if ($obj->description == '(CREDIT_NOTE)') + if (preg_match('/\(CREDIT_NOTE\)/',$obj->description)) { print ''; } - elseif ($obj->description == '(DEPOSIT)') + elseif (preg_match('/\(DEPOSIT\)/',$obj->description)) { print ''; } else @@ -500,22 +500,22 @@ if ($socid > 0) $var = !$var; print ""; print ''; - if ($obj->description == '(CREDIT_NOTE)') + if (preg_match('/\(CREDIT_NOTE\)/',$obj->description)) { print ''; } - elseif ($obj->description == '(DEPOSIT)') + elseif (preg_match('/\(DEPOSIT\)/',$obj->description)) { print ''; } else diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index 4dbc60569bb..489eee73932 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -1900,8 +1900,8 @@ if ($action == 'create' && $user->rights->commande->creer) // invoice $filtercreditnote = "fk_facture_source IS NOT NULL"; // If we want deposit to be substracted to payments only and not to total of final invoice } else { - $filterabsolutediscount = "fk_facture_source IS NULL OR (fk_facture_source IS NOT NULL AND description='(DEPOSIT)')"; - $filtercreditnote = "fk_facture_source IS NOT NULL AND description <> '(DEPOSIT)'"; + $filterabsolutediscount = "fk_facture_source IS NULL OR (fk_facture_source IS NOT NULL AND description LIKE '(DEPOSIT)%')"; + $filtercreditnote = "fk_facture_source IS NOT NULL AND description NOT LIKE '(DEPOSIT)%'"; } // Relative and absolute discounts diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index 79045fe54b9..8604e95b5a2 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -2563,8 +2563,8 @@ else if ($id > 0 || ! empty($ref)) $filterabsolutediscount = "fk_facture_source IS NULL"; // If we want deposit to be substracted to payments only and not to total of final invoice $filtercreditnote = "fk_facture_source IS NOT NULL"; // If we want deposit to be substracted to payments only and not to total of final invoice } else { - $filterabsolutediscount = "fk_facture_source IS NULL OR (fk_facture_source IS NOT NULL AND description='(DEPOSIT)')"; - $filtercreditnote = "fk_facture_source IS NOT NULL AND description <> '(DEPOSIT)'"; + $filterabsolutediscount = "fk_facture_source IS NULL OR (fk_facture_source IS NOT NULL AND description LIKE '(DEPOSIT)%')"; + $filtercreditnote = "fk_facture_source IS NOT NULL AND description NOT LIKE '(DEPOSIT)%'"; } $absolute_discount = $soc->getAvailableDiscounts('', $filterabsolutediscount); @@ -2982,9 +2982,9 @@ else if ($id > 0 || ! empty($ref)) // Remise dispo de type avoir if (! $absolute_discount) print '
'; - // $form->form_remise_dispo($_SERVER["PHP_SELF"].'?facid='.$object->id, 0, 'remise_id_for_payment', $soc->id, $absolute_creditnote, - // $filtercreditnote, $resteapayer); - $form->form_remise_dispo($_SERVER["PHP_SELF"] . '?facid=' . $object->id, 0, 'remise_id_for_payment', $soc->id, $absolute_creditnote, $filtercreditnote, 0); // We allow credit note even if amount is higher + // $form->form_remise_dispo($_SERVER["PHP_SELF"].'?facid='.$object->id, 0, 'remise_id_for_payment', $soc->id, $absolute_creditnote, $filtercreditnote, $resteapayer + $more=' ('.$addcreditnote.')'; + $form->form_remise_dispo($_SERVER["PHP_SELF"] . '?facid=' . $object->id, 0, 'remise_id_for_payment', $soc->id, $absolute_creditnote, $filtercreditnote, 0, $more); // We allow credit note even if amount is higher } } if (! $absolute_discount && ! $absolute_creditnote) { diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 7232f6ec270..8fb0118cd2e 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -1128,8 +1128,8 @@ class Form { $obj = $this->db->fetch_object($resql); $desc=dol_trunc($obj->description,40); - if ($desc=='(CREDIT_NOTE)') $desc=$langs->trans("CreditNote"); - if ($desc=='(DEPOSIT)') $desc=$langs->trans("Deposit"); + if (preg_match('/\(CREDIT_NOTE\)/', $desc)) $desc=preg_replace('/\(CREDIT_NOTE\)/', $langs->trans("CreditNote"), $desc); + if (preg_match('/\(DEPOSIT\)/', $desc)) $desc=preg_replace('/\(DEPOSIT\)/', $langs->trans("Deposit"), $desc); $selectstring=''; if ($selected > 0 && $selected == $obj->rowid) $selectstring=' selected'; @@ -3762,7 +3762,7 @@ class Form } else { - if (! $filter || $filter=="fk_facture_source IS NULL OR (fk_facture_source IS NOT NULL AND description='(DEPOSIT)')") print $langs->trans("CompanyHasAbsoluteDiscount",price($amount,0,$langs,0,0,-1,$conf->currency)).': '; + if (! $filter || $filter=="fk_facture_source IS NULL OR (fk_facture_source IS NOT NULL AND description LIKE '(DEPOSIT)%')") print $langs->trans("CompanyHasAbsoluteDiscount",price($amount,0,$langs,0,0,-1,$conf->currency)).': '; else print $langs->trans("CompanyHasCreditNote",price($amount,0,$langs,0,0,-1,$conf->currency)).': '; } $newfilter='fk_facture IS NULL AND fk_facture_line IS NULL'; // Remises disponibles @@ -3773,7 +3773,7 @@ class Form if ($nbqualifiedlines > 0) { print '   '; } if ($more) print $more; From 58ba5838cee97b43dcff0b1584536a844a3377f4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 30 May 2016 19:41:28 +0200 Subject: [PATCH 046/245] Fix alias name already visible into banner --- htdocs/societe/agenda.php | 5 ----- 1 file changed, 5 deletions(-) diff --git a/htdocs/societe/agenda.php b/htdocs/societe/agenda.php index 3d72ad9d328..e1745d38e59 100644 --- a/htdocs/societe/agenda.php +++ b/htdocs/societe/agenda.php @@ -87,11 +87,6 @@ if ($socid) print '
'; print '
'.$langs->trans('AliasNames').''; -print $object->name_alias; -print "
' . $langs->trans('Prefix') . '' . $object->prefix_comm . '
'.dol_print_date($db->jdate($obj->dc),'dayhour').''; $facturestatic->id=$obj->fk_facture_source; $facturestatic->ref=$obj->ref; $facturestatic->type=$obj->type; - print $langs->trans("CreditNote").' '.$facturestatic->getNomURl(1); + print preg_replace('/\(CREDIT_NOTE\)/',$langs->trans("CreditNote"),$obj->description).' '.$facturestatic->getNomURl(1); print ''; $facturestatic->id=$obj->fk_facture_source; $facturestatic->ref=$obj->ref; $facturestatic->type=$obj->type; - print $langs->trans("InvoiceDeposit").' '.$facturestatic->getNomURl(1); + print preg_replace('/\(DEPOSIT\)/',$langs->trans("InvoiceDeposit"),$obj->description).' '.$facturestatic->getNomURl(1); print '
'.dol_print_date($db->jdate($obj->dc),'dayhour').''; $facturestatic->id=$obj->fk_facture_source; $facturestatic->ref=$obj->ref; $facturestatic->type=$obj->type; - print $langs->trans("CreditNote").' '.$facturestatic->getNomURl(1); + print preg_replace('/\(CREDIT_NOTE\)/',$langs->trans("CreditNote"),$obj->description).' '.$facturestatic->getNomURl(1); print ''; $facturestatic->id=$obj->fk_facture_source; $facturestatic->ref=$obj->ref; $facturestatic->type=$obj->type; - print $langs->trans("InvoiceDeposit").' '.$facturestatic->getNomURl(1); + print preg_replace('/\(DEPOSIT\)/',$langs->trans("InvoiceDeposit"),$obj->description).' '.$facturestatic->getNomURl(1); print '
'; - // Alias names (commercial, trademark or alias names) - print '"; - if (! empty($conf->global->SOCIETE_USEPREFIX)) // Old not used prefix field { print ''; From 0d277083e642bae91f3df5060487a9b605e2f78b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 30 May 2016 19:56:59 +0200 Subject: [PATCH 047/245] Fix duplicate translation --- htdocs/langs/en_US/products.lang | 2 -- 1 file changed, 2 deletions(-) diff --git a/htdocs/langs/en_US/products.lang b/htdocs/langs/en_US/products.lang index 291f04f1c7e..08d2a94c367 100644 --- a/htdocs/langs/en_US/products.lang +++ b/htdocs/langs/en_US/products.lang @@ -45,8 +45,6 @@ LastProducts=Last products CardProduct0=Product card CardProduct1=Service card CardContract=Contract card -Warehouse=Warehouse -Warehouses=Warehouses WarehouseOpened=Warehouse open WarehouseClosed=Warehouse closed Stock=Stock From 1bc6c4ffa31d69da6449a81c29f60a786af0845e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 30 May 2016 20:50:49 +0200 Subject: [PATCH 048/245] Clean code --- htdocs/core/class/html.formfile.class.php | 4 ++-- htdocs/core/lib/functions.lib.php | 10 +++++----- htdocs/theme/eldy/style.css.php | 10 +++++----- htdocs/user/agenda_extsites.php | 4 ---- htdocs/user/param_ihm.php | 11 ----------- htdocs/user/perms.php | 3 ++- 6 files changed, 14 insertions(+), 28 deletions(-) diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index 60548969376..205bd1df4e5 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -928,7 +928,7 @@ class FormFile } if ($nboffiles == 0) { - print ''; @@ -1302,7 +1302,7 @@ class FormFile } if ($nboflinks == 0) { - print ''; } diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 62d4321966b..f74c09dce3a 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -2903,8 +2903,8 @@ function getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $m if (! preg_match('/^&/',$options)) $options='&'.$options; //print " "; - $sortimg.= ''; - $sortimg.= ''; + //$sortimg.= ''; + //$sortimg.= ''; if (! $sortorder || $field != $sortfield) { @@ -2916,16 +2916,16 @@ function getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $m if ($sortorder == 'DESC' ) { //$out.= ''.img_down("A-Z",0).''; //$out.= ''.img_up("Z-A",1).''; - $sortimg.= img_up("Z-A",0); + $sortimg.= ''.img_up("Z-A",0).''; } if ($sortorder == 'ASC' ) { //$out.= ''.img_down("A-Z",1).''; //$out.= ''.img_up("Z-A",0).''; - $sortimg.= img_down("A-Z",0); + $sortimg.= ''.img_down("A-Z",0).''; } } - $sortimg.= ''; + //$sortimg.= ''; } $out.=$sortimg; diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 97163053197..1a26d4e3617 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -2579,11 +2579,11 @@ div.liste_titre, tr.liste_titre, tr.liste_titre_sel, form.liste_titre, form.list /* TO MATCH ELDY */ - background-image: -o-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(,0.3) 100%); - background-image: -moz-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(,0.3) 100%); - background-image: -webkit-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(,0.3) 100%); - background-image: -ms-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(,0.3) 100%); - background-image: linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(,0.3) 100%); + background-image: -o-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(,0.4) 100%); + background-image: -moz-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(,0.4) 100%); + background-image: -webkit-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(,0.4) 100%); + background-image: -ms-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(,0.4) 100%); + background-image: linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(,0.4) 100%); background: rgb(); diff --git a/htdocs/user/agenda_extsites.php b/htdocs/user/agenda_extsites.php index 95ff6365dac..30b70c27387 100644 --- a/htdocs/user/agenda_extsites.php +++ b/htdocs/user/agenda_extsites.php @@ -157,10 +157,6 @@ $linkback = ''.$langs->trans("BackToLi dol_banner_tab($object,'id',$linkback,$user->rights->user->user->lire || $user->admin); -print '
'; - -print '
'; - print $langs->trans("AgendaExtSitesDesc")."
\n"; print "
\n"; diff --git a/htdocs/user/param_ihm.php b/htdocs/user/param_ihm.php index a853870ee8c..4d254349a7d 100644 --- a/htdocs/user/param_ihm.php +++ b/htdocs/user/param_ihm.php @@ -166,12 +166,6 @@ if ($action == 'edit') dol_banner_tab($object,'id',$linkback,$user->rights->user->user->lire || $user->admin); - - print '
'; - - print '
'; - - if (! empty($conf->use_javascript_ajax)) {/* print ''; print load_fiche_titre($langs->trans("NewMenu"),'','title_setup'); - + print ''; print ''; @@ -281,7 +281,7 @@ if ($action == 'create') $parent_rowid = $_GET['menuId']; if ($_GET['menuId']) { - $sql = "SELECT m.rowid, m.mainmenu, m.level, m.langs FROM ".MAIN_DB_PREFIX."menu as m WHERE m.rowid = ".$_GET['menuId']; + $sql = "SELECT m.rowid, m.mainmenu, m.leftmenu, m.level, m.langs FROM ".MAIN_DB_PREFIX."menu as m WHERE m.rowid = ".$_GET['menuId']; $res = $db->query($sql); if ($res) { @@ -290,6 +290,7 @@ if ($action == 'create') { $parent_rowid = $menu['rowid']; $parent_mainmenu = $menu['mainmenu']; + $parent_leftmenu = $menu['leftmenu']; $parent_langs = $menu['langs']; $parent_level = $menu['level']; } @@ -340,7 +341,9 @@ if ($action == 'create') { print '
'; } - print ''; + print ''; // Title print ''; @@ -418,7 +421,12 @@ elseif ($action == 'edit') print ''; //$menu_handler //print ''; - print ''; + print ''; print ''; // Niveau diff --git a/htdocs/core/class/menubase.class.php b/htdocs/core/class/menubase.class.php index cb370e31d96..bb842bab1aa 100644 --- a/htdocs/core/class/menubase.class.php +++ b/htdocs/core/class/menubase.class.php @@ -264,6 +264,8 @@ class Menubase $sql.= " t.mainmenu,"; $sql.= " t.leftmenu,"; $sql.= " t.fk_menu,"; + $sql.= " t.fk_mainmenu,"; + $sql.= " t.fk_leftmenu,"; $sql.= " t.position,"; $sql.= " t.url,"; $sql.= " t.target,"; @@ -293,6 +295,8 @@ class Menubase $this->mainmenu = $obj->mainmenu; $this->leftmenu = $obj->leftmenu; $this->fk_menu = $obj->fk_menu; + $this->fk_mainmenu = $obj->fk_mainmenu; + $this->fk_leftmenu = $obj->fk_leftmenu; $this->position = $obj->position; $this->url = $obj->url; $this->target = $obj->target; From 19f6aa805be4dac3f5278fe74a68a1a5f02db01c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Sat, 30 Apr 2016 18:56:16 +0200 Subject: [PATCH 061/245] select engine for code 128 didn't work --- htdocs/admin/barcode.php | 54 +++++++++++++++------------------------- 1 file changed, 20 insertions(+), 34 deletions(-) diff --git a/htdocs/admin/barcode.php b/htdocs/admin/barcode.php index b7cc6e94bf2..29475d712df 100644 --- a/htdocs/admin/barcode.php +++ b/htdocs/admin/barcode.php @@ -62,21 +62,12 @@ if ($action == 'setcoder') } else if ($action == 'update') { - if (GETPOST('submit_GENBARCODE_LOCATION')) - { - $location = GETPOST('GENBARCODE_LOCATION','alpha'); - $res = dolibarr_set_const($db, "GENBARCODE_LOCATION",$location,'chaine',0,'',$conf->entity); - } - if (GETPOST('submit_PRODUIT_DEFAULT_BARCODE_TYPE')) - { - $coder_id = GETPOST('PRODUIT_DEFAULT_BARCODE_TYPE','alpha'); - $res = dolibarr_set_const($db, "PRODUIT_DEFAULT_BARCODE_TYPE", $coder_id,'chaine',0,'',$conf->entity); - } - if (GETPOST('submit_GENBARCODE_BARCODETYPE_THIRDPARTY')) - { - $coder_id = GETPOST('GENBARCODE_BARCODETYPE_THIRDPARTY','alpha'); - $res = dolibarr_set_const($db, "GENBARCODE_BARCODETYPE_THIRDPARTY", $coder_id,'chaine',0,'',$conf->entity); - } + $location = GETPOST('GENBARCODE_LOCATION','alpha'); + $res = dolibarr_set_const($db, "GENBARCODE_LOCATION",$location,'chaine',0,'',$conf->entity); + $coder_id = GETPOST('PRODUIT_DEFAULT_BARCODE_TYPE','alpha'); + $res = dolibarr_set_const($db, "PRODUIT_DEFAULT_BARCODE_TYPE", $coder_id,'chaine',0,'',$conf->entity); + $coder_id = GETPOST('GENBARCODE_BARCODETYPE_THIRDPARTY','alpha'); + $res = dolibarr_set_const($db, "GENBARCODE_BARCODETYPE_THIRDPARTY", $coder_id,'chaine',0,'',$conf->entity); } else if ($action == 'updateengine') { @@ -195,9 +186,9 @@ $var=true; print '
'; print load_fiche_titre($langs->trans("BarcodeEncodeModule"),'',''); -print ""; -print ''; -print ""; +//print ""; +//print ''; +//print ""; print '
'.$langs->trans('AliasNames').''; - print $object->name_alias; - print "
'.$langs->trans('Prefix').''.$object->prefix_comm.'
'; + print '
'; if (empty($textifempty)) print $langs->trans("NoFileFound"); else print $textifempty; print '
'; + print '
'; print $langs->trans("NoLinkFound"); print '
'.$langs->trans('DetailMenuIdParent').'
'.$langs->trans('DetailMenuIdParent'); + print ', '.$langs->trans("Example").': fk_mainmenu=abc&fk_leftmenu=def'; + print '
'.$langs->trans('Title').''.$langs->trans('DetailTitre').'
'.$langs->trans('MenuIdParent').''.$menu->fk_menu.''; + $valtouse=$menu->fk_menu; + if ($menu->fk_mainmenu) $valtouse='fk_mainmenu='.$menu->fk_mainmenu; + if ($menu->fk_leftmenu) $valtouse.='&fk_leftmenu='.$menu->fk_leftmenu; + print $valtouse; + print ''.$langs->trans('DetailMenuIdParent').'
'; print ''; @@ -261,7 +252,7 @@ if ($resql) // Build barcode on disk (not used, this is done to make debug easier) $result=$module->writeBarCode($obj->example,$obj->encoding,'Y'); // Generate on the fly and output barcode with generator - $url=DOL_URL_ROOT.'/viewimage.php?modulepart=barcode&generator='.urlencode($obj->coder).'&code='.urlencode($obj->example).'&encoding='.urlencode($obj->encoding); + $url=DOL_URL_ROOT.'/viewimage.php?modulepart=barcode&generator='.urlencode($obj->coder).'&code='.urlencode($obj->example).'&encoding='.urlencode($obj->encoding); //print $url; print ''; } @@ -296,7 +287,7 @@ if (empty($conf->use_javascript_ajax)) // TODO Implement code behind action updateengine //print '
'; } -print ''; +//print ''; print "
"; @@ -331,9 +322,7 @@ if (! isset($_SERVER['WINDIR'])) $langs->load("errors"); print '
'.$langs->trans("ErrorFileNotFound",$conf->global->GENBARCODE_LOCATION).''; } - print ''; - print '
'; - print ''; + print ''; } // Module products @@ -344,10 +333,7 @@ if (! empty($conf->product->enabled)) print ''; print '"; - print ''; + print ''; } // Module thirdparty @@ -358,13 +344,13 @@ if (! empty($conf->societe->enabled)) print ''; print '"; - print ''; + print ''; } print "
'.$langs->trans("SetDefaultBarcodeTypeProducts").''; $formbarcode->select_barcode_type($conf->global->PRODUIT_DEFAULT_BARCODE_TYPE,"PRODUIT_DEFAULT_BARCODE_TYPE",1); - print ''; - print ''; - print "
'.$langs->trans("SetDefaultBarcodeTypeThirdParties").''; print $formbarcode->select_barcode_type($conf->global->GENBARCODE_BARCODETYPE_THIRDPARTY,"GENBARCODE_BARCODETYPE_THIRDPARTY",1); - print ''; - print ''; - print "
\n"; +print '
'; +print ''; +print "
"; print ''; print '
'; @@ -419,13 +405,13 @@ if ($conf->produit->enabled) if ($conf->global->BARCODE_PRODUCT_ADDON_NUM == "$file") { - print '
'; + print ''; print img_picto($langs->trans("Activated"),'switch_on'); print ''; + print ''; print img_picto($langs->trans("Disabled"),'switch_off'); print '
\n"; } -print ''; +//print ''; print "
"; From ab44adc6d5b7d7fe6d8c926fbe9d45ed225e6cac Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Thu, 2 Jun 2016 12:37:37 +0200 Subject: [PATCH 062/245] Fix SQL error on order stats --- htdocs/commande/class/commandestats.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/commande/class/commandestats.class.php b/htdocs/commande/class/commandestats.class.php index 1ab418a9daa..e38097e4e3a 100644 --- a/htdocs/commande/class/commandestats.class.php +++ b/htdocs/commande/class/commandestats.class.php @@ -206,7 +206,7 @@ class CommandeStats extends Stats $sql = "SELECT product.ref, COUNT(product.ref) as nb, SUM(tl.".$this->field_line.") as total, AVG(tl.".$this->field_line.") as avg"; $sql.= " FROM ".$this->from.", ".$this->from_line.", ".MAIN_DB_PREFIX."product as product"; - //if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; $sql.= " WHERE ".$this->where; $sql.= " AND c.rowid = tl.fk_commande AND tl.fk_product = product.rowid"; $sql.= " AND c.date_commande BETWEEN '".$this->db->idate(dol_get_first_day($year,1,false))."' AND '".$this->db->idate(dol_get_last_day($year,12,false))."'"; From 6feabe5049ebf145b3e71fbdc6bcb398ce529025 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 2 Jun 2016 13:27:18 +0200 Subject: [PATCH 063/245] ChangeLog of 4.0 is ready --- ChangeLog | 142 ++++++++++++++++++++++++++++++--------- build/makepack-howto.txt | 3 +- 2 files changed, 111 insertions(+), 34 deletions(-) diff --git a/ChangeLog b/ChangeLog index 46cc2cba089..4fdf052c096 100644 --- a/ChangeLog +++ b/ChangeLog @@ -14,57 +14,132 @@ make a Dolibarr upgrade. ***** ChangeLog for 4.0 compared to 3.9.* ***** For users: -NEW: #3510 : Standardize module -NEW: #3510 : Working -NEW: #3767 Allow changing multiple prices of a product at once -NEW: #4972 Translated Charges sociales (type 0) and Charges sociales (type 1) in reports page -NEW: Accountancy Add a way to initialize chart of accounts -NEW: Accountancy - Add category to manage the display of the income statement and the balance sheet -NEW: Accountancy - Add Result page & review -NEW: Accountancy - Drop old table not used (Informations are already presents in llx_accounting_bookkeeping) -NEW: Accountancy - Prepare multiple journals -NEW: Accountancy Use clean_account to remove 0 at the right when we create an account in chart of accounts -NEW: Add a filter field to restrict list of member when doing a LDAP list request. Use also this filter into ldap command line script making sync from ldap to dolibarr. + +NEW: Add reccuring invoice feature and automatic generation of invoices. +NEW: Add module "Loan" as stable. +NEW: Add module "Supplier commercial proposal" (price request) is set to stable status. +NEW: Experimental module Accountancy Expert +NEW: Experimental module Multicurency +NEW: Show into badge on tab head the number of dedicated contacts for all objects. +NEW: Add a checkbox to select/unselect all lines on page that support mass actions (like invoice list page) NEW: Add a new method for margin calculation. Added margin on "cost price" to margin on WAP price and margin on "best supplier price". -NEW: Add a new widget $form->selectArrayAjax() to use combo list with content coming from an Ajax URL. NEW: Add an explanation message on shipment page to explain you can't make shipment if order is not validated -NEW: Add a parameter on graph function to show a generic graph when no data are available. -NEW: Add a refresh button on page list of direct print jobs. -NEW: Add a tool for developers to purge database with no loose of setup -NEW: Add cancel button on thirdparty create page -NEW: Add css on column of detail lines to allow module to easily manipulate fields. NEW: Add date_rum into table of thirdparty bank account. +NEW: The probability of lead/opportunity can be defined per lead. NEW: Added Malta VAT into migration script -NEW: Add expense report into accountancy report +NEW: #4972 Translated Charges sociales (type 0) and Charges sociales (type 1) in reports page +NEW: Add Expense report into accountancy report NEW: Add Expense report to approve into workboard -NEW: Selection of boxes is moved on top of page -NEW: Add fields into llx_cronjobs to be able to use job table to queue one shot jobs. +NEW: Selection of boxes is move on top of home page NEW: Add filter on a keyword, status and nature into list of modules -NEW: Add filter on status on shipments NEW: Add hidden option BANK_DISABLE_CHECK_DEPOSIT to disable check deposit feature. -NEW: Add hook pdf_build_address NEW: Add option MAIN_PUBLIC_NOTE_IN_ADDRESS -NEW: add $ID$ into extrafields management to allow use current object id on filter for select list from table and checkbox list from table +NEW: add html id/class to locate value in the DOM html NEW: Add index on invoice status NEW: Add constant MAIN_LOGTOHTML to 0 into other setup by default to save time when we need to make debug on hosted instance. -NEW: add info page on product card -NEW: Add into about page, a sample text to use to promote new version release (visible only if version is last stable) NEW: Add list of billed -NEW: Add Malta VAT into 3.9 NEW: Add minimum stock and desired stock into import/export profiles. NEW: Add state into thirdparty export fields NEW: Add more trackable events (create, submit and receive supplier order). -NEW: add multicurency on customer order (module experimental) -NEW: Add $object in parameter of pdf_build_address so we could include hook into the function. NEW: Add option MAIN_PROPAGATE_CONTACTS_FROM_ORIGIN +NEW: Add picto on module list to show warning and if module is an external module. +NEW: add product type filter on turnover report +NEW: Add state into list of fields available for personalized fields of thirdparties +NEW: Add statistics for interventions module +NEW: Add statistics on number of projets on home page +NEW: Add stats and late records into dashboard for supplier proposals. +NEW: Add the admin info on combo of type of contact +NEW: Add the event BILL_PAYED to list of supported events for module notification. +NEW: Add total weight and volume on PDF +NEW: Add hidden option to hide column qty ordered on shipments. +NEW: Add view of virtual stock into product list (when appropriate) +NEW: Add warning on tasks when they are late (add also the warning tolerance parameter) +NEW: Add weight/volume for one product into shipment export +NEW: Add width and height on product card +NEW: allow a document to be linked to project from another customer on config +NEW: allow project to be shared across entities (for multicompany module) +NEW: All variant of ckeditor config can be tested into the setup page of module. +NEW: Can change dynamically number of records visible into lists. +NEW: Can change type of extrafields for some combinations. +NEW: Can define number of first and last line into import wizard. +NEW: Can edit next execution date of a cron job. +NEW: Can edit value date of a vat payment after recording it. +NEW: Can filter modules on publisher +NEW: Can filter on employee status when building emailing from users +NEW: Can reopen an closed shipment +NEW: Can search on shipments into the quick search box +NEW: Can select dynamicaly number of lines to show on page on product, shipment, contact, orders, thirdparties +NEW: Can select fields to show on supplier orders list. +NEW: Can select fields to show on list also for list of customer orders, shipments and invoices. +NEW: Can select fields to show on proposal lists. +NEW: Can select language from combo list on page to overwrite a translation +NEW: Can select number of lines on page list for projects and tasks. +NEW: Can use ^ and $ (to say start with or end with like regex syntax) into search fields when search field is text. Bonus: ^$ can filter all lines with field not defined. +NEW: Clean and enhance code for cron engine +NEW: Can decrease stock on shipment closing/classifying (only if module lot is not enabled for the moment) +NEW: Disabled users are striked. +NEW: Enhance navigation of project module +NEW: fichinter lines ordered by rang AND DATE +NEW: hidden conf to use input file multiple from mail form +NEW: hidden feature: SUPPLIERORDER_WITH_NOPRICEDEFINED allow supplier order even if no supplier price defined +NEW: Hidden option MAIN_LANDING_PAGE to choose the first page to show after login works as a "global" option (llx_const) and as a "per user" option (llx_user_param). +NEW: Holiday is a now a RH module. All RH module provides by default visilibity on users of its hierarchy. +NEW: If error is reported during migration process, you can ignore it to avoid to be locked. +NEW: if nb total of lines provided in print barre_liste, display in title +NEW: If option to see non stable modules is on, add a filter into module list to filter on level (deprecated, experimental, development) +NEW: Include number of linked files into badge counter of "Linked files" tab. +NEW: Include sales representative into export of thirdparties +NEW: Indicator on workboard are red/green if late or not. +NEW: Into GED module, filename is truncated only if there is not enough space into table +NEW: Introduce a predefined job to run database backup +NEW: Introduce option MAIN_WEIGHT_DEFAULT_UNIT and MAIN_VOLUME_DEFAULT_UNIT to force output unit for weight and volume. +NEW: Introduce position of records into dictionnary of type of contacts +NEW: Link on user in leave context reach to leave tab. +NEW: List of user in agenda view per user show photo thumb +NEW: Margins module - Check/update buying price on invoice lines +NEW: Merge all admin tools (system and module admin tools) into same entry "Admin tools", so now things are clear: All features restricted to an admin user is inside "setup" (for setup) or "admin tools" (for action tools) instead of 3 different entries. +NEW: Merge all boxes "related objects" into one. This save a lot of room on most card and avoid often horizontal scoll. +NEW: Moved code that deals with bank categories to BankCateg. Created BankCateg::fetchAll function +NEW: Move Expense report menu from module to menu files +NEW: Move HRM dictionary from module to core dictionaries +NEW: Mutualize code to manage email substitution variables. Show available variables into page to edit email templates. +NEW: Mutualize code: Use one call of function "addThumbs", when possible, to generate thumbs files instead of several call of "vignette" function. +NEW: On translation admin page, admin can overwrite a translation value. +NEW: Option MAIN_LIST_FILTER_ON_DAY is supported on proposal list +NEW: Add reputation field for price supplier +NEW: Rest API token is no more reset at each call. We can reset it with param reset=1 on login call. +NEW: Selection of fields is available on member list. +NEW: Show a badge with number of withdraw requests done on the withdraw tab of invoice. +NEW: Add option to show detail per warehouse into reassort +NEW: Show total number of modules into the module list +NEW: Survey system has now a status like other objects. You can close or reopen a survey. +NEW: The note on time spent can be entered when using the view per day. +NEW: Use ellipsis truncation on too large left menu text +NEW: When a new field to show into lists is selected, the form is automatically submited and field added. +NEW: When creating a template invoice from a draft invoice, if there is link to contract on draft invoice, link is kept on template invoice. +NEW: When emailing is not sent completely, show progression. For developers: -NEW: Add doActions hook method call in contract card -NEW: Added doActions hooks to user cards -NEW: #3876 Renamed Product::isservice and Product::isproduct to match PSR-2 -NEW: #3898 Remove deprecated Product::hidden property -NEW: Add a checkbox to select/unselect all lines on page that support mass actions (like invoice list page) +NEW: TimeZone can be supplied to mktime +NEW: hook in shipment card +NEW: Deprecated Societe::set_prospect_level, Societe::set_commnucation_level, Societe::set_OutstandingBill functions +NEW: A module can add, into its import profiles, a sql request to execute at end of import. This allow to update dernormalized data after import. +NEW: Add hook pdf_build_address +NEW: Add a parameter on graph function to show a generic graph when no data are available. +NEW: Add $object in parameter of pdf_build_address so we could include hook into the function. +NEW: Add a tool for developers to purge database with no loose of setup +NEW: Can disable a module by renaming dir of module into module.disabled (this save time for maintenance when working with FTP). +NEW: Created AccountLine::insert function and started using it for transaction creation +NEW: Created Account::__toString, Account::getFieldsToShow and Account::getAccountNumberOrder to refactor the way account number was shown +NEW: Created FormBank::getIBANLabel function to get the label of "IBAN" depending on bank account country +NEW: prepare for additional warehouse statuses +NEW: project sharing in select_projetcs_list function +NEW: Removed deprecated CommonObject::client property. Please use CommonObject::thirdparty instead +NEW: Removed unused FormOrder::selectSourcesCommande function +NEW: Renamed ActionComm::add function to ActionComm::create +NEW: Rename Form::select_date to Form::selectDate and Form::form_date to Form::formDate +NEW: Rename path for generic medias files into '/medias' instead of fckeditor. Add location of medias into title of media browser of ckeditor. Work on website module WARNING: @@ -84,6 +159,7 @@ So if you included it into your module, change your code like this to be compati if (! $res) include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_pre_headers.tpl.php'; + ***** 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 diff --git a/build/makepack-howto.txt b/build/makepack-howto.txt index 420a8a76bf3..792eb010331 100644 --- a/build/makepack-howto.txt +++ b/build/makepack-howto.txt @@ -9,7 +9,8 @@ beta version of Dolibarr, step by step. - Check all files are commited. - Update version/info in ChangeLog. -To generate a changelog of a major new version x.y.0, you can do "cd ~/git/dolibarr_x.y; git log `git rev-list --boundary x.y..origin/develop | grep ^- | cut -c2- | head -n 1`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa" +To generate a changelog of a major new version x.y.0 (from develop repo), you can do "cd ~/git/dolibarr; git log `diff -u <(git rev-list --first-parent x.(y-1).0) <(git rev-list --first-parent develop) | sed -ne 's/^ //p' | head -1`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa" +To generate a changelog of a major new version x.y.0 (from x.y repo), you can do "cd ~/git/dolibarr_x.y; git log `diff -u <(git rev-list --first-parent x.(y-1).0) <(git rev-list --first-parent x.y.0) | sed -ne 's/^ //p' | head -1`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa" To generate a changelog of a maintenance version x.y.z, you can do "cd ~/git/dolibarr_x.y; git log x.y.z-1.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa" - Update version number with x.y.z-w in htdocs/filefunc.inc.php - Commit all changes. From ea0927ee9dc532fa493971b8b773a8ecba0418a6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 2 Jun 2016 13:28:09 +0200 Subject: [PATCH 064/245] ChangeLog of 4.0 is ready --- ChangeLog | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 4fdf052c096..40e427bae1b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -139,7 +139,8 @@ NEW: Removed deprecated CommonObject::client property. Please use CommonObject:: NEW: Removed unused FormOrder::selectSourcesCommande function NEW: Renamed ActionComm::add function to ActionComm::create NEW: Rename Form::select_date to Form::selectDate and Form::form_date to Form::formDate -NEW: Rename path for generic medias files into '/medias' instead of fckeditor. Add location of medias into title of media browser of ckeditor. Work on website module +NEW: Rename path for generiN +NEW: More phpunit tests. Include some REST API into automatic tests. WARNING: From 6062bad9170097e2c4e31889a5a026c7cadd18a0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 2 Jun 2016 13:29:51 +0200 Subject: [PATCH 065/245] Update doc --- build/makepack-howto.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build/makepack-howto.txt b/build/makepack-howto.txt index 792eb010331..76a290708a9 100644 --- a/build/makepack-howto.txt +++ b/build/makepack-howto.txt @@ -32,7 +32,8 @@ complete release of Dolibarr, step by step. - Check all files are commited. - Update version/info in ChangeLog. -To generate a changelog of a major new version x.y.0, you can do "cd ~/git/dolibarr_x.y; git log `git rev-list --boundary x.(y-1).0..origin/develop | grep ^- | cut -c2- | head -n 1`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa" +To generate a changelog of a major new version x.y.0 (from develop repo), you can do "cd ~/git/dolibarr; git log `diff -u <(git rev-list --first-parent x.(y-1).0) <(git rev-list --first-parent develop) | sed -ne 's/^ //p' | head -1`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa" +To generate a changelog of a major new version x.y.0 (from x.y repo), you can do "cd ~/git/dolibarr_x.y; git log `diff -u <(git rev-list --first-parent x.(y-1).0) <(git rev-list --first-parent x.y.0) | sed -ne 's/^ //p' | head -1`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa" To generate a changelog of a maintenance version x.y.z, you can do "cd ~/git/dolibarr_x.y; git log x.y.z-1.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa" - Update version number with x.y.z in htdocs/filefunc.inc.php - Commit all changes. From ebd8f2cf866251182bdfc38a7c6ff86876fc2c7c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 2 Jun 2016 13:33:22 +0200 Subject: [PATCH 066/245] Prepare 4.0 --- htdocs/langs/de_AT/accountancy.lang | 2 -- htdocs/langs/de_AT/admin.lang | 1 - htdocs/langs/de_AT/companies.lang | 1 - htdocs/langs/de_AT/cron.lang | 3 --- htdocs/langs/de_AT/margins.lang | 3 --- htdocs/langs/de_AT/projects.lang | 2 -- htdocs/langs/de_CH/accountancy.lang | 2 -- htdocs/langs/de_CH/admin.lang | 1 - htdocs/langs/de_CH/companies.lang | 1 - htdocs/langs/de_CH/main.lang | 1 - htdocs/langs/de_CH/projects.lang | 2 -- htdocs/langs/en_AU/accountancy.lang | 2 -- htdocs/langs/en_AU/admin.lang | 1 - htdocs/langs/en_AU/companies.lang | 2 -- htdocs/langs/en_AU/cron.lang | 3 --- htdocs/langs/en_AU/margins.lang | 3 --- htdocs/langs/en_AU/projects.lang | 3 --- htdocs/langs/en_AU/propal.lang | 2 -- htdocs/langs/en_CA/accountancy.lang | 2 -- htdocs/langs/en_CA/admin.lang | 1 - htdocs/langs/en_CA/companies.lang | 1 - htdocs/langs/en_CA/cron.lang | 3 --- htdocs/langs/en_CA/margins.lang | 3 --- htdocs/langs/en_CA/projects.lang | 3 --- htdocs/langs/en_CA/propal.lang | 2 -- htdocs/langs/en_GB/accountancy.lang | 2 -- htdocs/langs/en_GB/admin.lang | 1 - htdocs/langs/en_GB/companies.lang | 2 -- htdocs/langs/en_GB/cron.lang | 3 --- htdocs/langs/en_GB/margins.lang | 3 --- htdocs/langs/en_GB/projects.lang | 3 --- htdocs/langs/en_GB/propal.lang | 2 -- htdocs/langs/en_IN/accountancy.lang | 2 -- htdocs/langs/en_IN/admin.lang | 1 - htdocs/langs/en_IN/companies.lang | 2 -- htdocs/langs/en_IN/cron.lang | 3 --- htdocs/langs/en_IN/margins.lang | 3 --- htdocs/langs/en_IN/projects.lang | 3 --- htdocs/langs/en_IN/propal.lang | 2 -- htdocs/langs/es_AR/accountancy.lang | 2 -- htdocs/langs/es_AR/admin.lang | 1 - htdocs/langs/es_AR/cron.lang | 3 --- htdocs/langs/es_AR/margins.lang | 3 --- htdocs/langs/es_AR/projects.lang | 3 --- htdocs/langs/es_AR/propal.lang | 2 -- htdocs/langs/es_BO/accountancy.lang | 2 -- htdocs/langs/es_BO/admin.lang | 1 - htdocs/langs/es_BO/cron.lang | 3 --- htdocs/langs/es_BO/margins.lang | 3 --- htdocs/langs/es_BO/projects.lang | 3 --- htdocs/langs/es_BO/propal.lang | 2 -- htdocs/langs/es_CL/accountancy.lang | 2 -- htdocs/langs/es_CL/admin.lang | 2 -- htdocs/langs/es_CL/cron.lang | 3 --- htdocs/langs/es_CL/margins.lang | 3 --- htdocs/langs/es_CL/projects.lang | 2 -- htdocs/langs/es_CO/accountancy.lang | 2 -- htdocs/langs/es_CO/admin.lang | 1 - htdocs/langs/es_CO/cron.lang | 3 --- htdocs/langs/es_CO/margins.lang | 3 --- htdocs/langs/es_CO/projects.lang | 3 --- htdocs/langs/es_CO/propal.lang | 2 -- htdocs/langs/es_DO/accountancy.lang | 2 -- htdocs/langs/es_DO/admin.lang | 1 - htdocs/langs/es_DO/cron.lang | 3 --- htdocs/langs/es_DO/margins.lang | 3 --- htdocs/langs/es_DO/projects.lang | 3 --- htdocs/langs/es_DO/propal.lang | 2 -- htdocs/langs/es_MX/accountancy.lang | 5 ----- htdocs/langs/es_MX/admin.lang | 1 - htdocs/langs/es_MX/productbatch.lang | 2 -- htdocs/langs/es_MX/projects.lang | 2 -- htdocs/langs/es_PE/accountancy.lang | 2 -- htdocs/langs/es_PE/admin.lang | 1 - htdocs/langs/es_PE/cron.lang | 3 --- htdocs/langs/es_PE/margins.lang | 3 --- htdocs/langs/es_PE/projects.lang | 3 --- htdocs/langs/es_PY/accountancy.lang | 2 -- htdocs/langs/es_PY/admin.lang | 1 - htdocs/langs/es_PY/cron.lang | 3 --- htdocs/langs/es_PY/margins.lang | 3 --- htdocs/langs/es_PY/projects.lang | 3 --- htdocs/langs/es_PY/propal.lang | 2 -- htdocs/langs/es_VE/accountancy.lang | 2 -- htdocs/langs/es_VE/admin.lang | 1 - htdocs/langs/es_VE/cron.lang | 3 --- htdocs/langs/es_VE/projects.lang | 2 -- htdocs/langs/fr_BE/accountancy.lang | 1 - htdocs/langs/fr_BE/admin.lang | 1 - htdocs/langs/fr_BE/cron.lang | 3 --- htdocs/langs/fr_BE/margins.lang | 3 --- htdocs/langs/fr_BE/projects.lang | 3 --- htdocs/langs/fr_BE/propal.lang | 2 -- htdocs/langs/fr_CA/accountancy.lang | 9 --------- htdocs/langs/fr_CA/admin.lang | 2 -- htdocs/langs/fr_CA/cron.lang | 3 --- htdocs/langs/fr_CA/margins.lang | 2 -- htdocs/langs/fr_CA/projects.lang | 3 --- htdocs/langs/fr_CA/propal.lang | 1 - htdocs/langs/fr_CH/accountancy.lang | 2 -- htdocs/langs/fr_CH/admin.lang | 1 - htdocs/langs/fr_CH/cron.lang | 3 --- htdocs/langs/fr_CH/margins.lang | 3 --- htdocs/langs/fr_CH/projects.lang | 3 --- htdocs/langs/fr_CH/propal.lang | 2 -- htdocs/langs/pt_BR/admin.lang | 1 - htdocs/langs/pt_BR/bills.lang | 1 - htdocs/langs/pt_BR/cron.lang | 1 - 108 files changed, 244 deletions(-) delete mode 100644 htdocs/langs/de_AT/accountancy.lang delete mode 100644 htdocs/langs/de_AT/cron.lang delete mode 100644 htdocs/langs/de_AT/margins.lang delete mode 100644 htdocs/langs/de_CH/accountancy.lang delete mode 100644 htdocs/langs/en_AU/accountancy.lang delete mode 100644 htdocs/langs/en_AU/companies.lang delete mode 100644 htdocs/langs/en_AU/cron.lang delete mode 100644 htdocs/langs/en_AU/margins.lang delete mode 100644 htdocs/langs/en_AU/projects.lang delete mode 100644 htdocs/langs/en_AU/propal.lang delete mode 100644 htdocs/langs/en_CA/accountancy.lang delete mode 100644 htdocs/langs/en_CA/cron.lang delete mode 100644 htdocs/langs/en_CA/margins.lang delete mode 100644 htdocs/langs/en_CA/projects.lang delete mode 100644 htdocs/langs/en_CA/propal.lang delete mode 100644 htdocs/langs/en_GB/accountancy.lang delete mode 100644 htdocs/langs/en_GB/companies.lang delete mode 100644 htdocs/langs/en_GB/cron.lang delete mode 100644 htdocs/langs/en_GB/margins.lang delete mode 100644 htdocs/langs/en_GB/projects.lang delete mode 100644 htdocs/langs/en_GB/propal.lang delete mode 100644 htdocs/langs/en_IN/accountancy.lang delete mode 100644 htdocs/langs/en_IN/companies.lang delete mode 100644 htdocs/langs/en_IN/cron.lang delete mode 100644 htdocs/langs/en_IN/margins.lang delete mode 100644 htdocs/langs/en_IN/projects.lang delete mode 100644 htdocs/langs/en_IN/propal.lang delete mode 100644 htdocs/langs/es_AR/accountancy.lang delete mode 100644 htdocs/langs/es_AR/cron.lang delete mode 100644 htdocs/langs/es_AR/margins.lang delete mode 100644 htdocs/langs/es_AR/projects.lang delete mode 100644 htdocs/langs/es_AR/propal.lang delete mode 100644 htdocs/langs/es_BO/accountancy.lang delete mode 100644 htdocs/langs/es_BO/cron.lang delete mode 100644 htdocs/langs/es_BO/margins.lang delete mode 100644 htdocs/langs/es_BO/projects.lang delete mode 100644 htdocs/langs/es_BO/propal.lang delete mode 100644 htdocs/langs/es_CL/accountancy.lang delete mode 100644 htdocs/langs/es_CL/cron.lang delete mode 100644 htdocs/langs/es_CL/margins.lang delete mode 100644 htdocs/langs/es_CO/accountancy.lang delete mode 100644 htdocs/langs/es_CO/cron.lang delete mode 100644 htdocs/langs/es_CO/margins.lang delete mode 100644 htdocs/langs/es_CO/projects.lang delete mode 100644 htdocs/langs/es_CO/propal.lang delete mode 100644 htdocs/langs/es_DO/accountancy.lang delete mode 100644 htdocs/langs/es_DO/cron.lang delete mode 100644 htdocs/langs/es_DO/margins.lang delete mode 100644 htdocs/langs/es_DO/projects.lang delete mode 100644 htdocs/langs/es_DO/propal.lang delete mode 100644 htdocs/langs/es_MX/productbatch.lang delete mode 100644 htdocs/langs/es_PE/accountancy.lang delete mode 100644 htdocs/langs/es_PE/cron.lang delete mode 100644 htdocs/langs/es_PE/margins.lang delete mode 100644 htdocs/langs/es_PE/projects.lang delete mode 100644 htdocs/langs/es_PY/accountancy.lang delete mode 100644 htdocs/langs/es_PY/cron.lang delete mode 100644 htdocs/langs/es_PY/margins.lang delete mode 100644 htdocs/langs/es_PY/projects.lang delete mode 100644 htdocs/langs/es_PY/propal.lang delete mode 100644 htdocs/langs/es_VE/accountancy.lang delete mode 100644 htdocs/langs/es_VE/cron.lang delete mode 100644 htdocs/langs/fr_BE/cron.lang delete mode 100644 htdocs/langs/fr_BE/margins.lang delete mode 100644 htdocs/langs/fr_BE/projects.lang delete mode 100644 htdocs/langs/fr_BE/propal.lang delete mode 100644 htdocs/langs/fr_CA/cron.lang delete mode 100644 htdocs/langs/fr_CA/projects.lang delete mode 100644 htdocs/langs/fr_CH/accountancy.lang delete mode 100644 htdocs/langs/fr_CH/cron.lang delete mode 100644 htdocs/langs/fr_CH/margins.lang delete mode 100644 htdocs/langs/fr_CH/projects.lang delete mode 100644 htdocs/langs/fr_CH/propal.lang diff --git a/htdocs/langs/de_AT/accountancy.lang b/htdocs/langs/de_AT/accountancy.lang deleted file mode 100644 index 4a851f31c28..00000000000 --- a/htdocs/langs/de_AT/accountancy.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - accountancy -EnabledProduct=In Product diff --git a/htdocs/langs/de_AT/admin.lang b/htdocs/langs/de_AT/admin.lang index 56c89f6ab57..1f868cc1f69 100644 --- a/htdocs/langs/de_AT/admin.lang +++ b/htdocs/langs/de_AT/admin.lang @@ -110,7 +110,6 @@ DelaysBeforeWarning=Benachrichtigungsverzögerungen DelaysOfToleranceBeforeWarning=Verspätungstoleranz vor Benachrichtigungen Delays_MAIN_DELAY_NOT_ACTIVATED_SERVICES=Verzögerungstoleranz (in Tagen) vor Benachrichtigung über zu aktivierende Services Delays_MAIN_DELAY_RUNNING_SERVICES=Verzögerungstoleranz (in Tagen) vor Benachrichtigung zu überfälligen Services -TotalNumberOfActivatedModules=Total number of activated feature modules: %s / %s DocumentModelOdt=Erstellen von Dokumentvorlagen im OpenDocuments-Format (.odt-Dateien für OpenOffice, KOffice, TextEdit, ...) WatermarkOnDraftInvoices=Wasserzeichen auf Rechnungsentwürfen (alle, falls leer) WatermarkOnDraftProposal=Wasserzeichen für Angebotsentwürfe (alle, falls leer) diff --git a/htdocs/langs/de_AT/companies.lang b/htdocs/langs/de_AT/companies.lang index baae73569ac..5d03cea798a 100644 --- a/htdocs/langs/de_AT/companies.lang +++ b/htdocs/langs/de_AT/companies.lang @@ -8,7 +8,6 @@ Web=Webadresse LocalTax1IsUsedES=RE wird LocalTax2IsUsedES=IRPF verwendet wird ProfId1AR=Prof Id 1 (CUIL) -ProfId5MA=Id prof. 5 (C.I.C.E.) CustomerCode=Kunden-Code CapitalOf=Hauptstadt von %s NorProspectNorCustomer=Weder Lead noch Kunde diff --git a/htdocs/langs/de_AT/cron.lang b/htdocs/langs/de_AT/cron.lang deleted file mode 100644 index d8953584e61..00000000000 --- a/htdocs/langs/de_AT/cron.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - cron -CronDtLastLaunch=Start date of last execution -CronDtLastResult=End date of last execution diff --git a/htdocs/langs/de_AT/margins.lang b/htdocs/langs/de_AT/margins.lang deleted file mode 100644 index f93f8ff712c..00000000000 --- a/htdocs/langs/de_AT/margins.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - margins -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 diff --git a/htdocs/langs/de_AT/projects.lang b/htdocs/langs/de_AT/projects.lang index c609e4f2eac..4ca6e93544f 100644 --- a/htdocs/langs/de_AT/projects.lang +++ b/htdocs/langs/de_AT/projects.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - projects -ProjectsArea=Projects Area PrivateProject=Projektansprechpartner MyProjectsDesc=Diese Ansicht ist auf Projekte beschränkt, zu denen Sie als Kontakt definiert sind (unabhängig vom Typ). ProjectsPublicDesc=Diese Ansicht zeigt alle für Sie sichtbaren Projekte. @@ -17,4 +16,3 @@ ReOpenAProject=Öffne Projekt DoNotShowMyTasksOnly=Zeige auch die Aufgaben Anderer TypeContact_project_task_internal_TASKEXECUTIVE=Task Exekutive TypeContact_project_task_external_TASKEXECUTIVE=Task Exekutive -OpportunityPonderatedAmountDesc=Opportunities amount weighted with probability diff --git a/htdocs/langs/de_CH/accountancy.lang b/htdocs/langs/de_CH/accountancy.lang deleted file mode 100644 index 4a851f31c28..00000000000 --- a/htdocs/langs/de_CH/accountancy.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - accountancy -EnabledProduct=In Product diff --git a/htdocs/langs/de_CH/admin.lang b/htdocs/langs/de_CH/admin.lang index 75d73bb978e..fc1956f7f09 100644 --- a/htdocs/langs/de_CH/admin.lang +++ b/htdocs/langs/de_CH/admin.lang @@ -94,7 +94,6 @@ ExtraFieldsSupplierOrdersLines=Ergänzende Attribute (in Bestellungszeile) ExtraFieldsThirdParties=Ergänzende Attribute (Geschäftspartner) AlphaNumOnlyCharsAndNoSpace=nur alphanumericals Zeichen ohne Leerzeichen SendmailOptionNotComplete=Achtung, auf einigen Linux-Systemen, E-Mails von Ihrem E-Mail zu senden, sendmail Ausführung Setup muss conatins Option-ba (Parameter mail.force_extra_parameters in Ihre php.ini-Datei). Wenn einige Empfänger niemals E-Mails erhalten, versuchen, diese Parameter mit PHP mail.force_extra_parameters =-ba) zu bearbeiten. -TotalNumberOfActivatedModules=Total number of activated feature modules: %s / %s AddRefInList=Darstellung Kunden- /Lieferanten- Nr. in Listen (Listbox oder ComboBox) und die meisten von Hyperlinks. Third parties will appears with name "CC12345 - SC45678 - The big company coorp", instead of "The big company coorp". UserGroupSetup=Benutzer- und Gruppeneinstellunen CompanyCodeChecker=Modul für Geschäftspartner-Code-Erstellung (Kunden oder Lieferanten) diff --git a/htdocs/langs/de_CH/companies.lang b/htdocs/langs/de_CH/companies.lang index 01fb066b4f1..2e19bfb4391 100644 --- a/htdocs/langs/de_CH/companies.lang +++ b/htdocs/langs/de_CH/companies.lang @@ -24,7 +24,6 @@ CustomerCodeModel=Kunden-Code-Modell SupplierCodeModel=Lieferanten-Code Modell ProfId1BR=CNPJ ProfId4DE=Steuernummer -ProfId5MA=Id prof. 5 (C.I.C.E.) VATIntraShort=MwSt.-Nr. CustomerCard=Kundenkarte CustomerRelativeDiscountShort=Rabatt rel. diff --git a/htdocs/langs/de_CH/main.lang b/htdocs/langs/de_CH/main.lang index fd52ffaf424..ac143ee0d93 100644 --- a/htdocs/langs/de_CH/main.lang +++ b/htdocs/langs/de_CH/main.lang @@ -22,7 +22,6 @@ FormatDateHourText=%d %B %Y %H:%M ErrorFileNotUploaded=Die Datei konnte nicht hochgeladen werden. Stellen Sie sicher dass die Dateigrösse nicht den gesetzten Maximalwert übersteigt, das Zielverzeichnis über genügend freien Speicherplatz verfügt und noch keine Datei mit gleichem Namen existiert. ErrorNoSocialContributionForSellerCountry=Fehler, keine Definition für Sozialabgaben/Steuerwerte definiert für Land '%s'. Close=Schliessen -Close2=Schliessen Cancel=Abbrechen ValidateAndApprove=Freigeben und bestätigen NoUserGroupDefined=Keine Benutzergruppe definiert diff --git a/htdocs/langs/de_CH/projects.lang b/htdocs/langs/de_CH/projects.lang index 0809b682e5b..5587b1139d4 100644 --- a/htdocs/langs/de_CH/projects.lang +++ b/htdocs/langs/de_CH/projects.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - projects -ProjectsArea=Projects Area MyTasksDesc=Diese Ansicht ist für Sie beschränkt auf Projekte oder Aufgaben, bei welchen Sie als Ansprechpartner eingetragen sind. OnlyOpenedProject=Nur offene Projekte sind sichtbar. (Projekte im Entwurf- oder Geschlossenstatus sind nicht sichtbar) AllTaskVisibleButEditIfYouAreAssigned=Alle Aufgaben dieser Projekte sind sichtbar, aber sie können nur auf ihnen zugewiesenen Aufgaben Zeit erfassen. Weisen sie sich dei Aufgabe zu, wenn sie Zeit erfassen möchten. @@ -12,4 +11,3 @@ ThisWillAlsoRemoveTasks=Diese Aktion löscht ebenfalls alle Aufgaben zum Projekt CloneTaskFiles=Aufgabe (n) clonen beigetreten Dateien (falls Aufgabe (n) geklont) OpenedProjectsByThirdparties=Offene Projekte nach Geschäftspartner OpportunityPonderatedAmount=Verkaufschancen geschätzer Betrag -OpportunityPonderatedAmountDesc=Opportunities amount weighted with probability diff --git a/htdocs/langs/en_AU/accountancy.lang b/htdocs/langs/en_AU/accountancy.lang deleted file mode 100644 index 4a851f31c28..00000000000 --- a/htdocs/langs/en_AU/accountancy.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - accountancy -EnabledProduct=In Product diff --git a/htdocs/langs/en_AU/admin.lang b/htdocs/langs/en_AU/admin.lang index 61b7d006abf..1c53b65c99c 100644 --- a/htdocs/langs/en_AU/admin.lang +++ b/htdocs/langs/en_AU/admin.lang @@ -2,4 +2,3 @@ AntiVirusCommandExample=Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe
Example for ClamAv: /usr/bin/clamscan AntiVirusParamExample=Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ExampleOfDirectoriesForModelGen=Examples of syntax:
c:\\mydir
/home/mydir
DOL_DATA_ROOT/ecm/ecmdir -TotalNumberOfActivatedModules=Total number of activated feature modules: %s / %s diff --git a/htdocs/langs/en_AU/companies.lang b/htdocs/langs/en_AU/companies.lang deleted file mode 100644 index 569de2a0e42..00000000000 --- a/htdocs/langs/en_AU/companies.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - companies -ProfId5MA=Id prof. 5 (C.I.C.E.) diff --git a/htdocs/langs/en_AU/cron.lang b/htdocs/langs/en_AU/cron.lang deleted file mode 100644 index d8953584e61..00000000000 --- a/htdocs/langs/en_AU/cron.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - cron -CronDtLastLaunch=Start date of last execution -CronDtLastResult=End date of last execution diff --git a/htdocs/langs/en_AU/margins.lang b/htdocs/langs/en_AU/margins.lang deleted file mode 100644 index f93f8ff712c..00000000000 --- a/htdocs/langs/en_AU/margins.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - margins -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 diff --git a/htdocs/langs/en_AU/projects.lang b/htdocs/langs/en_AU/projects.lang deleted file mode 100644 index 1aaa958bd19..00000000000 --- a/htdocs/langs/en_AU/projects.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - projects -ProjectsArea=Projects Area -OpportunityPonderatedAmountDesc=Opportunities amount weighted with probability diff --git a/htdocs/langs/en_AU/propal.lang b/htdocs/langs/en_AU/propal.lang deleted file mode 100644 index 90b012fd6f9..00000000000 --- a/htdocs/langs/en_AU/propal.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - propal -CloseAs=Set status to diff --git a/htdocs/langs/en_CA/accountancy.lang b/htdocs/langs/en_CA/accountancy.lang deleted file mode 100644 index 4a851f31c28..00000000000 --- a/htdocs/langs/en_CA/accountancy.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - accountancy -EnabledProduct=In Product diff --git a/htdocs/langs/en_CA/admin.lang b/htdocs/langs/en_CA/admin.lang index a1e1c2dac9b..9bf5497f19b 100644 --- a/htdocs/langs/en_CA/admin.lang +++ b/htdocs/langs/en_CA/admin.lang @@ -7,4 +7,3 @@ LocalTax1IsUsedDesc=Use a second tax (PST) LocalTax1IsNotUsedDesc=Do not use second tax (PST) LocalTax1Management=PST Management LocalTax2IsNotUsedDesc=Do not use second tax (PST) -TotalNumberOfActivatedModules=Total number of activated feature modules: %s / %s diff --git a/htdocs/langs/en_CA/companies.lang b/htdocs/langs/en_CA/companies.lang index c50d3de4b74..985f125d7de 100644 --- a/htdocs/langs/en_CA/companies.lang +++ b/htdocs/langs/en_CA/companies.lang @@ -3,4 +3,3 @@ VATIsUsed=GST is used VATIsNotUsed=GST is not use LocalTax1IsUsedES=PST is used LocalTax1IsNotUsedES=GST is not used -ProfId5MA=Id prof. 5 (C.I.C.E.) diff --git a/htdocs/langs/en_CA/cron.lang b/htdocs/langs/en_CA/cron.lang deleted file mode 100644 index d8953584e61..00000000000 --- a/htdocs/langs/en_CA/cron.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - cron -CronDtLastLaunch=Start date of last execution -CronDtLastResult=End date of last execution diff --git a/htdocs/langs/en_CA/margins.lang b/htdocs/langs/en_CA/margins.lang deleted file mode 100644 index f93f8ff712c..00000000000 --- a/htdocs/langs/en_CA/margins.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - margins -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 diff --git a/htdocs/langs/en_CA/projects.lang b/htdocs/langs/en_CA/projects.lang deleted file mode 100644 index 1aaa958bd19..00000000000 --- a/htdocs/langs/en_CA/projects.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - projects -ProjectsArea=Projects Area -OpportunityPonderatedAmountDesc=Opportunities amount weighted with probability diff --git a/htdocs/langs/en_CA/propal.lang b/htdocs/langs/en_CA/propal.lang deleted file mode 100644 index 90b012fd6f9..00000000000 --- a/htdocs/langs/en_CA/propal.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - propal -CloseAs=Set status to diff --git a/htdocs/langs/en_GB/accountancy.lang b/htdocs/langs/en_GB/accountancy.lang deleted file mode 100644 index 4a851f31c28..00000000000 --- a/htdocs/langs/en_GB/accountancy.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - accountancy -EnabledProduct=In Product diff --git a/htdocs/langs/en_GB/admin.lang b/htdocs/langs/en_GB/admin.lang index 61b7d006abf..1c53b65c99c 100644 --- a/htdocs/langs/en_GB/admin.lang +++ b/htdocs/langs/en_GB/admin.lang @@ -2,4 +2,3 @@ AntiVirusCommandExample=Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe
Example for ClamAv: /usr/bin/clamscan AntiVirusParamExample=Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ExampleOfDirectoriesForModelGen=Examples of syntax:
c:\\mydir
/home/mydir
DOL_DATA_ROOT/ecm/ecmdir -TotalNumberOfActivatedModules=Total number of activated feature modules: %s / %s diff --git a/htdocs/langs/en_GB/companies.lang b/htdocs/langs/en_GB/companies.lang deleted file mode 100644 index 569de2a0e42..00000000000 --- a/htdocs/langs/en_GB/companies.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - companies -ProfId5MA=Id prof. 5 (C.I.C.E.) diff --git a/htdocs/langs/en_GB/cron.lang b/htdocs/langs/en_GB/cron.lang deleted file mode 100644 index d8953584e61..00000000000 --- a/htdocs/langs/en_GB/cron.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - cron -CronDtLastLaunch=Start date of last execution -CronDtLastResult=End date of last execution diff --git a/htdocs/langs/en_GB/margins.lang b/htdocs/langs/en_GB/margins.lang deleted file mode 100644 index f93f8ff712c..00000000000 --- a/htdocs/langs/en_GB/margins.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - margins -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 diff --git a/htdocs/langs/en_GB/projects.lang b/htdocs/langs/en_GB/projects.lang deleted file mode 100644 index 1aaa958bd19..00000000000 --- a/htdocs/langs/en_GB/projects.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - projects -ProjectsArea=Projects Area -OpportunityPonderatedAmountDesc=Opportunities amount weighted with probability diff --git a/htdocs/langs/en_GB/propal.lang b/htdocs/langs/en_GB/propal.lang deleted file mode 100644 index 90b012fd6f9..00000000000 --- a/htdocs/langs/en_GB/propal.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - propal -CloseAs=Set status to diff --git a/htdocs/langs/en_IN/accountancy.lang b/htdocs/langs/en_IN/accountancy.lang deleted file mode 100644 index 4a851f31c28..00000000000 --- a/htdocs/langs/en_IN/accountancy.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - accountancy -EnabledProduct=In Product diff --git a/htdocs/langs/en_IN/admin.lang b/htdocs/langs/en_IN/admin.lang index 61b7d006abf..1c53b65c99c 100644 --- a/htdocs/langs/en_IN/admin.lang +++ b/htdocs/langs/en_IN/admin.lang @@ -2,4 +2,3 @@ AntiVirusCommandExample=Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe
Example for ClamAv: /usr/bin/clamscan AntiVirusParamExample=Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ExampleOfDirectoriesForModelGen=Examples of syntax:
c:\\mydir
/home/mydir
DOL_DATA_ROOT/ecm/ecmdir -TotalNumberOfActivatedModules=Total number of activated feature modules: %s / %s diff --git a/htdocs/langs/en_IN/companies.lang b/htdocs/langs/en_IN/companies.lang deleted file mode 100644 index 569de2a0e42..00000000000 --- a/htdocs/langs/en_IN/companies.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - companies -ProfId5MA=Id prof. 5 (C.I.C.E.) diff --git a/htdocs/langs/en_IN/cron.lang b/htdocs/langs/en_IN/cron.lang deleted file mode 100644 index d8953584e61..00000000000 --- a/htdocs/langs/en_IN/cron.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - cron -CronDtLastLaunch=Start date of last execution -CronDtLastResult=End date of last execution diff --git a/htdocs/langs/en_IN/margins.lang b/htdocs/langs/en_IN/margins.lang deleted file mode 100644 index f93f8ff712c..00000000000 --- a/htdocs/langs/en_IN/margins.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - margins -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 diff --git a/htdocs/langs/en_IN/projects.lang b/htdocs/langs/en_IN/projects.lang deleted file mode 100644 index 1aaa958bd19..00000000000 --- a/htdocs/langs/en_IN/projects.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - projects -ProjectsArea=Projects Area -OpportunityPonderatedAmountDesc=Opportunities amount weighted with probability diff --git a/htdocs/langs/en_IN/propal.lang b/htdocs/langs/en_IN/propal.lang deleted file mode 100644 index 90b012fd6f9..00000000000 --- a/htdocs/langs/en_IN/propal.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - propal -CloseAs=Set status to diff --git a/htdocs/langs/es_AR/accountancy.lang b/htdocs/langs/es_AR/accountancy.lang deleted file mode 100644 index 4a851f31c28..00000000000 --- a/htdocs/langs/es_AR/accountancy.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - accountancy -EnabledProduct=In Product diff --git a/htdocs/langs/es_AR/admin.lang b/htdocs/langs/es_AR/admin.lang index 61b7d006abf..1c53b65c99c 100644 --- a/htdocs/langs/es_AR/admin.lang +++ b/htdocs/langs/es_AR/admin.lang @@ -2,4 +2,3 @@ AntiVirusCommandExample=Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe
Example for ClamAv: /usr/bin/clamscan AntiVirusParamExample=Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ExampleOfDirectoriesForModelGen=Examples of syntax:
c:\\mydir
/home/mydir
DOL_DATA_ROOT/ecm/ecmdir -TotalNumberOfActivatedModules=Total number of activated feature modules: %s / %s diff --git a/htdocs/langs/es_AR/cron.lang b/htdocs/langs/es_AR/cron.lang deleted file mode 100644 index d8953584e61..00000000000 --- a/htdocs/langs/es_AR/cron.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - cron -CronDtLastLaunch=Start date of last execution -CronDtLastResult=End date of last execution diff --git a/htdocs/langs/es_AR/margins.lang b/htdocs/langs/es_AR/margins.lang deleted file mode 100644 index f93f8ff712c..00000000000 --- a/htdocs/langs/es_AR/margins.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - margins -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 diff --git a/htdocs/langs/es_AR/projects.lang b/htdocs/langs/es_AR/projects.lang deleted file mode 100644 index 1aaa958bd19..00000000000 --- a/htdocs/langs/es_AR/projects.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - projects -ProjectsArea=Projects Area -OpportunityPonderatedAmountDesc=Opportunities amount weighted with probability diff --git a/htdocs/langs/es_AR/propal.lang b/htdocs/langs/es_AR/propal.lang deleted file mode 100644 index 90b012fd6f9..00000000000 --- a/htdocs/langs/es_AR/propal.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - propal -CloseAs=Set status to diff --git a/htdocs/langs/es_BO/accountancy.lang b/htdocs/langs/es_BO/accountancy.lang deleted file mode 100644 index 4a851f31c28..00000000000 --- a/htdocs/langs/es_BO/accountancy.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - accountancy -EnabledProduct=In Product diff --git a/htdocs/langs/es_BO/admin.lang b/htdocs/langs/es_BO/admin.lang index 61b7d006abf..1c53b65c99c 100644 --- a/htdocs/langs/es_BO/admin.lang +++ b/htdocs/langs/es_BO/admin.lang @@ -2,4 +2,3 @@ AntiVirusCommandExample=Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe
Example for ClamAv: /usr/bin/clamscan AntiVirusParamExample=Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ExampleOfDirectoriesForModelGen=Examples of syntax:
c:\\mydir
/home/mydir
DOL_DATA_ROOT/ecm/ecmdir -TotalNumberOfActivatedModules=Total number of activated feature modules: %s / %s diff --git a/htdocs/langs/es_BO/cron.lang b/htdocs/langs/es_BO/cron.lang deleted file mode 100644 index d8953584e61..00000000000 --- a/htdocs/langs/es_BO/cron.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - cron -CronDtLastLaunch=Start date of last execution -CronDtLastResult=End date of last execution diff --git a/htdocs/langs/es_BO/margins.lang b/htdocs/langs/es_BO/margins.lang deleted file mode 100644 index f93f8ff712c..00000000000 --- a/htdocs/langs/es_BO/margins.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - margins -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 diff --git a/htdocs/langs/es_BO/projects.lang b/htdocs/langs/es_BO/projects.lang deleted file mode 100644 index 1aaa958bd19..00000000000 --- a/htdocs/langs/es_BO/projects.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - projects -ProjectsArea=Projects Area -OpportunityPonderatedAmountDesc=Opportunities amount weighted with probability diff --git a/htdocs/langs/es_BO/propal.lang b/htdocs/langs/es_BO/propal.lang deleted file mode 100644 index 90b012fd6f9..00000000000 --- a/htdocs/langs/es_BO/propal.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - propal -CloseAs=Set status to diff --git a/htdocs/langs/es_CL/accountancy.lang b/htdocs/langs/es_CL/accountancy.lang deleted file mode 100644 index 4a851f31c28..00000000000 --- a/htdocs/langs/es_CL/accountancy.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - accountancy -EnabledProduct=In Product diff --git a/htdocs/langs/es_CL/admin.lang b/htdocs/langs/es_CL/admin.lang index 6b4e390567f..3566d22a610 100644 --- a/htdocs/langs/es_CL/admin.lang +++ b/htdocs/langs/es_CL/admin.lang @@ -13,11 +13,9 @@ Permission25=Enviar las cotizaciones Permission26=Cerrar cotizaciones Permission27=Eliminar cotizaciones Permission28=Exportar las cotizaciones -DictionaryAccountancyplan=Gráfico de cuentas VATIsUsedDesc=El tipo de IVA propuesto por defecto en las creaciones de cotizaciones, facturas, pedidos, etc. Responde a la siguiente regla:
Si el vendedor no está sujeto a IVA, IVA por defecto=0. Final de regla.
Si el país del vendedor= país del comprador entonces IVA por defecto=IVA del producto vendido. Final de regla.
Si vendedor y comprador residen en la Comunidad Europea y el bien vendido= nuevo medio de transportes (auto, barco, avión), IVA por defecto=0 (el IVA debe ser pagado por comprador a la hacienda pública de su país y no al vendedor). Final de regla
Si vendedor y comprador residen en la Comunidad Europea y comprador= particular o empresa sin NIF intracomunitario entonces IVA por defecto=IVA del producto vendido. Final de regla.
Si vendedor y comprador residen en la Comunidad Europea y comprador= empresa con NIF intracomunitario entonces IVA por defecto=0. Final de regla.
Si no, IVA propuesto por defecto=0. Final de regla.
Delays_MAIN_DELAY_PROPALS_TO_CLOSE=Tolerancia de retraso antes de la alerta (en días) sobre cotizaciones a cerrar Delays_MAIN_DELAY_PROPALS_TO_BILL=Tolerancia de retraso antes de la alerta (en días) sobre cotizaciones no facturadas -TotalNumberOfActivatedModules=Total number of activated feature modules: %s / %s WebCalAddEventOnStatusPropal=Añadir evento en el calendario en el cambio de estado de las cotizaciones PropalSetup=Configuración del módulo Cotizaciones ProposalsNumberingModules=Módulos de numeración de cotizaciones diff --git a/htdocs/langs/es_CL/cron.lang b/htdocs/langs/es_CL/cron.lang deleted file mode 100644 index d8953584e61..00000000000 --- a/htdocs/langs/es_CL/cron.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - cron -CronDtLastLaunch=Start date of last execution -CronDtLastResult=End date of last execution diff --git a/htdocs/langs/es_CL/margins.lang b/htdocs/langs/es_CL/margins.lang deleted file mode 100644 index f93f8ff712c..00000000000 --- a/htdocs/langs/es_CL/margins.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - margins -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 diff --git a/htdocs/langs/es_CL/projects.lang b/htdocs/langs/es_CL/projects.lang index 5b20381c927..d483e1e5659 100644 --- a/htdocs/langs/es_CL/projects.lang +++ b/htdocs/langs/es_CL/projects.lang @@ -1,4 +1,2 @@ # Dolibarr language file - Source file is en_US - projects -ProjectsArea=Projects Area ListProposalsAssociatedProject=Listado de cotizaciones asociadas al proyecto -OpportunityPonderatedAmountDesc=Opportunities amount weighted with probability diff --git a/htdocs/langs/es_CO/accountancy.lang b/htdocs/langs/es_CO/accountancy.lang deleted file mode 100644 index 4a851f31c28..00000000000 --- a/htdocs/langs/es_CO/accountancy.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - accountancy -EnabledProduct=In Product diff --git a/htdocs/langs/es_CO/admin.lang b/htdocs/langs/es_CO/admin.lang index 61b7d006abf..1c53b65c99c 100644 --- a/htdocs/langs/es_CO/admin.lang +++ b/htdocs/langs/es_CO/admin.lang @@ -2,4 +2,3 @@ AntiVirusCommandExample=Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe
Example for ClamAv: /usr/bin/clamscan AntiVirusParamExample=Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ExampleOfDirectoriesForModelGen=Examples of syntax:
c:\\mydir
/home/mydir
DOL_DATA_ROOT/ecm/ecmdir -TotalNumberOfActivatedModules=Total number of activated feature modules: %s / %s diff --git a/htdocs/langs/es_CO/cron.lang b/htdocs/langs/es_CO/cron.lang deleted file mode 100644 index d8953584e61..00000000000 --- a/htdocs/langs/es_CO/cron.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - cron -CronDtLastLaunch=Start date of last execution -CronDtLastResult=End date of last execution diff --git a/htdocs/langs/es_CO/margins.lang b/htdocs/langs/es_CO/margins.lang deleted file mode 100644 index f93f8ff712c..00000000000 --- a/htdocs/langs/es_CO/margins.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - margins -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 diff --git a/htdocs/langs/es_CO/projects.lang b/htdocs/langs/es_CO/projects.lang deleted file mode 100644 index 1aaa958bd19..00000000000 --- a/htdocs/langs/es_CO/projects.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - projects -ProjectsArea=Projects Area -OpportunityPonderatedAmountDesc=Opportunities amount weighted with probability diff --git a/htdocs/langs/es_CO/propal.lang b/htdocs/langs/es_CO/propal.lang deleted file mode 100644 index 90b012fd6f9..00000000000 --- a/htdocs/langs/es_CO/propal.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - propal -CloseAs=Set status to diff --git a/htdocs/langs/es_DO/accountancy.lang b/htdocs/langs/es_DO/accountancy.lang deleted file mode 100644 index 4a851f31c28..00000000000 --- a/htdocs/langs/es_DO/accountancy.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - accountancy -EnabledProduct=In Product diff --git a/htdocs/langs/es_DO/admin.lang b/htdocs/langs/es_DO/admin.lang index 7e4622992da..6e4943b17e7 100644 --- a/htdocs/langs/es_DO/admin.lang +++ b/htdocs/langs/es_DO/admin.lang @@ -18,7 +18,6 @@ LocalTax1IsUsedDesc=Uso de un 2º tipo de impuesto (Distinto del ITBIS) LocalTax1IsNotUsedDesc=No usar un 2º tipo de impuesto (Distinto del ITBIS) UnitPriceOfProduct=Precio unitario sin ITBIS de un producto ShowVATIntaInAddress=Ocultar el identificador ITBIS en las direcciones de los documentos -TotalNumberOfActivatedModules=Total number of activated feature modules: %s / %s OptionVatMode=Opción de carga de ITBIS OptionVatDefaultDesc=La carga del ITBIS es:
-en el envío de los bienes (en la práctica se usa la fecha de la factura)
-sobre el pago por los servicios OptionVatDebitOptionDesc=La carga del ITBIS es:
-en el envío de los bienes (en la práctica se usa la fecha de la factura)
-sobre la facturación de los servicios diff --git a/htdocs/langs/es_DO/cron.lang b/htdocs/langs/es_DO/cron.lang deleted file mode 100644 index d8953584e61..00000000000 --- a/htdocs/langs/es_DO/cron.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - cron -CronDtLastLaunch=Start date of last execution -CronDtLastResult=End date of last execution diff --git a/htdocs/langs/es_DO/margins.lang b/htdocs/langs/es_DO/margins.lang deleted file mode 100644 index f93f8ff712c..00000000000 --- a/htdocs/langs/es_DO/margins.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - margins -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 diff --git a/htdocs/langs/es_DO/projects.lang b/htdocs/langs/es_DO/projects.lang deleted file mode 100644 index 1aaa958bd19..00000000000 --- a/htdocs/langs/es_DO/projects.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - projects -ProjectsArea=Projects Area -OpportunityPonderatedAmountDesc=Opportunities amount weighted with probability diff --git a/htdocs/langs/es_DO/propal.lang b/htdocs/langs/es_DO/propal.lang deleted file mode 100644 index 90b012fd6f9..00000000000 --- a/htdocs/langs/es_DO/propal.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - propal -CloseAs=Set status to diff --git a/htdocs/langs/es_MX/accountancy.lang b/htdocs/langs/es_MX/accountancy.lang index c8d2b5fa242..d7588ca2b0d 100644 --- a/htdocs/langs/es_MX/accountancy.lang +++ b/htdocs/langs/es_MX/accountancy.lang @@ -74,8 +74,3 @@ ErrorAccountancyCodeIsAlreadyUse=Error, no es posible eliminar ésta cuenta cont MvtNotCorrectlyBalanced=Movimiento balanceado incorrectamente. Crédito = %s. Débito = %s FicheVentilation=Ficha de desglose GeneralLedgerIsWritten=Las operaciones son escritas en el libro mayor -ExportFormat=Formato de Exportación -Textframe=Marco de texto -Headercol=Nombre de columna en el encabezado del archivo -Headername=Nombre del encabezado -EnabledProduct=In Product diff --git a/htdocs/langs/es_MX/admin.lang b/htdocs/langs/es_MX/admin.lang index d732f668bb6..29810d2d9d6 100644 --- a/htdocs/langs/es_MX/admin.lang +++ b/htdocs/langs/es_MX/admin.lang @@ -70,6 +70,5 @@ DictionaryCanton=Estado/Provincia Upgrade=Actualizar MenuCompanySetup=Empresa/Fundación CompanyName=Nombre -TotalNumberOfActivatedModules=Total number of activated feature modules: %s / %s EmptyNumRefModelDesc=El código es libre. Este código puede ser modificado en cualquier momento. LDAPFieldFirstName=Nombre(s) diff --git a/htdocs/langs/es_MX/productbatch.lang b/htdocs/langs/es_MX/productbatch.lang deleted file mode 100644 index 0bc8f15506f..00000000000 --- a/htdocs/langs/es_MX/productbatch.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - productbatch -BatchDefaultNumber=No definido diff --git a/htdocs/langs/es_MX/projects.lang b/htdocs/langs/es_MX/projects.lang index 3f2eb552a9a..a61042da6ef 100644 --- a/htdocs/langs/es_MX/projects.lang +++ b/htdocs/langs/es_MX/projects.lang @@ -1,4 +1,2 @@ # Dolibarr language file - Source file is en_US - projects -ProjectsArea=Projects Area ProjectReferers=Refiriéndose objetos -OpportunityPonderatedAmountDesc=Opportunities amount weighted with probability diff --git a/htdocs/langs/es_PE/accountancy.lang b/htdocs/langs/es_PE/accountancy.lang deleted file mode 100644 index 4a851f31c28..00000000000 --- a/htdocs/langs/es_PE/accountancy.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - accountancy -EnabledProduct=In Product diff --git a/htdocs/langs/es_PE/admin.lang b/htdocs/langs/es_PE/admin.lang index e02984c803e..75aff423366 100644 --- a/htdocs/langs/es_PE/admin.lang +++ b/htdocs/langs/es_PE/admin.lang @@ -10,7 +10,6 @@ VATManagement=Gestión IGV VATIsUsedDesc=El tipo de IGV propuesto por defecto en las creaciones de presupuestos, facturas, pedidos, etc. Responde a la siguiente regla:
Si el vendedor no está sujeto a IVU, IVU por defecto=0. Final de regla.
Si el país del vendedor= país del comprador entonces IVU por defecto=IVU del producto vendido. Final de regla.
Si vendedor y comprador residen en la Comunidad Europea y el bien vendido= nuevo medio de transportes (auto, barco, avión), IVU por defecto=0 (el IVU debe ser pagado por comprador a la hacienda pública de su país y no al vendedor). Final de regla
Si vendedor y comprador residen en la Comunidad Europea y comprador= particular o empresa sin NIF intracomunitario entonces IVU por defecto=IVU del producto vendido. Final de regla.
Si vendedor y comprador residen en la Comunidad Europea y comprador= empresa con NIF intracomunitario entonces IVU por defecto=0. Final de regla.
Si no, IVU propuesto por defecto=0. Final de regla.
VATIsNotUsedDesc=El tipo de IGV propuesto por defecto es 0. Este es el caso de asociaciones, particulares o algunas pequeñas sociedades. UnitPriceOfProduct=Precio unitario sin IGV de un producto -TotalNumberOfActivatedModules=Total number of activated feature modules: %s / %s OptionVatMode=Opción de carga de IGV OptionVatDefaultDesc=La carga del IGV es:
-en el envío de los bienes (en la práctica se usa la fecha de la factura)
-sobre el pago por los servicios OptionVatDebitOptionDesc=La carga del IGV es:
-en el envío de los bienes (en la práctica se usa la fecha de la factura)
-sobre la facturación de los servicios diff --git a/htdocs/langs/es_PE/cron.lang b/htdocs/langs/es_PE/cron.lang deleted file mode 100644 index d8953584e61..00000000000 --- a/htdocs/langs/es_PE/cron.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - cron -CronDtLastLaunch=Start date of last execution -CronDtLastResult=End date of last execution diff --git a/htdocs/langs/es_PE/margins.lang b/htdocs/langs/es_PE/margins.lang deleted file mode 100644 index f93f8ff712c..00000000000 --- a/htdocs/langs/es_PE/margins.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - margins -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 diff --git a/htdocs/langs/es_PE/projects.lang b/htdocs/langs/es_PE/projects.lang deleted file mode 100644 index 1aaa958bd19..00000000000 --- a/htdocs/langs/es_PE/projects.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - projects -ProjectsArea=Projects Area -OpportunityPonderatedAmountDesc=Opportunities amount weighted with probability diff --git a/htdocs/langs/es_PY/accountancy.lang b/htdocs/langs/es_PY/accountancy.lang deleted file mode 100644 index 4a851f31c28..00000000000 --- a/htdocs/langs/es_PY/accountancy.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - accountancy -EnabledProduct=In Product diff --git a/htdocs/langs/es_PY/admin.lang b/htdocs/langs/es_PY/admin.lang index 61b7d006abf..1c53b65c99c 100644 --- a/htdocs/langs/es_PY/admin.lang +++ b/htdocs/langs/es_PY/admin.lang @@ -2,4 +2,3 @@ AntiVirusCommandExample=Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe
Example for ClamAv: /usr/bin/clamscan AntiVirusParamExample=Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ExampleOfDirectoriesForModelGen=Examples of syntax:
c:\\mydir
/home/mydir
DOL_DATA_ROOT/ecm/ecmdir -TotalNumberOfActivatedModules=Total number of activated feature modules: %s / %s diff --git a/htdocs/langs/es_PY/cron.lang b/htdocs/langs/es_PY/cron.lang deleted file mode 100644 index d8953584e61..00000000000 --- a/htdocs/langs/es_PY/cron.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - cron -CronDtLastLaunch=Start date of last execution -CronDtLastResult=End date of last execution diff --git a/htdocs/langs/es_PY/margins.lang b/htdocs/langs/es_PY/margins.lang deleted file mode 100644 index f93f8ff712c..00000000000 --- a/htdocs/langs/es_PY/margins.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - margins -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 diff --git a/htdocs/langs/es_PY/projects.lang b/htdocs/langs/es_PY/projects.lang deleted file mode 100644 index 1aaa958bd19..00000000000 --- a/htdocs/langs/es_PY/projects.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - projects -ProjectsArea=Projects Area -OpportunityPonderatedAmountDesc=Opportunities amount weighted with probability diff --git a/htdocs/langs/es_PY/propal.lang b/htdocs/langs/es_PY/propal.lang deleted file mode 100644 index 90b012fd6f9..00000000000 --- a/htdocs/langs/es_PY/propal.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - propal -CloseAs=Set status to diff --git a/htdocs/langs/es_VE/accountancy.lang b/htdocs/langs/es_VE/accountancy.lang deleted file mode 100644 index 4a851f31c28..00000000000 --- a/htdocs/langs/es_VE/accountancy.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - accountancy -EnabledProduct=In Product diff --git a/htdocs/langs/es_VE/admin.lang b/htdocs/langs/es_VE/admin.lang index 24b2c4ab445..b357e747026 100644 --- a/htdocs/langs/es_VE/admin.lang +++ b/htdocs/langs/es_VE/admin.lang @@ -2,4 +2,3 @@ DelaiedFullListToSelectCompany=Esperar a que presione una tecla antes de cargar el contenido de los terceros en el combo (Esto puede incrementar el rendimiento si tiene un gran número de terceros) DelaiedFullListToSelectContact=Esperar a que presione una tecla antes de cargar el contenido de los contactos en el combo (Esto puede incrementar el rendimiento si tiene un gran número de contactos) ModuleFamilyCrm=Gestión cliente (CRM) -TotalNumberOfActivatedModules=Total number of activated feature modules: %s / %s diff --git a/htdocs/langs/es_VE/cron.lang b/htdocs/langs/es_VE/cron.lang deleted file mode 100644 index d8953584e61..00000000000 --- a/htdocs/langs/es_VE/cron.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - cron -CronDtLastLaunch=Start date of last execution -CronDtLastResult=End date of last execution diff --git a/htdocs/langs/es_VE/projects.lang b/htdocs/langs/es_VE/projects.lang index c5c96b23307..8fd41c4e71b 100644 --- a/htdocs/langs/es_VE/projects.lang +++ b/htdocs/langs/es_VE/projects.lang @@ -1,4 +1,2 @@ # Dolibarr language file - Source file is en_US - projects -ProjectsArea=Projects Area DocumentModelBaleine=Plantilla de informe tareas del Proyecto -OpportunityPonderatedAmountDesc=Opportunities amount weighted with probability diff --git a/htdocs/langs/fr_BE/accountancy.lang b/htdocs/langs/fr_BE/accountancy.lang index 4a9ea284165..883df19c098 100644 --- a/htdocs/langs/fr_BE/accountancy.lang +++ b/htdocs/langs/fr_BE/accountancy.lang @@ -29,4 +29,3 @@ Pcgtype=Classe du compte Pcgsubtype=Sous-classe du compte DescVentilCustomer=Consulter la subdivision comptable annuelle de vos factures clients TotalMarge=Marge de ventes totale -EnabledProduct=In Product diff --git a/htdocs/langs/fr_BE/admin.lang b/htdocs/langs/fr_BE/admin.lang index e559beee170..a7b7f36bd74 100644 --- a/htdocs/langs/fr_BE/admin.lang +++ b/htdocs/langs/fr_BE/admin.lang @@ -27,4 +27,3 @@ RemoveLock=Supprimez le fichier %s s'il existe pour autoriser l'utilisati AntiVirusCommandExample=Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe
Example for ClamAv: /usr/bin/clamscan AntiVirusParamExample=Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ExampleOfDirectoriesForModelGen=Examples of syntax:
c:\\mydir
/home/mydir
DOL_DATA_ROOT/ecm/ecmdir -TotalNumberOfActivatedModules=Total number of activated feature modules: %s / %s diff --git a/htdocs/langs/fr_BE/cron.lang b/htdocs/langs/fr_BE/cron.lang deleted file mode 100644 index d8953584e61..00000000000 --- a/htdocs/langs/fr_BE/cron.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - cron -CronDtLastLaunch=Start date of last execution -CronDtLastResult=End date of last execution diff --git a/htdocs/langs/fr_BE/margins.lang b/htdocs/langs/fr_BE/margins.lang deleted file mode 100644 index f93f8ff712c..00000000000 --- a/htdocs/langs/fr_BE/margins.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - margins -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 diff --git a/htdocs/langs/fr_BE/projects.lang b/htdocs/langs/fr_BE/projects.lang deleted file mode 100644 index 1aaa958bd19..00000000000 --- a/htdocs/langs/fr_BE/projects.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - projects -ProjectsArea=Projects Area -OpportunityPonderatedAmountDesc=Opportunities amount weighted with probability diff --git a/htdocs/langs/fr_BE/propal.lang b/htdocs/langs/fr_BE/propal.lang deleted file mode 100644 index 90b012fd6f9..00000000000 --- a/htdocs/langs/fr_BE/propal.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - propal -CloseAs=Set status to diff --git a/htdocs/langs/fr_CA/accountancy.lang b/htdocs/langs/fr_CA/accountancy.lang index d26f18aaab9..5512e79cc89 100644 --- a/htdocs/langs/fr_CA/accountancy.lang +++ b/htdocs/langs/fr_CA/accountancy.lang @@ -21,15 +21,6 @@ NumMvts=Nombre de mouvement TotalVente=Chiffre d'affaires total avant taxes MvtNotCorrectlyBalanced=Le mouvement n'est pas correctement équilibré. Crédit = %s. Débit = %s GeneralLedgerIsWritten=Les opérations sont écrites dans le grand livre général -ExportFormat=Format d'exportation -Prefixname=Préfixe du fichier exporté -Separate=Séparateur d'export -Headercol=Nom de colonne dans l'entête du fichier -Fieldname=Nom du champs -Headername=Nom de l'entête -EnabledProduct=En produits -EnabledTiers=En tiers -EnabledVat=En TPS/TVH InitAccountancy=Compabilité initiale InitAccountancyDesc=Cette page peut être utilisée pour initialiser un compte comptable sur les produits et services qui ne disposent pas de compte comptable défini pour les ventes et les achats . Vérifiez avant que l'installation du module de comptabilité est terminée. OptionModeProductSell=Mode de ventes diff --git a/htdocs/langs/fr_CA/admin.lang b/htdocs/langs/fr_CA/admin.lang index 556347c5f94..94267174557 100644 --- a/htdocs/langs/fr_CA/admin.lang +++ b/htdocs/langs/fr_CA/admin.lang @@ -37,8 +37,6 @@ Module2660Desc=Activer le client Dolibarr de services Web (peut être utilisé p Module3100Desc=Ajouter un bouton Skype dans la carte des utilisateurs / tiers / contacts / membres Module4000Name=Gestion des ressources humaines Module4000Desc=Ressources humaines -Module20000Name=Gestion des demandes de congés -Module20000Desc=Déclaration et suivi des congés des employés Module39000Name=Lot/Série du produit Module55000Name=Sondage, enquête ou vote Module55000Desc=Module pour faire des sondages en ligne, des enquêtes ou des votes (comme Doodle , Studs , Rdvz , ... ) diff --git a/htdocs/langs/fr_CA/cron.lang b/htdocs/langs/fr_CA/cron.lang deleted file mode 100644 index d8953584e61..00000000000 --- a/htdocs/langs/fr_CA/cron.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - cron -CronDtLastLaunch=Start date of last execution -CronDtLastResult=End date of last execution diff --git a/htdocs/langs/fr_CA/margins.lang b/htdocs/langs/fr_CA/margins.lang index 7c7fec2d4fd..285abe5dd0d 100644 --- a/htdocs/langs/fr_CA/margins.lang +++ b/htdocs/langs/fr_CA/margins.lang @@ -1,4 +1,2 @@ # Dolibarr language file - Source file is en_US - margins ProductService=Produit et service -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 diff --git a/htdocs/langs/fr_CA/projects.lang b/htdocs/langs/fr_CA/projects.lang deleted file mode 100644 index 1aaa958bd19..00000000000 --- a/htdocs/langs/fr_CA/projects.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - projects -ProjectsArea=Projects Area -OpportunityPonderatedAmountDesc=Opportunities amount weighted with probability diff --git a/htdocs/langs/fr_CA/propal.lang b/htdocs/langs/fr_CA/propal.lang index deb13011873..0f173ba79fb 100644 --- a/htdocs/langs/fr_CA/propal.lang +++ b/htdocs/langs/fr_CA/propal.lang @@ -17,7 +17,6 @@ RefProposal=Référence de la proposition commerciale SendPropalByMail=Envoyer proposition commerciale par courriel ErrorCantOpenDir=Impossible d'ouvrir le dossier DateEndPropal=Date de validité se terminant -CloseAs=Set status to BuildBill=Construire facture ErrorPropalNotFound=Pas de proposition %s trouvées Estimate=Estimé : diff --git a/htdocs/langs/fr_CH/accountancy.lang b/htdocs/langs/fr_CH/accountancy.lang deleted file mode 100644 index 4a851f31c28..00000000000 --- a/htdocs/langs/fr_CH/accountancy.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - accountancy -EnabledProduct=In Product diff --git a/htdocs/langs/fr_CH/admin.lang b/htdocs/langs/fr_CH/admin.lang index 61b7d006abf..1c53b65c99c 100644 --- a/htdocs/langs/fr_CH/admin.lang +++ b/htdocs/langs/fr_CH/admin.lang @@ -2,4 +2,3 @@ AntiVirusCommandExample=Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe
Example for ClamAv: /usr/bin/clamscan AntiVirusParamExample=Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ExampleOfDirectoriesForModelGen=Examples of syntax:
c:\\mydir
/home/mydir
DOL_DATA_ROOT/ecm/ecmdir -TotalNumberOfActivatedModules=Total number of activated feature modules: %s / %s diff --git a/htdocs/langs/fr_CH/cron.lang b/htdocs/langs/fr_CH/cron.lang deleted file mode 100644 index d8953584e61..00000000000 --- a/htdocs/langs/fr_CH/cron.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - cron -CronDtLastLaunch=Start date of last execution -CronDtLastResult=End date of last execution diff --git a/htdocs/langs/fr_CH/margins.lang b/htdocs/langs/fr_CH/margins.lang deleted file mode 100644 index f93f8ff712c..00000000000 --- a/htdocs/langs/fr_CH/margins.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - margins -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 diff --git a/htdocs/langs/fr_CH/projects.lang b/htdocs/langs/fr_CH/projects.lang deleted file mode 100644 index 1aaa958bd19..00000000000 --- a/htdocs/langs/fr_CH/projects.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - projects -ProjectsArea=Projects Area -OpportunityPonderatedAmountDesc=Opportunities amount weighted with probability diff --git a/htdocs/langs/fr_CH/propal.lang b/htdocs/langs/fr_CH/propal.lang deleted file mode 100644 index 90b012fd6f9..00000000000 --- a/htdocs/langs/fr_CH/propal.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - propal -CloseAs=Set status to diff --git a/htdocs/langs/pt_BR/admin.lang b/htdocs/langs/pt_BR/admin.lang index bbc5e8084a0..06a2aa612d7 100644 --- a/htdocs/langs/pt_BR/admin.lang +++ b/htdocs/langs/pt_BR/admin.lang @@ -693,7 +693,6 @@ DictionarySendingMethods=Métodos do transporte DictionaryStaff=Pessoal DictionaryOrderMethods=Métodos de compra DictionarySource=Origem das propostas / ordens -DictionaryAccountancyplan=Plano de contas DictionaryAccountancysystem=Modelos para o plano de contas DictionaryEMailTemplates=Modelos de E-mails DictionaryProspectStatus=Status de Prospecção diff --git a/htdocs/langs/pt_BR/bills.lang b/htdocs/langs/pt_BR/bills.lang index 1b0d7336e57..d1514bb2a44 100644 --- a/htdocs/langs/pt_BR/bills.lang +++ b/htdocs/langs/pt_BR/bills.lang @@ -200,7 +200,6 @@ SendReminderBillByMail=Enviar o restante por e-mail RelatedCommercialProposals=Orçamentos relacionados MenuToValid=Validar DateMaxPayment=Pagamento antes do vencimento -DateEcheance=Data limite do vencimento DateInvoice=Data da fatura NoInvoice=Nenhuma fatura ClassifyBill=Classificar fatura diff --git a/htdocs/langs/pt_BR/cron.lang b/htdocs/langs/pt_BR/cron.lang index 4df1ffe9537..91828eeaccf 100644 --- a/htdocs/langs/pt_BR/cron.lang +++ b/htdocs/langs/pt_BR/cron.lang @@ -65,4 +65,3 @@ CronType_method=Chamar metodo da classe Dolibarr CronType_command=Comando Shell CronCannotLoadClass=Nao e possivel carregar a classe %s ou o objeto %s UseMenuModuleToolsToAddCronJobs=Vá ao menu "Principal - Módulo de ferramentas - Lista de trabalhos" para ver e editar a programação dos trabalhos. -TaskDisabled=trabalho desativado From a5d7c303e7e5b0cf60bca08d9de2c1adcf44d7e9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 2 Jun 2016 21:11:14 +0200 Subject: [PATCH 067/245] FIX Button must be out of tabs --- htdocs/compta/sociales/charges.php | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/htdocs/compta/sociales/charges.php b/htdocs/compta/sociales/charges.php index abcb5e0ad06..b3e5d21ffdc 100644 --- a/htdocs/compta/sociales/charges.php +++ b/htdocs/compta/sociales/charges.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2004-2016 Laurent Destailleur * Copyright (C) 2005-2013 Regis Houssin * * This program is free software; you can redistribute it and/or modify @@ -325,8 +325,6 @@ if ($id > 0) { $head=tax_prepare_head($object); - dol_fiche_head($head, 'card', $langs->trans("SocialContribution"),0,'bill'); - // Clone confirmation if ($action === 'clone') { @@ -357,10 +355,13 @@ if ($id > 0) print ''; } + + dol_fiche_head($head, 'card', $langs->trans("SocialContribution"),0,'bill'); + print ''; // Ref - print '"; @@ -488,9 +489,12 @@ if ($id > 0) print '
'.$langs->trans("Ref").''; + print '
'.$langs->trans("Ref").''; print $form->showrefnav($object,'id'); print "
'; + dol_fiche_end(); + + if ($action == 'edit') { - print '
'; + print '
'; print ''; print '   '; print ''; @@ -499,7 +503,6 @@ if ($id > 0) if ($action == 'edit') print "\n"; - dol_fiche_end(); /* From 7f98b1ceff0728962d8f9096f04eccf9956219c4 Mon Sep 17 00:00:00 2001 From: Sebastien Bechet Date: Fri, 3 Jun 2016 10:21:37 +0200 Subject: [PATCH 068/245] Regression --- htdocs/user/agenda_extsites.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/htdocs/user/agenda_extsites.php b/htdocs/user/agenda_extsites.php index 5d60a701779..43386910a95 100644 --- a/htdocs/user/agenda_extsites.php +++ b/htdocs/user/agenda_extsites.php @@ -104,17 +104,17 @@ if (empty($reshook)) { break; } - if (! $error) - { - $result=dol_set_user_param($db, $conf, $object, $tabparam); - if (! $result > 0) $error++; - } + $tabparam['AGENDA_EXT_NAME_'.$id.'_'.$i]=$name; + $tabparam['AGENDA_EXT_SRC_'.$id.'_'.$i]=$src; + $tabparam['AGENDA_EXT_OFFSETTZ_'.$id.'_'.$i]=$offsettz; + $tabparam['AGENDA_EXT_COLOR_'.$id.'_'.$i]=$color; + $tabparam['AGENDA_EXT_ENABLED_'.$id.'_'.$i]=$enabled; $i ++; } if (!$error) { - $result = dol_set_user_param($db, $conf, $fuser, $tabparam); + $result = dol_set_user_param($db, $conf, $object, $tabparam); if (!$result > 0) { $error ++; } From 99a28a9dcd68bc28d3aa4030096c5d67c669e597 Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Fri, 3 Jun 2016 16:15:27 +0200 Subject: [PATCH 069/245] Fix Travis error introduced in commit '236ecf01' --- htdocs/product/stock/replenish.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/product/stock/replenish.php b/htdocs/product/stock/replenish.php index aed3f5ed73c..cdbb4cafad3 100644 --- a/htdocs/product/stock/replenish.php +++ b/htdocs/product/stock/replenish.php @@ -1,7 +1,8 @@ - * Copyright (C) 2013-2015 Laurent Destaileur + * Copyright (C) 2013-2016 Laurent Destaileur * Copyright (C) 2014 Regis Houssin + * Copyright (C) 2016 Juanjo Menent * * 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 @@ -73,7 +74,7 @@ if (!$sortorder) { $virtualdiffersfromphysical=0; if (! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT) || ! empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER) -|| ! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT_CLOSE) +|| ! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT_CLOSE)) { $virtualdiffersfromphysical=1; // According to increase/decrease stock options, virtual and physical stock may differs. } From cd79675f7acb61039e4bbcfbb9f7cd9c892dafdc Mon Sep 17 00:00:00 2001 From: phf Date: Fri, 3 Jun 2016 21:16:25 +0200 Subject: [PATCH 070/245] Fix using extrafield type "link to object" show error on edit card --- htdocs/core/class/extrafields.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 8d61733e138..283d189377c 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -1133,7 +1133,7 @@ class ExtraFields if ($InfoFieldList[0] && class_exists($InfoFieldList[0])) { $object = new $InfoFieldList[0]($this->db); - $object->fetch($value); + if (!empty($value)) $object->fetch($value); $valuetoshow=$object->ref; if ($object->element == 'societe') $valuetoshow=$object->name; // Special case for thirdparty because ref is id because name is not unique $out.=''; From 776118a1526677dc0edb3ff25385965cfa803fca Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 3 Jun 2016 21:32:12 +0200 Subject: [PATCH 071/245] FIX Translation of lithuania --- htdocs/langs/en_US/dict.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/langs/en_US/dict.lang b/htdocs/langs/en_US/dict.lang index bef1f4821b4..8971d8e82d4 100644 --- a/htdocs/langs/en_US/dict.lang +++ b/htdocs/langs/en_US/dict.lang @@ -138,7 +138,7 @@ CountryLS=Lesotho CountryLR=Liberia CountryLY=Libyan CountryLI=Liechtenstein -CountryLT=Lituania +CountryLT=Lithuania CountryLU=Luxembourg CountryMO=Macao CountryMK=Macedonia, the former Yugoslav of From b339dc18f4a3f4f8ffb1f98c0053fdb3b04280a2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 3 Jun 2016 21:32:36 +0200 Subject: [PATCH 072/245] Update changelog --- ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/ChangeLog b/ChangeLog index 40e427bae1b..1bb297bae79 100644 --- a/ChangeLog +++ b/ChangeLog @@ -121,6 +121,7 @@ NEW: When emailing is not sent completely, show progression. For developers: +NEW: Add a css class style called 'reposition', so when clicking on a link with this class will move scrollbarr to be placed at same page location. NEW: TimeZone can be supplied to mktime NEW: hook in shipment card NEW: Deprecated Societe::set_prospect_level, Societe::set_commnucation_level, Societe::set_OutstandingBill functions From 448c394f2a183a379e04e04b57f66527b63b65b6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 3 Jun 2016 22:10:33 +0200 Subject: [PATCH 073/245] Fix date of recurrin invoice --- 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 3a19605ee5b..3ef9d716bfb 100644 --- a/htdocs/compta/facture/class/facture-rec.class.php +++ b/htdocs/compta/facture/class/facture-rec.class.php @@ -666,7 +666,7 @@ class FactureRec extends CommonInvoice $facture->fac_rec = $facturerec->id; // We will create $facture from this recurring invoice $facture->type = self::TYPE_STANDARD; $facture->brouillon = 1; - $facture->date = $now; + $facture->date = $facturerec->date_when; // We could also use dol_now here but we prefer date_when so invoice has real date when we would like even if we generate later. $facture->socid = $facturerec->socid; $invoiceidgenerated = $facture->create($user); // This will also update fields of recurring invoice From fb724566f0444810c3cd3b496413b088a4d6dcb8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 3 Jun 2016 22:15:07 +0200 Subject: [PATCH 074/245] FIX #5252 --- htdocs/projet/card.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index c489910064d..a8e579c950c 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -886,7 +886,7 @@ else } // Close - if (($object->statut == 0 || $object->statut == 1) && $user->rights->projet->creer) + if ($object->statut == 1 && $user->rights->projet->creer) { if ($userWrite > 0) { @@ -981,9 +981,9 @@ else } // Delete - if ($user->rights->projet->supprimer) + if ($user->rights->projet->supprimer || ($object->statut == 0 && $user->rights->projet->creer)) { - if ($userDelete > 0) + if ($userDelete > 0 || ($object->statut == 0 && $user->rights->projet->creer)) { print ''; } From 149c6916f8bbd686ffb872d5ae43e6efcc212c32 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 3 Jun 2016 22:20:58 +0200 Subject: [PATCH 075/245] FIX ##5263 --- htdocs/comm/propal/class/propal.class.php | 9 ++++++--- htdocs/commande/class/commande.class.php | 9 ++++++--- htdocs/contrat/class/contrat.class.php | 7 +++++-- htdocs/fourn/class/fournisseur.facture.class.php | 7 +++++-- .../supplier_proposal/class/supplier_proposal.class.php | 9 ++++++--- 5 files changed, 28 insertions(+), 13 deletions(-) diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index 56c3839dcb6..9874b14473f 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -2674,9 +2674,12 @@ class Propal extends CommonObject $line->remise_percent=00; } - $prodid = mt_rand(1, $num_prods); - $line->fk_product=$prodids[$prodid]; - + if ($num_prods > 0) + { + $prodid = mt_rand(1, $num_prods); + $line->fk_product=$prodids[$prodid]; + } + $this->lines[$xnbp]=$line; $this->total_ht += $line->total_ht; diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 40d71775a08..4a2d05e9a92 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -3278,9 +3278,12 @@ class Commande extends CommonOrder $line->total_tva=19.6; $line->remise_percent=0; } - $prodid = mt_rand(1, $num_prods); - $line->fk_product=$prodids[$prodid]; - + if ($num_prods > 0) + { + $prodid = mt_rand(1, $num_prods); + $line->fk_product=$prodids[$prodid]; + } + $this->lines[$xnbp]=$line; $this->total_ht += $line->total_ht; diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php index 8f3c87725fa..d2c094fb025 100644 --- a/htdocs/contrat/class/contrat.class.php +++ b/htdocs/contrat/class/contrat.class.php @@ -2147,8 +2147,11 @@ class Contrat extends CommonObject $line->total_ht=90; $line->total_ttc=107.64; // 90 * 1.196 $line->total_tva=17.64; - $prodid = mt_rand(1, $num_prods); - $line->fk_product=$prodids[$prodid]; + if ($num_prods > 0) + { + $prodid = mt_rand(1, $num_prods); + $line->fk_product=$prodids[$prodid]; + } $this->lines[$xnbp]=$line; $xnbp++; } diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 30296bc2e22..728ff9ac674 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -1708,8 +1708,11 @@ class FactureFournisseur extends CommonInvoice $line->remise_percent=0; } - $prodid = mt_rand(1, $num_prods); - $line->fk_product=$prodids[$prodid]; + if ($num_prods > 0) + { + $prodid = mt_rand(1, $num_prods); + $line->fk_product=$prodids[$prodid]; + } $line->product_type=0; $this->lines[$xnbp]=$line; diff --git a/htdocs/supplier_proposal/class/supplier_proposal.class.php b/htdocs/supplier_proposal/class/supplier_proposal.class.php index f5675db86f3..fd7f266e159 100644 --- a/htdocs/supplier_proposal/class/supplier_proposal.class.php +++ b/htdocs/supplier_proposal/class/supplier_proposal.class.php @@ -2244,9 +2244,12 @@ class SupplierProposal extends CommonObject $line->remise_percent=00; } - $prodid = mt_rand(1, $num_prods); - $line->fk_product=$prodids[$prodid]; - + if ($num_prods > 0) + { + $prodid = mt_rand(1, $num_prods); + $line->fk_product=$prodids[$prodid]; + } + $this->lines[$xnbp]=$line; $this->total_ht += $line->total_ht; From 778b05c3416f9ba7c89792ce7e97a00229280f8f Mon Sep 17 00:00:00 2001 From: phf Date: Fri, 3 Jun 2016 23:06:53 +0200 Subject: [PATCH 076/245] Fix #4632 --- htdocs/societe/soc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/societe/soc.php b/htdocs/societe/soc.php index 76a2c948636..76680649958 100644 --- a/htdocs/societe/soc.php +++ b/htdocs/societe/soc.php @@ -1863,7 +1863,7 @@ else /* * View */ - $res=$object->fetch_optionals($object->id,$extralabels); + if (!empty($object->id)) $res=$object->fetch_optionals($object->id,$extralabels); //if ($res < 0) { dol_print_error($db); exit; } From c9c7045a6f0ed6d925ac89635a45eeccd492b077 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Fri, 3 Jun 2016 23:34:37 +0200 Subject: [PATCH 077/245] Fix access to project task time spent creation #5249 --- htdocs/projet/tasks/time.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/projet/tasks/time.php b/htdocs/projet/tasks/time.php index e54eef4cf6e..7f820304b60 100644 --- a/htdocs/projet/tasks/time.php +++ b/htdocs/projet/tasks/time.php @@ -359,7 +359,7 @@ if ($id > 0 || ! empty($ref)) /* * Form to add time spent */ - if ($user->rights->projet->creer) + if ($user->rights->projet->lire) { print '
'; From 923952fb250222a379ab83f219caf2dc1c5bebc0 Mon Sep 17 00:00:00 2001 From: phf Date: Fri, 3 Jun 2016 23:36:58 +0200 Subject: [PATCH 078/245] Fix conf useful has been commented --- htdocs/admin/multicurrency.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/htdocs/admin/multicurrency.php b/htdocs/admin/multicurrency.php index bd49265436d..e47b2c9068e 100644 --- a/htdocs/admin/multicurrency.php +++ b/htdocs/admin/multicurrency.php @@ -264,7 +264,6 @@ print '' print ''; print '
'.$langs->transnoentitiesnoconv("multicurrency_appCurrencySource").'
'; print '
'; From 18424812db785ee41eea1284136a14e513efedf8 Mon Sep 17 00:00:00 2001 From: cla Date: Fri, 3 Jun 2016 23:49:08 +0200 Subject: [PATCH 079/245] closes #5192. I deleted the line and moved last_insert_id() functions 3 lines under --- htdocs/fourn/class/fournisseur.commande.class.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index c3f21a15f4c..e0939258ad1 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -1452,12 +1452,10 @@ class CommandeFournisseur extends CommonOrder //print $sql; if ($resql) { - $this->rowid = $this->db->last_insert_id(MAIN_DB_PREFIX.'commande_fournisseurdet'); - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used { $linetmp = new CommandeFournisseurLigne($this->db); - $linetmp->id=$this->rowid; + $linetmp->id=$this->db->last_insert_id(MAIN_DB_PREFIX.'commande_fournisseurdet'); $linetmp->array_options = $array_options; $result=$linetmp->insertExtraFields(); if ($result < 0) From 8b0b3b1a9dc1ac1db0b0d70a14005c9043945a1d Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Fri, 3 Jun 2016 23:49:34 +0200 Subject: [PATCH 080/245] PMP available only if stock module enabled --- htdocs/fourn/ajax/getSupplierPrices.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/htdocs/fourn/ajax/getSupplierPrices.php b/htdocs/fourn/ajax/getSupplierPrices.php index 664c8a2da4e..ae711d2f01b 100644 --- a/htdocs/fourn/ajax/getSupplierPrices.php +++ b/htdocs/fourn/ajax/getSupplierPrices.php @@ -125,9 +125,11 @@ if ($idprod > 0) } } - // Add price for pmp - $price=$producttmp->pmp; - $prices[] = array("id" => 'pmpprice', "price" => $price, "label" => $langs->trans("PMPValueShort").': '.price($price,0,$langs,0,0,-1,$conf->currency), "title" => $langs->trans("PMPValueShort").': '.price($price,0,$langs,0,0,-1,$conf->currency)); + if(!empty($conf->stock->enabled)) { + // Add price for pmp + $price=$producttmp->pmp; + $prices[] = array("id" => 'pmpprice', "price" => $price, "label" => $langs->trans("PMPValueShort").': '.price($price,0,$langs,0,0,-1,$conf->currency), "title" => $langs->trans("PMPValueShort").': '.price($price,0,$langs,0,0,-1,$conf->currency)); + } } echo json_encode($prices); From 66c73015b2aa8de2f43e494fafe9a1bb84e2f7c8 Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Fri, 3 Jun 2016 23:58:54 +0200 Subject: [PATCH 081/245] 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 deb7c407adbdb7bb8076fb5755498b8631636d39 Mon Sep 17 00:00:00 2001 From: cla Date: Sat, 4 Jun 2016 00:08:13 +0200 Subject: [PATCH 082/245] FIX #4643 --- htdocs/fourn/commande/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fourn/commande/list.php b/htdocs/fourn/commande/list.php index 844b7e9f700..8dbddcde2ab 100644 --- a/htdocs/fourn/commande/list.php +++ b/htdocs/fourn/commande/list.php @@ -132,7 +132,7 @@ if ($status) if ($status == '6,7') $title.=' - '.$langs->trans("StatusOrderCanceled"); else $title.=' - '.$langs->trans($commandestatic->statuts[$status]); } -if ($billed) $title.=' - '.$langs->trans("Billed"); +if ($billed > 0) $title.=' - '.$langs->trans("Billed"); llxHeader('',$title); From 8901b99e2dfc1eab203fd40a1a7beae04816d4b7 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Sat, 4 Jun 2016 00:14:08 +0200 Subject: [PATCH 083/245] Fix import model not correctly saved #5185 --- htdocs/install/mysql/migration/3.8.0-3.9.0.sql | 1 + htdocs/install/mysql/tables/llx_import_model.sql | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) 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 74f89441f64..35ebf79e1ef 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 @@ -610,3 +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 diff --git a/htdocs/install/mysql/tables/llx_import_model.sql b/htdocs/install/mysql/tables/llx_import_model.sql index cb5266a0c41..37ab1c00c12 100644 --- a/htdocs/install/mysql/tables/llx_import_model.sql +++ b/htdocs/install/mysql/tables/llx_import_model.sql @@ -23,6 +23,6 @@ create table llx_import_model rowid integer AUTO_INCREMENT PRIMARY KEY, fk_user integer DEFAULT 0 NOT NULL, label varchar(50) NOT NULL, - type varchar(20) NOT NULL, + type varchar(50) NOT NULL, field text NOT NULL )ENGINE=innodb; \ No newline at end of file From 1227ee5eb68098cf2095720172f65dbc3377db75 Mon Sep 17 00:00:00 2001 From: novalore Date: Sat, 4 Jun 2016 00:14:56 +0200 Subject: [PATCH 084/245] Miscellaneous typos and errors in en_US lang files --- htdocs/adherents/admin/public.php | 2 +- htdocs/langs/en_US/admin.lang | 8 +- htdocs/langs/en_US/banks.lang | 4 +- htdocs/langs/en_US/bills.lang | 26 +++--- htdocs/langs/en_US/boxes.lang | 100 +++++++++++----------- htdocs/langs/en_US/commercial.lang | 8 +- htdocs/langs/en_US/companies.lang | 10 +-- htdocs/langs/en_US/compta.lang | 4 +- htdocs/langs/en_US/contracts.lang | 8 +- htdocs/langs/en_US/cron.lang | 2 +- htdocs/langs/en_US/donations.lang | 2 +- htdocs/langs/en_US/errors.lang | 6 +- htdocs/langs/en_US/holiday.lang | 8 +- htdocs/langs/en_US/install.lang | 10 +-- htdocs/langs/en_US/interventions.lang | 4 +- htdocs/langs/en_US/mailmanspip.lang | 8 +- htdocs/langs/en_US/mails.lang | 4 +- htdocs/langs/en_US/main.lang | 6 +- htdocs/langs/en_US/members.lang | 8 +- htdocs/langs/en_US/orders.lang | 10 +-- htdocs/langs/en_US/products.lang | 12 +-- htdocs/langs/en_US/projects.lang | 4 +- htdocs/langs/en_US/propal.lang | 10 +-- htdocs/langs/en_US/sendings.lang | 2 +- htdocs/langs/en_US/supplier_proposal.lang | 4 +- htdocs/langs/en_US/users.lang | 8 +- htdocs/langs/en_US/withdrawals.lang | 6 +- 27 files changed, 142 insertions(+), 142 deletions(-) diff --git a/htdocs/adherents/admin/public.php b/htdocs/adherents/admin/public.php index 6f5d1de5c87..a23c1f40def 100644 --- a/htdocs/adherents/admin/public.php +++ b/htdocs/adherents/admin/public.php @@ -200,7 +200,7 @@ if (! empty($conf->paybox->enabled) || ! empty($conf->paypal->enabled)) print ''; print $langs->trans("MEMBER_PAYONLINE_SENDEMAIL"); print ''; - print ''; + print ''; print "\n"; } diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index d9b55da40ec..99eb86d633e 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -993,9 +993,9 @@ Delays_MAIN_DELAY_MEMBERS=Tolerance delay (in days) before alert on delayed memb Delays_MAIN_DELAY_CHEQUES_TO_DEPOSIT=Tolerance delay (in days) before alert for cheques deposit to do Delays_MAIN_DELAY_EXPENSEREPORTS=Tolerance delay (in days) before alert for expense reports to approve SetupDescription1=All parameters available in the setup area allow you to setup Dolibarr before starting using it. -SetupDescription2=The 2 most important setup steps are the 2 first ones in the left setup menu, this means Company/foundation setup page and Modules setup page: -SetupDescription3=Parameters in menu Setup -> Company/foundation are required because input information is used on Dolibarr displays and to modify Dolibarr behaviour (for example for features related to your country). -SetupDescription4=Parameters in menu Setup -> Modules are required because Dolibarr is not a fixed ERP/CRM but a sum of several modules, all more or less independant. It's only after activating modules you're interesting in that you will see features appeared in menus. +SetupDescription2=The two most important setup steps are the first two in the setup menu on the left: Company/foundation setup page and Modules setup page: +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 @@ -1750,4 +1750,4 @@ AddModels=Add document or numbering templates AddSubstitutions=Add keys substitutions DetectionNotPossible=Detection not possible UrlToGetKeyToUseAPIs=Url to get token to use API (once token has been received it is saved on database user table and will be checked on each future access) -ListOfAvailableAPIs=List of available APIs \ No newline at end of file +ListOfAvailableAPIs=List of available APIs diff --git a/htdocs/langs/en_US/banks.lang b/htdocs/langs/en_US/banks.lang index a1e05481be9..8ba28807bca 100644 --- a/htdocs/langs/en_US/banks.lang +++ b/htdocs/langs/en_US/banks.lang @@ -141,9 +141,9 @@ 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 succesfully +PaymentNumberUpdateSucceeded=Payment number updated successfully PaymentNumberUpdateFailed=Payment number could not be updated -PaymentDateUpdateSucceeded=Payment date update succesfully +PaymentDateUpdateSucceeded=Payment date updated successfully PaymentDateUpdateFailed=Payment date could not be updated Transactions=Transactions BankTransactionLine=Bank transaction diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang index a94c192ef4a..c1e61b9d935 100644 --- a/htdocs/langs/en_US/bills.lang +++ b/htdocs/langs/en_US/bills.lang @@ -11,7 +11,7 @@ BillsSuppliersUnpaidForCompany=Unpaid supplier's invoices for %s BillsLate=Late payments BillsStatistics=Customers invoices statistics BillsStatisticsSuppliers=Suppliers invoices statistics -DisabledBecauseNotErasable=Disabled because can not be erased +DisabledBecauseNotErasable=Disabled because cannot be erased InvoiceStandard=Standard invoice InvoiceStandardAsk=Standard invoice InvoiceStandardDesc=This kind of invoice is the common invoice. @@ -322,24 +322,24 @@ NextDateToExecution=Date for next invoice generation DateLastGeneration=Date of last generation MaxPeriodNumber=Max nb of invoice generation NbOfGenerationDone=Nb of invoice generation already done -InvoiceAutoValidate=Automatically validate invoice +InvoiceAutoValidate=Validate invoices automatically GeneratedFromRecurringInvoice=Generated from template recurring invoice %s -DateIsNotEnough=Date not yet reached +DateIsNotEnough=Date not reached yet InvoiceGeneratedFromTemplate=Invoice %s generated from recurring template invoice %s # PaymentConditions PaymentConditionShortRECEP=Immediate PaymentConditionRECEP=Immediate PaymentConditionShort30D=30 days PaymentCondition30D=30 days -PaymentConditionShort30DENDMONTH=30 days end of month -PaymentCondition30DENDMONTH=30 days end of month +PaymentConditionShort30DENDMONTH=30 days of month-end +PaymentCondition30DENDMONTH=Within 30 days following the end of the month PaymentConditionShort60D=60 days PaymentCondition60D=60 days -PaymentConditionShort60DENDMONTH=60 days end of month -PaymentCondition60DENDMONTH=60 days end of month +PaymentConditionShort60DENDMONTH=60 days of month-end +PaymentCondition60DENDMONTH=Within 60 days following the end of the month PaymentConditionShortPT_DELIVERY=Delivery PaymentConditionPT_DELIVERY=On delivery -PaymentConditionShortPT_ORDER=On order +PaymentConditionShortPT_ORDER=Order PaymentConditionPT_ORDER=On order PaymentConditionShortPT_5050=50-50 PaymentConditionPT_5050=50%% in advance, 50%% on delivery @@ -360,8 +360,8 @@ PaymentTypeTIP=Interbank Payment PaymentTypeShortTIP=Interbank Payment PaymentTypeVAD=On line payment PaymentTypeShortVAD=On line payment -PaymentTypeTRA=Traite -PaymentTypeShortTRA=Traite +PaymentTypeTRA=Bank draft +PaymentTypeShortTRA=Draft PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor BankDetails=Bank details @@ -369,7 +369,7 @@ BankCode=Bank code DeskCode=Desk code BankAccountNumber=Account number BankAccountNumberKey=Key -Residence=Domiciliation +Residence=Direct debit IBANNumber=IBAN number IBAN=IBAN BIC=BIC/SWIFT @@ -425,7 +425,7 @@ ExpectedToPay=Expected payment CantRemoveConciliatedPayment=Can't remove conciliated payment PayedByThisPayment=Paid by this payment ClosePaidInvoicesAutomatically=Classify "Paid" all standard, situation or replacement invoices entirely paid. -ClosePaidCreditNotesAutomatically=Classify "Paid" all credit notes entirely paid back. +ClosePaidCreditNotesAutomatically=Classify "Paid" all credit notes entirely paid back. AllCompletelyPayedInvoiceWillBeClosed=All invoice with no remain to pay will be automatically closed to status "Paid". ToMakePayment=Pay ToMakePaymentBack=Pay back @@ -459,7 +459,7 @@ SituationDeduction=Situation subtraction Progress=Progress ModifyAllLines=Modify all lines CreateNextSituationInvoice=Create next situation -NotLastInCycle=This invoice in not the last in cycle and must not be modified. +NotLastInCycle=This invoice is not the latest in cycle and must not be modified. DisabledBecauseNotLastInCycle=The next situation already exists. DisabledBecauseFinal=This situation is final. CantBeLessThanMinPercent=The progress can't be smaller than its value in the previous situation. diff --git a/htdocs/langs/en_US/boxes.lang b/htdocs/langs/en_US/boxes.lang index db0d757315d..a584802048d 100644 --- a/htdocs/langs/en_US/boxes.lang +++ b/htdocs/langs/en_US/boxes.lang @@ -1,69 +1,69 @@ # Dolibarr language file - Source file is en_US - boxes BoxLastRssInfos=Rss information -BoxLastProducts=Last %s products/services +BoxLastProducts=Latest %s products/services BoxProductsAlertStock=Products in stock alert -BoxLastProductsInContract=Last %s contracted products/services -BoxLastSupplierBills=Last supplier's invoices -BoxLastCustomerBills=Last customer's invoices -BoxOldestUnpaidCustomerBills=Oldest unpaid customer's invoices -BoxOldestUnpaidSupplierBills=Oldest unpaid supplier's invoices -BoxLastProposals=Last commercial proposals -BoxLastProspects=Last modified prospects -BoxLastCustomers=Last modified customers -BoxLastSuppliers=Last modified suppliers -BoxLastCustomerOrders=Last customer orders -BoxLastValidatedCustomerOrders=Last validated customer orders -BoxLastBooks=Last books -BoxLastActions=Last actions -BoxLastContracts=Last contracts -BoxLastContacts=Last contacts/addresses -BoxLastMembers=Last members -BoxFicheInter=Last interventions +BoxLastProductsInContract=Latest %s contracted products/services +BoxLastSupplierBills=Latest supplier invoices +BoxLastCustomerBills=Latest customer invoices +BoxOldestUnpaidCustomerBills=Oldest unpaid customer invoices +BoxOldestUnpaidSupplierBills=Oldest unpaid supplier invoices +BoxLastProposals=Latest commercial proposals +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=Last %s recorded books +BoxTitleLastBooks=Latest %s recorded bookmarks BoxTitleNbOfCustomers=Number of clients -BoxTitleLastRssInfos=Last %s news from %s -BoxTitleLastProducts=Last %s modified products/services +BoxTitleLastRssInfos=Latest %s news from %s +BoxTitleLastProducts=Latest %s modified products/services BoxTitleProductsAlertStock=Products in stock alert -BoxTitleLastCustomerOrders=Last %s customer orders -BoxTitleLastModifiedCustomerOrders=Last %s modified customer orders -BoxTitleLastSuppliers=Last %s recorded suppliers -BoxTitleLastCustomers=Last %s recorded customers -BoxTitleLastModifiedSuppliers=Last %s modified suppliers -BoxTitleLastModifiedCustomers=Last %s modified customers -BoxTitleLastCustomersOrProspects=Last %s customers or prospects -BoxTitleLastPropals=Last %s proposals -BoxTitleLastModifiedPropals=Last %s modified proposals -BoxTitleLastCustomerBills=Last %s customer's invoices -BoxTitleLastModifiedCustomerBills=Last %s modified customer invoices -BoxTitleLastSupplierBills=Last %s supplier's invoices -BoxTitleLastModifiedSupplierBills=Last %s modified supplier invoices -BoxTitleLastModifiedProspects=Last %s modified prospects -BoxTitleLastProductsInContract=Last %s products/services in a contract -BoxTitleLastModifiedMembers=Last %s members -BoxTitleLastFicheInter=Last %s modified intervention +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 intervention 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=Last %s modified contacts/addresses -BoxMyLastBookmarks=My last %s bookmarks +BoxTitleLastModifiedContacts=Latest %s modified contacts/addresses +BoxMyLastBookmarks=My latest %s bookmarks BoxOldestExpiredServices=Oldest active expired services -BoxLastExpiredServices=Last %s oldest contacts with active expired services -BoxTitleLastActionsToDo=Last %s actions to do -BoxTitleLastContracts=Last %s contracts -BoxTitleLastModifiedDonations=Last %s modified donations -BoxTitleLastModifiedExpenses=Last %s modified expense reports +BoxLastExpiredServices=Latest %s oldest contacts with active expired services +BoxTitleLastActionsToDo=Latest %s actions to do +BoxTitleLastContracts=Latest %s contracts +BoxTitleLastModifiedDonations=Latest %s modified donations +BoxTitleLastModifiedExpenses=Latest %s modified expense reports BoxGlobalActivity=Global activity (invoices, proposals, orders) BoxGoodCustomers=Good customers BoxTitleGoodCustomers=%s Good customers -FailedToRefreshDataInfoNotUpToDate=Failed to refresh RSS flux. Last successfull refresh date: %s -LastRefreshDate=Last refresh date +FailedToRefreshDataInfoNotUpToDate=Failed to refresh RSS flux. Latest successfull refresh date: %s +LastRefreshDate=Latest refresh date NoRecordedBookmarks=No bookmarks defined. ClickToAdd=Click here to add. NoRecordedCustomers=No recorded customers @@ -82,8 +82,8 @@ NoContractedProducts=No products/services contracted NoRecordedContracts=No recorded contracts NoRecordedInterventions=No recorded interventions BoxLatestSupplierOrders=Latest supplier orders -BoxTitleLatestSupplierOrders=Last %s supplier orders -BoxTitleLatestModifiedSupplierOrders=Last %s modified 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 @@ -96,5 +96,5 @@ BoxProductDistributionFor=Distribution of %s for %s ForCustomersInvoices=Customers invoices ForCustomersOrders=Customers orders ForProposals=Proposals -LastXMonthRolling=The last %s month rolling +LastXMonthRolling=The latest %s month rolling ChooseBoxToAdd=Add widget to your dashboard... diff --git a/htdocs/langs/en_US/commercial.lang b/htdocs/langs/en_US/commercial.lang index a5795c402ae..918c3714474 100644 --- a/htdocs/langs/en_US/commercial.lang +++ b/htdocs/langs/en_US/commercial.lang @@ -35,9 +35,9 @@ ShowCustomer=Show customer ShowProspect=Show prospect ListOfProspects=List of prospects ListOfCustomers=List of customers -LastDoneTasks=Last %s completed tasks -LastRecordedTasks=Last recorded tasks -LastActionsToDo=Last %s oldest actions not completed +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 @@ -94,4 +94,4 @@ StatusProsp=Prospect status DraftPropals=Draft commercial proposals SearchPropal=Search a commercial proposal CommercialDashboard=Commercial summary -NoLimit=No limit \ No newline at end of file +NoLimit=No limit diff --git a/htdocs/langs/en_US/companies.lang b/htdocs/langs/en_US/companies.lang index 6ce5ad43ffc..89a630e26cd 100644 --- a/htdocs/langs/en_US/companies.lang +++ b/htdocs/langs/en_US/companies.lang @@ -302,7 +302,7 @@ 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=Last +LastProspect=Latest ProspectToContact=Prospect to contact CompanyDeleted=Company "%s" deleted from database. ListOfContacts=List of contacts/addresses @@ -328,7 +328,7 @@ 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=Last contacts +LastContacts=Latest contacts MyContacts=My contacts Phones=Phones Capital=Capital @@ -421,7 +421,7 @@ ListSuppliersShort=List of suppliers ListProspectsShort=List of prospects ListCustomersShort=List of customers ThirdPartiesArea=Third parties and contact area -LastModifiedThirdParties=Last %s modified third parties +LastModifiedThirdParties=Latest %s modified third parties UniqueThirdParties=Total of unique third parties InActivity=Open ActivityCeased=Closed @@ -441,7 +441,7 @@ ConfirmMergeThirdparties=Are you sure you want to merge this third party into th 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 sale representative -SaleRepresentativeFirstname=Firstname of sale representative -SaleRepresentativeLastname=Lastname of sale 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 7325c7ed674..23edfae8b05 100644 --- a/htdocs/langs/en_US/compta.lang +++ b/htdocs/langs/en_US/compta.lang @@ -121,7 +121,7 @@ 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=Last %s check receipts +LastCheckReceiptShort=Latest %s check receipts NewCheckReceipt=New discount NewCheckDeposit=New check deposit NewCheckDepositOn=Create receipt for deposit on account: %s @@ -225,4 +225,4 @@ 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 \ No newline at end of file +ImportDataset_tax_1=Import social/fiscal taxes diff --git a/htdocs/langs/en_US/contracts.lang b/htdocs/langs/en_US/contracts.lang index a78fc8d285d..620d212c386 100644 --- a/htdocs/langs/en_US/contracts.lang +++ b/htdocs/langs/en_US/contracts.lang @@ -1,7 +1,7 @@ # Dolibarr language file - Source file is en_US - contracts ContractsArea=Contracts area ListOfContracts=List of contracts -LastModifiedContracts=Last %s modified contracts +LastModifiedContracts=Latest %s modified contracts AllContracts=All contracts ContractCard=Contract card ContractStatus=Contract status @@ -58,9 +58,9 @@ 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=Last %s contracts -LastActivatedServices=Last %s activated services -LastModifiedServices=Last %s modified services +LastContracts=Latest %s contracts +LastActivatedServices=Latest %s activated services +LastModifiedServices=Latest %s modified services EditServiceLine=Edit service line ContractStartDate=Start date ContractEndDate=End date diff --git a/htdocs/langs/en_US/cron.lang b/htdocs/langs/en_US/cron.lang index cd118b26550..456e9562a2f 100644 --- a/htdocs/langs/en_US/cron.lang +++ b/htdocs/langs/en_US/cron.lang @@ -63,7 +63,7 @@ CronHourStart= Start hour and date of job CronEvery=Execute job each CronObject=Instance/Object to create CronArgs=Parameters -CronSaveSucess=Save succesfully +CronSaveSucess=Save successfully CronNote=Comment CronFieldMandatory=Fields %s is mandatory CronErrEndDateStartDt=End date cannot be before start date diff --git a/htdocs/langs/en_US/donations.lang b/htdocs/langs/en_US/donations.lang index 8b4c2ca8756..24ce0cc17b0 100644 --- a/htdocs/langs/en_US/donations.lang +++ b/htdocs/langs/en_US/donations.lang @@ -29,7 +29,7 @@ ValidPromess=Validate promise DonationReceipt=Donation receipt BuildDonationReceipt=Build receipt DonationsModels=Documents models for donation receipts -LastModifiedDonations=Last %s modified donations +LastModifiedDonations=Latest %s modified donations SearchADonation=Search a donation DonationRecipient=Donation recipient ThankYou=Thank You diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang index 56e136f5e52..aeb43525336 100755 --- a/htdocs/langs/en_US/errors.lang +++ b/htdocs/langs/en_US/errors.lang @@ -17,7 +17,7 @@ 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=Can not delete environment because there is some joined files. Remove join files first. +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. @@ -41,7 +41,7 @@ ErrorBadDateFormat=Value '%s' has wrong date format ErrorWrongDate=Date is not correct! ErrorFailedToWriteInDir=Failed to write in directory %s ErrorFoundBadEmailInFile=Found incorrect email syntax for %s lines in file (example line %s with email=%s) -ErrorUserCannotBeDelete=User can not be deleted. May be it is associated on Dolibarr entities. +ErrorUserCannotBeDelete=User cannot be deleted. May be it is associated to Dolibarr entities. ErrorFieldsRequired=Some required fields were not filled. ErrorFailedToCreateDir=Failed to create a directory. Check that Web server user has permissions to write into Dolibarr documents directory. If parameter safe_mode is enabled on this PHP, check that Dolibarr php files owns to web server user (or group). ErrorNoMailDefinedForThisUser=No mail defined for this user @@ -129,7 +129,7 @@ ErrorNewValueCantMatchOldValue=New value can't be equal to old one ErrorFailedToValidatePasswordReset=Failed to reinit password. May be the reinit was already done (this link can be used only one time). If not, try to restart the reinit process. ErrorToConnectToMysqlCheckInstance=Connect to database fails. Check Mysql server is running (in most cases, you can launch it from command line with 'sudo /etc/init.d/mysql start'). ErrorFailedToAddContact=Failed to add contact -ErrorDateMustBeBeforeToday=The date can not be greater than today +ErrorDateMustBeBeforeToday=The date cannot be greater than today ErrorPaymentModeDefinedToWithoutSetup=A payment mode was set to type %s but setup of module Invoice was not completed to define information to show for this payment mode. ErrorPHPNeedModule=Error, your PHP must have module %s installed to use this feature. ErrorOpenIDSetupNotComplete=You setup Dolibarr config file to allow OpenID authentication, but URL of OpenID service is not defined into constant %s diff --git a/htdocs/langs/en_US/holiday.lang b/htdocs/langs/en_US/holiday.lang index f26fdc73cd2..9ff15079900 100644 --- a/htdocs/langs/en_US/holiday.lang +++ b/htdocs/langs/en_US/holiday.lang @@ -80,7 +80,7 @@ alreadyCPexist=A leave request has already been done on this period. UserName=Name FirstDayOfHoliday=First day of vacation LastDayOfHoliday=Last day of vacation -BoxTitleLastLeaveRequests=Last %s modified leave requests +BoxTitleLastLeaveRequests=Latest %s modified leave requests HolidaysMonthlyUpdate=Monthly update ManualUpdate=Manual update HolidaysCancelation=Leave request cancelation @@ -91,8 +91,8 @@ DescOptionCP=Description of the option ValueOptionCP=Value GroupToValidateCP=Group with the ability to approve leave requests ConfirmConfigCP=Validate the configuration -LastUpdateCP=Last automatic update of leaves allocation -MonthOfLastMonthlyUpdate=Month of last automatic update of leaves allocation +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. @@ -143,4 +143,4 @@ 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. \ No newline at end of file +GoIntoDictionaryHolidayTypes=Go into Home - Setup - Dictionaries - Type of leaves to setup the different types of leaves. diff --git a/htdocs/langs/en_US/install.lang b/htdocs/langs/en_US/install.lang index ca2e94686fb..eacd6937e92 100644 --- a/htdocs/langs/en_US/install.lang +++ b/htdocs/langs/en_US/install.lang @@ -82,7 +82,7 @@ SetupEnd=End of setup SystemIsInstalled=This installation is complete. SystemIsUpgraded=Dolibarr has been upgraded successfully. YouNeedToPersonalizeSetup=You need to configure Dolibarr to suit your needs (appearance, features, ...). To do this, please follow the link below: -AdminLoginCreatedSuccessfuly=Dolibarr administrator login '%s' created successfuly. +AdminLoginCreatedSuccessfuly=Dolibarr administrator login '%s' created successfully. GoToDolibarr=Go to Dolibarr GoToSetupArea=Go to Dolibarr (setup area) MigrationNotFinished=Version of your database is not completely up to date, so you'll have to run the upgrade process again. @@ -159,7 +159,7 @@ MigrationSupplierOrder=Data migration for supplier's orders MigrationProposal=Data migration for commercial proposals MigrationInvoice=Data migration for customer's invoices MigrationContract=Data migration for contracts -MigrationSuccessfullUpdate=Upgrade successful +MigrationSuccessfullUpdate=Upgrade successfull MigrationUpdateFailed=Failed upgrade process MigrationRelationshipTables=Data migration for relationship tables (%s) MigrationPaymentsUpdate=Payment data correction @@ -173,7 +173,7 @@ MigrationContractsLineCreation=Create contract line for contract ref %s MigrationContractsNothingToUpdate=No more things to do MigrationContractsFieldDontExist=Field fk_facture does not exists anymore. Nothing to do. MigrationContractsEmptyDatesUpdate=Contract empty date correction -MigrationContractsEmptyDatesUpdateSuccess=Contract emtpy date correction done successfuly +MigrationContractsEmptyDatesUpdateSuccess=Contract emtpy date correction done successfully MigrationContractsEmptyDatesNothingToUpdate=No contract empty date to correct MigrationContractsEmptyCreationDatesNothingToUpdate=No contract creation date to correct MigrationContractsInvalidDatesUpdate=Bad value date contract correction @@ -181,7 +181,7 @@ MigrationContractsInvalidDateFix=Correct contract %s (Contract date=%s, Starting MigrationContractsInvalidDatesNumber=%s contracts modified MigrationContractsInvalidDatesNothingToUpdate=No date with bad value to correct MigrationContractsIncoherentCreationDateUpdate=Bad value contract creation date correction -MigrationContractsIncoherentCreationDateUpdateSuccess=Bad value contract creation date correction done succesfuly +MigrationContractsIncoherentCreationDateUpdateSuccess=Bad value contract creation date correction done successfully MigrationContractsIncoherentCreationDateNothingToUpdate=No bad value for contract creation date to correct MigrationReopeningContracts=Open contract closed by error MigrationReopenThisContract=Reopen contract %s @@ -205,4 +205,4 @@ MigrationEvents=Migration of events to add event owner into assignement table MigrationReloadModule=Reload module %s ShowNotAvailableOptions=Show not available options HideNotAvailableOptions=Hide not available options -ErrorFoundDuringMigration=Error were reported during migration process so next step is not available. To ignore errors, you can click here, but application or some features may not work correctly until fixed. \ No newline at end of file +ErrorFoundDuringMigration=Error were reported during migration process so next step is not available. To ignore errors, you can click here, but application or some features may not work correctly until fixed. diff --git a/htdocs/langs/en_US/interventions.lang b/htdocs/langs/en_US/interventions.lang index cf93bd3d2b1..9df35ba9e38 100644 --- a/htdocs/langs/en_US/interventions.lang +++ b/htdocs/langs/en_US/interventions.lang @@ -7,7 +7,7 @@ AddIntervention=Create intervention ListOfInterventions=List of interventions EditIntervention=Edit intervention ActionsOnFicheInter=Actions on intervention -LastInterventions=Last %s interventions +LastInterventions=Latest %s interventions AllInterventions=All interventions CreateDraftIntervention=Create draft CustomerDoesNotHavePrefix=Customer does not have a prefix @@ -41,7 +41,7 @@ InterventionDeletedInDolibarr=Intervention %s deleted SearchAnIntervention=Search an intervention InterventionsArea=Interventions area DraftFichinter=Draft interventions -LastModifiedInterventions=Last %s modified interventions +LastModifiedInterventions=Latest %s modified interventions ##### Types de contacts ##### TypeContact_fichinter_internal_INTERREPFOLL=Representative following-up intervention TypeContact_fichinter_internal_INTERVENING=Intervening diff --git a/htdocs/langs/en_US/mailmanspip.lang b/htdocs/langs/en_US/mailmanspip.lang index c85b3d60db2..bab4b3576b4 100644 --- a/htdocs/langs/en_US/mailmanspip.lang +++ b/htdocs/langs/en_US/mailmanspip.lang @@ -3,8 +3,8 @@ MailmanSpipSetup=Mailman and SPIP module Setup MailmanTitle=Mailman mailing list system TestSubscribe=To test subscription to Mailman lists TestUnSubscribe=To test unsubscribe from Mailman lists -MailmanCreationSuccess=Subscription test was executed succesfully -MailmanDeletionSuccess=Unsubscription test was executed succesfully +MailmanCreationSuccess=Subscription test was executed successfully +MailmanDeletionSuccess=Unsubscription test was executed successfully SynchroMailManEnabled=A Mailman update will be performed SynchroSpipEnabled=A Spip update will be performed DescADHERENT_MAILMAN_ADMINPW=Mailman administrator password @@ -23,5 +23,5 @@ DeleteIntoSpip=Remove from SPIP DeleteIntoSpipConfirmation=Are you sure you want to remove this member from SPIP? DeleteIntoSpipError=Failed to suppress the user from SPIP SPIPConnectionFailed=Failed to connect to SPIP -SuccessToAddToMailmanList=Add of %s to mailman list %s or SPIP database done -SuccessToRemoveToMailmanList=Removal of %s from mailman list %s or SPIP database done +SuccessToAddToMailmanList=%s successfully added to mailman list %s or SPIP database +SuccessToRemoveToMailmanList=%s successfully removed from mailman list %s or SPIP database diff --git a/htdocs/langs/en_US/mails.lang b/htdocs/langs/en_US/mails.lang index 01ff6c7b486..7eba3525fc1 100644 --- a/htdocs/langs/en_US/mails.lang +++ b/htdocs/langs/en_US/mails.lang @@ -70,7 +70,7 @@ CloneEMailing=Clone Emailing ConfirmCloneEMailing=Are you sure you want to clone this emailing ? CloneContent=Clone message CloneReceivers=Cloner recipients -DateLastSend=Date of last sending +DateLastSend=Date of latest sending DateSending=Date sending SentTo=Sent to %s MailingStatusRead=Read @@ -170,4 +170,4 @@ AdvTgtSaveFilter=Save filter AdvTgtCreateFilter=Create filter AdvTgtOrCreateNewFilter=Name of new filter NoContactWithCategoryFound=No contact/address with a category found -NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found \ No newline at end of file +NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index 150da862bef..041cc0523cc 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -36,8 +36,8 @@ ErrorFieldRequired=Field '%s' is required ErrorFieldFormat=Field '%s' has a bad value ErrorFileDoesNotExists=File %s does not exist ErrorFailedToOpenFile=Failed to open file %s -ErrorCanNotCreateDir=Can not create dir %s -ErrorCanNotReadDir=Can not read dir %s +ErrorCanNotCreateDir=Cannot create dir %s +ErrorCanNotReadDir=Cannot read dir %s ErrorConstantNotDefined=Parameter %s not defined ErrorUnknown=Unknown error ErrorSQL=SQL Error @@ -804,4 +804,4 @@ SearchIntoSupplierProposals=Supplier proposals SearchIntoInterventions=Interventions SearchIntoContracts=Contracts SearchIntoExpenseReports=Expense reports -SearchIntoCustomerShipments=Customer shipments \ No newline at end of file +SearchIntoCustomerShipments=Customer shipments diff --git a/htdocs/langs/en_US/members.lang b/htdocs/langs/en_US/members.lang index 9539c5fd39b..7ebbe1dde4f 100644 --- a/htdocs/langs/en_US/members.lang +++ b/htdocs/langs/en_US/members.lang @@ -114,9 +114,9 @@ EnablePublicSubscriptionForm=Enable the public auto-subscription form MemberPublicLinks=Public links/pages ExportDataset_member_1=Members and subscriptions ImportDataset_member_1=Members -LastMembers=Last %s members -LastMembersModified=Last %s modified members -LastSubscriptionsModified=Last %s modified subscriptions +LastMembers=Latest %s members +LastMembersModified=Latest %s modified members +LastSubscriptionsModified=Latest %s modified subscriptions AttributeName=Attribute name String=String Text=Text @@ -204,4 +204,4 @@ MembersByRegion=This screen show you statistics on members by region. VATToUseForSubscriptions=VAT rate to use for subscriptions NoVatOnSubscription=No TVA for subscriptions MEMBER_PAYONLINE_SENDEMAIL=Email to use for email warning when Dolibarr receive a confirmation of a validated payment for a subscription (Example: paymentdone@example.com) -ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=Product used for subscription line into invoice: %s \ No newline at end of file +ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=Product used for subscription line into invoice: %s diff --git a/htdocs/langs/en_US/orders.lang b/htdocs/langs/en_US/orders.lang index 46c28f14578..85838a8fce1 100644 --- a/htdocs/langs/en_US/orders.lang +++ b/htdocs/langs/en_US/orders.lang @@ -87,11 +87,11 @@ NoDraftOrders=No draft orders NoOrder=No order NoSupplierOrder=No supplier order OtherOrders=Other orders -LastOrders=Last %s customer orders -LastCustomerOrders=Last %s customer orders -LastSupplierOrders=Last %s supplier orders -LastModifiedOrders=Last %s modified orders -LastClosedOrders=Last %s closed 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 diff --git a/htdocs/langs/en_US/products.lang b/htdocs/langs/en_US/products.lang index 96bf0da9bfa..3dd12b2bb41 100644 --- a/htdocs/langs/en_US/products.lang +++ b/htdocs/langs/en_US/products.lang @@ -36,12 +36,12 @@ ServicesOnSell=Services for sale or for purchase ServicesNotOnSell=Services not for sale ServicesOnSellAndOnBuy=Services for sale and for purchase InternalRef=Internal reference -LastRecorded=Last products/services on sell recorded -LastRecordedProductsAndServices=Last %s recorded products/services -LastModifiedProductsAndServices=Last %s modified products/services -LastRecordedProducts=Last %s products recorded -LastRecordedServices=Last %s services recorded -LastProducts=Last products +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 diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index 42c05d0cd07..2d08f153594 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -28,7 +28,7 @@ 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=Last %s projects +LastProjects=Latest %s projects AllProjects=All projects OpenedProjects=Opened projects OpenedTasks=Opened tasks @@ -201,4 +201,4 @@ OppStatusNEGO=Negociation OppStatusPENDING=Pending OppStatusWON=Won OppStatusLOST=Lost -Budget=Budget \ No newline at end of file +Budget=Budget diff --git a/htdocs/langs/en_US/propal.lang b/htdocs/langs/en_US/propal.lang index 15b10e7d92f..cc06aeff937 100644 --- a/htdocs/langs/en_US/propal.lang +++ b/htdocs/langs/en_US/propal.lang @@ -19,11 +19,11 @@ 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=Last %s proposals -LastClosedProposals=Last %s closed proposals -LastModifiedProposals=Last %s modified proposals +LastPropals=Latest %s proposals +LastClosedProposals=Latest %s closed proposals +LastModifiedProposals=Latest %s modified proposals AllPropals=All proposals -LastProposals=Last proposals +LastProposals=Latest proposals SearchAProposal=Search a proposal NoProposal=No proposal ProposalsStatistics=Commercial proposal's statistics @@ -102,4 +102,4 @@ DefaultModelPropalCreate=Default model creation DefaultModelPropalToBill=Default template when closing a business proposal (to be invoiced) DefaultModelPropalClosed=Default template when closing a business proposal (unbilled) ProposalCustomerSignature=Written acceptance, company stamp, date and signature -ProposalsStatisticsSuppliers=Supplier proposals statistics \ No newline at end of file +ProposalsStatisticsSuppliers=Supplier proposals statistics diff --git a/htdocs/langs/en_US/sendings.lang b/htdocs/langs/en_US/sendings.lang index a118a4d8373..1ec229af6c5 100644 --- a/htdocs/langs/en_US/sendings.lang +++ b/htdocs/langs/en_US/sendings.lang @@ -11,7 +11,7 @@ SendingsArea=Shipments area ListOfSendings=List of shipments SendingMethod=Shipping method SendingReceipt=Shipping receipt -LastSendings=Last %s shipments +LastSendings=Latest %s shipments SearchASending=Search for shipment StatisticsOfSendings=Statistics for shipments NbOfSendings=Number of shipments diff --git a/htdocs/langs/en_US/supplier_proposal.lang b/htdocs/langs/en_US/supplier_proposal.lang index a1ede43437d..988e377d4df 100644 --- a/htdocs/langs/en_US/supplier_proposal.lang +++ b/htdocs/langs/en_US/supplier_proposal.lang @@ -7,7 +7,7 @@ CommRequests=Price requests SearchRequest=Find a request DraftRequests=Draft requests SupplierProposalsDraft=Draft supplier proposals -LastModifiedRequests=Last %s modified price requests +LastModifiedRequests=Latest %s modified price requests RequestsOpened=Open price requests SupplierProposalArea=Supplier proposals area SupplierProposalShort=Supplier proposal @@ -58,4 +58,4 @@ DefaultModelSupplierProposalToBill=Default template when closing a price request DefaultModelSupplierProposalClosed=Default template when closing a price request (refused) ListOfSupplierProposal=List of supplier proposal requests SupplierProposalsToClose=Supplier proposals to close -SupplierProposalsToProcess=Supplier proposals to process \ No newline at end of file +SupplierProposalsToProcess=Supplier proposals to process diff --git a/htdocs/langs/en_US/users.lang b/htdocs/langs/en_US/users.lang index 47cddfa433f..13f816c7a3e 100644 --- a/htdocs/langs/en_US/users.lang +++ b/htdocs/langs/en_US/users.lang @@ -48,7 +48,7 @@ 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 -LastName=Name +LastName=Last Name FirstName=First name ListOfGroups=List of groups NewGroup=New group @@ -58,8 +58,8 @@ 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=Last %s created groups -LastUsersCreated=Last %s users created +LastGroupsCreated=Latest %s created groups +LastUsersCreated=Latest %s users created ShowGroup=Show group ShowUser=Show user NonAffectedUsers=Non assigned users @@ -122,4 +122,4 @@ LoginUsingOpenID=Use OpenID to login WeeklyHours=Weekly hours ColorUser=Color of the user DisabledInMonoUserMode=Disabled in maintenance mode -UserAccountancyCode=User accountancy code \ No newline at end of file +UserAccountancyCode=User accountancy code diff --git a/htdocs/langs/en_US/withdrawals.lang b/htdocs/langs/en_US/withdrawals.lang index 8248042d10c..1b282432a16 100644 --- a/htdocs/langs/en_US/withdrawals.lang +++ b/htdocs/langs/en_US/withdrawals.lang @@ -11,8 +11,8 @@ Withdrawal=Withdrawal WithdrawalsReceipts=Withdrawal receipts WithdrawalReceipt=Withdrawal receipt WithdrawalReceiptShort=Receipt -LastWithdrawalReceipts=Last %s withdrawal receipts -WithdrawedBills=Withdrawn invoices +LastWithdrawalReceipts=Latest %s withdrawal receipts +WithdrawedBills=Withdrawal invoices WithdrawalsLines=Withdrawal lines RequestStandingOrderToTreat=Request for standing orders to process RequestStandingOrderTreated=Request for standing orders processed @@ -29,7 +29,7 @@ ResponsibleUser=Responsible user WithdrawalsSetup=Withdrawal setup WithdrawStatistics=Withdraw's statistics WithdrawRejectStatistics=Withdraw reject's statistics -LastWithdrawalReceipt=Last %s withdrawing receipts +LastWithdrawalReceipt=Latest %s withdrawal receipts MakeWithdrawRequest=Make a withdraw request ThirdPartyBankCode=Third party bank code ThirdPartyDeskCode=Third party desk code From f2e4fdcce45358c90261eeb4b20f6b4bc6ababaf Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Sat, 4 Jun 2016 00:16:01 +0200 Subject: [PATCH 085/245] Fix import model not correctly saved #5185 --- htdocs/install/mysql/migration/3.9.0-4.0.0.sql | 2 ++ 1 file changed, 2 insertions(+) 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 6999d2da27b..4aae6de71e6 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 @@ -501,3 +501,5 @@ CREATE TABLE llx_oauth_state ( fk_adherent integer, entity integer )ENGINE=InnoDB; + +ALTER TABLE llx_import_model MODIFY COLUMN type varchar(50); \ No newline at end of file From e2ba9c72a89ff645ff8ed59a9008eab4776bee5e Mon Sep 17 00:00:00 2001 From: novalore Date: Sat, 4 Jun 2016 00:18:15 +0200 Subject: [PATCH 086/245] French string in main.lang --- htdocs/langs/en_US/main.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index 041cc0523cc..548982efb65 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -530,7 +530,7 @@ ReportName=Report name ReportPeriod=Report period ReportDescription=Description Report=Report -Keyword=Mot clé +Keyword=Keyword Legend=Legend FillTownFromZip=Fill city from zip Fill=Fill From e3a5af6ad4884fc8c39d1a8cbc91a7c3c30e0f72 Mon Sep 17 00:00:00 2001 From: phf Date: Sat, 4 Jun 2016 00:42:01 +0200 Subject: [PATCH 087/245] Fix clean multicurrency admin --- htdocs/admin/multicurrency.php | 132 ++++++++++-------- .../class/multicurrency.class.php | 24 +++- 2 files changed, 94 insertions(+), 62 deletions(-) diff --git a/htdocs/admin/multicurrency.php b/htdocs/admin/multicurrency.php index e47b2c9068e..74804b01344 100644 --- a/htdocs/admin/multicurrency.php +++ b/htdocs/admin/multicurrency.php @@ -77,20 +77,20 @@ if (preg_match('/del_(.*)/',$action,$reg)) if ($action == 'add_currency') { - $code = GETPOST('code', 'alpha'); - $name = GETPOST('name', 'alpha'); - $rate = GETPOST('rate', 'alpha'); + $langs->loadCacheCurrencies(''); + $code = GETPOST('code', 'alpha'); + $rate = GETPOST('rate', 'alpha'); $currency = new MultiCurrency($db); $currency->code = $code; - $currency->name = $name; + $currency->name = !empty($langs->cache_currencies[$code]['label']) ? $langs->cache_currencies[$code]['label'].' ('.$langs->getCurrencySymbol($code).')' : $code; if ($currency->create($user) > 0) { if ($currency->addRate($rate)) setEventMessages($langs->trans('RecordSaved'), array()); else setEventMessages($langs->trans('ErrorAddRateFail'), array(), 'errors'); } - else setEventMessages($langs->trans('ErrorAddCurrencyFail'), array()); + else setEventMessages($langs->trans('ErrorAddCurrencyFail'), $currency->errors, 'errors'); } elseif ($action == 'update_currency') { @@ -182,6 +182,7 @@ print ''.$langs->trans("Parameters").''."\n"; print ' '; print ''.$langs->trans("Value").''."\n"; +/* TODO uncomment when the functionality will integrated $var=!$var; print ''; print ''.$langs->transnoentitiesnoconv("multicurrency_useRateOnInvoiceDate").''; @@ -194,6 +195,7 @@ print $form->selectyesno("MULTICURRENCY_USE_RATE_ON_INVOICE_DATE",$conf->global- print ''; print ''; print ''; +*/ $var=!$var; print ''; @@ -208,6 +210,7 @@ print '' print ''; print ''; +/* TODO uncomment when the functionality will integrated $var=!$var; print ''; print ''.$langs->transnoentitiesnoconv("multicurrency_buyPriceInCurrency").''; @@ -220,7 +223,9 @@ print $form->selectyesno("MULTICURRENCY_BUY_PRICE_IN_CURRENCY",$conf->global->MU print ''; print ''; print ''; +*/ +/* TODO uncomment when the functionality will integrated $var=!$var; print ''; print ''.$langs->transnoentitiesnoconv("multicurrency_modifyRateApplication").''; @@ -236,64 +241,68 @@ print ''; print ''; print '
'; +*/ -$var=false; -print ''; -print ''; -print ''."\n"; -print ''; -print ''; +if (!empty($conf->global->MAIN_MULTICURRENCY_ALLOW_SYNCHRONIZATION)) +{ + $var=false; + print '
'.$langs->trans("CurrencyLayerAccount").' '; -print '
'; -print ''; -print ''; -print $langs->trans("Value").' '; -print '
'; -print '
'; + print ''; + print ''."\n"; + print ''; + print ''; + + + $var=!$var; + print ''; + print ''; + print ''; + print ''; + + $var=!$var; + print ''; + print ''; + print ''; + print ''; + + $var=!$var; + print ''; + print ''; + print ''; + print ''; + + print '
'.$langs->trans("CurrencyLayerAccount").' '; + print '
'; + print ''; + print ''; + print $langs->trans("Value").' '; + print '
'; + print '
'.$langs->transnoentitiesnoconv("multicurrency_appId").' '; + print '
'; + print ''; + print ''; + print ' '; + print ''; + print '
'; + print '
'.$langs->transnoentitiesnoconv("multicurrency_appCurrencySource").' '; + print '
'; + print ''; + print ''; + print ' '; // Default: USD + print ''; + print '
'; + print '
'.$langs->transnoentitiesnoconv("multicurrency_alternateCurrencySource").' '; + print '
'; + print ''; + print ''; + print ' '; // Example: EUR + print ''; + print '
'; + print '
'; + print '
'; +} -$var=!$var; -print ''; -print ''.$langs->transnoentitiesnoconv("multicurrency_appId").''; -print ' '; -print ''; -print '
'; -print ''; -print ''; -print ' '; -print ''; -print '
'; -print ''; - -$var=!$var; -print ''; -print ''.$langs->transnoentitiesnoconv("multicurrency_appCurrencySource").''; -print ' '; -print ''; -print '
'; -print ''; -print ''; -print ' '; // Default: USD -print ''; -print '
'; -print ''; - -$var=!$var; -print ''; -print ''.$langs->transnoentitiesnoconv("multicurrency_alternateCurrencySource").''; -print ' '; -print ''; -print '
'; -print ''; -print ''; -print ' '; // Example: EUR -print ''; -print '
'; -print ''; - - -print ''; -print '
'; - print ''; print ''; @@ -306,7 +315,8 @@ print ''; print ''; print ''; print ''; -print ''; +//print ''; +print ''; print ''; print ''; if (! empty($conf->global->AGENDA_USE_EVENT_TYPE)) From 495ce2463dd3dcf61aa27d02ede9c8d5e67ae75e Mon Sep 17 00:00:00 2001 From: phf Date: Sat, 4 Jun 2016 01:13:23 +0200 Subject: [PATCH 089/245] Fix switch currency on document do not get the associate rate --- htdocs/comm/propal/card.php | 2 +- htdocs/core/class/html.form.class.php | 4 ++-- htdocs/multicurrency/class/multicurrency.class.php | 7 ++++--- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/htdocs/comm/propal/card.php b/htdocs/comm/propal/card.php index 82988dfcb0d..f3ebd32fe95 100644 --- a/htdocs/comm/propal/card.php +++ b/htdocs/comm/propal/card.php @@ -1433,7 +1433,7 @@ if ($action == 'create') print ''; print ''; } diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 64d1538578b..5a8c0440a81 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -3812,7 +3812,7 @@ class Form print ''; print '
- - '.$form->selectCurrency('', 'code').' '; print ' '; diff --git a/htdocs/multicurrency/class/multicurrency.class.php b/htdocs/multicurrency/class/multicurrency.class.php index b4baa550ce7..76238e31906 100644 --- a/htdocs/multicurrency/class/multicurrency.class.php +++ b/htdocs/multicurrency/class/multicurrency.class.php @@ -107,12 +107,19 @@ class MultiCurrency extends CommonObject */ public function create(User $user, $trigger = true) { - global $conf; + global $conf,$langs; dol_syslog('Currency::create', LOG_DEBUG); $error = 0; + if (self::checkCodeAlreadyExists($this->code)) + { + $error++; + $this->errors[] = $langs->trans('multicurrency_code_already_added'); + return -1; + } + if (empty($this->entity) || $this->entity <= 0) $this->entity = $conf->entity; $now=date('Y-m-d H:i:s'); @@ -616,6 +623,21 @@ class MultiCurrency extends CommonObject } } } + + /** + * Check in database if the current code already exists + * + * @param string $code current code to search + * @return true if exists, false if not exists + */ + public static function checkCodeAlreadyExists($code) + { + global $db; + + $currency = new MultiCurrency($db); + if ($currency->fetch('', $code) > 0) return true; + else return false; + } } /** From 9c3365aefcd4c02ad4aed8ce1b7783561267bcc5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 4 Jun 2016 00:52:55 +0200 Subject: [PATCH 088/245] FIX #5163 --- htdocs/comm/action/listactions.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/comm/action/listactions.php b/htdocs/comm/action/listactions.php index 447a247ad56..a9dd8d8f1e5 100644 --- a/htdocs/comm/action/listactions.php +++ b/htdocs/comm/action/listactions.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 * * This program is free software; you can redistribute it and/or modify @@ -210,7 +210,7 @@ if ($status == 'todo') { $sql.= " AND ((a.percent >= 0 AND a.percent < 100) OR ( if ($filtert > 0 || $usergroup > 0) { $sql.= " AND ("; - if ($filtert > 0) $sql.= "(ar.fk_element = ".$filtert." OR a.fk_user_action=".$filtert.")"; + if ($filtert > 0) $sql.= "(ar.fk_element = ".$filtert." OR (ar.fk_element IS NULL AND a.fk_user_action=".$filtert."))"; // The OR is for backward compatibility if ($usergroup > 0) $sql.= ($filtert>0?" OR ":"")." ugu.fk_usergroup = ".$usergroup; $sql.= ")"; } @@ -350,7 +350,7 @@ if ($resql) $actionstatic->type_code=$obj->type_code; $actionstatic->type_label=$obj->type_label; $actionstatic->label=$obj->label; - print $actionstatic->getNomUrl(1,28); + print $actionstatic->getNomUrl(1,36); print ''.fieldLabel('Currency','multicurrency_code').''; $currency_code = (!empty($soc->multicurrency_code) ? $soc->multicurrency_code : ($object->multicurrency_code ? $object->multicurrency_code : $conf->currency)); - print $form->selectMultiCurrency($currency_code, 'multicurrency_code', 1); + print $form->selectMultiCurrency($currency_code, 'multicurrency_code', 0); print '
'; print ''; print ''; print '
'; - print $this->selectMultiCurrency($selected, $htmlname, 1); + print $this->selectMultiCurrency($selected, $htmlname, 0); print '
'; @@ -4091,7 +4091,7 @@ class Form $out=''; $out.= ''; print '    '.$langs->trans("Enclosure").' : '; print ''; - print ''; + print ''; print ''; print ''; } From 6c126da9a9aac07b26de0d22a462d712f6898a02 Mon Sep 17 00:00:00 2001 From: cla Date: Sat, 4 Jun 2016 01:34:04 +0200 Subject: [PATCH 092/245] FIX #4141 --- htdocs/fichinter/card.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/fichinter/card.php b/htdocs/fichinter/card.php index 71fec224137..b305d718a52 100644 --- a/htdocs/fichinter/card.php +++ b/htdocs/fichinter/card.php @@ -494,7 +494,7 @@ if (empty($reshook)) $desc=GETPOST('np_desc'); $date_intervention = dol_mktime(GETPOST('dihour','int'), GETPOST('dimin','int'), 0, GETPOST('dimonth','int'), GETPOST('diday','int'), GETPOST('diyear','int')); - $duration = empty($conf->global->FICHINTER_WITHOUT_DURATION)?0:convertTime2Seconds(GETPOST('durationhour','int'), GETPOST('durationmin','int')); + $duration = empty($conf->global->FICHINTER_WITHOUT_DURATION)?convertTime2Seconds(GETPOST('durationhour','int'), GETPOST('durationmin','int')) : 0; // Extrafields @@ -1558,7 +1558,7 @@ else if ($id > 0 || ! empty($ref)) $selectmode = 'select'; if (!empty($conf->global->INTERVENTION_ADDLINE_FREEDUREATION)) $selectmode = 'text'; - $form->select_duration('duration', $objp->duree, $selectmode); + $form->select_duration('duration', $objp->duree, 0, $selectmode); } print ''; From b000ccf2e21202a78c3aaeec20a2445892f9551d Mon Sep 17 00:00:00 2001 From: phf Date: Sat, 4 Jun 2016 01:46:10 +0200 Subject: [PATCH 093/245] Fix traduction for multicurrency module --- htdocs/admin/multicurrency.php | 8 ++++---- htdocs/langs/en_US/multicurrency.lang | 17 +++++++++++++++++ 2 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 htdocs/langs/en_US/multicurrency.lang diff --git a/htdocs/admin/multicurrency.php b/htdocs/admin/multicurrency.php index 74804b01344..530f3bff5b7 100644 --- a/htdocs/admin/multicurrency.php +++ b/htdocs/admin/multicurrency.php @@ -239,16 +239,17 @@ print '' print ''; print ''; +*/ + print ''; print '
'; -*/ if (!empty($conf->global->MAIN_MULTICURRENCY_ALLOW_SYNCHRONIZATION)) { $var=false; print ''; print ''; - print ''."\n"; + print ''."\n"; print ''; print '
'.$langs->trans("CurrencyLayerAccount").''.$form->textwithpicto($langs->trans("CurrencyLayerAccount"), $langs->trans("CurrencyLayerAccount_help_to_synchronize")).' '; print '
'; @@ -306,7 +307,7 @@ if (!empty($conf->global->MAIN_MULTICURRENCY_ALLOW_SYNCHRONIZATION)) print ''; print ''; -print ''."\n"; +print ''."\n"; print ''; print ''."\n"; @@ -315,7 +316,6 @@ print ''; print ''; print ''; print ''; -//print ''; print ''; print ''; print ''; print ''; // Mode of payment print ''; // Bank Account if (! empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL) && $conf->banque->enabled) { print ''; } // Shipping Method if (! empty($conf->expedition->enabled)) { print ''; } // Delivery date (or manufacturing) print ''; print ''; diff --git a/htdocs/supplier_proposal/tpl/linkedobjectblock.tpl.php b/htdocs/supplier_proposal/tpl/linkedobjectblock.tpl.php index d0b1b19278a..8f72744486a 100644 --- a/htdocs/supplier_proposal/tpl/linkedobjectblock.tpl.php +++ b/htdocs/supplier_proposal/tpl/linkedobjectblock.tpl.php @@ -19,7 +19,7 @@ ?> - + $objectlink) $var=!$var; ?> > - + From 3102981b88774490d4b61b9ad8c9d167f10f9082 Mon Sep 17 00:00:00 2001 From: jean Date: Sat, 4 Jun 2016 11:04:04 +0200 Subject: [PATCH 099/245] maj source --- test/phpunit/CompanyLibTest.php | 171 ++++++++++++++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 test/phpunit/CompanyLibTest.php diff --git a/test/phpunit/CompanyLibTest.php b/test/phpunit/CompanyLibTest.php new file mode 100644 index 00000000000..3dde3f6983d --- /dev/null +++ b/test/phpunit/CompanyLibTest.php @@ -0,0 +1,171 @@ + + * 2014 Jean Heimburger + * +* 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 . +* or see http://www.gnu.org/ +*/ + +/** + * \file test/phpunit/SocieteTest.php + * \ingroup test + * \brief PHPUnit test + * \remarks To run this script as CLI: phpunit filename.php + */ + +global $conf,$user,$langs,$db; +//define('TEST_DB_FORCE_TYPE','mysql'); // This is to force using mysql driver +require_once 'PHPUnit/Autoload.php'; +require_once dirname(__FILE__).'/../../htdocs/master.inc.php'; +require_once dirname(__FILE__).'/../../htdocs/societe/class/societe.class.php'; +require_once dirname(__FILE__).'/../../htdocs/core/lib/company.lib.php'; + +$langs->load("dict"); + +if (empty($user->id)) +{ + print "Load permissions for admin user nb 1\n"; + $user->fetch(1); + $user->getrights(); +} +$conf->global->MAIN_DISABLE_ALL_MAILS=1; + +/** + * Class for PHPUnit tests + * + * @backupGlobals disabled + * @backupStaticAttributes enabled + * @remarks backupGlobals must be disabled to have db,conf,user and lang not erased. + */ +class CompanyLibTest extends PHPUnit_Framework_TestCase +{ + protected $savconf; + protected $savuser; + protected $savlangs; + protected $savdb; + + /** + * Constructor + * We save global variables into local variables + * + * @return SocieteTest + */ + function __construct() + { + //$this->sharedFixture + global $conf,$user,$langs,$db; + $this->savconf=$conf; + $this->savuser=$user; + $this->savlangs=$langs; + $this->savdb=$db; + + print __METHOD__." db->type=".$db->type." user->id=".$user->id; + //print " - db ".$db->db; + print "\n"; + } + + // Static methods + public static function setUpBeforeClass() + { + global $conf,$user,$langs,$db; + + if ($conf->global->SOCIETE_CODECLIENT_ADDON != 'mod_codeclient_monkey') { print "\n".__METHOD__." third party ref checker must be setup to 'mod_codeclient_monkey' not to '".$conf->global->SOCIETE_CODECLIENT_ADDON."'.\n"; die(); } + + if (! empty($conf->global->MAIN_DISABLEPROFIDRULES)) { print "\n".__METHOD__." constant MAIN_DISABLEPROFIDRULE must be empty (if a module set it, disable module).\n"; die(); } + + $db->begin(); // This is to have all actions inside a transaction even if test launched without suite. + + print __METHOD__."\n"; + } + public static function tearDownAfterClass() + { + global $conf,$user,$langs,$db; + $db->rollback(); + + print __METHOD__."\n"; + } + + /** + * Init phpunit tests + * + * @return void + */ + protected function setUp() + { + global $conf,$user,$langs,$db; + $conf=$this->savconf; + $user=$this->savuser; + $langs=$this->savlangs; + $db=$this->savdb; + + print __METHOD__."\n"; + } + + /** + * End phpunit tests + * + * @return void + */ + protected function tearDown() + { + print __METHOD__."\n"; + } + + /** + * testSocieteCreate + * + * @return int + */ + public function testCompanyLibSocieteCreate() + { + global $conf,$user,$langs,$db; + $conf=$this->savconf; + $user=$this->savuser; + $langs=$this->savlangs; + $db=$this->savdb; + + $localobject=new Societe($this->savdb); + $localobject->initAsSpecimen(); + $localobject-> + $result=$localobject->create($user); + + print __METHOD__." result=".$result."\n"; + $this->assertLessThanOrEqual($result, 0); + + return $result; + } + + /*** + * + */ + public function testCompanyLibgetState() + { + global $conf,$user,$langs,$db; + $conf=$this->savconf; + $user=$this->savuser; + $langs=$this->savlangs; + $db=$this->savdb; + + $localobject=new Societe($this->savdb); + $localobject->initAsSpecimen(); + $result=$localobject->create($user); + + print __METHOD__." result=".$result."\n"; + $this->assertLessThanOrEqual($result, 0); + + return $result; + } + +} +?> \ No newline at end of file From b3504977b0cf4acb4e4090c483db662714302f70 Mon Sep 17 00:00:00 2001 From: jean Date: Sat, 4 Jun 2016 11:28:37 +0200 Subject: [PATCH 100/245] #5224 Adding "Copyof" before invoice label to remind user to change it and avoid label to be the label of cloned invoice --- htdocs/fourn/class/fournisseur.facture.class.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 728ff9ac674..c85da60dd13 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -1806,6 +1806,7 @@ class FactureFournisseur extends CommonInvoice $object->date = ''; $object->date_echeance = ''; $object->ref_client = ''; + $object->libelle = $langs->trans("CopyOf").' '.$object->libelle; $object->close_code = ''; $object->close_note = ''; From 0f14f5a86fb450cc4432de204d35e764064b0ec4 Mon Sep 17 00:00:00 2001 From: jean Date: Sat, 4 Jun 2016 11:39:05 +0200 Subject: [PATCH 101/245] supp --- test/phpunit/CompanyLibTest.php | 171 -------------------------------- 1 file changed, 171 deletions(-) delete mode 100644 test/phpunit/CompanyLibTest.php diff --git a/test/phpunit/CompanyLibTest.php b/test/phpunit/CompanyLibTest.php deleted file mode 100644 index 3dde3f6983d..00000000000 --- a/test/phpunit/CompanyLibTest.php +++ /dev/null @@ -1,171 +0,0 @@ - - * 2014 Jean Heimburger - * -* 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 . -* or see http://www.gnu.org/ -*/ - -/** - * \file test/phpunit/SocieteTest.php - * \ingroup test - * \brief PHPUnit test - * \remarks To run this script as CLI: phpunit filename.php - */ - -global $conf,$user,$langs,$db; -//define('TEST_DB_FORCE_TYPE','mysql'); // This is to force using mysql driver -require_once 'PHPUnit/Autoload.php'; -require_once dirname(__FILE__).'/../../htdocs/master.inc.php'; -require_once dirname(__FILE__).'/../../htdocs/societe/class/societe.class.php'; -require_once dirname(__FILE__).'/../../htdocs/core/lib/company.lib.php'; - -$langs->load("dict"); - -if (empty($user->id)) -{ - print "Load permissions for admin user nb 1\n"; - $user->fetch(1); - $user->getrights(); -} -$conf->global->MAIN_DISABLE_ALL_MAILS=1; - -/** - * Class for PHPUnit tests - * - * @backupGlobals disabled - * @backupStaticAttributes enabled - * @remarks backupGlobals must be disabled to have db,conf,user and lang not erased. - */ -class CompanyLibTest extends PHPUnit_Framework_TestCase -{ - protected $savconf; - protected $savuser; - protected $savlangs; - protected $savdb; - - /** - * Constructor - * We save global variables into local variables - * - * @return SocieteTest - */ - function __construct() - { - //$this->sharedFixture - global $conf,$user,$langs,$db; - $this->savconf=$conf; - $this->savuser=$user; - $this->savlangs=$langs; - $this->savdb=$db; - - print __METHOD__." db->type=".$db->type." user->id=".$user->id; - //print " - db ".$db->db; - print "\n"; - } - - // Static methods - public static function setUpBeforeClass() - { - global $conf,$user,$langs,$db; - - if ($conf->global->SOCIETE_CODECLIENT_ADDON != 'mod_codeclient_monkey') { print "\n".__METHOD__." third party ref checker must be setup to 'mod_codeclient_monkey' not to '".$conf->global->SOCIETE_CODECLIENT_ADDON."'.\n"; die(); } - - if (! empty($conf->global->MAIN_DISABLEPROFIDRULES)) { print "\n".__METHOD__." constant MAIN_DISABLEPROFIDRULE must be empty (if a module set it, disable module).\n"; die(); } - - $db->begin(); // This is to have all actions inside a transaction even if test launched without suite. - - print __METHOD__."\n"; - } - public static function tearDownAfterClass() - { - global $conf,$user,$langs,$db; - $db->rollback(); - - print __METHOD__."\n"; - } - - /** - * Init phpunit tests - * - * @return void - */ - protected function setUp() - { - global $conf,$user,$langs,$db; - $conf=$this->savconf; - $user=$this->savuser; - $langs=$this->savlangs; - $db=$this->savdb; - - print __METHOD__."\n"; - } - - /** - * End phpunit tests - * - * @return void - */ - protected function tearDown() - { - print __METHOD__."\n"; - } - - /** - * testSocieteCreate - * - * @return int - */ - public function testCompanyLibSocieteCreate() - { - global $conf,$user,$langs,$db; - $conf=$this->savconf; - $user=$this->savuser; - $langs=$this->savlangs; - $db=$this->savdb; - - $localobject=new Societe($this->savdb); - $localobject->initAsSpecimen(); - $localobject-> - $result=$localobject->create($user); - - print __METHOD__." result=".$result."\n"; - $this->assertLessThanOrEqual($result, 0); - - return $result; - } - - /*** - * - */ - public function testCompanyLibgetState() - { - global $conf,$user,$langs,$db; - $conf=$this->savconf; - $user=$this->savuser; - $langs=$this->savlangs; - $db=$this->savdb; - - $localobject=new Societe($this->savdb); - $localobject->initAsSpecimen(); - $result=$localobject->create($user); - - print __METHOD__." result=".$result."\n"; - $this->assertLessThanOrEqual($result, 0); - - return $result; - } - -} -?> \ No newline at end of file From cc2b2a0baa32bdbaee237668eb8283b2001ede31 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Sat, 4 Jun 2016 11:52:36 +0200 Subject: [PATCH 102/245] Don't delete link between order and shipment --- htdocs/commande/tpl/linkedobjectblock.tpl.php | 11 ++++++++++- htdocs/expedition/tpl/linkedobjectblock.tpl.php | 14 +++++++++++--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/htdocs/commande/tpl/linkedobjectblock.tpl.php b/htdocs/commande/tpl/linkedobjectblock.tpl.php index 1968caf2544..98e931db9f8 100644 --- a/htdocs/commande/tpl/linkedobjectblock.tpl.php +++ b/htdocs/commande/tpl/linkedobjectblock.tpl.php @@ -46,7 +46,16 @@ foreach($linkedObjectBlock as $key => $objectlink) echo price($objectlink->total_ht); } ?> - + $objectlink) + } ?> - + + Date: Sat, 4 Jun 2016 12:10:38 +0200 Subject: [PATCH 103/245] Revert "#5224 Adding "Copyof" before invoice label to remind user to change it and avoid label to be the label of cloned invoice " This reverts commit b3504977b0cf4acb4e4090c483db662714302f70. --- htdocs/fourn/class/fournisseur.facture.class.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index c85da60dd13..728ff9ac674 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -1806,7 +1806,6 @@ class FactureFournisseur extends CommonInvoice $object->date = ''; $object->date_echeance = ''; $object->ref_client = ''; - $object->libelle = $langs->trans("CopyOf").' '.$object->libelle; $object->close_code = ''; $object->close_note = ''; From baa6dd84cfa89f962adbda7da6fee7ddeb1638f7 Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Sat, 4 Jun 2016 13:12:05 +0200 Subject: [PATCH 104/245] Fix better perfomance in for --- htdocs/admin/receiptprinter.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/htdocs/admin/receiptprinter.php b/htdocs/admin/receiptprinter.php index 87fce1f6087..b86023aa49a 100644 --- a/htdocs/admin/receiptprinter.php +++ b/htdocs/admin/receiptprinter.php @@ -1,6 +1,7 @@ * Copyright (C) 2015 Frederic France + * Copyright (C) 2016 Juanjo Menent * * 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 @@ -377,7 +378,8 @@ if ($mode == 'template' && $user->admin) if ($ret > 0) { setEventMessages($printer->error, $printer->errors, 'errors'); } else { - for ($line=0; $line < count($printer->listprinterstemplates); $line++) { + $max = count($printer->listprinterstemplates); + for ($line=0; $line < $max; $line++) { $var = !$var; print ''; if ($action=='edittemplate' && $printer->listprinterstemplates[$line]['rowid']==$templateid) { @@ -422,7 +424,8 @@ if ($mode == 'template' && $user->admin) print ''; print ''; print "\n"; - for ($tag=0; $tag < count($printer->tags); $tag++) { + $max = count($printer->tags); + for ($tag=0; $tag < $max; $tag++) { $var = !$var; print ''; print ''; From 01b881a0a692cb3d708c1471155b3539a40c4c96 Mon Sep 17 00:00:00 2001 From: phf Date: Sat, 4 Jun 2016 13:24:42 +0200 Subject: [PATCH 105/245] 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 975d9357fac0a389aab5665064318d6d428ce76b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 4 Jun 2016 14:08:57 +0200 Subject: [PATCH 106/245] FIX On recurring invoice, when generation is done manually from card, counter of number of generation must be +1 --- htdocs/compta/facture.php | 2 +- htdocs/compta/facture/class/facture-rec.class.php | 1 + htdocs/compta/facture/class/facture.class.php | 5 ++--- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index a94448f5c12..9dd01b7162c 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -863,7 +863,7 @@ if (empty($reshook)) } } - // Standard invoice or Deposit invoice created from a Predefined invoice + // Standard invoice or Deposit invoice created from a Predefined template invoice if (($_POST['type'] == Facture::TYPE_STANDARD || $_POST['type'] == Facture::TYPE_DEPOSIT) && GETPOST('fac_rec') > 0) { $dateinvoice = dol_mktime(12, 0, 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']); diff --git a/htdocs/compta/facture/class/facture-rec.class.php b/htdocs/compta/facture/class/facture-rec.class.php index 3ef9d716bfb..f1cae70fec5 100644 --- a/htdocs/compta/facture/class/facture-rec.class.php +++ b/htdocs/compta/facture/class/facture-rec.class.php @@ -962,6 +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++; return 1; } else diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 6e46ead1da5..10251d631f7 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -309,13 +309,12 @@ class Facture extends CommonInvoice $forceduedate = $this->calculate_date_lim_reglement(); - // Update date and number of last generation of recurring template invoice, before inserting new invoice + // For recurrn invoices, update date and number of last generation of recurring template invoice, before inserting new invoice if ($_facrec->frequency > 0) { - $_facrec->nb_gen_done++; $next_date = $_facrec->getNextDate(); // Calculate next date $_facrec->setValueFrom('date_last_gen', $now, '', null, 'date'); - $_facrec->setValueFrom('nb_gen_done', $_facrec->nb_gen_done + 1); + //$_facrec->setValueFrom('nb_gen_done', $_facrec->nb_gen_done + 1); // Not required, +1 already included into setNextDate when second param is 1. $_facrec->setNextDate($next_date,1); } } From d924be8b95876c48494b2d693bc10ecda878cc90 Mon Sep 17 00:00:00 2001 From: novalore Date: Sat, 4 Jun 2016 14:21:21 +0200 Subject: [PATCH 107/245] en_US lang fixes again --- htdocs/langs/en_US/banks.lang | 2 +- htdocs/langs/en_US/bookmarks.lang | 2 +- htdocs/langs/en_US/boxes.lang | 4 ++-- htdocs/langs/en_US/compta.lang | 2 +- htdocs/langs/en_US/main.lang | 2 +- htdocs/langs/en_US/projects.lang | 12 ++++++------ htdocs/langs/en_US/stocks.lang | 4 ++-- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/htdocs/langs/en_US/banks.lang b/htdocs/langs/en_US/banks.lang index 8ba28807bca..e4c38a8d549 100644 --- a/htdocs/langs/en_US/banks.lang +++ b/htdocs/langs/en_US/banks.lang @@ -127,7 +127,7 @@ ConfirmValidateCheckReceipt=Are you sure you want to validate this check receipt DeleteCheckReceipt=Delete this check receipt ? ConfirmDeleteCheckReceipt=Are you sure you want to delete this check receipt ? BankChecks=Bank checks -BankChecksToReceipt=Checks waiting for deposit +BankChecksToReceipt=Checks awaiting deposit ShowCheckReceipt=Show check deposit receipt NumberOfCheques=Nb of check DeleteTransaction=Delete transaction diff --git a/htdocs/langs/en_US/bookmarks.lang b/htdocs/langs/en_US/bookmarks.lang index 7acb946bb62..19e383b2b3e 100644 --- a/htdocs/langs/en_US/bookmarks.lang +++ b/htdocs/langs/en_US/bookmarks.lang @@ -14,6 +14,6 @@ BehaviourOnClick=Behaviour when a URL is clicked CreateBookmark=Create bookmark SetHereATitleForLink=Set a title for the bookmark UseAnExternalHttpLinkOrRelativeDolibarrLink=Use an external http URL or a relative Dolibarr URL -ChooseIfANewWindowMustBeOpenedOnClickOnBookmark=Choose if a page opened by link must appear on current or new window +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 a584802048d..bbb03afa4f2 100644 --- a/htdocs/langs/en_US/boxes.lang +++ b/htdocs/langs/en_US/boxes.lang @@ -1,7 +1,7 @@ # Dolibarr language file - Source file is en_US - boxes BoxLastRssInfos=Rss information BoxLastProducts=Latest %s products/services -BoxProductsAlertStock=Products in stock alert +BoxProductsAlertStock=Stock alerts for products BoxLastProductsInContract=Latest %s contracted products/services BoxLastSupplierBills=Latest supplier invoices BoxLastCustomerBills=Latest customer invoices @@ -44,7 +44,7 @@ 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 intervention +BoxTitleLastFicheInter=Latest %s modified interventions BoxTitleOldestUnpaidCustomerBills=Oldest %s unpaid customer invoices BoxTitleOldestUnpaidSupplierBills=Oldest %s unpaid supplier invoices BoxTitleCurrentAccounts=Open accounts balances diff --git a/htdocs/langs/en_US/compta.lang b/htdocs/langs/en_US/compta.lang index 23edfae8b05..b54f59dcfc2 100644 --- a/htdocs/langs/en_US/compta.lang +++ b/htdocs/langs/en_US/compta.lang @@ -125,7 +125,7 @@ LastCheckReceiptShort=Latest %s check receipts NewCheckReceipt=New discount NewCheckDeposit=New check deposit NewCheckDepositOn=Create receipt for deposit on account: %s -NoWaitingChecks=No checks waiting for deposit. +NoWaitingChecks=No checks awaiting deposit. DateChequeReceived=Check reception date NbOfCheques=Nb of checks PaySocialContribution=Pay a social/fiscal tax diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index e252903f082..f581b76deda 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -594,7 +594,7 @@ Priority=Priority SendByMail=Send by EMail MailSentBy=Email sent by TextUsedInTheMessageBody=Email body -SendAcknowledgementByMail=Send Ack. by email +SendAcknowledgementByMail=Send confirmation email EMail=E-mail NoEMail=No email NoMobilePhone=No mobile phone diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index 84fa74643fa..a9fd3b993e4 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -30,9 +30,9 @@ ConfirmDeleteATask=Are you sure you want to delete this task ? OfficerProject=Officer project LastProjects=Latest %s projects AllProjects=All projects -OpenedProjects=Opened projects -OpenedTasks=Opened tasks -OpportunitiesStatusForOpenedProjects=Opportunities amount of opened projects by status +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 @@ -182,14 +182,14 @@ ManageOpportunitiesStatus=Use projects to follow leads/opportinuties ProjectNbProjectByMonth=Nb of created projects by month ProjectOppAmountOfProjectsByMonth=Amount of opportunities by month ProjectWeightedOppAmountOfProjectsByMonth=Weighted amount of opportunities by month -ProjectOpenedProjectByOppStatus=Opened project/lead by opportunity status +ProjectOpenedProjectByOppStatus=Open project/lead by opportunity status ProjectsStatistics=Statistics on projects/leads TaskAssignedToEnterTime=Task assigned. Entering time on this task should be possible. IdTaskTime=Id task time YouCanCompleteRef=If you want to complete the ref with some information (to use it as search filters), it is recommanded to add a - character to separate it, so the automatic numbering will still work correctly for next projects. For example %s-ABC. You may also prefer to add search keys into label. -OpenedProjectsByThirdparties=Opened projects by thirdparties +OpenedProjectsByThirdparties=Open projects by thirdparties OnlyOpportunitiesShort=Only opportunities -OpenedOpportunitiesShort=Opened opportunities +OpenedOpportunitiesShort=Open opportunities NotAnOpportunityShort=Not an opportunity OpportunityTotalAmount=Opportunities total amount OpportunityPonderatedAmount=Opportunities weighted amount diff --git a/htdocs/langs/en_US/stocks.lang b/htdocs/langs/en_US/stocks.lang index 6b1a28eae17..c1ba6f73159 100644 --- a/htdocs/langs/en_US/stocks.lang +++ b/htdocs/langs/en_US/stocks.lang @@ -116,7 +116,7 @@ WarehouseForStockDecrease=The warehouse %s will be used for stock decreas WarehouseForStockIncrease=The warehouse %s will be used for stock increase ForThisWarehouse=For this warehouse ReplenishmentStatusDesc=This is a list of all products with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked). Using the checkbox, you can create supplier orders to fill the difference. -ReplenishmentOrdersDesc=This is a list of all opened supplier orders including predefined products. Only opened orders with predefined products, so orders that may affect stocks, are visible here. +ReplenishmentOrdersDesc=This is a list of all open supplier orders including predefined products. Only open orders with predefined products, so orders that may affect stocks, are visible here. Replenishments=Replenishments NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) @@ -143,4 +143,4 @@ ThisSerialAlreadyExistWithDifferentDate=This lot/serial number (%s Date: Sat, 4 Jun 2016 14:30:05 +0200 Subject: [PATCH 108/245] Add a better explanation on job generation --- htdocs/compta/facture/fiche-rec.php | 5 +++++ htdocs/langs/en_US/admin.lang | 1 + 2 files changed, 6 insertions(+) diff --git a/htdocs/compta/facture/fiche-rec.php b/htdocs/compta/facture/fiche-rec.php index b826e4f266d..8118cbea1ac 100644 --- a/htdocs/compta/facture/fiche-rec.php +++ b/htdocs/compta/facture/fiche-rec.php @@ -1256,8 +1256,13 @@ else print '
'; + // Frequencry/Recurring section if ($object->frequency > 0) { + if (empty($conf->cron->enabled)) + { + print info_admin($langs->trans("EnableAndSetupModuleCron", $langs->transnoentitiesnoconv("Module2300Name"))); + } print '
'.$langs->trans("Currencies").''.$form->textwithpicto($langs->trans("CurrenciesUsed"), $langs->transnoentitiesnoconv("CurrenciesUsed_help_to_add")).' '.$langs->trans("Rate").'
- '.$form->selectCurrency('', 'code').' '; diff --git a/htdocs/langs/en_US/multicurrency.lang b/htdocs/langs/en_US/multicurrency.lang new file mode 100644 index 00000000000..b37355372a1 --- /dev/null +++ b/htdocs/langs/en_US/multicurrency.lang @@ -0,0 +1,17 @@ +# ADMIN +RecordSaved=Currency rate added +RecordDeleted=Currency rate deleted +ErrorAddRateFail=Error in added rate +ErrorAddCurrencyFail=Error in added currency +ErrorDeleteCurrencyFail=Error delete fail +multicurrency_syncronize_error=Error in synchronization +multicurrency_useOriginTx=Use the origin rate +CurrencyLayerAccount=CurrencyLayer API +CurrencyLayerAccount_help_to_synchronize=You sould create an account on their website to use this functionnality
Get your API key
If you use a free account you can't change the currency source (USD by default)
But if your main currency isn't USD you can use the alternate currency source to force you main currency

You are limited at 1000 synchronizations per month +multicurrency_appId=API key +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 From 32b6766a7d560d7c47a042f363709588b8124ae7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 4 Jun 2016 01:50:01 +0200 Subject: [PATCH 094/245] 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 095/245] 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 3ee8f931b4373941c9490488642f6aff10933cca Mon Sep 17 00:00:00 2001 From: novalore Date: Sat, 4 Jun 2016 02:16:58 +0200 Subject: [PATCH 096/245] other fixes in en_US lang files --- htdocs/langs/en_US/admin.lang | 80 +++++++++++++++--------------- htdocs/langs/en_US/agenda.lang | 6 +-- htdocs/langs/en_US/bills.lang | 2 +- htdocs/langs/en_US/commercial.lang | 4 +- htdocs/langs/en_US/companies.lang | 22 ++++---- htdocs/langs/en_US/cron.lang | 4 +- htdocs/langs/en_US/main.lang | 18 +++---- htdocs/langs/en_US/other.lang | 60 +++++++++++----------- htdocs/langs/en_US/projects.lang | 8 +-- 9 files changed, 102 insertions(+), 102 deletions(-) diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 55c6d54fe8d..c57c01dfc36 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -2,8 +2,8 @@ Foundation=Foundation Version=Version VersionProgram=Version program -VersionLastInstall=Version initial install -VersionLastUpgrade=Version last upgrade +VersionLastInstall=Initial install version +VersionLastUpgrade=Latest version upgrade VersionExperimental=Experimental VersionDevelopment=Development VersionUnknown=Unknown @@ -145,8 +145,8 @@ Boxes=Widgets MaxNbOfLinesForBoxes=Max number of lines for widgets PositionByDefault=Default order Position=Position -MenusDesc=Menus managers define content of the 2 menu bars (horizontal bar and vertical bar). -MenusEditorDesc=The menu editor allow you to define personalized entries in menus. Use it carefully to avoid making dolibarr unstable and menu entries permanently unreachable.
Some modules add entries in the menus (in menu All in most cases). If you removed some of these entries by mistake, you can restore them by disabling and reenabling the module. +MenusDesc=Menu managers set content of the two menu bars (horizontal and vertical). +MenusEditorDesc=The menu editor allows you to define custom menu entries. Use it carefully to avoid instability and permanently unreachable menu entries.
Some modules add menu entries (in menu All mostly). If you remove some of these entries by mistake, you can restore them disabling and reenabling the module. MenuForUsers=Menu for users LangFile=.lang file System=System @@ -154,13 +154,13 @@ SystemInfo=System information SystemToolsArea=System tools area SystemToolsAreaDesc=This area provides administration features. Use the menu to choose the feature you're looking for. Purge=Purge -PurgeAreaDesc=This page allows you to delete all files built or stored by Dolibarr (temporary files or all files in %s directory). Using this feature is not necessary. It is provided for users whose Dolibarr is hosted by a provider that does not offer permissions to delete files built by the web server. -PurgeDeleteLogFile=Delete log file %s defined for Syslog module (no risk to loose data) -PurgeDeleteTemporaryFiles=Delete all temporary files (no risk to loose data) +PurgeAreaDesc=This page allows you to delete all files generated or stored by Dolibarr (temporary files or all files in %s directory). Using this feature is not necessary. It is provided as a workaround for users whose Dolibarr is hosted by a provider that does not offer permissions to delete files generated by the web server. +PurgeDeleteLogFile=Delete log file %s defined for Syslog module (no risk of losing data) +PurgeDeleteTemporaryFiles=Delete all temporary files (no risk of losing data) PurgeDeleteTemporaryFilesShort=Delete temporary files PurgeDeleteAllFilesInDocumentsDir=Delete all files in directory %s. Temporary files but also database backup dumps, files attached to elements (third parties, invoices, ...) and uploaded into the ECM module will be deleted. PurgeRunNow=Purge now -PurgeNothingToDelete=No directory or file to delete. +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. @@ -210,12 +210,12 @@ OnlyActiveElementsAreShown=Only elements from enabled modules a 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 predefined setup of Dolibarr for a particular business. -ModulesMarketPlaceDesc=You can find more modules to download on external web sites on the Internet... +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 -DoliPartnersDesc=List with some companies that can provide/develop on-demand modules or features (Note: any Open Source company knowning PHP language can provide you specific development) -WebSiteDesc=Web site providers you can search to find more modules... +DoliPartnersDesc=List of companies providing custom developed modules or features (Note: anyone experienced in PHP programming can provide custom development for an open source project) +WebSiteDesc=Reference websites to find more modules... URL=Link BoxesAvailable=Widgets available BoxesActivated=Widgets activated @@ -312,8 +312,8 @@ InfDirAlt=Since version 3 it is possible to define an alternative root directory InfDirExample=
Then declare it in the file conf.php
$dolibarr_main_url_root_alt='http://myserver/custom'
$dolibarr_main_document_root_alt='/path/of/dolibarr/htdocs/custom'
*These lines are commented with "#", to uncomment only remove the character. YouCanSubmitFile=For this step, you can send package using this tool: Select module file CurrentVersion=Dolibarr current version -CallUpdatePage=Go to the page that updates the database structure and datas: %s. -LastStableVersion=Last stable version +CallUpdatePage=Go to the page that updates the database structure and data: %s. +LastStableVersion=Latest stable version UpdateServerOffline=Update server offline GenericMaskCodes=You may enter any numbering mask. In this mask, the following tags could be used:
{000000} corresponds to a number which will be incremented on each %s. Enter as many zeros as the desired length of the counter. The counter will be completed by zeros from the left in order to have as many zeros as the mask.
{000000+000} same as previous but an offset corresponding to the number to the right of the + sign is applied starting on first %s.
{000000@x} same as previous but the counter is reset to zero when month x is reached (x between 1 and 12, or 0 to use the early months of fiscal year defined in your configuration, or 99 to reset to zero every month). If this option is used and x is 2 or higher, then sequence {yy}{mm} or {yyyy}{mm} is also required.
{dd} day (01 to 31).
{mm} month (01 to 12).
{yy}, {yyyy} or {y} year over 2, 4 or 1 numbers.
GenericMaskCodes2={cccc} the client code on n characters
{cccc000} the client code on n characters is followed by a counter dedicated for customer. This counter dedicated to customer is reset at same time than global counter.
{tttt} The code of thirdparty type on n characters (see dictionary-thirdparty types).
@@ -367,7 +367,7 @@ PDFAddressForging=Rules to forge address boxes HideAnyVATInformationOnPDF=Hide all information related to VAT on generated PDF HideDescOnPDF=Hide products description on generated PDF HideRefOnPDF=Hide products ref. on generated PDF -HideDetailsOnPDF=Hide products lines details on generated PDF +HideDetailsOnPDF=Hide product lines details on generated PDF PlaceCustomerAddressToIsoLocation=Use french standard position (La Poste) for customer address position Library=Library UrlGenerationParameters=Parameters to secure URLs @@ -401,8 +401,8 @@ ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value

fo ExtrafieldParamHelpradio=Parameters list have to be like key,value

for example :
1,value1
2,value2
3,value3
... ExtrafieldParamHelpsellist=Parameters list comes from a table
Syntax : table_name:label_field:id_field::filter
Example : c_typent:libelle:id::filter

filter can be a simple test (eg active=1) to display only active value
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another :
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelpchkbxlst=Parameters list comes from a table
Syntax : table_name:label_field:id_field::filter
Example : c_typent:libelle:id::filter

filter can be a simple test (eg active=1) to display only active value
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another :
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelplink=Parameters must be ObjectName:Classpath
Syntax : ObjectName:Classpath
Example : Societe:societe/class/societe.class.php -LibraryToBuildPDF=Library used to build PDF +ExtrafieldParamHelplink=Parameters must be ObjectName:Classpath
Syntax : ObjectName:Classpath
Example : Societe:societe/class/societe.class.php +LibraryToBuildPDF=Library used for PDF generation WarningUsingFPDF=Warning: Your conf.php contains directive dolibarr_pdf_force_fpdf=1. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.
To solve this and have a full support of PDF generation, please download TCPDF library, then comment or remove the line $dolibarr_pdf_force_fpdf=1, and add instead $dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir' LocalTaxDesc=Some countries apply 2 or 3 taxes on each invoice line. If this is the case, choose type for second and third tax and its rate. Possible type are:
1 : local tax apply on products and services without vat (localtax is calculated on amount without tax)
2 : local tax apply on products and services including vat (localtax is calculated on amount + main tax)
3 : local tax apply on products without vat (localtax is calculated on amount without tax)
4 : local tax apply on products including vat (localtax is calculated on amount + main vat)
5 : local tax apply on services without vat (localtax is calculated on amount without tax)
6 : local tax apply on services including vat (localtax is calculated on amount + tax) SMS=SMS @@ -424,12 +424,12 @@ 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, capital and VAT number). +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 - +DisplayCompanyInfoAndManagers=Display company and manager names + # Modules Module0Name=Users & groups Module0Desc=Users and groups management @@ -492,15 +492,15 @@ Module200Desc=LDAP directory synchronisation Module210Name=PostNuke Module210Desc=PostNuke integration Module240Name=Data exports -Module240Desc=Tool to export Dolibarr datas (with assistants) +Module240Desc=Tool to export Dolibarr data (with assistants) Module250Name=Data imports -Module250Desc=Tool to import datas in Dolibarr (with assistants) +Module250Desc=Tool to import data in Dolibarr (with assistants) Module310Name=Members Module310Desc=Foundation members management Module320Name=RSS Feed Module320Desc=Add RSS feed inside Dolibarr screen pages Module330Name=Bookmarks -Module330Desc=Bookmark management +Module330Desc=Bookmarks management Module400Name=Projects/Opportunities/Leads Module400Desc=Management of projects, opportunities or leads. You can then assign any element (invoice, order, proposal, intervention, ...) to a project and get a transversal view from the project view. Module410Name=Webcalendar @@ -549,7 +549,7 @@ Module2800Desc=FTP Client Module2900Name=GeoIPMaxmind Module2900Desc=GeoIP Maxmind conversions capabilities Module3100Name=Skype -Module3100Desc=Add a Skype button into card of users / third parties / contacts / members +Module3100Desc=Add a Skype button into users / third parties / contacts / members cards Module4000Name=HRM Module4000Desc=Human resources management Module5000Name=Multi-company @@ -607,7 +607,7 @@ Permission71=Read members Permission72=Create/modify members Permission74=Delete members Permission75=Setup types of membership -Permission76=Export datas +Permission76=Export data Permission78=Read subscriptions Permission79=Create/modify subscriptions Permission81=Read customers orders @@ -817,15 +817,15 @@ Permission55002=Create/modify polls Permission59001=Read commercial margins Permission59002=Define commercial margins Permission59003=Read every user margin -DictionaryCompanyType=Thirdparties type -DictionaryCompanyJuridicalType=Juridical kinds of thirdparties +DictionaryCompanyType=Types of thirdparties +DictionaryCompanyJuridicalType=Legal forms of thirdparties DictionaryProspectLevel=Prospect potential level DictionaryCanton=State/Province DictionaryRegion=Regions DictionaryCountry=Countries DictionaryCurrency=Currencies -DictionaryCivility=Civility title -DictionaryActions=Type of agenda events +DictionaryCivility=Personal and professional titles +DictionaryActions=Types of agenda events DictionarySocialContributions=Social or fiscal taxes types DictionaryVAT=VAT Rates or Sales Tax Rates DictionaryRevenueStamp=Amount of revenue stamps @@ -834,7 +834,7 @@ DictionaryPaymentModes=Payment modes DictionaryTypeContact=Contact/Address types DictionaryEcotaxe=Ecotax (WEEE) DictionaryPaperFormat=Paper formats -DictionaryFees=Type of fees +DictionaryFees=Types of fees DictionarySendingMethods=Shipping methods DictionaryStaff=Staff DictionaryAvailability=Delivery delay @@ -845,14 +845,14 @@ DictionaryAccountancysystem=Models for chart of accounts DictionaryEMailTemplates=Emails templates DictionaryUnits=Units DictionaryProspectStatus=Prospection status -DictionaryHolidayTypes=Type of leaves +DictionaryHolidayTypes=Types of leaves 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=The VAT rate by default when creating prospects, invoices, orders etc follow the active standard rule:
If the seller is not subjected to VAT, then VAT by default=0. End of rule.
If the (selling country= buying country), then the VAT by default=VAT of the product in the selling country. End of rule.
If seller and buyer in the European Community and goods are transport products (car, ship, plane), the default VAT=0 ( The VAT should be paid by the buyer at the customoffice of his country and not at the seller). End of rule.
If seller and buyer in the European Community and buyer is not a company, then the VAT by default=VAT of product sold. End of rule.
If seller and buyer in the European Community and buyer is a company, then the VAT by default=0. End of rule.
Else the proposed default VAT=0. End of rule. +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. VATIsUsedExampleFR=In France, it means companies or organisations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non VAT declared or companies, organisations or liberal professions that have chosen the micro enterprise fiscal system (VAT in franchise) and paid a franchise VAT without any VAT declaration. This choice will display the reference "Non applicable VAT - art-293B of CGI" on invoices. @@ -1000,13 +1000,13 @@ SetupDescription5=Other menu entries manage optional parameters. EventsSetup=Setup for events logs LogEvents=Security audit events Audit=Audit -InfoDolibarr=Infos Dolibarr -InfoBrowser=Infos Browser -InfoOS=Infos OS -InfoWebServer=Infos web server -InfoDatabase=Infos database -InfoPHP=Infos PHP -InfoPerf=Infos performances +InfoDolibarr=About Dolibarr +InfoBrowser=About Browser +InfoOS=About OS +InfoWebServer=About Web Server +InfoDatabase=About Database +InfoPHP=About PHP +InfoPerf=About Performances BrowserName=Browser name BrowserOS=Browser OS ListEvents=Audit events @@ -1030,7 +1030,7 @@ TriggerDisabledAsModuleDisabled=Triggers in this file are disabled as module TriggerAlwaysActive=Triggers in this file are always active, whatever are the activated Dolibarr modules. TriggerActiveAsModuleActive=Triggers in this file are active as module %s is enabled. GeneratedPasswordDesc=Define here which rule you want to use to generate new password if you ask to have auto generated password -DictionaryDesc=Define here all reference datas. You can complete predefined value with yours. +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. They are reserved parameters for advanced developers or for troubleshouting. 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=Define here all other parameters related to security. diff --git a/htdocs/langs/en_US/agenda.lang b/htdocs/langs/en_US/agenda.lang index d4b651b46b5..acb9f40f7e3 100644 --- a/htdocs/langs/en_US/agenda.lang +++ b/htdocs/langs/en_US/agenda.lang @@ -81,8 +81,8 @@ AgendaUrlOptions2=login=%s to restrict output to actions created by or as AgendaUrlOptions3=logina=%s to restrict output to actions owned by a user %s. AgendaUrlOptions4=logint=%s to restrict output to actions assigned to user %s. AgendaUrlOptionsProject=project=PROJECT_ID to restrict output to actions associated to project PROJECT_ID. -AgendaShowBirthdayEvents=Show birthday's contacts -AgendaHideBirthdayEvents=Hide birthday's contacts +AgendaShowBirthdayEvents=Show birthdays of contacts +AgendaHideBirthdayEvents=Hide birthdays of contacts Busy=Busy ExportDataset_event1=List of agenda events DefaultWorkingDays=Default working days range in week (Example: 1-5, 1-6) @@ -110,4 +110,4 @@ EveryWeek=Every week EveryMonth=Every month DayOfMonth=Day of month DayOfWeek=Day of week -DateStartPlusOne=Date start + 1 hour \ No newline at end of file +DateStartPlusOne=Date start + 1 hour diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang index c1e61b9d935..ab0056dc70e 100644 --- a/htdocs/langs/en_US/bills.lang +++ b/htdocs/langs/en_US/bills.lang @@ -319,7 +319,7 @@ FrequencyPer_m=Every %s months FrequencyPer_y=Every %s years toolTipFrequency=Examples:
Set 7 / day: give a new invoice every 7 days
Set 3 / month: give a new invoice every 3 month NextDateToExecution=Date for next invoice generation -DateLastGeneration=Date of last generation +DateLastGeneration=Date of latest generation MaxPeriodNumber=Max nb of invoice generation NbOfGenerationDone=Nb of invoice generation already done InvoiceAutoValidate=Validate invoices automatically diff --git a/htdocs/langs/en_US/commercial.lang b/htdocs/langs/en_US/commercial.lang index 918c3714474..03798ed96aa 100644 --- a/htdocs/langs/en_US/commercial.lang +++ b/htdocs/langs/en_US/commercial.lang @@ -16,8 +16,8 @@ Rendez-Vous=Rendezvous ConfirmDeleteAction=Are you sure you want to delete this event ? CardAction=Event card PercentDone=Percentage complete -ActionOnCompany=Event about company -ActionOnContact=Event about contact +ActionOnCompany=Related company +ActionOnContact=Related contact TaskRDV=Meetings TaskRDVWith=Meeting with %s ShowTask=Show task diff --git a/htdocs/langs/en_US/companies.lang b/htdocs/langs/en_US/companies.lang index 89a630e26cd..83c49532e41 100644 --- a/htdocs/langs/en_US/companies.lang +++ b/htdocs/langs/en_US/companies.lang @@ -343,7 +343,7 @@ VATIntraCheckableOnEUSite=Check Intracomunnautary VAT on European commision site VATIntraManualCheck=You can also check manually from european web site %s ErrorVATCheckMS_UNAVAILABLE=Check not possible. Check service is not provided by the member state (%s). NorProspectNorCustomer=Nor prospect, nor customer -JuridicalStatus=Juridical status +JuridicalStatus=Legal form Staff=Staff ProspectLevelShort=Potential ProspectLevel=Prospect potential @@ -370,12 +370,12 @@ TE_PRIVATE=Private individual TE_OTHER=Other StatusProspect-1=Do not contact StatusProspect0=Never contacted -StatusProspect1=To contact +StatusProspect1=To be contacted StatusProspect2=Contact in process StatusProspect3=Contact done ChangeDoNotContact=Change status to 'Do not contact' ChangeNeverContacted=Change status to 'Never contacted' -ChangeToContact=Change status to 'To contact' +ChangeToContact=Change status to 'To be contacted' ChangeContactInProcess=Change status to 'Contact in process' ChangeContactDone=Change status to 'Contact done' ProspectsByStatus=Prospects by status @@ -400,23 +400,23 @@ 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? +ConfirmDeleteDeliveryAddress=Are you sure you want to delete this delivery address ? NewDeliveryAddress=New delivery address -AddDeliveryAddress=Create address -AddAddress=Create address +AddDeliveryAddress=Add delivery address +AddAddress=Add address NoOtherDeliveryAddress=No alternative delivery address defined SupplierCategory=Supplier category -JuridicalStatus200=Independant +JuridicalStatus200=Independent DeleteFile=Delete file ConfirmDeleteFile=Are you sure you want to delete this file? -AllocateCommercial=Assigned to sale representative +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=You must create emails contacts for third party first to be able to add emails notifications. +YouMustCreateContactFirst=To be able to add email notifications, you must first insert email contacts for the third party ListSuppliersShort=List of suppliers ListProspectsShort=List of prospects ListCustomersShort=List of customers @@ -429,7 +429,7 @@ ActivityStateFilter=Activity status ProductsIntoElements=List of products/services into %s CurrentOutstandingBill=Current outstanding bill OutstandingBill=Max. for outstanding bill -OutstandingBillReached=Reached max. for outstanding bill +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...) @@ -440,7 +440,7 @@ 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 sale representative +SaleRepresentativeLogin=Login of sales representative SaleRepresentativeFirstname=Firstname of sales representative SaleRepresentativeLastname=Lastname of sales representative ModelModulesContact=Document Models of contact diff --git a/htdocs/langs/en_US/cron.lang b/htdocs/langs/en_US/cron.lang index 456e9562a2f..b7f68681d30 100644 --- a/htdocs/langs/en_US/cron.lang +++ b/htdocs/langs/en_US/cron.lang @@ -40,8 +40,8 @@ CronNone=None CronDtStart=Not before CronDtEnd=Not after CronDtNextLaunch=Next execution -CronDtLastLaunch=Start date of last execution -CronDtLastResult=End date of last execution +CronDtLastLaunch=Start date of latest execution +CronDtLastResult=End date of latest execution CronFrequency=Frequency CronClass=Class CronMethod=Method diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index 548982efb65..e252903f082 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -73,7 +73,7 @@ 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 -GoToWikiHelpPage=Read online help (need Internet access) +GoToWikiHelpPage=Read online help (Internet access needed) GoToHelpPage=Read help RecordSaved=Record saved RecordDeleted=Record deleted @@ -94,12 +94,12 @@ ConnectedSince=Connected since AuthenticationMode=Authentification mode RequestedUrl=Requested Url DatabaseTypeManager=Database type manager -RequestLastAccess=Request for last database access -RequestLastAccessInError=Request for last database access in error -ReturnCodeLastAccessInError=Return code for last database access in error -InformationLastAccessInError=Information for last database access in error +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 DolibarrHasDetectedError=Dolibarr has detected a technical error -InformationToHelpDiagnose=This is information that can help diagnostic +InformationToHelpDiagnose=This information can be useful for diagnostic MoreInformation=More information TechnicalInformation=Technical information TechnicalID=Technical ID @@ -142,7 +142,7 @@ Update=Update AddActionToDo=Add event to do AddActionDone=Add event done Close=Close -CloseBox=Remove box of your dashboard +CloseBox=Remove box from your dashboard Confirm=Confirm ConfirmSendCardByMail=Do you really want to send content of this card by mail to %s ? Delete=Delete @@ -550,8 +550,8 @@ NbOfCustomers=Number of customers NbOfLines=Number of lines NbOfObjects=Number of objects NbOfReferers=Number of referrers -NbOfObjectReferers=Number of refering objects -Referers=Refering objects +NbOfObjectReferers=Number of related items +Referers=Related items TotalQuantity=Total quantity DateFromTo=From %s to %s DateFrom=From %s diff --git a/htdocs/langs/en_US/other.lang b/htdocs/langs/en_US/other.lang index c8bde912cdd..3afebc9141b 100644 --- a/htdocs/langs/en_US/other.lang +++ b/htdocs/langs/en_US/other.lang @@ -3,12 +3,12 @@ SecurityCode=Security code Calendar=Calendar NumberingShort=N° Tools=Tools -ToolsDesc=This area is dedicated to group miscellaneous tools not available into other menu entries.

Those tools can be reached from menu on the side. +ToolsDesc=All miscellaneous tools not included in other menu entries are collected here.

All the tools can be reached in the left menu. Birthday=Birthday -BirthdayDate=Birthday +BirthdayDate=Birthday date DateToBirth=Date of birth -BirthdayAlertOn= birthday alert active -BirthdayAlertOff= birthday alert inactive +BirthdayAlertOn=birthday alert active +BirthdayAlertOff=birthday alert inactive Notify_FICHINTER_ADD_CONTACT=Added contact to Intervention Notify_FICHINTER_VALIDATE=Intervention validated Notify_FICHINTER_SENTBYMAIL=Intervention sent by mail @@ -69,8 +69,8 @@ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find her PredefinedMailContentSendShipping=__CONTACTCIVNAME__\n\nYou will find here the shipping __SHIPPINGREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendFichInter=__CONTACTCIVNAME__\n\nYou will find here the intervention __FICHINTERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentThirdparty=__CONTACTCIVNAME__\n\n__PERSONALIZED__\n\n__SIGNATURE__ -DemoDesc=Dolibarr is a compact ERP/CRM composed by several functional modules. A demo that includes all modules does not mean anything as this never occurs. So, several demo profiles are available. -ChooseYourDemoProfil=Choose the demo profile that match your activity... +DemoDesc=Dolibarr is a compact ERP/CRM supporting several functional modules. A demo showcasing all modules makes no sense as this scenario never occurs. So, several demo profiles are available. +ChooseYourDemoProfil=Choose the demo profile that best suits your needs... DemoFundation=Manage members of a foundation DemoFundation2=Manage members and bank account of a foundation DemoCompanyServiceOnly=Manage a freelance activity selling service only @@ -84,22 +84,22 @@ ValidatedBy=Validated by %s CanceledBy=Canceled by %s ClosedBy=Closed by %s CreatedById=User id who created -ModifiedById=User id who made last change +ModifiedById=User id who made latest change ValidatedById=User id who validated CanceledById=User id who canceled ClosedById=User id who closed CreatedByLogin=User login who created -ModifiedByLogin=User login who made last change +ModifiedByLogin=User login who made latest change ValidatedByLogin=User login who validated CanceledByLogin=User login who canceled ClosedByLogin=User login who closed FileWasRemoved=File %s was removed DirWasRemoved=Directory %s was removed -FeatureNotYetAvailableShort=Available in a next version -FeatureNotYetAvailable=Feature not yet available in this version -FeatureExperimental=Experimental feature. Not stable in this version -FeatureDevelopment=Development feature. Not stable in this version -FeaturesSupported=Features supported +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 Depth=Depth @@ -111,7 +111,7 @@ CalculatedWeight=Calculated weight CalculatedVolume=Calculated volume Weight=Weight TotalWeight=Total weight -WeightUnitton=tonnes +WeightUnitton=tonne WeightUnitkg=kg WeightUnitg=g WeightUnitmg=mg @@ -147,27 +147,27 @@ SizeUnitinch=inch SizeUnitfoot=foot SizeUnitpoint=point BugTracker=Bug tracker -SendNewPasswordDesc=This form allows you to request a new password. It will be send to your email address.
Change will be effective only after clicking on confirmation link inside this email.
Check your email reader software. +SendNewPasswordDesc=This form allows you to request a new password. It will be sent to your email address.
Change will become effective once you click on the confirmation link in the email.
Check your inbox. 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 with your PHP for use this option. +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. +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 StatsByNumberOfEntities=Statistics in number of referring entities -NumberOfProposals=Number of proposals on last 12 month -NumberOfCustomerOrders=Number of customer orders on last 12 month -NumberOfCustomerInvoices=Number of customer invoices on last 12 month -NumberOfSupplierProposals=Number of supplier proposals on last 12 month -NumberOfSupplierOrders=Number of supplier orders on last 12 month -NumberOfSupplierInvoices=Number of supplier invoices on last 12 month -NumberOfUnitsProposals=Number of units on proposals on last 12 month -NumberOfUnitsCustomerOrders=Number of units on customer orders on last 12 month -NumberOfUnitsCustomerInvoices=Number of units on customer invoices on last 12 month -NumberOfUnitsSupplierProposals=Number of units on supplier proposals on last 12 month -NumberOfUnitsSupplierOrders=Number of units on supplier orders on last 12 month -NumberOfUnitsSupplierInvoices=Number of units on supplier invoices on last 12 month +NumberOfProposals=Number of proposals in past 12 months +NumberOfCustomerOrders=Number of customer orders in past 12 months +NumberOfCustomerInvoices=Number of customer invoices in past 12 months +NumberOfSupplierProposals=Number of supplier proposals in past 12 months +NumberOfSupplierOrders=Number of supplier orders in past 12 months +NumberOfSupplierInvoices=Number of supplier invoices in past 12 months +NumberOfUnitsProposals=Number of units on proposals in past 12 months +NumberOfUnitsCustomerOrders=Number of units on customer orders in past 12 months +NumberOfUnitsCustomerInvoices=Number of units on customer invoices in past 12 months +NumberOfUnitsSupplierProposals=Number of units on supplier proposals in past 12 months +NumberOfUnitsSupplierOrders=Number of units on supplier orders in past 12 months +NumberOfUnitsSupplierInvoices=Number of units on supplier invoices in past 12 months EMailTextInterventionAddedContact=A newintervention %s has been assigned to you. EMailTextInterventionValidated=The intervention %s has been validated. EMailTextInvoiceValidated=The invoice %s has been validated. diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index 2d08f153594..84fa74643fa 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -8,7 +8,7 @@ Projects=Projects ProjectsArea=Projects Area ProjectStatus=Project status SharedProject=Everybody -PrivateProject=Contacts of project +PrivateProject=Project contacts MyProjectsDesc=This view is limited to projects you are a contact for (whatever is the type). ProjectsPublicDesc=This view presents all projects you are allowed to read. ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. @@ -159,14 +159,14 @@ DocumentModelBaleine=Project report template for tasks PlannedWorkload=Planned workload PlannedWorkloadShort=Workload WorkloadOccupation=Workload assignation -ProjectReferers=Refering objects +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 +InputPerDay=Input per day +InputPerWeek=Input per week InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projects with this user as contact From e1c27216cee851f30f788aee64e7ea7c3d60498f Mon Sep 17 00:00:00 2001 From: cla Date: Sat, 4 Jun 2016 02:20:11 +0200 Subject: [PATCH 097/245] FIX #4825 --- htdocs/fourn/facture/list.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/htdocs/fourn/facture/list.php b/htdocs/fourn/facture/list.php index dafe95e419d..efe8968fa6a 100644 --- a/htdocs/fourn/facture/list.php +++ b/htdocs/fourn/facture/list.php @@ -82,7 +82,6 @@ $year = GETPOST("year","int"); $day_lim = GETPOST('day_lim','int'); $month_lim = GETPOST('month_lim','int'); $year_lim = GETPOST('year_lim','int'); -$filter = GETPOST("filtre"); $optioncss = GETPOST('optioncss','alpha'); if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test must be present to be compatible with all browsers @@ -225,7 +224,7 @@ if ($search_amount_all_tax != '') $sql .= natural_search('fac.total_ttc', $search_amount_all_tax, 1); } -if ($search_status != '') +if ($search_status != '' && $search_status >= 0) { $sql.= " AND fac.fk_statut = ".$search_status; } @@ -264,7 +263,6 @@ if ($resql) if ($search_company) $param.='&search_company='.urlencode($search_company); if ($search_amount_no_tax) $param.='&search_amount_no_tax='.urlencode($search_amount_no_tax); if ($search_amount_all_tax) $param.='&search_amount_all_tax='.urlencode($search_amount_all_tax); - if ($filter && $filter != -1) $param.='&filtre='.urlencode($filter); if ($optioncss != '') $param.='&optioncss='.$optioncss; if ($search_status >= 0) $param.="&search_status=".$search_status; @@ -338,7 +336,7 @@ if ($resql) print ''; print '
'; $liststatus=array('0'=>$langs->trans("Draft"),'1'=>$langs->trans("Unpaid"), '2'=>$langs->trans("Paid")); - print $form->selectarray('filtre', $liststatus, $search_status, 1); + print $form->selectarray('search_status', $liststatus, $search_status, 1); print ''; $searchpitco=$form->showFilterAndCheckAddButtons(0); From eb7a4c5ccf4e1110315841ce045659c822081dbc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 4 Jun 2016 02:39:13 +0200 Subject: [PATCH 098/245] FIX Creating a supplier order from proposal order --- htdocs/fourn/commande/card.php | 9 +++++---- htdocs/supplier_proposal/card.php | 11 ++++++----- .../supplier_proposal/tpl/linkedobjectblock.tpl.php | 4 ++-- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index 81e7c93c3c3..8e486dc232b 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -1030,7 +1030,7 @@ if (empty($reshook)) $num = count($lines); $productsupplier = new ProductFournisseur($db); - + for($i = 0; $i < $num; $i ++) { @@ -1040,7 +1040,7 @@ if (empty($reshook)) $label = (! empty($lines[$i]->label) ? $lines[$i]->label : ''); $desc = (! empty($lines[$i]->desc) ? $lines[$i]->desc : $lines[$i]->libelle); $product_type = (! empty($lines[$i]->product_type) ? $lines[$i]->product_type : 0); - + // Reset fk_parent_line for no child products and special product if (($lines[$i]->product_type != 9 && empty($lines[$i]->fk_parent_line)) || $lines[$i]->product_type == 9) { $fk_parent_line = 0; @@ -1055,7 +1055,8 @@ if (empty($reshook)) } $result = $productsupplier->find_min_price_product_fournisseur($lines[$i]->fk_product, $lines[$i]->qty); - if ($result>0) + + if ($result>=0) { $tva_tx = $lines[$i]->tva_tx; @@ -1073,7 +1074,7 @@ if (empty($reshook)) $tva_tx, $lines[$i]->localtax1_tx, $lines[$i]->localtax2_tx, - $lines[$i]->fk_product, + $lines[$i]->fk_product > 0 ? $lines[$i]->fk_product : 0, $productsupplier->product_fourn_price_id, $productsupplier->ref_supplier, $lines[$i]->remise_percent, diff --git a/htdocs/supplier_proposal/card.php b/htdocs/supplier_proposal/card.php index 78bde5d1ea5..8e8c69b0ce9 100644 --- a/htdocs/supplier_proposal/card.php +++ b/htdocs/supplier_proposal/card.php @@ -1076,31 +1076,32 @@ if ($action == 'create') // Terms of payment print '
' . $langs->trans('PaymentConditionsShort') . ''; - $form->select_conditions_paiements($soc->cond_reglement_id, 'cond_reglement_id', -1, 1); + $form->select_conditions_paiements(GETPOST('cond_reglement_id') > 0 ? GETPOST('cond_reglement_id') : $soc->cond_reglement_id, 'cond_reglement_id', -1, 1); print '
' . $langs->trans('PaymentMode') . ''; - $form->select_types_paiements($soc->mode_reglement_id, 'mode_reglement_id'); + $form->select_types_paiements(GETPOST('mode_reglement_id') > 0 ? GETPOST('mode_reglement_id') : $soc->mode_reglement_id, 'mode_reglement_id'); print '
' . $langs->trans('BankAccount') . ''; - $form->select_comptes($fk_account, 'fk_account', 0, '', 1); + $form->select_comptes(GETPOST('fk_account')>0 ? GETPOST('fk_account','int') : $fk_account, 'fk_account', 0, '', 1); print '
' . $langs->trans('SendingMethod') . ''; - print $form->selectShippingMethod($shipping_method_id, 'shipping_method_id', '', 1); + print $form->selectShippingMethod(GETPOST('shipping_method_id') > 0 ? GETPOST('shipping_method_id', 'int') : $shipping_method_id, 'shipping_method_id', '', 1); print '
' . $langs->trans("DeliveryDate") . ''; + $datedelivery = dol_mktime(0, 0, 0, GETPOST('liv_month'), GETPOST('liv_day'), GETPOST('liv_year')); if ($conf->global->DATE_LIVRAISON_WEEK_DELAY != "") { $tmpdte = time() + ((7 * $conf->global->DATE_LIVRAISON_WEEK_DELAY) * 24 * 60 * 60); $syear = date("Y", $tmpdte); @@ -1108,7 +1109,7 @@ if ($action == 'create') $sday = date("d", $tmpdte); $form->select_date($syear."-".$smonth."-".$sday, 'liv_', '', '', '', "addask"); } else { - $form->select_date(-1, 'liv_', '', '', '', "addask", 1, 1); + $form->select_date($datedelivery ? $datedelivery : -1, 'liv_', '', '', '', "addask", 1, 1); } print '
trans("SupplierProposal"); ?>trans("SupplierProposal"); ?> trans("ShowSupplierProposal"),"supplier_proposal").' '.$objectlink->ref; ?> datec,'day'); ?>getLibStatut(3); ?>">transnoentitiesnoconv("RemoveLink")); ?> + element != 'shipping') { + ?> + ">transnoentitiesnoconv("RemoveLink")); ?> + +
date_delivery,'day'); ?> rights->expedition->lire) { + if ($user->rights->expedition->lire) { $total = $total + $objectlink->total_ht; echo price($objectlink->total_ht); - }*/ ?> getLibStatut(3); ?>">transnoentitiesnoconv("RemoveLink")); ?> + element != 'commande') { + ?> + ">transnoentitiesnoconv("RemoveLink")); ?>
'.$langs->trans("Tag").''.$langs->trans("Description").'
<'.$printer->tags[$tag].'>'.$langs->trans(strtoupper($printer->tags[$tag])).'
'; diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index c57c01dfc36..53a3081aa4e 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -429,6 +429,7 @@ 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. # Modules Module0Name=Users & groups From b3a36688d1b197b8ddd9dd7d8be6104afe9c1e49 Mon Sep 17 00:00:00 2001 From: phf Date: Sat, 4 Jun 2016 14:31:53 +0200 Subject: [PATCH 109/245] Fix #2666 --- htdocs/filefunc.inc.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/htdocs/filefunc.inc.php b/htdocs/filefunc.inc.php index b97721f2108..92a41209ba4 100644 --- a/htdocs/filefunc.inc.php +++ b/htdocs/filefunc.inc.php @@ -89,7 +89,18 @@ if (! $result && ! empty($_SERVER["GATEWAY_INTERFACE"])) // If install not do { // Note: If calling page was not into htdocs (index.php, ...), then this redirect will fails. // There is no real solution, because the only way to know the apache url relative path is to have into conf file. - header("Location: install/index.php"); + $TDir = explode('/', $_SERVER['PHP_SELF']); + $path = ''; + $i = count($TDir); + while ($i--) + { + if (empty($TDir[$i]) || $TDir[$i] == 'htdocs') break; + if (substr($TDir[$i], -4, 4) == '.php') continue; + + $path .= '../'; + } + + header("Location: ".$path."install/index.php"); exit; } From bd2fe75d08dde06f130a1e8408f0992458747b4a Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Sat, 4 Jun 2016 14:45:03 +0200 Subject: [PATCH 110/245] 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 8ccda16ef370e86ee801d3e3790c43ead1625f29 Mon Sep 17 00:00:00 2001 From: phf Date: Sat, 4 Jun 2016 14:50:32 +0200 Subject: [PATCH 111/245] Fix call function ldap_connect but not exists --- htdocs/core/class/ldap.class.php | 106 +++++++++++++++++-------------- 1 file changed, 58 insertions(+), 48 deletions(-) diff --git a/htdocs/core/class/ldap.class.php b/htdocs/core/class/ldap.class.php index ca0cbab3925..85cb36f31f2 100644 --- a/htdocs/core/class/ldap.class.php +++ b/htdocs/core/class/ldap.class.php @@ -159,50 +159,41 @@ class Ldap dol_syslog(get_class($this)."::connect_bind ".$this->error, LOG_WARNING); } - // Loop on each ldap server - foreach ($this->server as $key => $host) + if (! function_exists("ldap_connect")) { - if ($connected) break; - if (empty($host)) continue; + $this->error='LDAPFunctionsNotAvailableOnPHP'; + $return=-1; + dol_syslog(get_class($this)."::connect_bind ".$this->error, LOG_WARNING); + } - if (preg_match('/^ldap/',$host)) + if (empty($this->error)) + { + // Loop on each ldap server + foreach ($this->server as $key => $host) { - $this->connection = ldap_connect($host); - } - else - { - $this->connection = ldap_connect($host,$this->serverPort); - } - - if (is_resource($this->connection)) - { - // Execute the ldap_set_option here (after connect and before bind) - $this->setVersion(); - ldap_set_option($this->connection, LDAP_OPT_SIZELIMIT, 0); // no limit here. should return true. - - - if ($this->serverType == "activedirectory") + if ($connected) break; + if (empty($host)) continue; + + if (preg_match('/^ldap/',$host)) { - $result=$this->setReferrals(); - dol_syslog(get_class($this)."::connect_bind try bindauth for activedirectory on ".$host." user=".$this->searchUser." password=".preg_replace('/./','*',$this->searchPassword),LOG_DEBUG); - $this->result=$this->bindauth($this->searchUser,$this->searchPassword); - if ($this->result) - { - $this->bind=$this->result; - $connected=2; - break; - } - else - { - $this->error=ldap_errno($this->connection).' '.ldap_error($this->connection); - } + $this->connection = ldap_connect($host); } else { - // Try in auth mode - if ($this->searchUser && $this->searchPassword) + $this->connection = ldap_connect($host,$this->serverPort); + } + + if (is_resource($this->connection)) + { + // Execute the ldap_set_option here (after connect and before bind) + $this->setVersion(); + ldap_set_option($this->connection, LDAP_OPT_SIZELIMIT, 0); // no limit here. should return true. + + + if ($this->serverType == "activedirectory") { - dol_syslog(get_class($this)."::connect_bind try bindauth on ".$host." user=".$this->searchUser." password=".preg_replace('/./','*',$this->searchPassword),LOG_DEBUG); + $result=$this->setReferrals(); + dol_syslog(get_class($this)."::connect_bind try bindauth for activedirectory on ".$host." user=".$this->searchUser." password=".preg_replace('/./','*',$this->searchPassword),LOG_DEBUG); $this->result=$this->bindauth($this->searchUser,$this->searchPassword); if ($this->result) { @@ -215,26 +206,45 @@ class Ldap $this->error=ldap_errno($this->connection).' '.ldap_error($this->connection); } } - // Try in anonymous - if (! $this->bind) + else { - dol_syslog(get_class($this)."::connect_bind try bind on ".$host,LOG_DEBUG); - $result=$this->bind(); - if ($result) + // Try in auth mode + if ($this->searchUser && $this->searchPassword) { - $this->bind=$this->result; - $connected=1; - break; + dol_syslog(get_class($this)."::connect_bind try bindauth on ".$host." user=".$this->searchUser." password=".preg_replace('/./','*',$this->searchPassword),LOG_DEBUG); + $this->result=$this->bindauth($this->searchUser,$this->searchPassword); + if ($this->result) + { + $this->bind=$this->result; + $connected=2; + break; + } + else + { + $this->error=ldap_errno($this->connection).' '.ldap_error($this->connection); + } } - else + // Try in anonymous + if (! $this->bind) { - $this->error=ldap_errno($this->connection).' '.ldap_error($this->connection); + dol_syslog(get_class($this)."::connect_bind try bind on ".$host,LOG_DEBUG); + $result=$this->bind(); + if ($result) + { + $this->bind=$this->result; + $connected=1; + break; + } + else + { + $this->error=ldap_errno($this->connection).' '.ldap_error($this->connection); + } } } } + + if (! $connected) $this->close(); } - - if (! $connected) $this->close(); } if ($connected) From 1748da6c56fa019d2b180fdcfcc07bb0e4bda6e9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 4 Jun 2016 14:51:56 +0200 Subject: [PATCH 112/245] Merge --- htdocs/fichinter/card.php | 4 ++-- htdocs/fourn/facture/list.php | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/htdocs/fichinter/card.php b/htdocs/fichinter/card.php index 86bd4a9fd63..a54a983f514 100644 --- a/htdocs/fichinter/card.php +++ b/htdocs/fichinter/card.php @@ -494,7 +494,7 @@ if (empty($reshook)) $desc=GETPOST('np_desc'); $date_intervention = dol_mktime(GETPOST('dihour','int'), GETPOST('dimin','int'), 0, GETPOST('dimonth','int'), GETPOST('diday','int'), GETPOST('diyear','int')); - $duration = empty($conf->global->FICHINTER_WITHOUT_DURATION)?0:convertTime2Seconds(GETPOST('durationhour','int'), GETPOST('durationmin','int')); + $duration = empty($conf->global->FICHINTER_WITHOUT_DURATION)?convertTime2Seconds(GETPOST('durationhour','int'), GETPOST('durationmin','int')) : 0; // Extrafields @@ -1553,7 +1553,7 @@ else if ($id > 0 || ! empty($ref)) $selectmode = 'select'; if (!empty($conf->global->INTERVENTION_ADDLINE_FREEDUREATION)) $selectmode = 'text'; - $form->select_duration('duration', $objp->duree, $selectmode); + $form->select_duration('duration', $objp->duree, 0, $selectmode); } print ''; diff --git a/htdocs/fourn/facture/list.php b/htdocs/fourn/facture/list.php index 42810962275..c526080cc2e 100644 --- a/htdocs/fourn/facture/list.php +++ b/htdocs/fourn/facture/list.php @@ -82,7 +82,6 @@ $year = GETPOST("year","int"); $day_lim = GETPOST('day_lim','int'); $month_lim = GETPOST('month_lim','int'); $year_lim = GETPOST('year_lim','int'); -$filter = GETPOST("filtre"); $optioncss = GETPOST('optioncss','alpha'); if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test must be present to be compatible with all browsers @@ -225,7 +224,7 @@ if ($search_amount_all_tax != '') $sql .= natural_search('fac.total_ttc', $search_amount_all_tax, 1); } -if ($search_status != '' && $search_status>=0) +if ($search_status != '' && $search_status >= 0) { $sql.= " AND fac.fk_statut = ".$search_status; } @@ -347,7 +346,7 @@ if ($resql) print ''; print ''; print '"; + print ''; print ''; print ''; print $form->formconfirm($_SERVER["PHP_SELF"]."?account_category=$cat_id&cptid=".$cpt->rowid, $langs->trans("DeleteCptCategory"), $langs->trans("ConfirmDeleteCptCategory"), "delete", '', 0, "action-delete".$j); diff --git a/htdocs/accountancy/admin/importaccounts.php b/htdocs/accountancy/admin/importaccounts.php index 0dc560aa62e..720f3a4f012 100644 --- a/htdocs/accountancy/admin/importaccounts.php +++ b/htdocs/accountancy/admin/importaccounts.php @@ -138,7 +138,7 @@ if ($result) { while ( $i < min($num_lines, $limit) ) { $objp = $db->fetch_object($result); $var = ! $var; - print ""; + print ''; print '"; + print ''; print ""; - print ""; + print ''; // Ref produit as link $product_static->ref = $obj->ref; $product_static->id = $obj->rowid; diff --git a/htdocs/accountancy/bookkeeping/balance.php b/htdocs/accountancy/bookkeeping/balance.php index e89799d765e..736aec48644 100644 --- a/htdocs/accountancy/bookkeeping/balance.php +++ b/htdocs/accountancy/bookkeeping/balance.php @@ -223,7 +223,7 @@ else { if(empty($description)){ $link = '' . img_edit_add() .''; } - print ""; + print ''; print ''; print ''; diff --git a/htdocs/accountancy/bookkeeping/card.php b/htdocs/accountancy/bookkeeping/card.php index 5421a4a350d..7293797ecc6 100644 --- a/htdocs/accountancy/bookkeeping/card.php +++ b/htdocs/accountancy/bookkeeping/card.php @@ -346,7 +346,7 @@ if ($action == 'create') { foreach ( $book->linesmvt as $line ) { $var = ! $var; - print ""; + print ''; $total_debit += $line->debit; $total_credit += $line->credit; @@ -400,7 +400,7 @@ if ($action == 'create') { if ($action == "" || $action == 'add') { $var = ! $var; - print ""; + print ''; print ''; diff --git a/htdocs/accountancy/bookkeeping/list.php b/htdocs/accountancy/bookkeeping/list.php index 557143164a9..cb5d7caf006 100644 --- a/htdocs/accountancy/bookkeeping/list.php +++ b/htdocs/accountancy/bookkeeping/list.php @@ -368,7 +368,7 @@ foreach ( $object->lines as $line ) { $total_debit += $line->debit; $total_credit += $line->credit; - print ""; + print ''; print ''; print ''; diff --git a/htdocs/accountancy/bookkeeping/listbyyear.php b/htdocs/accountancy/bookkeeping/listbyyear.php index 10640c1887a..23eeb79621a 100644 --- a/htdocs/accountancy/bookkeeping/listbyyear.php +++ b/htdocs/accountancy/bookkeeping/listbyyear.php @@ -269,7 +269,7 @@ $var = True; foreach ( $object->lines as $line ) { $var = ! $var; - print ""; + print ''; print '' . "\n"; print '' . "\n"; print ''; diff --git a/htdocs/accountancy/customer/lines.php b/htdocs/accountancy/customer/lines.php index 292b52b5863..3549651cbd6 100644 --- a/htdocs/accountancy/customer/lines.php +++ b/htdocs/accountancy/customer/lines.php @@ -288,7 +288,7 @@ if ($result) { $var = ! $var; $codecompta = length_accountg($objp->account_number) . ' - ' . $objp->label_compte; - print ""; + print ''; // Ref Invoice $facture_static->ref = $objp->facnumber; diff --git a/htdocs/accountancy/customer/list.php b/htdocs/accountancy/customer/list.php index 438eb30c621..167f558d830 100644 --- a/htdocs/accountancy/customer/list.php +++ b/htdocs/accountancy/customer/list.php @@ -302,7 +302,7 @@ if ($result) { if ($objp->code_sell_l != $objp->code_sell_p) $code_sell_p_l_differ = 'color:red'; - print ""; + print ''; // Ref Invoice $facture_static->ref = $objp->facnumber; diff --git a/htdocs/accountancy/report/result.php b/htdocs/accountancy/report/result.php index 48d587b575b..72a4d6e96b2 100644 --- a/htdocs/accountancy/report/result.php +++ b/htdocs/accountancy/report/result.php @@ -127,7 +127,7 @@ if(!empty($cats)) $resultN = $AccCat->getResult($cpt['account_number'], 0, $year_current, $cpt['dc']); $sommes[$code]['NP'] += $resultNP; $sommes[$code]['N'] += $resultN; - print ""; + print ''; print ''; print ''; print ''; diff --git a/htdocs/accountancy/supplier/lines.php b/htdocs/accountancy/supplier/lines.php index 6ab2cf589a6..a0b2365350f 100644 --- a/htdocs/accountancy/supplier/lines.php +++ b/htdocs/accountancy/supplier/lines.php @@ -236,7 +236,7 @@ if ($result) { $var = ! $var; $codeCompta = length_accountg($objp->account_number) . ' - ' . $objp->label; - print ""; + print ''; // Ref Invoice $facturefournisseur_static->ref = $objp->facnumber; diff --git a/htdocs/accountancy/supplier/list.php b/htdocs/accountancy/supplier/list.php index 8685cb7d5d4..c98ba050222 100644 --- a/htdocs/accountancy/supplier/list.php +++ b/htdocs/accountancy/supplier/list.php @@ -314,7 +314,7 @@ if ($result) { if ($objp->code_buy_l != $objp->code_buy_p) $code_buy_p_l_differ = 'color:red'; - print ""; + print ''; // Ref Invoice $facturefourn_static->ref = $objp->ref; diff --git a/htdocs/expensereport/synchro_compta.php b/htdocs/expensereport/synchro_compta.php index 59a6b8926fe..31c2d985840 100644 --- a/htdocs/expensereport/synchro_compta.php +++ b/htdocs/expensereport/synchro_compta.php @@ -165,7 +165,7 @@ else: while($i<$num): $objp = $db->fetch_object($resql); $var=!$var; - print ""; + print ''; print ''; print ''; print ''; diff --git a/htdocs/product/price.php b/htdocs/product/price.php index 67bb3165fb6..694297b5b2f 100644 --- a/htdocs/product/price.php +++ b/htdocs/product/price.php @@ -1315,7 +1315,7 @@ if ((empty($conf->global->PRODUIT_CUSTOMER_PRICES) || $action=='showlog_default_ { $objp = $db->fetch_object($result); $var = ! $var; - print ""; + print ''; // Date print ""; diff --git a/htdocs/societe/price.php b/htdocs/societe/price.php index 45eba9b397f..4c988603417 100644 --- a/htdocs/societe/price.php +++ b/htdocs/societe/price.php @@ -416,7 +416,7 @@ if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES)) { foreach ( $prodcustprice->lines as $line ) { - print ""; + print ''; $staticprod = new Product($db); $staticprod->fetch($line->fk_product); diff --git a/scripts/accountancy/export-thirdpartyaccount.php b/scripts/accountancy/export-thirdpartyaccount.php index 05236aabf7e..c84ffdabc0f 100755 --- a/scripts/accountancy/export-thirdpartyaccount.php +++ b/scripts/accountancy/export-thirdpartyaccount.php @@ -207,7 +207,7 @@ if ($resql) { $var = ! $var; - print ""; + print ''; print ''; - print ''; + print ''; 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 125/245] 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 ''; } // 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 ''; // Label - print ''; - print ''; + print ''; + print ''; /* * 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 132/245] 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 133/245] 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 134/245] 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 135/245] 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 136/245] 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 137/245] 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 138/245] 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 139/245] 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 '
'; $liststatus=array('0'=>$langs->trans("Draft"),'1'=>$langs->trans("Unpaid"), '2'=>$langs->trans("Paid")); - print $form->selectarray('filtre', $liststatus, $search_status, 1); + print $form->selectarray('search_status', $liststatus, $search_status, 1); print ''; $searchpitco=$form->showFilterAndCheckAddButtons(0); From 918ba71e7f7ea0b11b1672cc3ccda64b790c0227 Mon Sep 17 00:00:00 2001 From: jean Date: Sat, 4 Jun 2016 14:59:43 +0200 Subject: [PATCH 113/245] FIX #5014 if $user is admin and different from $object then nbadmin >=1 is ok when not in multicompany --- htdocs/user/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/user/card.php b/htdocs/user/card.php index acfe1c85cd7..4792e9dff4d 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -1914,7 +1914,7 @@ else if ($user->admin // Need to be admin to allow downgrade of an admin && ($user->id != $object->id) // Don't downgrade ourself && ( - (empty($conf->multicompany->enabled) && $nbAdmin > 1) + (empty($conf->multicompany->enabled) && $nbAdmin >= 1) || (! empty($conf->multicompany->enabled) && ($object->entity > 0 || $nbSuperAdmin > 1)) // Don't downgrade a superadmin if alone ) ) From 8f617b196a2db926665dd2a7130b21971d4f254d Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Sat, 4 Jun 2016 15:51:28 +0200 Subject: [PATCH 114/245] Fix printing following the rules --- htdocs/accountancy/admin/categories.php | 2 +- htdocs/accountancy/admin/importaccounts.php | 2 +- htdocs/accountancy/admin/productaccount.php | 4 ++-- htdocs/accountancy/bookkeeping/balance.php | 2 +- htdocs/accountancy/bookkeeping/card.php | 4 ++-- htdocs/accountancy/bookkeeping/list.php | 2 +- htdocs/accountancy/bookkeeping/listbyyear.php | 2 +- htdocs/accountancy/customer/lines.php | 2 +- htdocs/accountancy/customer/list.php | 2 +- htdocs/accountancy/report/result.php | 2 +- htdocs/accountancy/supplier/lines.php | 2 +- htdocs/accountancy/supplier/list.php | 2 +- htdocs/expensereport/synchro_compta.php | 2 +- htdocs/product/price.php | 2 +- htdocs/societe/price.php | 2 +- scripts/accountancy/export-thirdpartyaccount.php | 2 +- 16 files changed, 18 insertions(+), 18 deletions(-) diff --git a/htdocs/accountancy/admin/categories.php b/htdocs/accountancy/admin/categories.php index f0013632b53..b1836836e84 100644 --- a/htdocs/accountancy/admin/categories.php +++ b/htdocs/accountancy/admin/categories.php @@ -138,7 +138,7 @@ if ($action == 'display' || $action == 'delete') { if(!empty($obj)){ foreach ( $obj as $cpt ) { $var = ! $var; - print "
' . length_accountg($cpt->account_number) . '' . $cpt->label . '
'; print $objp->accounting; diff --git a/htdocs/accountancy/admin/productaccount.php b/htdocs/accountancy/admin/productaccount.php index 80ed3f6fb47..63060e1ed60 100644 --- a/htdocs/accountancy/admin/productaccount.php +++ b/htdocs/accountancy/admin/productaccount.php @@ -328,10 +328,10 @@ if ($result) { $product_static = new Product($db); - print "
' . length_accountg($line->numero_compte) . '' . $description . '
'; print $formventilation->select_account($account_number, 'account_number', 0, array (), 1, 1, ''); print '
' . $line->piece_num . '' . dol_print_date($line->doc_date, 'day') . '
' . $line->piece_num . '' . $line->doc_type . '' . dol_print_date($line->doc_date) . '
' . $cpt['account_number'] . '' . $cpt['name_cpt'] . '' . price($resultNP) . '
'.$objp->ref.''.dol_print_date($db->jdate($objp->date_valid),'day').''.img_object($langs->trans("ShowUser"),"user").' '.$objp->declarant_NDF.'
" . dol_print_date($db->jdate($objp->dp), "dayhour") . "
'; $thirdpartystatic->id = $obj->rowid; $thirdpartystatic->name = $obj->name; From 49d0c8d5ff9b757d7fcd315ede9413e017594b1e Mon Sep 17 00:00:00 2001 From: jean Date: Sat, 4 Jun 2016 16:34:26 +0200 Subject: [PATCH 115/245] FIX #4173 Ergonomie of product/service card Add configuration key PRODUCT_NODISPLAYIFNOPHOTO to avoid displaying nophoto.png --- htdocs/core/lib/functions.lib.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 34e52b3c205..c95a83be335 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -902,8 +902,15 @@ function dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='r if ($showimage) $morehtmlleft.='
'.$object->show_photos($conf->product->multidir_output[$object->entity],'small',-$maxvisiblephotos,0,0,0,$width,0).'
'; else { - $nophoto='/public/theme/common/nophoto.png'; - $morehtmlleft.='
No photo
'; + if (!empty($conf->global->PRODUCT_NODISPLAYIFNOPHOTO)) { + $nophoto=''; + $morehtmlleft.='
'; + } + else { + $nophoto='/public/theme/common/nophoto.png'; + $morehtmlleft.='
No photo
'; + } + } } else From a62f5bd5b4d5729910368cc84e3f60a71d21fd44 Mon Sep 17 00:00:00 2001 From: phf Date: Sat, 4 Jun 2016 17:17:22 +0200 Subject: [PATCH 116/245] 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 dcd83c403bff79677c4d0a799065c9238408f706 Mon Sep 17 00:00:00 2001 From: novalore Date: Sat, 4 Jun 2016 17:34:04 +0200 Subject: [PATCH 117/245] Fix #4968 --- htdocs/langs/en_US/compta.lang | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/langs/en_US/compta.lang b/htdocs/langs/en_US/compta.lang index b54f59dcfc2..f8942c406a9 100644 --- a/htdocs/langs/en_US/compta.lang +++ b/htdocs/langs/en_US/compta.lang @@ -226,3 +226,4 @@ 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 +ErrorBankAccountNotFound=Error: Bank account not found From 2d907bc7277b4af0450f07fd696bdb3a09d2ea88 Mon Sep 17 00:00:00 2001 From: novalore Date: Sat, 4 Jun 2016 17:34:23 +0200 Subject: [PATCH 118/245] miscellaneous lang fixes in en_US --- htdocs/langs/en_US/admin.lang | 18 +++++++++--------- htdocs/langs/en_US/main.lang | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 53a3081aa4e..b87bfd6134f 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -979,10 +979,10 @@ 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 yet realised -Delays_MAIN_DELAY_TASKS_TODO=Delay tolerance (in days) before alert on planned tasks not yet realised -Delays_MAIN_DELAY_ORDERS_TO_PROCESS=Delay tolerance (in days) before alert on orders not yet processed -Delays_MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS=Delay tolerance (in days) before alert on suppliers orders not yet processed +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_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 Delays_MAIN_DELAY_PROPALS_TO_BILL=Delay tolerance (in days) before alert on proposals not billed Delays_MAIN_DELAY_NOT_ACTIVATED_SERVICES=Tolerance delay (in days) before alert on services to activate @@ -993,7 +993,7 @@ Delays_MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE=Tolerance delay (in days) before al Delays_MAIN_DELAY_MEMBERS=Tolerance delay (in days) before alert on delayed membership fee Delays_MAIN_DELAY_CHEQUES_TO_DEPOSIT=Tolerance delay (in days) before alert for cheques deposit to do Delays_MAIN_DELAY_EXPENSEREPORTS=Tolerance delay (in days) before alert for expense reports to approve -SetupDescription1=All parameters available in the setup area allow you to setup Dolibarr before starting using it. +SetupDescription1=The setup area is for initial setup parameters before starting to use Dolibarr. SetupDescription2=The two most important setup steps are the first two in the setup menu on the left: Company/foundation setup page and Modules setup page: 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. @@ -1032,9 +1032,9 @@ TriggerAlwaysActive=Triggers in this file are always active, whatever are the ac TriggerActiveAsModuleActive=Triggers in this file are active as module %s is enabled. 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. They are reserved parameters for advanced developers or for troubleshouting. +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=Define here all other parameters related to security. +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 @@ -1104,8 +1104,8 @@ PathToDocuments=Path to documents PathDirectory=Directory SendmailOptionMayHurtBuggedMTA=Feature to send mails using method "PHP mail direct" will generate a mail message that might be not correctly parsed by some receiving mail servers. Result is that some mails can't be read by people hosted by those bugged platforms. It's case for some Internet providers (Ex: Orange in France). This is not a problem into Dolibarr nor into PHP but onto receiving mail server. You can however add option MAIN_FIX_FOR_BUGGED_MTA to 1 into setup - other to modify Dolibarr to avoid this. However, you may experience problem with other servers that respect strictly the SMTP standard. The other solution (recommended) is to use the method "SMTP socket library" that has no disadvantages. TranslationSetup=Configuration de la traduction -TranslationDesc=Choice of language visible on screen can be modified:
* Globally from menu Home - Setup - Display
* For user only from tab User display of user card (click on login on top of screen). -TranslationOverwriteDesc=You can also overwrite some value by completing/editing the following table. You must use for "%s" the language code, for "%s" the key found into file langs/xx_XX/somefile.lang and "%s" the new value you want to use as new translation. +TranslationDesc=How to set displayed application language
* Systemwide: menu Home - Setup - Display
* Per user: User display setup tab of user card (click on username at the top of the screen). +TranslationOverwriteDesc=You can also override strings filling the following table. Choose your language from "%s" dropdown, insert the key string found in the lang file (langs/xx_XX/somefile.lang) into "%s" and your new translation into "%s". TotalNumberOfActivatedModules=Total number of activated feature modules: %s / %s YouMustEnableOneModule=You must at least enable 1 module ClassNotFoundIntoPathWarning=Class %s not found into PHP path diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index f581b76deda..0aa839d09c2 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -746,7 +746,7 @@ Sincerely=Sincerely DeleteLine=Delete line 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. Such action are restriced to a list of %s 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 From d86f89a8fa38e356004c7a9e37acd9430437798f Mon Sep 17 00:00:00 2001 From: BENKE Charlie Date: Sat, 4 Jun 2016 17:55:28 +0200 Subject: [PATCH 119/245] fix : #4853 append if not contact type for the element --- htdocs/core/class/commonobject.class.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 3287ac5d4b7..c26251f2312 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -744,7 +744,8 @@ abstract class CommonObject $sql = "DELETE FROM ".MAIN_DB_PREFIX."element_contact"; $sql.= " WHERE element_id = ".$this->id; - $sql.= " AND fk_c_type_contact IN (".$listId.")"; + if ($listId) + $sql.= " AND fk_c_type_contact IN (".$listId.")"; dol_syslog(get_class($this)."::delete_linked_contact", LOG_DEBUG); if ($this->db->query($sql)) From 5de8b6eee5cd5c293d4276603269d4c7870044f8 Mon Sep 17 00:00:00 2001 From: novalore Date: Sat, 4 Jun 2016 18:04:49 +0200 Subject: [PATCH 120/245] 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 121/245] 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 af8e0802f8bd3c7682d1fe6792e8d0cd9f0e654b Mon Sep 17 00:00:00 2001 From: BENKE Charlie Date: Sat, 4 Jun 2016 18:15:52 +0200 Subject: [PATCH 122/245] fix : login required not verified on update --- htdocs/adherents/card.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/htdocs/adherents/card.php b/htdocs/adherents/card.php index 66de3be2cc5..be81c9b967d 100644 --- a/htdocs/adherents/card.php +++ b/htdocs/adherents/card.php @@ -253,7 +253,8 @@ if (empty($reshook)) } $lastname=$_POST["lastname"]; $firstname=$_POST["firstname"]; - $morphy=$morphy=$_POST["morphy"]; + $morphy=$_POST["morphy"]; + $login=$_POST["login"]; if ($morphy != 'mor' && empty($lastname)) { $error++; $langs->load("errors"); @@ -264,7 +265,14 @@ if (empty($reshook)) $langs->load("errors"); setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Firstname")), null, 'errors'); } - + // Test si le login existe deja + if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED)) + { + if (empty($login)) { + $error++; + setEventMessages($langs->trans("ErrorFieldRequired", $langs->trans("Login")), null, 'errors'); + } + } // Create new object if ($result > 0 && ! $error) { From 9ac05fa8f27a69de6e6263da40ff0ad9c996f267 Mon Sep 17 00:00:00 2001 From: cla Date: Sat, 4 Jun 2016 18:17:13 +0200 Subject: [PATCH 123/245] 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 124/245] 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, '').'' . $objp->label . '' . $objp->label . ''.$langs->trans('AmountTTC').''; 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 126/245] 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 127/245] 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 128/245] 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 129/245] 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 130/245] 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 131/245] 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 '
'.$form->editfieldkey("Label",'label',$object->label,$object,($user->rights->fournisseur->facture->creer)).''.$form->editfieldval("Label",'label',$object->label,$object,($user->rights->fournisseur->facture->creer)).'
'.$form->editfieldkey("Label",'libelle',$object->label,$object,($user->rights->fournisseur->facture->creer)).''.$form->editfieldval("Label",'libelle',$object->label,$object,($user->rights->fournisseur->facture->creer)).'
'; + 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 140/245] 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 141/245] 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 142/245] 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 143/245] 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 144/245] 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 145/245] 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 146/245] 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 147/245] 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 148/245] 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 149/245] 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 150/245] 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 151/245] 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 152/245] 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 158/245] 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 161/245] 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 153/245] 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 154/245] 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 155/245] 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 156/245] 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 157/245] 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 159/245] 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 160/245] 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 162/245] 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 163/245] 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 164/245] 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 165/245] 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 166/245] 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 167/245] 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 168/245] 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 169/245] 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 174/245] 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 170/245] 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 171/245] 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 172/245] 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 173/245] 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 175/245] 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 176/245] 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 177/245] 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 178/245] 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 179/245] 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 180/245] 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 181/245] 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 182/245] 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 183/245] 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 184/245] 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 185/245] 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 e5aa79364a8bf9fa748217220ea12dd5dc7bc7aa Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 8 Jun 2016 18:21:05 +0200 Subject: [PATCH 186/245] 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 187/245] 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 188/245] 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 189/245] 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 190/245] 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 191/245] 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 192/245] 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 193/245] 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 194/245] 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 195/245] 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 196/245] 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 197/245] 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 198/245] 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 199/245] 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 200/245] 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 201/245] 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 202/245] 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 203/245] 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 44503cb43cf806b8b433f5bc98395ed72630aec4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 14 Jun 2016 20:49:34 +0200 Subject: [PATCH 204/245] 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 205/245] 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 5b5b7a2bf9b8b3a161340cd58c696e7296bb9a73 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 15 Jun 2016 13:37:50 +0200 Subject: [PATCH 206/245] 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 2395099d0fb57f555c01b8ca1827f8b29c2c0d35 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 15 Jun 2016 17:20:00 +0200 Subject: [PATCH 207/245] 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 208/245] 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 209/245] 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 210/245] 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 2ef3d7cedbd5bed5131d6ee5372f8e1aa15cd38f Mon Sep 17 00:00:00 2001 From: Drosis Nikos Date: Thu, 16 Jun 2016 13:50:35 +0300 Subject: [PATCH 211/245] 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 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 212/245] 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 213/245] 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 48f30b5ef1a51baad3327250410a6d2a6175a739 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 17 Jun 2016 12:39:00 +0200 Subject: [PATCH 214/245] 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 215/245] 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 216/245] 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 217/245] 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 '' . $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 218/245] 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 219/245] 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 220/245] 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 221/245] 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 222/245] 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 223/245] 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 224/245] 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 225/245] 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 226/245] 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 227/245] 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 228/245] 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 229/245] 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 230/245] 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 '