Fix: Wrong list of product for supplier orders or invoices
This commit is contained in:
parent
360dd71c58
commit
f3566030e0
@ -382,7 +382,7 @@ if ($socid > 0)
|
||||
{
|
||||
print " ".img_warning();
|
||||
}
|
||||
print '</td><td align="right" width="80">'.dolibarr_print_date($objp->dp)."</td>\n";
|
||||
print '</td><td align="right" width="80">'.dolibarr_print_date($objp->dp,'day')."</td>\n";
|
||||
print '<td align="right" width="120">'.price($objp->total_ht).'</td>';
|
||||
print '<td align="right" nowrap="nowrap">'.$propal_static->LibStatut($objp->fk_statut,5).'</td></tr>';
|
||||
$var=!$var;
|
||||
@ -431,7 +431,7 @@ if ($socid > 0)
|
||||
$var=!$var;
|
||||
print "<tr $bc[$var]>";
|
||||
print '<td nowrap="nowrap"><a href="'.DOL_URL_ROOT.'/commande/fiche.php?id='.$objp->cid.'">'.img_object($langs->trans("ShowOrder"),"order").' '.$objp->ref."</a>\n";
|
||||
print '</td><td align="right" width="80">'.dolibarr_print_date($objp->dc)."</td>\n";
|
||||
print '</td><td align="right" width="80">'.dolibarr_print_date($objp->dc,'day')."</td>\n";
|
||||
print '<td align="right" width="120">'.price($objp->total_ht).'</td>';
|
||||
print '<td align="right" width="100">'.$commande_static->LibStatut($objp->fk_statut,$objp->facture,5).'</td></tr>';
|
||||
$i++;
|
||||
@ -445,7 +445,7 @@ if ($socid > 0)
|
||||
}
|
||||
|
||||
/*
|
||||
* Derniers contrats
|
||||
* Last linked contracts
|
||||
*/
|
||||
if($conf->contrat->enabled)
|
||||
{
|
||||
@ -481,10 +481,10 @@ if ($socid > 0)
|
||||
print "<tr $bc[$var]>";
|
||||
print '<td>';
|
||||
$contrat->id=$objp->id;
|
||||
$contrat->ref=$objp->ref;
|
||||
$contrat->ref=$objp->ref?$objp->ref:$objp->id;
|
||||
print $contrat->getNomUrl(1);
|
||||
print "</td>\n";
|
||||
print '<td align="right" width="80">'.dolibarr_print_date($objp->dc)."</td>\n";
|
||||
print '<td align="right" width="80">'.dolibarr_print_date($objp->dc,'day')."</td>\n";
|
||||
print '<td width="20"> </td>';
|
||||
print '<td align="right" nowrap="nowrap">';
|
||||
$contrat->fetch_lignes();
|
||||
@ -532,7 +532,7 @@ if ($socid > 0)
|
||||
$objp = $db->fetch_object($resql);
|
||||
print "<tr $bc[$var]>";
|
||||
print '<td nowrap><a href="'.DOL_URL_ROOT."/fichinter/fiche.php?id=".$objp->id."\">".img_object($langs->trans("ShowPropal"),"propal")." ".$objp->ref."</a>\n";
|
||||
print "</td><td align=\"right\">".dolibarr_print_date($objp->di)."</td>\n";
|
||||
print "</td><td align=\"right\">".dolibarr_print_date($objp->di,'day')."</td>\n";
|
||||
print '</tr>';
|
||||
$var=!$var;
|
||||
$i++;
|
||||
@ -546,7 +546,7 @@ if ($socid > 0)
|
||||
}
|
||||
|
||||
/*
|
||||
* Derniers projets associ<EFBFBD>s
|
||||
* Last linked projects
|
||||
*/
|
||||
if ($conf->projet->enabled)
|
||||
{
|
||||
|
||||
@ -21,10 +21,10 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
\file htdocs/commande/fiche.php
|
||||
\ingroup commande
|
||||
\brief Fiche commande client
|
||||
\version $Id$
|
||||
* \file htdocs/commande/fiche.php
|
||||
* \ingroup commande
|
||||
* \brief Fiche commande client
|
||||
* \version $Id$
|
||||
*/
|
||||
|
||||
require('./pre.inc.php');
|
||||
@ -1218,7 +1218,7 @@ else
|
||||
print '<tr><td>'.$langs->trans('Date').'</td>';
|
||||
print '<td colspan="2">'.dolibarr_print_date($commande->date,'daytext').'</td>';
|
||||
print '<td width="50%">'.$langs->trans('Source').' : '.$commande->getLabelSource();
|
||||
if ($commande->source == 0 && $conf->propal->enabled)
|
||||
if ($commande->source == 0 && $conf->propal->enabled && $commande->propale_id)
|
||||
{
|
||||
// Si source = propal
|
||||
$propal = new Propal($db);
|
||||
|
||||
@ -1119,9 +1119,9 @@ else
|
||||
print '<td colspan="3">';
|
||||
// multiprix
|
||||
if($conf->global->PRODUIT_MULTIPRICES == 1)
|
||||
$form->select_produits('','p_idprod','',$conf->produit->limit_size,$contrat->societe->price_level);
|
||||
$form->select_produits('','p_idprod',1,$conf->produit->limit_size,$contrat->societe->price_level);
|
||||
else
|
||||
$form->select_produits('','p_idprod','',$conf->produit->limit_size);
|
||||
$form->select_produits('','p_idprod',1,$conf->produit->limit_size);
|
||||
if (! $conf->global->PRODUIT_USE_SEARCH_TO_SELECT) print '<br>';
|
||||
print '<textarea name="desc" cols="70" rows="'.ROWS_2.'"></textarea>';
|
||||
print '</td>';
|
||||
|
||||
@ -20,10 +20,10 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
\file htdocs/fourn/commande/fiche.php
|
||||
\ingroup commande
|
||||
\brief Fiche commande
|
||||
\version $Id$
|
||||
* \file htdocs/fourn/commande/fiche.php
|
||||
* \ingroup commande
|
||||
* \brief Fiche commande
|
||||
* \version $Id$
|
||||
*/
|
||||
|
||||
require('./pre.inc.php');
|
||||
@ -109,42 +109,42 @@ if ($_POST['action'] == 'addligne' && $user->rights->fournisseur->commande->cree
|
||||
if ($idprod > 0)
|
||||
{
|
||||
$prodfournprice->fetch($idprod);
|
||||
|
||||
|
||||
// cas special pour lequel on a les meme reference que le fournisseur
|
||||
// $label = '['.$nv_prod->ref.'] - '. $nv_prod->libelle;
|
||||
$label = $prodfournprice->libelle;
|
||||
|
||||
|
||||
$societe='';
|
||||
if ($commande->socid)
|
||||
{
|
||||
$societe=new Societe($db);
|
||||
$societe->fetch($commande->socid);
|
||||
}
|
||||
|
||||
|
||||
$desc = $prodfournprice->description;
|
||||
$desc.= $prodfournprice->description && $_POST['np_desc'] ? "\n" : "";
|
||||
$desc.= $_POST['np_desc'];
|
||||
|
||||
|
||||
$tva_tx = get_default_tva($societe,$mysoc,$prodfournprice->tva_tx,$prodfournprice->id);
|
||||
|
||||
$result=$commande->addline(
|
||||
$desc,
|
||||
$pu,
|
||||
$_POST['qty'],
|
||||
$tva_tx,
|
||||
$prodfournprice->id,
|
||||
$_POST['idprodfournprice'],
|
||||
$prodfournprice->fourn_ref,
|
||||
$_POST['remise_percent'],
|
||||
$desc,
|
||||
$pu,
|
||||
$_POST['qty'],
|
||||
$tva_tx,
|
||||
$prodfournprice->id,
|
||||
$_POST['idprodfournprice'],
|
||||
$prodfournprice->fourn_ref,
|
||||
$_POST['remise_percent'],
|
||||
'HT'
|
||||
);
|
||||
);
|
||||
|
||||
}
|
||||
if ($idprod == -1)
|
||||
{
|
||||
// Quantity too low
|
||||
$mesg='<div class="error">'.$langs->trans("ErrorQtyTooLowForThisSupplier").'</div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -168,20 +168,20 @@ if ($_POST['action'] == 'addligne' && $user->rights->fournisseur->commande->cree
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//print "xx".$tva_tx; exit;
|
||||
if ($result > 0)
|
||||
{
|
||||
if ($_REQUEST['lang_id'])
|
||||
{
|
||||
$outputlangs = new Translate("",$conf);
|
||||
if ($_REQUEST['lang_id'])
|
||||
{
|
||||
$outputlangs = new Translate("",$conf);
|
||||
$outputlangs->setDefaultLang($_REQUEST['lang_id']);
|
||||
}
|
||||
supplier_order_pdf_create($db, $commande->id, $commande->modelpdf, $outputlangs);
|
||||
}
|
||||
else
|
||||
{
|
||||
$mesg='<div class="error">'.$commande->error.'</div>';
|
||||
$mesg='<div class="error">'.$commande->error.'</div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -896,7 +896,7 @@ if ($id > 0)
|
||||
$var=!$var;
|
||||
print '<tr '.$bc[$var].'>';
|
||||
print '<td colspan="3">';
|
||||
$html->select_produits_fournisseurs($commande->fourn_id,'','idprodfournprice',2,$filtre);
|
||||
$html->select_produits_fournisseurs($commande->fourn_id,'','idprodfournprice','',$filtre);
|
||||
|
||||
if (! $conf->global->PRODUIT_USE_SEARCH_TO_SELECT) print '<br>';
|
||||
|
||||
|
||||
@ -870,7 +870,7 @@ else
|
||||
$var=! $var;
|
||||
print '<tr '.$bc[$var].'>';
|
||||
print '<td colspan="4">';
|
||||
$html->select_produits_fournisseurs($fac->socid,'','prodfournpriceid',2,$filtre);
|
||||
$html->select_produits_fournisseurs($fac->socid,'','prodfournpriceid','',$filtre);
|
||||
print '</td>';
|
||||
print '<td align="right"><input type="text" name="qty" value="1" size="1"></td>';
|
||||
print '<td> </td>';
|
||||
|
||||
@ -932,15 +932,15 @@ class Form
|
||||
|
||||
|
||||
/**
|
||||
\brief Retourne la liste des produits en Ajax si ajax activé ou renvoie à select_produits_do
|
||||
\param selected Produit pré-sélectionné
|
||||
\param htmlname Nom de la zone select
|
||||
\param filtretype Filter on product type (1=customer, 2=supplier)
|
||||
\param limit Limite sur le nombre de lignes retournées
|
||||
\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=1,$limit=20,$price_level=0,$status=1)
|
||||
* \brief Retourne la liste des produits en Ajax si ajax activé ou renvoie à select_produits_do
|
||||
* \param selected Produit pré-sélectionné
|
||||
* \param htmlname Nom de la zone select
|
||||
* \param filtertype Filter on product type (''=nofilter, 0=product, 1=service)
|
||||
* \param limit Limite sur le nombre de lignes retournées
|
||||
* \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',$filtertype='',$limit=20,$price_level=0,$status=1)
|
||||
{
|
||||
global $langs,$conf;
|
||||
|
||||
@ -957,27 +957,27 @@ class Form
|
||||
print '</tr>';
|
||||
print '<tr class="nocellnopadd">';
|
||||
print '<td class="nobordernopadding" colspan="3">';
|
||||
print ajax_updater($htmlname,'keysearch','/product/ajaxproducts.php','&price_level='.$price_level.'&type='.$filtretype.'&status='.$status,'');
|
||||
print ajax_updater($htmlname,'keysearch','/product/ajaxproducts.php','&price_level='.$price_level.'&type='.$filtertype.'&mode=1&status='.$status,'');
|
||||
print '</td></tr>';
|
||||
print '</table>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->select_produits_do($selected,$htmlname,$filtretype,$limit,$price_level,'',$status);
|
||||
$this->select_produits_do($selected,$htmlname,$filtertype,$limit,$price_level,'',$status);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Retourne la liste des produits
|
||||
\param selected Produit pré-sélectionné
|
||||
\param htmlname Nom de la zone select
|
||||
\param filtretype Filter on product type (1=customer, 2=supplier)
|
||||
\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é
|
||||
\param status -1=Return all products, 0=Products not on sell, 1=Products on sell
|
||||
*/
|
||||
function select_produits_do($selected='',$htmlname='productid',$filtretype=1,$limit=20,$price_level=0,$ajaxkeysearch='',$status=1)
|
||||
* \brief Retourne la liste des produits
|
||||
* \param selected Produit pré-sélectionné
|
||||
* \param htmlname Nom de la zone select
|
||||
* \param filtertype Filter on product type (''=nofilter, 0=product, 1=service)
|
||||
* \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é
|
||||
* \param status -1=Return all products, 0=Products not on sell, 1=Products on sell
|
||||
*/
|
||||
function select_produits_do($selected='',$htmlname='productid',$filtertype='',$limit=20,$price_level=0,$ajaxkeysearch='',$status=1)
|
||||
{
|
||||
global $langs,$conf,$user;
|
||||
|
||||
@ -999,7 +999,7 @@ class Form
|
||||
{
|
||||
$sql.= ' AND IFNULL(c.visible,1)=1';
|
||||
}
|
||||
if ($filtretype && $filtretype != '') $sql.=" AND p.fk_product_type=".$filtretype;
|
||||
if (strval($filtertype) != '') $sql.=" AND p.fk_product_type=".$filtertype;
|
||||
if ($ajaxkeysearch && $ajaxkeysearch != '') $sql.=" AND (p.ref like '%".$ajaxkeysearch."%' OR p.label like '%".$ajaxkeysearch."%')";
|
||||
$sql.= " ORDER BY p.nbvente DESC";
|
||||
if ($limit) $sql.= " LIMIT $limit";
|
||||
@ -1016,7 +1016,7 @@ class Form
|
||||
$sqld.= " WHERE d.fk_product=p.rowid AND p.envente=1 AND d.lang='". $langs->getDefaultLang() ."'";
|
||||
$sqld.= " ORDER BY p.nbvente DESC";
|
||||
|
||||
dolibarr_syslog("Form::select_departement sql=".$sql, LOG_DEBUG);
|
||||
dolibarr_syslog("Form::select_produits_do sql=".$sql, LOG_DEBUG);
|
||||
$resultd = $this->db->query($sqld);
|
||||
if ( $resultd ) $objtp = $this->db->fetch_object($resultd);
|
||||
}
|
||||
@ -1127,37 +1127,37 @@ class Form
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Retourne la liste des produits fournisseurs en Ajax si ajax activé ou renvoie à select_produits_fournisseurs_do
|
||||
\param socid Id third party
|
||||
\param selected Produit pré-sélectionné
|
||||
\param htmlname Nom de la zone select
|
||||
\param filtretype Filter on product type (1=customer, 2=supplier)
|
||||
\param filtre Pour filtre sql
|
||||
*/
|
||||
function select_produits_fournisseurs($socid,$selected='',$htmlname='productid',$filtretype=2,$filtre)
|
||||
* \brief Retourne la liste des produits fournisseurs en Ajax si ajax activé ou renvoie à select_produits_fournisseurs_do
|
||||
* \param socid Id third party
|
||||
* \param selected Produit pré-sélectionné
|
||||
* \param htmlname Nom de la zone select
|
||||
* \param filtertype Filter on product type (''=nofilter, 0=product, 1=service)
|
||||
* \param filtre Pour filtre sql
|
||||
*/
|
||||
function select_produits_fournisseurs($socid,$selected='',$htmlname='productid',$filtertype='',$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','&socid='.$socid.'&type='.$filtretype,'working');
|
||||
print ajax_updater($htmlname,'keysearch','/product/ajaxproducts.php','&socid='.$socid.'&type='.$filtertype.'&mode=2','working');
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->select_produits_fournisseurs_do($socid,$selected,$htmlname,$filtretype,$filtre,'');
|
||||
$this->select_produits_fournisseurs_do($socid,$selected,$htmlname,$filtertype,$filtre,'');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Retourne la liste des produits de fournisseurs
|
||||
\param socid Id société fournisseur (0 pour aucun filtre)
|
||||
\param selected Produit pré-sélectionné
|
||||
\param htmlname Nom de la zone select
|
||||
\param filtretype Pour filtre sur type de produit
|
||||
\param filtre Pour filtre sql
|
||||
\param ajaxkeysearch Filtre des produits si ajax est utilisé
|
||||
*/
|
||||
function select_produits_fournisseurs_do($socid,$selected='',$htmlname='productid',$filtretype='',$filtre='',$ajaxkeysearch='')
|
||||
* \brief Retourne la liste des produits de fournisseurs
|
||||
* \param socid Id société fournisseur (0 pour aucun filtre)
|
||||
* \param selected Produit pré-sélectionné
|
||||
* \param htmlname Nom de la zone select
|
||||
* \param filtertype Filter on product type (''=nofilter, 0=product, 1=service)
|
||||
* \param filtre Pour filtre sql
|
||||
* \param ajaxkeysearch Filtre des produits si ajax est utilisé
|
||||
*/
|
||||
function select_produits_fournisseurs_do($socid,$selected='',$htmlname='productid',$filtertype='',$filtre='',$ajaxkeysearch='')
|
||||
{
|
||||
global $langs,$conf;
|
||||
|
||||
@ -1173,7 +1173,7 @@ class Form
|
||||
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON pf.rowid = pfp.fk_product_fournisseur";
|
||||
$sql.= " WHERE p.envente = 1";
|
||||
if ($socid) $sql.= " AND pf.fk_soc = ".$socid;
|
||||
if (! empty($filtretype)) $sql.=" AND p.fk_product_type=".$filtretype;
|
||||
if (strval($filtertype) != '') $sql.=" AND p.fk_product_type=".$filtertype;
|
||||
if (! empty($filtre)) $sql.=" ".$filtre;
|
||||
if ($ajaxkeysearch && $ajaxkeysearch != '') $sql.=" AND (pf.ref_fourn like '%".$ajaxkeysearch."%' OR p.label like '%".$ajaxkeysearch."%')";
|
||||
$sql.= " ORDER BY pf.ref_fourn DESC";
|
||||
|
||||
@ -40,13 +40,13 @@ if (! empty($_GET['keysearch']))
|
||||
if (isset($_GET['status'])) $status=$_GET['status'];
|
||||
|
||||
$form = new Form($db);
|
||||
if (empty($_GET['type']) || $_GET['type'] == 1)
|
||||
if (empty($_GET['mode']) || $_GET['mode'] == 1)
|
||||
{
|
||||
$form->select_produits_do("",$_GET["htmlname"],"","",$_GET["price_level"],$_GET["keysearch"],$status);
|
||||
$form->select_produits_do("",$_GET["htmlname"],$_GET["type"],"",$_GET["price_level"],$_GET["keysearch"],$status);
|
||||
}
|
||||
if ($_GET['type'] == 2)
|
||||
if ($_GET['mode'] == 2)
|
||||
{
|
||||
$form->select_produits_fournisseurs_do($_GET["socid"],"",$_GET["htmlname"],"","",$_GET["keysearch"]);
|
||||
$form->select_produits_fournisseurs_do($_GET["socid"],"",$_GET["htmlname"],$_GET["type"],"",$_GET["keysearch"]);
|
||||
}
|
||||
}
|
||||
else if (! empty($_GET['markup']))
|
||||
|
||||
Loading…
Reference in New Issue
Block a user