diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php
index b6977940411..e4cc6a37c1c 100644
--- a/htdocs/comm/propal/list.php
+++ b/htdocs/comm/propal/list.php
@@ -42,6 +42,9 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formpropal.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
+if (!empty($conf->margin->enabled)) {
+ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formmargin.class.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.'/comm/propal/class/propal.class.php';
@@ -223,6 +226,10 @@ $arrayfields = array(
'p.multicurrency_total_invoiced'=>array('label'=>'MulticurrencyAmountInvoicedTTC', 'checked'=>0, 'enabled'=>!empty($conf->multicurrency->enabled) && !empty($conf->global->PROPOSAL_SHOW_INVOICED_AMOUNT)),
'u.login'=>array('label'=>"Author", 'checked'=>1, 'position'=>10),
'sale_representative'=>array('label'=>"SaleRepresentativesOfThirdParty", 'checked'=>-1),
+ 'total_pa' => array('label' => ($conf->global->MARGIN_TYPE == '1' ? 'BuyingPrice' : 'CostPrice'), 'checked' => 0, 'position' => 300, 'enabled' => (empty($conf->margin->enabled) || !$user->rights->margins->liretous ? 0 : 1)),
+ 'total_margin' => array('label' => 'Margin', 'checked' => 0, 'position' => 301, 'enabled' => (empty($conf->margin->enabled) || !$user->rights->margins->liretous ? 0 : 1)),
+ 'total_margin_rate' => array('label' => 'MarginRate', 'checked' => 0, 'position' => 302, 'enabled' => (empty($conf->margin->enabled) || !$user->rights->margins->liretous || empty($conf->global->DISPLAY_MARGIN_RATES) ? 0 : 1)),
+ 'total_mark_rate' => array('label' => 'MarkRate', 'checked' => 0, 'position' => 303, 'enabled' => (empty($conf->margin->enabled) || !$user->rights->margins->liretous || empty($conf->global->DISPLAY_MARK_RATES) ? 0 : 1)),
'p.datec'=>array('label'=>"DateCreation", 'checked'=>0, 'position'=>500),
'p.tms'=>array('label'=>"DateModificationShort", 'checked'=>0, 'position'=>500),
'p.date_cloture'=>array('label'=>"DateClosing", 'checked'=>0, 'position'=>500),
@@ -486,6 +493,10 @@ $form = new Form($db);
$formother = new FormOther($db);
$formfile = new FormFile($db);
$formpropal = new FormPropal($db);
+$formmargin = null;
+if (!empty($conf->margin->enabled)) {
+ $formmargin = new FormMargin($db);
+}
$companystatic = new Societe($db);
$projectstatic = new Project($db);
$formcompany = new FormCompany($db);
@@ -1244,6 +1255,22 @@ if ($resql) {
if (!empty($arrayfields['sale_representative']['checked'])) {
print '
| ';
}
+ if (!empty($arrayfields['total_pa']['checked'])) {
+ print '';
+ print ' | ';
+ }
+ if (!empty($arrayfields['total_margin']['checked'])) {
+ print '';
+ print ' | ';
+ }
+ if (!empty($arrayfields['total_margin_rate']['checked'])) {
+ print '';
+ print ' | ';
+ }
+ if (!empty($arrayfields['total_mark_rate']['checked'])) {
+ print '';
+ print ' | ';
+ }
// Extra fields
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_input.tpl.php';
@@ -1392,6 +1419,18 @@ if ($resql) {
if (!empty($arrayfields['sale_representative']['checked'])) {
print_liste_field_titre($arrayfields['sale_representative']['label'], $_SERVER["PHP_SELF"], "", "", "$param", '', $sortfield, $sortorder);
}
+ if (!empty($arrayfields['total_pa']['checked'])) {
+ print_liste_field_titre($arrayfields['total_pa']['label'], $_SERVER['PHP_SELF'], '', '', $param, 'class="right"', $sortfield, $sortorder);
+ }
+ if (!empty($arrayfields['total_margin']['checked'])) {
+ print_liste_field_titre($arrayfields['total_margin']['label'], $_SERVER['PHP_SELF'], '', '', $param, 'class="right"', $sortfield, $sortorder);
+ }
+ if (!empty($arrayfields['total_margin_rate']['checked'])) {
+ print_liste_field_titre($arrayfields['total_margin_rate']['label'], $_SERVER['PHP_SELF'], '', '', $param, 'class="right"', $sortfield, $sortorder);
+ }
+ if (!empty($arrayfields['total_mark_rate']['checked'])) {
+ print_liste_field_titre($arrayfields['total_mark_rate']['label'], $_SERVER['PHP_SELF'], '', '', $param, 'class="right"', $sortfield, $sortorder);
+ }
$totalarray = array(
'nbfield' => 0,
'val' => array(
@@ -1437,6 +1476,17 @@ if ($resql) {
$i = 0;
$typenArray = null;
+ $with_margin_info = false;
+ if (!empty($conf->margin->enabled) && (
+ !empty($arrayfields['total_pa']['checked'])
+ || !empty($arrayfields['total_margin']['checked'])
+ || !empty($arrayfields['total_margin_rate']['checked'])
+ || !empty($arrayfields['total_mark_rate']['checked'])
+ )
+ ) {
+ $with_margin_info = true;
+ }
+
while ($i < min($num, $limit)) {
$obj = $db->fetch_object($resql);
@@ -1487,6 +1537,12 @@ if ($resql) {
}
}
+ $marginInfo = array();
+ if ($with_margin_info === true) {
+ $objectstatic->fetch_lines();
+ $marginInfo = $formmargin->getMarginInfosArray($objectstatic);
+ }
+
print '';
if (!empty($arrayfields['p.ref']['checked'])) {
@@ -1887,6 +1943,39 @@ if ($resql) {
}
}
+ // Total buying or cost price
+ if (!empty($arrayfields['total_pa']['checked'])) {
+ print '| '.price($marginInfo['pa_total']).' | ';
+ if (!$i) {
+ $totalarray['nbfield']++;
+ }
+ }
+ // Total margin
+ if (!empty($arrayfields['total_margin']['checked'])) {
+ print ''.price($marginInfo['total_margin']).' | ';
+ if (!$i) {
+ $totalarray['nbfield']++;
+ }
+ if (!$i) {
+ $totalarray['pos'][$totalarray['nbfield']] = 'total_margin';
+ }
+ $totalarray['val']['total_margin'] += $marginInfo['total_margin'];
+ }
+ // Total margin rate
+ if (!empty($arrayfields['total_margin_rate']['checked'])) {
+ print ''.(($marginInfo['total_margin_rate'] == '') ? '' : price($marginInfo['total_margin_rate'], null, null, null, null, 2).'%').' | ';
+ if (!$i) {
+ $totalarray['nbfield']++;
+ }
+ }
+ // Total mark rate
+ if (!empty($arrayfields['total_mark_rate']['checked'])) {
+ print ''.(($marginInfo['total_mark_rate'] == '') ? '' : price($marginInfo['total_mark_rate'], null, null, null, null, 2).'%').' | ';
+ if (!$i) {
+ $totalarray['nbfield']++;
+ }
+ }
+
// Extra fields
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php';
// Fields from hook
diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php
index febab2d5917..8d677625040 100644
--- a/htdocs/commande/list.php
+++ b/htdocs/commande/list.php
@@ -40,6 +40,9 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/discount.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
+if (!empty($conf->margin->enabled)) {
+ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formmargin.class.php';
+}
require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php';
require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
@@ -187,6 +190,10 @@ $arrayfields = array(
'c.multicurrency_total_ttc'=>array('label'=>'MulticurrencyAmountTTC', 'checked'=>0, 'enabled'=>(empty($conf->multicurrency->enabled) ? 0 : 1), 'position'=>110),
'u.login'=>array('label'=>"Author", 'checked'=>1, 'position'=>115),
'sale_representative'=>array('label'=>"SaleRepresentativesOfThirdParty", 'checked'=>0, 'position'=>116),
+ 'total_pa' => array('label' => ($conf->global->MARGIN_TYPE == '1' ? 'BuyingPrice' : 'CostPrice'), 'checked' => 0, 'position' => 300, 'enabled' => (empty($conf->margin->enabled) || !$user->rights->margins->liretous ? 0 : 1)),
+ 'total_margin' => array('label' => 'Margin', 'checked' => 0, 'position' => 301, 'enabled' => (empty($conf->margin->enabled) || !$user->rights->margins->liretous ? 0 : 1)),
+ 'total_margin_rate' => array('label' => 'MarginRate', 'checked' => 0, 'position' => 302, 'enabled' => (empty($conf->margin->enabled) || !$user->rights->margins->liretous || empty($conf->global->DISPLAY_MARGIN_RATES) ? 0 : 1)),
+ 'total_mark_rate' => array('label' => 'MarkRate', 'checked' => 0, 'position' => 303, 'enabled' => (empty($conf->margin->enabled) || !$user->rights->margins->liretous || empty($conf->global->DISPLAY_MARK_RATES) ? 0 : 1)),
'c.datec'=>array('label'=>"DateCreation", 'checked'=>0, 'position'=>120),
'c.tms'=>array('label'=>"DateModificationShort", 'checked'=>0, 'position'=>125),
'c.date_cloture'=>array('label'=>"DateClosing", 'checked'=>0, 'position'=>130),
@@ -407,6 +414,10 @@ $now = dol_now();
$form = new Form($db);
$formother = new FormOther($db);
$formfile = new FormFile($db);
+$formmargin = null;
+if (!empty($conf->margin->enabled)) {
+ $formmargin = new FormMargin($db);
+}
$companystatic = new Societe($db);
$formcompany = new FormCompany($db);
$projectstatic = new Project($db);
@@ -1193,6 +1204,22 @@ if ($resql) {
if (!empty($arrayfields['sale_representative']['checked'])) {
print ' | ';
}
+ if (!empty($arrayfields['total_pa']['checked'])) {
+ print '';
+ print ' | ';
+ }
+ if (!empty($arrayfields['total_margin']['checked'])) {
+ print '';
+ print ' | ';
+ }
+ if (!empty($arrayfields['total_margin_rate']['checked'])) {
+ print '';
+ print ' | ';
+ }
+ if (!empty($arrayfields['total_mark_rate']['checked'])) {
+ print '';
+ print ' | ';
+ }
// Extra fields
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_input.tpl.php';
// Fields from hook
@@ -1354,6 +1381,18 @@ if ($resql) {
if (!empty($arrayfields['sale_representative']['checked'])) {
print_liste_field_titre($arrayfields['sale_representative']['label'], $_SERVER["PHP_SELF"], "", "", "$param", '', $sortfield, $sortorder);
}
+ if (!empty($arrayfields['total_pa']['checked'])) {
+ print_liste_field_titre($arrayfields['total_pa']['label'], $_SERVER['PHP_SELF'], '', '', $param, 'class="right"', $sortfield, $sortorder);
+ }
+ if (!empty($arrayfields['total_margin']['checked'])) {
+ print_liste_field_titre($arrayfields['total_margin']['label'], $_SERVER['PHP_SELF'], '', '', $param, 'class="right"', $sortfield, $sortorder);
+ }
+ if (!empty($arrayfields['total_margin_rate']['checked'])) {
+ print_liste_field_titre($arrayfields['total_margin_rate']['label'], $_SERVER['PHP_SELF'], '', '', $param, 'class="right"', $sortfield, $sortorder);
+ }
+ if (!empty($arrayfields['total_mark_rate']['checked'])) {
+ print_liste_field_titre($arrayfields['total_mark_rate']['label'], $_SERVER['PHP_SELF'], '', '', $param, 'class="right"', $sortfield, $sortorder);
+ }
$totalarray = array(
'nbfield' => 0,
@@ -1413,6 +1452,18 @@ if ($resql) {
$generic_product = new Product($db);
$userstatic = new User($db);
$i = 0;
+
+ $with_margin_info = false;
+ if (!empty($conf->margin->enabled) && (
+ !empty($arrayfields['total_pa']['checked'])
+ || !empty($arrayfields['total_margin']['checked'])
+ || !empty($arrayfields['total_margin_rate']['checked'])
+ || !empty($arrayfields['total_mark_rate']['checked'])
+ )
+ ) {
+ $with_margin_info = true;
+ }
+
while ($i < min($num, $limit)) {
$obj = $db->fetch_object($resql);
@@ -1455,6 +1506,12 @@ if ($resql) {
$projectstatic->ref = $obj->project_ref;
$projectstatic->title = $obj->project_label;
+ $marginInfo = array();
+ if ($with_margin_info === true) {
+ $generic_commande->fetch_lines();
+ $marginInfo = $formmargin->getMarginInfosArray($generic_commande);
+ }
+
print '
';
// Ref
@@ -1791,6 +1848,39 @@ if ($resql) {
}
}
+ // Total buying or cost price
+ if (!empty($arrayfields['total_pa']['checked'])) {
+ print '| '.price($marginInfo['pa_total']).' | ';
+ if (!$i) {
+ $totalarray['nbfield']++;
+ }
+ }
+ // Total margin
+ if (!empty($arrayfields['total_margin']['checked'])) {
+ print ''.price($marginInfo['total_margin']).' | ';
+ if (!$i) {
+ $totalarray['nbfield']++;
+ }
+ if (!$i) {
+ $totalarray['pos'][$totalarray['nbfield']] = 'total_margin';
+ }
+ $totalarray['val']['total_margin'] += $marginInfo['total_margin'];
+ }
+ // Total margin rate
+ if (!empty($arrayfields['total_margin_rate']['checked'])) {
+ print ''.(($marginInfo['total_margin_rate'] == '') ? '' : price($marginInfo['total_margin_rate'], null, null, null, null, 2).'%').' | ';
+ if (!$i) {
+ $totalarray['nbfield']++;
+ }
+ }
+ // Total mark rate
+ if (!empty($arrayfields['total_mark_rate']['checked'])) {
+ print ''.(($marginInfo['total_mark_rate'] == '') ? '' : price($marginInfo['total_mark_rate'], null, null, null, null, 2).'%').' | ';
+ if (!$i) {
+ $totalarray['nbfield']++;
+ }
+ }
+
// Extra fields
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php';
// Fields from hook
diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php
index c244229c5f8..f526220c071 100644
--- a/htdocs/compta/facture/list.php
+++ b/htdocs/compta/facture/list.php
@@ -1621,6 +1621,18 @@ if ($resql) {
$totalarray['val'] = array();
$totalarray['val']['f.total_ht'] = 0;
$totalarray['val']['f.total_ttc'] = 0;
+
+ $with_margin_info = false;
+ if (!empty($conf->margin->enabled) && (
+ !empty($arrayfields['total_pa']['checked'])
+ || !empty($arrayfields['total_margin']['checked'])
+ || !empty($arrayfields['total_margin_rate']['checked'])
+ || !empty($arrayfields['total_mark_rate']['checked'])
+ )
+ ) {
+ $with_margin_info = true;
+ }
+
while ($i < min($num, $limit)) {
$obj = $db->fetch_object($resql);
@@ -1706,7 +1718,7 @@ if ($resql) {
$facturestatic->alreadypaid = $paiement;
$marginInfo = array();
- if (!empty($conf->margin->enabled)) {
+ if ($with_margin_info === true) {
$facturestatic->fetch_lines();
$marginInfo = $formmargin->getMarginInfosArray($facturestatic);
}
@@ -2194,7 +2206,7 @@ if ($resql) {
$totalarray['nbfield']++;
}
}
- // total mark rate
+ // Total mark rate
if (!empty($arrayfields['total_mark_rate']['checked'])) {
print ''.(($marginInfo['total_mark_rate'] == '') ? '' : price($marginInfo['total_mark_rate'], null, null, null, null, 2).'%').' | ';
if (!$i) {