Ajout de la recherche ajax sur la liste déroulante des produits fournisseurs

This commit is contained in:
Regis Houssin 2007-05-07 12:47:22 +00:00
parent 121644bbec
commit 3a7708df98
4 changed files with 62 additions and 13 deletions

View File

@ -612,6 +612,7 @@ else
$sql .= ' ORDER BY dp DESC'; $sql .= ' ORDER BY dp DESC';
$result = $db->query($sql); $result = $db->query($sql);
if ($result) if ($result)
{ {
$num = $db->num_rows($result); $num = $db->num_rows($result);

View File

@ -263,7 +263,6 @@ class FactureFournisseur extends Facture
dolibarr_print_error($this->db); dolibarr_print_error($this->db);
return -2; return -2;
} }
$this->db->free($resql);
} }
else else
{ {

View File

@ -811,14 +811,15 @@ class Form
\param htmlname Nom de la zone select \param htmlname Nom de la zone select
\param filtretype Pour filtre sur type de produit \param filtretype Pour filtre sur type de produit
\param limit Limite sur le nombre de lignes retournées \param limit Limite sur le nombre de lignes retournées
\param price_level Niveau de prix en fonction du client
*/ */
function select_produits($selected='',$htmlname='productid',$filtretype='',$limit=20,$price_level=0) function select_produits($selected='',$htmlname='productid',$filtretype='',$limit=20,$price_level=0)
{ {
global $langs,$conf,$user; global $langs,$conf;
if ($conf->global->PRODUIT_USE_SEARCH_TO_SELECT) if ($conf->global->PRODUIT_USE_SEARCH_TO_SELECT)
{ {
print $langs->trans("RefOrLabel").' : <input type="text" size="16" name="keysearch'.$htmlname.'" id="keysearch'.$htmlname.'">'; print $langs->trans("RefOrLabel").' : <input type="text" size="16" name="keysearch'.$htmlname.'" id="keysearch'.$htmlname.'">';
print ajax_updater($htmlname,'keysearch','/product/ajaxproducts.php','&price_level='.$price_level.'','ajaxworking'); print ajax_updater($htmlname,'keysearch','/product/ajaxproducts.php','&price_level='.$price_level.'&type=1','ajaxworking');
} }
else else
{ {
@ -832,6 +833,8 @@ class Form
\param htmlname Nom de la zone select \param htmlname Nom de la zone select
\param filtretype Pour filtre sur type de produit \param filtretype Pour filtre sur type de produit
\param limit Limite sur le nombre de lignes retournées \param limit Limite sur le nombre de lignes retournées
\param price_level Niveau de prix en fonction du client
\param ajaxkeysearch Filtre des produits si ajax est utilisé
*/ */
function select_produits_do($selected='',$htmlname='productid',$filtretype='',$limit=20,$price_level=0,$ajaxkeysearch='') function select_produits_do($selected='',$htmlname='productid',$filtretype='',$limit=20,$price_level=0,$ajaxkeysearch='')
{ {
@ -956,6 +959,26 @@ class Form
} }
} }
/**
\brief Retourne la liste des produits fournisseurs en Ajax si ajax activé ou renvoie à select_produits_fournisseurs_do
\param selected Produit présélectionné
\param htmlname Nom de la zone select
\param filtretype Pour filtre sur type de produit
\param limit Limite sur le nombre de lignes retournées
*/
function select_produits_fournisseurs($socid,$selected='',$htmlname='productid',$filtretype='',$filtre='')
{
global $langs,$conf;
if ($conf->global->PRODUIT_USE_SEARCH_TO_SELECT)
{
print $langs->trans("RefOrLabel").' : <input type="text" size="16" name="keysearch'.$htmlname.'" id="keysearch'.$htmlname.'">';
print ajax_updater($htmlname,'keysearch','/product/ajaxproducts.php','&type=2','ajaxworking');
}
else
{
$this->select_produits_fournisseurs_do($socid,$selected,$htmlname,$filtretype,$filtre);
}
}
/** /**
\brief Retourne la liste des produits de fournisseurs \brief Retourne la liste des produits de fournisseurs
@ -963,10 +986,10 @@ class Form
\param selected Produit présélectionné \param selected Produit présélectionné
\param htmlname Nom de la zone select \param htmlname Nom de la zone select
\param filtretype Pour filtre sur type de produit \param filtretype Pour filtre sur type de produit
\param limit Limite sur le nombre de lignes retournées
\param filtre Pour filtre \param filtre Pour filtre
\param ajaxkeysearch Filtre des produits si ajax est utilisé
*/ */
function select_produits_fournisseurs($socid,$selected='',$htmlname='productid',$filtretype='',$filtre='') function select_produits_fournisseurs_do($socid,$selected='',$htmlname='productid',$filtretype='',$filtre='',$ajaxkeysearch='')
{ {
global $langs,$conf; global $langs,$conf;
@ -980,18 +1003,37 @@ class Form
if ($socid) $sql.= " AND pfp.fk_soc = ".$socid; if ($socid) $sql.= " AND pfp.fk_soc = ".$socid;
if ($filtretype && $filtretype != '') $sql.=" AND p.fk_product_type=".$filtretype; if ($filtretype && $filtretype != '') $sql.=" AND p.fk_product_type=".$filtretype;
if ($filtre) $sql.="$filtre"; if ($filtre) $sql.="$filtre";
if ($ajaxkeysearch && $ajaxkeysearch != '') $sql.=" AND p.ref like '%".$ajaxkeysearch."%' OR p.label like '%".$ajaxkeysearch."%'";
$sql.= " ORDER BY p.ref DESC"; $sql.= " ORDER BY p.ref DESC";
dolibarr_syslog("Form::select_produits_fournisseurs sql=$sql",LOG_DEBUG); dolibarr_syslog("Form::select_produits_fournisseurs sql=$sql",LOG_DEBUG);
$result=$this->db->query($sql); $result=$this->db->query($sql);
if ($result) if ($result)
{
$num = $this->db->num_rows($result);
if ($conf->use_ajax)
{
if (! $num)
{
print '<select class="flat" name="'.$htmlname.'">';
print '<option value="0">-- '.$langs->trans("NoProductMatching").' --</option>';
}
else
{
print '<select class="flat" name="'.$htmlname.'" onchange="publish_selvalue(this);">';
print '<option value="0" selected="true">-- '.$langs->trans("MatchingProducts").' --</option>';
}
}
else
{ {
print '<select class="flat" name="'.$htmlname.'">'; print '<select class="flat" name="'.$htmlname.'">';
if (! $selected) print '<option value="0" selected="true">&nbsp;</option>'; if (! $selected) print '<option value="0" selected="true">&nbsp;</option>';
else print '<option value="0">&nbsp;</option>'; else print '<option value="0">&nbsp;</option>';
}
$num = $this->db->num_rows($result);
$i = 0; $i = 0;
while ($i < $num) while ($i < $num)
{ {

View File

@ -42,8 +42,15 @@ print "\n<body>";
if(isset($_GET['keysearch']) && !empty($_GET['keysearch'])) if(isset($_GET['keysearch']) && !empty($_GET['keysearch']))
{ {
$form = new Form($db); $form = new Form($db);
if ($_GET['type'] == 1)
{
$form->select_produits_do("",$_GET["htmlname"],"","",$_GET["price_level"],$_GET["keysearch"]); $form->select_produits_do("",$_GET["htmlname"],"","",$_GET["price_level"],$_GET["keysearch"]);
} }
else if ($_GET['type'] == 2)
{
$form->select_produits_fournisseurs_do("","",$_GET["htmlname"],"","",$_GET["keysearch"]);
}
}
print "</body>"; print "</body>";
print "</html>"; print "</html>";