From cd68538d2d55b693356daf2826c55119f0e15ced Mon Sep 17 00:00:00 2001 From: Florian Henry Date: Fri, 24 May 2013 22:43:07 +0200 Subject: [PATCH] Fix search product with multilangue --- htdocs/product/liste.php | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/htdocs/product/liste.php b/htdocs/product/liste.php index 6663a9f527e..96446a2886e 100644 --- a/htdocs/product/liste.php +++ b/htdocs/product/liste.php @@ -134,9 +134,22 @@ else $sql.= MAIN_DB_PREFIX.'product as p'; $sql.= ') '; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON p.rowid = pfp.fk_product"; +// multilang + if ($conf->global->MAIN_MULTILANGS) // si l'option est active + { + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product_lang as pl ON pl.fk_product = p.rowid AND pl.lang = '".$langs->getDefaultLang() ."'"; + } $sql.= ' WHERE p.entity IN ('.getEntity('product', 1).')'; if ($search_categ) $sql.= " AND p.rowid = cp.fk_product"; // Join for the needed table to filter by categ - if ($sall) $sql.= " AND (p.ref LIKE '%".$db->escape($sall)."%' OR p.label LIKE '%".$db->escape($sall)."%' OR p.description LIKE '%".$db->escape($sall)."%' OR p.note LIKE '%".$db->escape($sall)."%')"; + if ($sall) + { + // multilang + if ($conf->global->MAIN_MULTILANGS) // si l'option est active + { + $sql.= " AND (p.ref LIKE '%".$db->escape($sall)."%' OR p.label LIKE '%".$db->escape($sall)."%' OR p.description LIKE '%".$db->escape($sall)."%' OR p.note LIKE '%".$db->escape($sall)."%' OR pl.label LIKE '%".$db->escape($sall)."%' OR pl.description LIKE '%".$db->escape($sall)."%' OR pl.note LIKE '%".$db->escape($sall)."%' )"; + } + else $sql.= " AND (p.ref LIKE '%".$db->escape($sall)."%' OR p.label LIKE '%".$db->escape($sall)."%' OR p.description LIKE '%".$db->escape($sall)."%' OR p.note LIKE '%".$db->escape($sall)."%')"; + } // if the type is not 1, we show all products (type = 0,2,3) if (dol_strlen($type)) { @@ -145,7 +158,15 @@ else } if ($sref) $sql.= " AND p.ref LIKE '%".$sref."%'"; if ($sbarcode) $sql.= " AND p.barcode LIKE '%".$sbarcode."%'"; - if ($snom) $sql.= " AND p.label LIKE '%".$db->escape($snom)."%'"; + if ($snom) + { + // multilang + if ($conf->global->MAIN_MULTILANGS) // si l'option est active + { + $sql.= " AND (p.label LIKE '%".$db->escape($snom)."%' OR (pl.label IS NOT null AND pl.label LIKE '%".$db->escape($snom)."%'))"; + } + else $sql.= " AND p.label LIKE '%".$db->escape($snom)."%'"; +} if (isset($tosell) && dol_strlen($tosell) > 0) $sql.= " AND p.tosell = ".$db->escape($tosell); if (isset($tobuy) && dol_strlen($tobuy) > 0) $sql.= " AND p.tobuy = ".$db->escape($tobuy); if (dol_strlen($canvas) > 0) $sql.= " AND p.canvas = '".$db->escape($canvas)."'";