diff --git a/htdocs/compta/stats/cabyprodserv.php b/htdocs/compta/stats/cabyprodserv.php index e995b06aa6b89525ed887f67f980c1bfc6e941fb..ca58ff334b5048fe70b0f504da07e89b3b45276b 100644 --- a/htdocs/compta/stats/cabyprodserv.php +++ b/htdocs/compta/stats/cabyprodserv.php @@ -55,6 +55,9 @@ $subcat = false; if (GETPOST('subcat', 'alpha') === 'yes') { $subcat = true; } +// product/service +$selected_type = GETPOST('search_type', 'int'); +if ($selected_type =='') $selected_type = -1; // Date range $year=GETPOST("year"); @@ -124,6 +127,7 @@ $headerparams['q'] = $q; $tableparams = array(); $tableparams['search_categ'] = $selected_cat; +$tableparams['search_type'] = $selected_type; $tableparams['subcat'] = ($subcat === true)?'yes':''; // Adding common parameters @@ -180,7 +184,7 @@ $catotal=0; if ($modecompta == 'CREANCES-DETTES') { - $sql = "SELECT DISTINCT p.rowid as rowid, p.ref as ref, p.label as label,"; + $sql = "SELECT DISTINCT p.rowid as rowid, p.ref as ref, p.label as label, p.fk_product_type as product_type,"; $sql.= " SUM(l.total_ht) as amount, SUM(l.total_ttc) as amount_ttc,"; $sql.= " SUM(CASE WHEN f.type = 2 THEN -l.qty ELSE l.qty END) as qty"; $sql.= " FROM ".MAIN_DB_PREFIX."facture as f, ".MAIN_DB_PREFIX."facturedet as l, ".MAIN_DB_PREFIX."product as p"; @@ -203,6 +207,10 @@ if ($modecompta == 'CREANCES-DETTES') if ($date_start && $date_end) { $sql.= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; } + if ($selected_type >=0) + { + $sql.= " AND l.product_type = ".$selected_type; + } if ($selected_cat === -2) // Without any category { $sql.=" AND cp.fk_product is null"; @@ -214,7 +222,7 @@ if ($modecompta == 'CREANCES-DETTES') $sql.= " AND cp.fk_categorie = c.rowid AND cp.fk_product = p.rowid"; } $sql.= " AND f.entity = ".$conf->entity; - $sql.= " GROUP BY p.rowid, p.ref, p.label"; + $sql.= " GROUP BY p.rowid, p.ref, p.label, p.fk_product_type"; $sql.= $db->order($sortfield,$sortorder); dol_syslog("cabyprodserv", LOG_DEBUG); @@ -228,6 +236,7 @@ if ($modecompta == 'CREANCES-DETTES') $amount[$obj->rowid] = $obj->amount_ttc; $qty[$obj->rowid] = $obj->qty; $name[$obj->rowid] = $obj->ref . ' - ' . $obj->label; + $type[$obj->rowid] = $obj->product_type; $catotal_ht+=$obj->amount; $catotal+=$obj->amount_ttc; $qtytotal+=$obj->qty; @@ -257,8 +266,14 @@ if ($modecompta == 'CREANCES-DETTES') if ($subcat) { print ' checked'; } - print '></td>'; - print '<td colspan="5" align="right">'; + print '>'; + // type filter (produit/service) + print ' '; + print $langs->trans("Type"). ': '; + $form->select_type_of_lines(isset($selected_type)?$selected_type:-1,'search_type',1,1,1); + print '</td>'; + + print '<td colspan="5" align="right">'; print '<input type="image" class="liste_titre" name="button_search" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">'; print '</td></tr>'; @@ -337,7 +352,7 @@ if ($modecompta == 'CREANCES-DETTES') // Product $fullname=$name[$key]; if ($key >= 0) { - $linkname='<a href="'.DOL_URL_ROOT.'/product/card.php?id='.$key.'">'.img_object($langs->trans("ShowProduct"),'product').' '.$fullname.'</a>'; + $linkname='<a href="'.DOL_URL_ROOT.'/product/card.php?id='.$key.'">'.img_object($langs->trans("ShowProduct"),$type[$key]==0?'product':'service').' '.$fullname.'</a>'; } else { $linkname=$langs->trans("PaymentsNotLinkedToProduct"); }