';
diff --git a/htdocs/langs/en_US/dict.lang b/htdocs/langs/en_US/dict.lang
index ad3a24e12f6..ec315d97142 100644
--- a/htdocs/langs/en_US/dict.lang
+++ b/htdocs/langs/en_US/dict.lang
@@ -290,6 +290,7 @@ CurrencyXOF=CFA Francs BCEAO
CurrencySingXOF=CFA Franc BCEAO
CurrencyXPF=CFP Francs
CurrencySingXPF=CFP Franc
+CurrencyCentEUR=cents
CurrencyCentSingEUR=cent
CurrencyCentINR=paisa
CurrencyCentSingINR=paise
diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang
index df0563383c0..fbc43d6e990 100644
--- a/htdocs/langs/en_US/projects.lang
+++ b/htdocs/langs/en_US/projects.lang
@@ -209,7 +209,7 @@ YouCanCompleteRef=If you want to complete the ref with some suffix, it is recomm
OpenedProjectsByThirdparties=Open projects by third parties
OnlyOpportunitiesShort=Only leads
OpenedOpportunitiesShort=Open leads
-NotOpenedOpportunitiesShort=Not open leads
+NotOpenedOpportunitiesShort=Not an open lead
NotAnOpportunityShort=Not a lead
OpportunityTotalAmount=Total amount of leads
OpportunityPonderatedAmount=Weighted amount of leads
diff --git a/htdocs/langs/fr_FR/dict.lang b/htdocs/langs/fr_FR/dict.lang
index b9d965ca425..ac8d667c6e3 100644
--- a/htdocs/langs/fr_FR/dict.lang
+++ b/htdocs/langs/fr_FR/dict.lang
@@ -290,6 +290,7 @@ CurrencyXOF=Francs CFA BCEAO
CurrencySingXOF=Franc CFA BCEAO
CurrencyXPF=Francs CFP
CurrencySingXPF=Franc CFP
+CurrencyCentEUR=centimes
CurrencyCentSingEUR=centime
CurrencyCentINR=paisa
CurrencyCentSingINR=paise
diff --git a/htdocs/margin/lib/margins.lib.php b/htdocs/margin/lib/margins.lib.php
index 0104a796ede..d4fc701c491 100644
--- a/htdocs/margin/lib/margins.lib.php
+++ b/htdocs/margin/lib/margins.lib.php
@@ -96,6 +96,9 @@ function marges_prepare_head()
$head[$h][2] = 'checkMargins';
}
+ complete_head_from_modules($conf,$langs,null,$head,$h,'margins','remove');
+ complete_head_from_modules($conf,$langs,null,$head,$h,'margins');
+
return $head;
}
diff --git a/htdocs/product/stock/replenish.php b/htdocs/product/stock/replenish.php
index 7bd080b15bf..0a4f835effc 100644
--- a/htdocs/product/stock/replenish.php
+++ b/htdocs/product/stock/replenish.php
@@ -304,6 +304,12 @@ if (!empty($conf->global->STOCK_ALLOW_ADD_LIMIT_STOCK_BY_WAREHOUSE) && $fk_entre
}
$sql.= ' '.$sqldesiredtock.' as desiredstockcombined, '.$sqlalertstock.' as seuil_stock_alertecombined,';
$sql.= ' SUM('.$db->ifsql("s.reel IS NULL", "0", "s.reel").') as stock_physique';
+
+// 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 . 'product as p';
$sql.= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'product_stock as s';
$sql.= ' ON (p.rowid = s.fk_product AND s.fk_entrepot IN (SELECT ent.rowid FROM '.MAIN_DB_PREFIX.'entrepot AS ent WHERE ent.entity IN('.getEntity('stock').')))';
@@ -313,6 +319,12 @@ if ($fk_supplier > 0) {
if (!empty($conf->global->STOCK_ALLOW_ADD_LIMIT_STOCK_BY_WAREHOUSE) && $fk_entrepot > 0) {
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product_warehouse_properties AS pse ON (p.rowid = pse.fk_product AND pse.fk_entrepot = '.$fk_entrepot.')';
}
+
+// Add fields from hooks
+$parameters=array();
+$reshook=$hookmanager->executeHooks('printFieldListJoin',$parameters); // Note that $action and $object may have been modified by hook
+$sql.=$hookmanager->resPrint;
+
$sql.= ' WHERE p.entity IN (' . getEntity('product') . ')';
if ($sall) $sql .= natural_search(array('p.ref', 'p.label', 'p.description', 'p.note'), $sall);
// if the type is not 1, we show all products (type = 0,2,3)
@@ -393,6 +405,11 @@ if ($usevirtualstock)
}
}
+// 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);
$sql.= $db->plimit($limit + 1, $offset);
@@ -456,9 +473,15 @@ if (!empty($conf->global->STOCK_ALLOW_ADD_LIMIT_STOCK_BY_WAREHOUSE))
print '
';
+
+$parameters=array();
+$reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook
+if (empty($reshook)) print $hookmanager->resPrint;
+
print '
';
+// Fields from hook
+$parameters=array('param'=>$param,'sortfield'=>$sortfield,'sortorder'=>$sortorder);
+$reshook=$hookmanager->executeHooks('printFieldListOption',$parameters); // Note that $action and $object may have been modified by hook
+print $hookmanager->resPrint;
+
$searchpicto=$form->showFilterAndCheckAddButtons(0);
print $searchpicto;
print '
';
+ // Fields from hook
+ $parameters=array( 'objp'=>$objp);
+ $reshook=$hookmanager->executeHooks('printFieldListValue',$parameters); // Note that $action and $object may have been modified by hook
+ print $hookmanager->resPrint;
+
print '';
}
$i++;