Fix: Regression, l'ajout d'un produit prédéfini de fournisseur sur une facture fournisseur plantait
This commit is contained in:
parent
33ee08034e
commit
76109b21c4
@ -250,18 +250,18 @@ if ($_GET['action'] == 'add_ligne')
|
|||||||
{
|
{
|
||||||
$facfou = new FactureFournisseur($db, '', $_GET['facid']);
|
$facfou = new FactureFournisseur($db, '', $_GET['facid']);
|
||||||
|
|
||||||
if ($_POST['idprod'])
|
if ($_POST['prodfournpriceid'])
|
||||||
{
|
{
|
||||||
$nv_prod = new Product($db);
|
$nv_prod = new Product($db);
|
||||||
$nv_prod->fetch($_POST['idprod']);
|
$idprod=$nv_prod->get_buyprice($_POST['prodfournpriceid'], $_POST['qty']);
|
||||||
|
if ($idprod > 0)
|
||||||
|
{
|
||||||
|
$result=$nv_prod->fetch($idprod);
|
||||||
|
|
||||||
// cas spécial pour lequel on a les meme référence que le fournisseur
|
// cas spécial pour lequel on a les meme référence que le fournisseur
|
||||||
// $label = '['.$nv_prod->ref.'] - '. $nv_prod->libelle;
|
// $label = '['.$nv_prod->ref.'] - '. $nv_prod->libelle;
|
||||||
$label = $nv_prod->libelle;
|
$label = $nv_prod->libelle;
|
||||||
|
|
||||||
$result=$nv_prod->get_buyprice($_POST['socid'], $_POST['qty']);
|
|
||||||
if ($result > 0)
|
|
||||||
{
|
|
||||||
$societe='';
|
$societe='';
|
||||||
if ($_POST['socid'])
|
if ($_POST['socid'])
|
||||||
{
|
{
|
||||||
@ -271,9 +271,9 @@ if ($_GET['action'] == 'add_ligne')
|
|||||||
|
|
||||||
$tvatx=get_default_tva($societe,$mysoc,$nv_prod->tva_tx);
|
$tvatx=get_default_tva($societe,$mysoc,$nv_prod->tva_tx);
|
||||||
|
|
||||||
$facfou->addline($label, $nv_prod->fourn_pu, $tvatx, $_POST['qty'], $_POST['idprod']);
|
$result=$facfou->addline($label, $nv_prod->fourn_pu, $tvatx, $_POST['qty'], $idprod);
|
||||||
}
|
}
|
||||||
if ($result == -1)
|
if ($idprod == -1)
|
||||||
{
|
{
|
||||||
// Quantité insuffisante
|
// Quantité insuffisante
|
||||||
$mesg='<div class="error">'.$langs->trans("ErrorQtyTooLowForThisSupplier").'</div>';
|
$mesg='<div class="error">'.$langs->trans("ErrorQtyTooLowForThisSupplier").'</div>';
|
||||||
@ -817,7 +817,7 @@ else
|
|||||||
$var=! $var;
|
$var=! $var;
|
||||||
print '<tr '.$bc[$var].'>';
|
print '<tr '.$bc[$var].'>';
|
||||||
print '<td colspan="4">';
|
print '<td colspan="4">';
|
||||||
$html->select_produits_fournisseurs($fac->socid,'','idprod',$filtre);
|
$html->select_produits_fournisseurs($fac->socid,'','prodfournpriceid',$filtre);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td align="right"><input type="text" name="qty" value="1" size="1"></td>';
|
print '<td align="right"><input type="text" name="qty" value="1" size="1"></td>';
|
||||||
print '<td> </td>';
|
print '<td> </td>';
|
||||||
|
|||||||
@ -1149,7 +1149,7 @@ class Form
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Retourne la liste des produits de fournisseurs
|
\brief Retourne la liste des produits de fournisseurs
|
||||||
\param socid Id société (0 pour aucun filtre)
|
\param socid Id société fournisseur (0 pour aucun filtre)
|
||||||
\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
|
||||||
@ -1174,7 +1174,7 @@ class Form
|
|||||||
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";
|
||||||
|
|
||||||
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)
|
||||||
|
|||||||
@ -96,8 +96,6 @@ class Product
|
|||||||
|
|
||||||
//! Id du fournisseur
|
//! Id du fournisseur
|
||||||
var $product_fourn_id;
|
var $product_fourn_id;
|
||||||
//! Ref fournisseur
|
|
||||||
var $fourn_ref;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Constructeur de la classe
|
* \brief Constructeur de la classe
|
||||||
@ -661,20 +659,22 @@ class Product
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Lit le prix pratiqué par un fournisseur
|
* \brief Lit le prix pratiqué par un fournisseur
|
||||||
* \param prodfournprice Id du tarif
|
* On renseigne le couple prodfournprice/qty ou le triplet qty/product_id/fourn_ref)
|
||||||
|
* \param prodfournprice Id du tarif = rowid table product_fournisseur_price
|
||||||
* \param qty Quantité du produit
|
* \param qty Quantité du produit
|
||||||
* \return int <0 si ko, 0 si ok mais rien trouvé, 1 si ok et trouvé
|
* \return int <0 si ko, 0 si ok mais rien trouvé, id_product si ok et trouvé
|
||||||
*/
|
*/
|
||||||
function get_buyprice($prodfournprice,$qty,$product_id,$fourn_ref)
|
function get_buyprice($prodfournprice,$qty,$product_id=0,$fourn_ref=0)
|
||||||
{
|
{
|
||||||
$result = 0;
|
$result = 0;
|
||||||
$sql = "SELECT pfp.rowid, pfp.price as price, pfp.quantity as quantity, pf.ref_fourn";
|
$sql = "SELECT pfp.rowid, pfp.price as price, pfp.quantity as quantity,";
|
||||||
|
$sql.= " pf.fk_product, pf.ref_fourn";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp, ".MAIN_DB_PREFIX."product_fournisseur as pf";
|
$sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp, ".MAIN_DB_PREFIX."product_fournisseur as pf";
|
||||||
$sql.= " WHERE pf.rowid = pfp.fk_product_fournisseur";
|
$sql.= " WHERE pf.rowid = pfp.fk_product_fournisseur";
|
||||||
$sql.= " AND pfp.rowid = ".$prodfournprice;
|
$sql.= " AND pfp.rowid = ".$prodfournprice;
|
||||||
$sql.= " AND pfp.quantity <= ".$qty;
|
$sql.= " AND pfp.quantity <= ".$qty;
|
||||||
|
|
||||||
dolibarr_syslog("Product::get_buyprice $prodfournprice,$qty sql=$sql");
|
dolibarr_syslog("Product::get_buyprice $prodfournprice,$qty sql=".$sql);
|
||||||
|
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
@ -685,12 +685,14 @@ class Product
|
|||||||
$this->buyprice = $obj->price; // \deprecated
|
$this->buyprice = $obj->price; // \deprecated
|
||||||
$this->fourn_pu = $obj->price / $obj->quantity; // Prix unitaire du produit pour le fournisseur $fourn_id
|
$this->fourn_pu = $obj->price / $obj->quantity; // Prix unitaire du produit pour le fournisseur $fourn_id
|
||||||
$this->ref_fourn = $obj->ref_fourn;
|
$this->ref_fourn = $obj->ref_fourn;
|
||||||
return 1;
|
$result=$obj->fk_product;
|
||||||
|
return $result;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// On refait le meme select sur la ref et l'id du produit
|
// On refait le meme select sur la ref et l'id du produit
|
||||||
$sql = "SELECT pfp.price as price, pfp.quantity as quantity, pf.fk_soc, pf.ref_fourn";
|
$sql = "SELECT pfp.price as price, pfp.quantity as quantity, pf.fk_soc";
|
||||||
|
$sql.= " pf.fk_product, pf.ref_fourn";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp, ".MAIN_DB_PREFIX."product_fournisseur as pf";
|
$sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp, ".MAIN_DB_PREFIX."product_fournisseur as pf";
|
||||||
$sql.= " WHERE pf.rowid = pfp.fk_product_fournisseur";
|
$sql.= " WHERE pf.rowid = pfp.fk_product_fournisseur";
|
||||||
$sql.= " AND pf.ref_fourn = '".$fourn_ref."'";
|
$sql.= " AND pf.ref_fourn = '".$fourn_ref."'";
|
||||||
@ -708,7 +710,8 @@ class Product
|
|||||||
$this->buyprice = $obj->price; // \deprecated
|
$this->buyprice = $obj->price; // \deprecated
|
||||||
$this->fourn_pu = $obj->price / $obj->quantity; // Prix unitaire du produit pour le fournisseur $fourn_id
|
$this->fourn_pu = $obj->price / $obj->quantity; // Prix unitaire du produit pour le fournisseur $fourn_id
|
||||||
$this->ref_fourn = $obj->ref_fourn;
|
$this->ref_fourn = $obj->ref_fourn;
|
||||||
return 1;
|
$result=$obj->fk_product;
|
||||||
|
return $result;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user