Fix: Products on hold are not reported in list with ajax selector

This commit is contained in:
Laurent Destailleur 2008-07-10 21:50:23 +00:00
parent 5a6b708626
commit f92c05ec38
2 changed files with 30 additions and 27 deletions

View File

@ -932,14 +932,15 @@ class Form
/** /**
\brief Retourne la liste des produits en Ajax si ajax activé ou renvoie à select_produits_do \brief Retourne la liste des produits en Ajax si ajax activé ou renvoie à select_produits_do
\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 limit Limite sur le nombre de lignes retournées
\param price_level Niveau de prix en fonction du client \param price_level Niveau de prix en fonction du client
\param status -1=Return all products, 0=Products not on sell, 1=Products on sell
*/ */
function select_produits($selected='',$htmlname='productid',$filtretype='',$limit=20,$price_level=0) function select_produits($selected='',$htmlname='productid',$filtretype='',$limit=20,$price_level=0,$status=1)
{ {
global $langs,$conf; global $langs,$conf;
@ -956,13 +957,13 @@ class Form
print '</tr>'; print '</tr>';
print '<tr class="nocellnopadd">'; print '<tr class="nocellnopadd">';
print '<td class="nobordernopadding" colspan="3">'; print '<td class="nobordernopadding" colspan="3">';
print ajax_updater($htmlname,'keysearch','/product/ajaxproducts.php','&price_level='.$price_level.'&type=1',''); print ajax_updater($htmlname,'keysearch','/product/ajaxproducts.php','&price_level='.$price_level.'&type='.$filtretype.'&status='.$status,'');
print '</td></tr>'; print '</td></tr>';
print '</table>'; print '</table>';
} }
else else
{ {
$this->select_produits_do($selected,$htmlname,$filtretype,$limit,$price_level); $this->select_produits_do($selected,$htmlname,$filtretype,$limit,$price_level,'',$status);
} }
} }
@ -974,8 +975,9 @@ class Form
\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 price_level Niveau de prix en fonction du client
\param ajaxkeysearch Filtre des produits si ajax est utilisé \param ajaxkeysearch Filtre des produits si ajax est utilisé
\param status -1=Return all products, 0=Products not on sell, 1=Products on sell
*/ */
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='',$status=1)
{ {
global $langs,$conf,$user; global $langs,$conf,$user;
@ -991,13 +993,14 @@ class Form
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."categorie_product as cp ON p.rowid = cp.fk_product"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."categorie_product as cp ON p.rowid = cp.fk_product";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."categorie as c ON cp.fk_categorie = c.rowid"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."categorie as c ON cp.fk_categorie = c.rowid";
} }
$sql.= " WHERE p.envente = 1"; if ($status >= 0) $sql.= " WHERE p.envente = ".$status;
else $sql.= " WHERE 1 = 1";
if ($conf->categorie->enabled && ! $user->rights->categorie->voir) if ($conf->categorie->enabled && ! $user->rights->categorie->voir)
{ {
$sql.= ' AND IFNULL(c.visible,1)=1'; $sql.= ' AND IFNULL(c.visible,1)=1';
} }
if ($filtretype && $filtretype != '') $sql.=" AND p.fk_product_type=".$filtretype; if ($filtretype && $filtretype != '') $sql.=" AND p.fk_product_type=".$filtretype;
if ($ajaxkeysearch && $ajaxkeysearch != '') $sql.=" AND p.ref like '%".$ajaxkeysearch."%' OR p.label like '%".$ajaxkeysearch."%'"; if ($ajaxkeysearch && $ajaxkeysearch != '') $sql.=" AND (p.ref like '%".$ajaxkeysearch."%' OR p.label like '%".$ajaxkeysearch."%')";
$sql.= " ORDER BY p.nbvente DESC"; $sql.= " ORDER BY p.nbvente DESC";
if ($limit) $sql.= " LIMIT $limit"; if ($limit) $sql.= " LIMIT $limit";
@ -1128,7 +1131,7 @@ 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 sql
*/ */
function select_produits_fournisseurs($socid,$selected='',$htmlname='productid',$filtretype='',$filtre='') function select_produits_fournisseurs($socid,$selected='',$htmlname='productid',$filtretype='',$filtre='')
{ {
@ -1136,7 +1139,7 @@ class Form
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','&socid='.$socid.'&type=2','working'); print ajax_updater($htmlname,'keysearch','/product/ajaxproducts.php','&socid='.$socid.'&type='.$filtretype,'working');
} }
else else
{ {
@ -1150,7 +1153,7 @@ 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 filtre Pour filtre \param filtre Pour filtre sql
\param ajaxkeysearch Filtre des produits si ajax est utilisé \param ajaxkeysearch Filtre des produits si ajax est utilisé
*/ */
function select_produits_fournisseurs_do($socid,$selected='',$htmlname='productid',$filtretype='',$filtre='',$ajaxkeysearch='') function select_produits_fournisseurs_do($socid,$selected='',$htmlname='productid',$filtretype='',$filtre='',$ajaxkeysearch='')
@ -1169,8 +1172,8 @@ class Form
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON pf.rowid = pfp.fk_product_fournisseur"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON pf.rowid = pfp.fk_product_fournisseur";
$sql.= " WHERE p.envente = 1"; $sql.= " WHERE p.envente = 1";
if ($socid) $sql.= " AND pf.fk_soc = ".$socid; if ($socid) $sql.= " AND pf.fk_soc = ".$socid;
if ($filtretype && $filtretype != '') $sql.=" AND p.fk_product_type=".$filtretype; if (! empty($filtretype)) $sql.=" AND p.fk_product_type=".$filtretype;
if ($filtre) $sql.="$filtre"; if (! empty($filtre)) $sql.=" ".$filtre;
if ($ajaxkeysearch && $ajaxkeysearch != '') $sql.=" AND (pf.ref_fourn like '%".$ajaxkeysearch."%' OR p.label like '%".$ajaxkeysearch."%')"; if ($ajaxkeysearch && $ajaxkeysearch != '') $sql.=" AND (pf.ref_fourn like '%".$ajaxkeysearch."%' OR p.label like '%".$ajaxkeysearch."%')";
$sql.= " ORDER BY pf.ref_fourn DESC"; $sql.= " ORDER BY pf.ref_fourn DESC";

View File

@ -1,7 +1,7 @@
<?php <?php
/* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr> /* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr>
* Copyright (C) 2005-2007 Regis Houssin <regis@dolibarr.fr> * Copyright (C) 2005-2007 Regis Houssin <regis@dolibarr.fr>
* Copyright (C) 2007 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2007-2008 Laurent Destailleur <eldy@users.sourceforge.net>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -16,15 +16,12 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* $Id$
* $Source$
*/ */
/** /**
\file htdocs/product/ajaxproducts.php \file htdocs/product/ajaxproducts.php
\brief Fichier de reponse sur evenement Ajax \brief Fichier de reponse sur evenement Ajax
\version $Revision$ \version $Id$
*/ */
require('../main.inc.php'); require('../main.inc.php');
@ -37,19 +34,22 @@ top_htmlhead("", "", 1);
print '<body class="nocellnopadd">'."\n"; print '<body class="nocellnopadd">'."\n";
// Generation liste de produits // Generation liste de produits
if(isset($_GET['keysearch']) && !empty($_GET['keysearch'])) if (! empty($_GET['keysearch']))
{ {
$status=-1;
if (isset($_GET['status'])) $status=$_GET['status'];
$form = new Form($db); $form = new Form($db);
if ($_GET['type'] == 1) 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"],$status);
} }
else if ($_GET['type'] == 2) if ($_GET['type'] == 2)
{ {
$form->select_produits_fournisseurs_do($_GET["socid"],"",$_GET["htmlname"],"","",$_GET["keysearch"]); $form->select_produits_fournisseurs_do($_GET["socid"],"",$_GET["htmlname"],"","",$_GET["keysearch"]);
} }
} }
else if(isset($_GET['markup']) && !empty($_GET['markup'])) else if (! empty($_GET['markup']))
{ {
print $_GET['markup']; print $_GET['markup'];
//print $_GET['count']; //print $_GET['count'];
@ -57,7 +57,7 @@ else if(isset($_GET['markup']) && !empty($_GET['markup']))
//print '<input size="10" type="text" class="flat" id="sellingdata_ht'.$_GET['count'].'" name="sellingdata_ht'.$_GET['count'].'" value="'.$field.'">'; //print '<input size="10" type="text" class="flat" id="sellingdata_ht'.$_GET['count'].'" name="sellingdata_ht'.$_GET['count'].'" value="'.$field.'">';
//print $field; //print $field;
} }
else if(isset($_GET['selling']) && !empty($_GET['selling'])) else if (! empty($_GET['selling']))
{ {
//print $_GET['markup']; //print $_GET['markup'];
//print $_GET['count']; //print $_GET['count'];