diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index bda5bddf78c..dc96679132e 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -1207,16 +1207,14 @@ class Form $langs->load('stocks'); $sql = "SELECT p.rowid, p.label, p.ref, p.price, p.duration,"; - $sql.= " pf.ref_fourn,"; - $sql.= " pfp.rowid as idprodfournprice, pfp.price as fprice, pfp.quantity, pfp.unitprice,"; + $sql.= " pfp.ref_fourn, pfp.rowid as idprodfournprice, pfp.price as fprice, pfp.quantity, pfp.unitprice,"; $sql.= " s.nom"; $sql.= " FROM ".MAIN_DB_PREFIX."product as p"; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur as pf ON p.rowid = pf.fk_product"; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON pf.fk_soc = s.rowid"; - $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 p.rowid = pfp.fk_product"; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON pfp.fk_soc = s.rowid"; $sql.= " WHERE p.entity = ".$conf->entity; $sql.= " AND p.tobuy = 1"; - if ($socid) $sql.= " AND pf.fk_soc = ".$socid; + if ($socid) $sql.= " AND pfp.fk_soc = ".$socid; if (strval($filtertype) != '') $sql.=" AND p.fk_product_type=".$filtertype; if (! empty($filtre)) $sql.=" ".$filtre; // Add criteria on ref/label @@ -1224,14 +1222,14 @@ class Form { if (! empty($conf->global->PRODUCT_DONOTSEARCH_ANYWHERE)) { - $sql.=" AND (pf.ref_fourn LIKE '".$filterkey."%' OR p.ref LIKE '".$filterkey."%' OR p.label LIKE '".$filterkey."%')"; + $sql.=" AND (pfp.ref_fourn LIKE '".$filterkey."%' OR p.ref LIKE '".$filterkey."%' OR p.label LIKE '".$filterkey."%')"; } else { - $sql.=" AND (pf.ref_fourn LIKE '%".$filterkey."%' OR p.ref LIKE '%".$filterkey."%' OR p.label LIKE '%".$filterkey."%')"; + $sql.=" AND (pfp.ref_fourn LIKE '%".$filterkey."%' OR p.ref LIKE '%".$filterkey."%' OR p.label LIKE '%".$filterkey."%')"; } } - $sql.= " ORDER BY pf.ref_fourn DESC"; + $sql.= " ORDER BY pfp.ref_fourn DESC"; // Build output string $outselect=''; @@ -1354,17 +1352,16 @@ class Form $langs->load('stocks'); $sql = "SELECT p.rowid, p.label, p.ref, p.price, p.duration,"; - $sql.= " pf.ref_fourn,"; - $sql.= " pfp.rowid as idprodfournprice, pfp.price as fprice, pfp.quantity, pfp.unitprice,"; + $sql.= " pfp.ref_fourn, pfp.rowid as idprodfournprice, pfp.price as fprice, pfp.quantity, pfp.unitprice,"; $sql.= " s.nom"; $sql.= " FROM ".MAIN_DB_PREFIX."product as p"; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur as pf ON p.rowid = pf.fk_product"; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = pf.fk_soc"; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON pf.rowid = pfp.fk_product_fournisseur"; - $sql.= " WHERE p.tobuy = 1"; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON p.rowid = pfp.fk_product"; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON pfp.fk_soc = s.rowid"; + $sql.= " WHERE p.entity = ".$conf->entity; + $sql.= " AND p.tobuy = 1"; $sql.= " AND s.fournisseur = 1"; $sql.= " AND p.rowid = ".$productid; - $sql.= " ORDER BY s.nom, pf.ref_fourn DESC"; + $sql.= " ORDER BY s.nom, pfp.ref_fourn DESC"; dol_syslog("Form::select_product_fourn_price sql=".$sql,LOG_DEBUG); $result=$this->db->query($sql); diff --git a/htdocs/fourn/class/fournisseur.class.php b/htdocs/fourn/class/fournisseur.class.php index 05f29d6956a..8d94a59f270 100644 --- a/htdocs/fourn/class/fournisseur.class.php +++ b/htdocs/fourn/class/fournisseur.class.php @@ -78,12 +78,14 @@ class Fournisseur extends Societe return $num; } + /** + * FIXME This returns number of prices, not number of products. Is it what we want ? + */ function NbProduct() { - $sql = "SELECT count(pf.rowid)"; - $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur as pf,"; - $sql.= " ".MAIN_DB_PREFIX."product_fournisseur_price as ppf"; - $sql .= " WHERE fk_soc = ".$this->id." AND ppf.fk_product_fournisseur = pf.rowid"; + $sql = "SELECT count(pfp.rowid)"; + $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp"; + $sql .= " WHERE pfp.fk_soc = ".$this->id; $resql = $this->db->query($sql); if ( $resql ) diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 7ee68dd62e2..f92cd5b2f00 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -1822,7 +1822,7 @@ class CommandeFournisseurLigne extends OrderLine var $libelle; // Label produit var $product_desc; // Description produit - // From llx_product_fournisseur + // From llx_product_fournisseur_price var $ref_fourn; // Ref supplier diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 0c8e7e8324b..f407958435a 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -384,10 +384,8 @@ class FactureFournisseur extends Facture $sql.= ', f.localtax1_tx, f.localtax2_tx, f.total_localtax1, f.total_localtax2 '; $sql.= ', f.total_ht, f.tva as total_tva, f.total_ttc, f.fk_product, f.product_type'; $sql.= ', p.rowid as product_id, p.ref as product_ref, p.label as label, p.description as product_desc'; - //$sql.= ', pf.ref_fourn'; $sql.= ' FROM '.MAIN_DB_PREFIX.'facture_fourn_det as f'; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON f.fk_product = p.rowid'; - //$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product_fournisseur as pf ON f.fk_product = pf.fk_product'; $sql.= ' WHERE fk_facture_fourn='.$this->id; dol_syslog("FactureFournisseur::fetch_lines sql=".$sql, LOG_DEBUG); diff --git a/htdocs/fourn/class/fournisseur.product.class.php b/htdocs/fourn/class/fournisseur.product.class.php index bf522ab6680..7582969cd99 100644 --- a/htdocs/fourn/class/fournisseur.product.class.php +++ b/htdocs/fourn/class/fournisseur.product.class.php @@ -72,87 +72,31 @@ class ProductFournisseur extends Product $this->db->begin(); - // Search all links - $sql = "SELECT rowid"; - $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur"; + $sql = "DELETE FROM ".MAIN_DB_PREFIX."product_fournisseur_price"; $sql.= " WHERE fk_product = ".$this->id." AND fk_soc = ".$id_fourn; dol_syslog(get_class($this)."::remove_fournisseur sql=".$sql); - $resql=$this->db->query($sql); - if ($resql) + $resql2=$this->db->query($sql); + if (! $resql2) { - // For each link, delete price line - while ($obj=$this->db->fetch_object($resql)) - { - $sql = "DELETE FROM ".MAIN_DB_PREFIX."product_fournisseur_price"; - $sql.= " WHERE fk_product_fournisseur = ".$obj->rowid; - - dol_syslog(get_class($this)."::remove_fournisseur sql=".$sql); - $resql2=$this->db->query($sql); - if (! $resql2) - { - $this->error=$this->db->lasterror(); - dol_syslog(get_class($this)."::remove_fournisseur ".$this->error, LOG_ERR); - $ok=0; - } - } - - // Now delete all link supplier-product (they have no more childs) - $sql = "DELETE FROM ".MAIN_DB_PREFIX."product_fournisseur"; - $sql.= " WHERE fk_product = ".$this->id." AND fk_soc = ".$id_fourn; - - dol_syslog(get_class($this)."::remove_fournisseur sql=".$sql); - $resql=$this->db->query($sql); - if (! $resql) - { - $this->error=$this->db->lasterror(); - dol_syslog(get_class($this)."::remove_fournisseur ".$this->error, LOG_ERR); - $ok=0; - } - - if ($ok) - { - $this->db->commit(); - return 1; - } - else - { - $this->db->rollback(); - return -1; - } + $this->error=$this->db->lasterror(); + dol_syslog(get_class($this)."::remove_fournisseur ".$this->error, LOG_ERR); + $ok=0; } - else - { - $this->db->rollback(); - dol_print_error($this->db); - return -2; - } - } - - - /** - * Remove supplier product - * - * @param rowid Product id - * @return int < 0 if error, > 0 if ok - */ - function remove_product_fournisseur($rowid) - { - $sql = "DELETE FROM ".MAIN_DB_PREFIX."product_fournisseur"; - $sql.= " WHERE rowid = ".$rowid; - - dol_syslog(get_class($this)."::remove_product_fournisseur sql=".$sql); - $resql = $this->db->query($sql); - if ($resql) + + if ($ok) { + $this->db->commit(); return 1; } else { + $this->db->rollback(); return -1; } } + /** * Remove a price for a couple supplier-product * @@ -172,54 +116,8 @@ class ProductFournisseur extends Product $resql = $this->db->query($sql); if ($resql) { - // Remove all entries with no childs - $sql = "SELECT pf.rowid"; - $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur as pf"; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON pfp.fk_product_fournisseur = pf.rowid"; - $sql.= " WHERE pfp.rowid IS NULL"; - $sql.= " AND pf.entity = ".$conf->entity; - - dol_syslog(get_class($this)."::remove_product_fournisseur_price sql=".$sql); - $resql = $this->db->query($sql); - if ($resql) - { - $ok=1; - - while ($obj=$this->db->fetch_object($resql)) - { - $rowidpf=$obj->rowid; - - $sql = "DELETE FROM ".MAIN_DB_PREFIX."product_fournisseur"; - $sql.= " WHERE rowid = ".$rowidpf; - - dol_syslog(get_class($this)."::remove_product_fournisseur_price sql=".$sql); - $resql2 = $this->db->query($sql); - if (! $resql2) - { - $this->error=$this->db->lasterror(); - dol_syslog(get_class($this)."::remove_product_fournisseur_price ".$this->error,LOG_ERR); - $ok=0; - } - } - - if ($ok) - { - $this->db->commit(); - return 1; - } - else - { - $this->db->rollback(); - return -3; - } - } - else - { - $this->error=$this->db->lasterror(); - dol_syslog(get_class($this)."::remove_product_fournisseur_price ".$this->error,LOG_ERR); - $this->db->rollback(); - return -2; - } + $this->db->commit(); + return 1; } else { @@ -234,16 +132,18 @@ class ProductFournisseur extends Product /** * Modify the purchase price for a supplier * - * @param qty Min quantity for which price is valid - * @param buyprice Purchase price for the quantity min - * @param user Object user user made changes - * @param price_base_type HT or TTC - * @param fourn Supplier - * @param availability Product availability + * @param int $qty Min quantity for which price is valid + * @param float $buyprice Purchase price for the quantity min + * @param User $user Object user user made changes + * @param string $price_base_type HT or TTC + * @param Societe $fourn Supplier + * @param int $availability Product availability + * @param string $ref_fourn Supplier ref + * @return int >0 if KO, >0 if OK */ - function update_buyprice($qty, $buyprice, $user, $price_base_type='HT', $fourn, $availability) + function update_buyprice($qty, $buyprice, $user, $price_base_type, $fourn, $availability, $ref_fourn) { - global $mysoc; + global $conf,$mysoc; // Clean parameter $buyprice=price2num($buyprice); @@ -259,11 +159,6 @@ class ProductFournisseur extends Product { $sql.= " WHERE rowid = ".$this->product_fourn_price_id; } - else - { - $sql.= " WHERE fk_product_fournisseur = ".$this->product_fourn_id; - $sql.= " AND quantity = ".$qty; - } $resql=$this->db->query($sql); if ($resql) @@ -279,14 +174,17 @@ class ProductFournisseur extends Product // Ajoute prix courant du fournisseur pour cette quantite $sql = "INSERT INTO ".MAIN_DB_PREFIX."product_fournisseur_price("; - $sql.= "datec, fk_product_fournisseur, fk_user, price, quantity, unitprice, fk_availability)"; + $sql.= "datec, fk_product, fk_soc, ref_fourn, fk_user, price, quantity, unitprice, fk_availability, entity)"; $sql.= " values('".$this->db->idate($now)."',"; - $sql.= " ".$this->product_fourn_id.","; + $sql.= " ".$this->id.","; + $sql.= " ".$fourn->id.","; + $sql.= " '".$this->db->escape($ref_fourn)."',"; $sql.= " ".$user->id.","; $sql.= " ".price2num($buyprice).","; $sql.= " ".$qty.","; $sql.= " ".$unitBuyPrice.","; - $sql.= " ".$availability; + $sql.= " ".$availability.","; + $sql.= $conf->entity; $sql.=")"; dol_syslog(get_class($this)."::update_buyprice sql=".$sql); @@ -295,7 +193,7 @@ class ProductFournisseur extends Product $error++; } - if (! $error) + /*if (! $error) { // Ajoute modif dans table log $sql = "INSERT INTO ".MAIN_DB_PREFIX."product_fournisseur_price_log("; @@ -313,6 +211,7 @@ class ProductFournisseur extends Product $error++; } } + */ if (! $error) { @@ -335,44 +234,6 @@ class ProductFournisseur extends Product } - /** - * Changes the purchase price for a supplier of the product in the reference supplier - * - * @param id_fourn Supplier ID - * @param product_fourn_ref Supplier ref product - * @param qty Amount for which the price is valid - * @param buyprice Purchase price for the quantity - * @param user Object user user made changes - * @return int <0 if KO, >0 if OK - */ - function UpdateBuyPriceByFournRef($id_fourn, $product_fourn_ref, $qty, $buyprice, $user, $price_base_type='HT') - { - global $conf; - - $result=0; - - // Recherche id produit pour cette ref et fournisseur - $sql = "SELECT fk_product"; - $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur"; - $sql.= " WHERE fk_soc = '".$id_fourn."'"; - $sql.= " AND ref_fourn = '".$product_fourn_ref."'"; - $sql.= " AND entity = ".$conf->entity; - - $resql=$this->db->query($sql); - if ($resql) - { - if ($obj = $this->db->fetch_object($resql)) - { - // Met a jour prix pour la qte - $this->id = $obj->fk_product; - $result = $this->update_buyprice($id_fourn, $qty, $buyprice, $user, $price_base_type); - } - } - - return $result; - } - - /** * Load information about a provider * @@ -387,7 +248,7 @@ class ProductFournisseur extends Product if (empty($fournid)) return -1; $sql = "SELECT rowid, ref_fourn"; - $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur "; + $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price"; $sql.= " WHERE fk_product = ".$this->id; $sql.= " AND fk_soc = ".$fournid; $sql.= " AND entity = ".$conf->entity; @@ -398,7 +259,7 @@ class ProductFournisseur extends Product { $result = $this->db->fetch_array($result); $this->ref_fourn = $result["ref_fourn"]; - $this->product_fourn_id = $result["rowid"]; + $this->product_fourn_price_id = $result["rowid"]; return 1; } else @@ -417,12 +278,10 @@ class ProductFournisseur extends Product */ function fetch_product_fournisseur_price($rowid) { - $sql = "SELECT pfp.rowid, pfp.price, pfp.quantity, pfp.unitprice, pfp.fk_availability"; - $sql.= ", pf.rowid as product_fourn_id, pf.fk_soc, pf.ref_fourn, pf.fk_product"; + $sql = "SELECT pfp.rowid, pfp.price, pfp.quantity, pfp.unitprice, pfp.fk_availability,"; + $sql.= " pfp.fk_soc, pfp.ref_fourn, pfp.fk_product"; $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp"; - $sql.= ", ".MAIN_DB_PREFIX."product_fournisseur as pf"; $sql.= " WHERE pfp.rowid = ".$rowid; - $sql.= " AND pf.rowid = pfp.fk_product_fournisseur"; dol_syslog(get_class($this)."::fetch_product_fournisseur_price sql=".$sql, LOG_DEBUG); $resql = $this->db->query($sql); @@ -432,7 +291,6 @@ class ProductFournisseur extends Product if ($obj) { $this->product_fourn_price_id = $rowid; - $this->product_fourn_id = $obj->product_fourn_id; $this->fourn_ref = $obj->ref_fourn; $this->fourn_price = $obj->price; $this->fourn_qty = $obj->quantity; @@ -462,26 +320,24 @@ class ProductFournisseur extends Product * @param int $rowid id du produit * @return array Array of ProductFournisseur */ - function fetch_product_fournisseur($prodid) + function list_product_fournisseur_price($prodid) { global $conf; // Suppliers list $sql = "SELECT s.nom as supplier_name, "; $sql.= " s.rowid as fourn_id,"; - $sql.= " pf.ref_fourn,"; + $sql.= " pfp.ref_fourn,"; $sql.= " pfp.rowid as product_fourn_pri_id, "; - $sql.= " pf.rowid as product_fourn_id, "; $sql.= " pfp.price, pfp.quantity, pfp.unitprice, pfp.fk_availability"; $sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; - $sql.= " INNER JOIN ".MAIN_DB_PREFIX."product_fournisseur as pf ON pf.fk_soc = s.rowid "; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp"; - $sql.= " ON pf.rowid = pfp.fk_product_fournisseur"; + $sql.= " INNER JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp"; + $sql.= " ON pfp.fk_soc = s.rowid"; $sql.= " WHERE s.entity = ".$conf->entity; - $sql.= " AND pf.fk_product = ".$prodid; + $sql.= " AND pfp.fk_product = ".$prodid; $sql.= " ORDER BY s.nom, pfp.quantity"; - dol_syslog(get_class($this)."::fetch_product_fournisseur sql=".$sql, LOG_DEBUG); + dol_syslog(get_class($this)."::list_product_fournisseur_price sql=".$sql, LOG_DEBUG); $resql = $this->db->query($sql); @@ -526,7 +382,7 @@ class ProductFournisseur extends Product else { $this->error=$this->db->error(); - dol_syslog(get_class($this)."::fetch_product_fournisseur error=".$this->error, LOG_ERR); + dol_syslog(get_class($this)."::list_product_fournisseur_price error=".$this->error, LOG_ERR); return -1; } } @@ -551,18 +407,15 @@ class ProductFournisseur extends Product $this->fourn_name = ''; $this->id = ''; - $sql = "SELECT s.nom as supplier_name, "; + $sql = "SELECT s.nom as supplier_name,"; $sql.= " s.rowid as fourn_id,"; - $sql.= " pf.ref_fourn,"; - $sql.= " pfp.rowid as product_fourn_pri_id, "; - $sql.= " pf.rowid as product_fourn_id, "; + $sql.= " pfp.ref_fourn,"; + $sql.= " pfp.rowid as product_fourn_price_id,"; $sql.= " pfp.price, pfp.quantity, pfp.unitprice"; - $sql.= " FROM (".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."product_fournisseur as pf)"; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp"; - $sql.= " ON pf.rowid = pfp.fk_product_fournisseur"; + $sql.= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."product_fournisseur_price as pfp"; $sql.= " WHERE s.entity = ".$conf->entity; - $sql.= " AND pf.fk_product = ".$prodid; - $sql.= " AND pf.fk_soc = s.rowid"; + $sql.= " AND pfp.fk_product = ".$prodid; + $sql.= " AND pfp.fk_soc = s.rowid"; $sql.= " ORDER BY pfp.unitprice"; $sql.= $this->db->plimit(1); @@ -572,8 +425,7 @@ class ProductFournisseur extends Product if ($resql) { $record = $this->db->fetch_array($resql); - $this->product_fourn_price_id = $record["product_fourn_pri_id"]; - $this->product_fourn_id = $record["product_fourn_id"]; + $this->product_fourn_price_id = $record["product_fourn_price_id"]; $this->fourn_ref = $record["ref_fourn"]; $this->fourn_price = $record["price"]; $this->fourn_qty = $record["quantity"]; diff --git a/htdocs/fourn/facture/fiche.php b/htdocs/fourn/facture/fiche.php index 99688ccb13e..54bfe5806a3 100644 --- a/htdocs/fourn/facture/fiche.php +++ b/htdocs/fourn/facture/fiche.php @@ -456,7 +456,9 @@ if ($action == 'addline') if ($_POST['idprodfournprice']) // > 0 or -1 { + $product=new Product($db); $idprod=$product->get_buyprice($_POST['idprodfournprice'], $_POST['qty']); + if ($idprod > 0) { $result=$product->fetch($idprod); @@ -465,8 +467,6 @@ if ($action == 'addline') // $label = '['.$product->ref.'] - '. $product->libelle; $label = $product->libelle; - - $tvatx=get_default_tva($societe,$mysoc,$product->id); $localtax1tx= get_localtax($tvatx, 1, $societe); diff --git a/htdocs/fourn/product/liste.php b/htdocs/fourn/product/liste.php index aa9da42af53..d8ffeaf3f14 100644 --- a/htdocs/fourn/product/liste.php +++ b/htdocs/fourn/product/liste.php @@ -88,17 +88,15 @@ if ($fourn_id) } $sql = "SELECT p.rowid, p.label, p.ref, p.fk_product_type,"; -$sql .= " pf.fk_soc, pf.ref_fourn,"; -$sql .= " ppf.price as price, ppf.quantity as qty, ppf.unitprice,"; +$sql .= " ppf.fk_soc, ppf.ref_fourn, ppf.price as price, ppf.quantity as qty, ppf.unitprice,"; $sql .= " s.rowid as socid, s.nom"; $sql .= " FROM ".MAIN_DB_PREFIX."product as p"; if ($catid) { $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."categorie_product as cp ON cp.fk_product = p.rowid"; } -$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur as pf ON p.rowid = pf.fk_product"; -$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = pf.fk_soc"; -$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as ppf ON ppf.fk_product_fournisseur = pf.rowid"; +$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as ppf ON p.rowid = ppf.fk_product"; +$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON ppf.fk_soc = s.rowid"; if ($_POST["mode"] == 'search') { @@ -118,7 +116,7 @@ else } if ($sRefSupplier) { - $sql .= " AND pf.ref_fourn like '%".$sRefSupplier."%'"; + $sql .= " AND ppf.ref_fourn like '%".$sRefSupplier."%'"; } if ($snom) { @@ -128,11 +126,10 @@ else { $sql .= " AND cp.fk_categorie = ".$catid; } - } if ($fourn_id > 0) { - $sql .= " AND p.rowid = pf.fk_product AND pf.fk_soc = ".$fourn_id; + $sql .= " AND ppf.fk_soc = ".$fourn_id; } $sql .= " ORDER BY ".$sortfield." ".$sortorder; $sql .= $db->plimit($limit + 1 ,$offset); diff --git a/htdocs/install/mysql/migration/3.1.0-3.2.0.sql b/htdocs/install/mysql/migration/3.1.0-3.2.0.sql index 7b42303d9ba..a60961dee63 100755 --- a/htdocs/install/mysql/migration/3.1.0-3.2.0.sql +++ b/htdocs/install/mysql/migration/3.1.0-3.2.0.sql @@ -48,3 +48,19 @@ INSERT INTO llx_c_paper_format (rowid, code, label, width, height, unit, active) INSERT INTO llx_c_paper_format (rowid, code, label, width, height, unit, active) VALUES (220, 'CAP5', 'Format Canadian P5', '140', '215', 'mm', 1); INSERT INTO llx_c_paper_format (rowid, code, label, width, height, unit, active) VALUES (225, 'CAP6', 'Format Canadian P6', '107', '140', 'mm', 1); + + +ALTER TABLE llx_product_fournisseur_price ADD COLUMN fk_product integer after tms; +ALTER TABLE llx_product_fournisseur_price ADD COLUMN fk_soc integer after fk_product; +ALTER TABLE llx_product_fournisseur_price ADD COLUMN ref_fourn varchar(30) after fk_soc; +ALTER TABLE llx_product_fournisseur_price ADD COLUMN entity integer DEFAULT 1 NOT NULL; + +UPDATE llx_product_fournisseur_price as a, llx_product_fournisseur as b SET a.fk_product = b.fk_product, a.fk_soc = b.fk_soc, a.ref_fourn = b.ref_fourn, a.entity = b.entity WHERE a.fk_product_fournisseur = b.rowid AND (a.fk_product IS NULL OR a.fk_soc IS NULL OR a.fk_product = 0 OR a.fk_soc = 0); + +ALTER TABLE llx_product_fournisseur_price ADD UNIQUE INDEX uk_product_fournisseur_price_ref (ref_fourn, fk_soc, entity); +ALTER TABLE llx_product_fournisseur_price ADD INDEX idx_product_fourn_price_fk_product (fk_product, entity); +ALTER TABLE llx_product_fournisseur_price ADD INDEX idx_product_fourn_price_fk_soc (fk_soc, entity); +ALTER TABLE llx_product_fournisseur_price ADD CONSTRAINT fk_product_fournisseur_price_fk_product FOREIGN KEY (fk_product) REFERENCES llx_product (rowid); + +ALTER TABLE llx_product_fournisseur_price DROP FOREIGN KEY fk_product_fournisseur_price_fk_product_fournisseur; + diff --git a/htdocs/install/mysql/tables/llx_product_fournisseur.key.sql b/htdocs/install/mysql/tables/llx_product_fournisseur.key.sql deleted file mode 100644 index 6f1f25a8640..00000000000 --- a/htdocs/install/mysql/tables/llx_product_fournisseur.key.sql +++ /dev/null @@ -1,27 +0,0 @@ --- ============================================================================ --- Copyright (C) 2002-2004 Rodolphe Quiedeville --- Copyright (C) 2004-2011 Laurent Destailleur --- Copyright (C) 2005-2009 Regis Houssin --- --- 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 --- the Free Software Foundation; either version 2 of the License, or --- (at your option) any later version. --- --- This program is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU General Public License for more details. --- --- You should have received a copy of the GNU General Public License --- along with this program. If not, see . --- --- ============================================================================ - - -ALTER TABLE llx_product_fournisseur ADD UNIQUE INDEX uk_product_fournisseur_ref (ref_fourn, fk_soc, entity); - -ALTER TABLE llx_product_fournisseur ADD INDEX idx_product_fourn_fk_product (fk_product, entity); -ALTER TABLE llx_product_fournisseur ADD INDEX idx_product_fourn_fk_soc (fk_soc, entity); - -ALTER TABLE llx_product_fournisseur ADD CONSTRAINT fk_product_fournisseur_fk_product FOREIGN KEY (fk_product) REFERENCES llx_product (rowid); diff --git a/htdocs/install/mysql/tables/llx_product_fournisseur.sql b/htdocs/install/mysql/tables/llx_product_fournisseur.sql deleted file mode 100644 index 733ab67a082..00000000000 --- a/htdocs/install/mysql/tables/llx_product_fournisseur.sql +++ /dev/null @@ -1,39 +0,0 @@ --- ============================================================================ --- Copyright (C) 2003 Rodolphe Quiedeville --- Copyright (C) 2009 Laurent Destailleur --- Copyright (C) 2009 Regis Houssin --- --- 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 --- the Free Software Foundation; either version 2 of the License, or --- (at your option) any later version. --- --- This program is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU General Public License for more details. --- --- You should have received a copy of the GNU General Public License --- along with this program. If not, see . --- --- ============================================================================ - -create table llx_product_fournisseur -( - rowid integer AUTO_INCREMENT PRIMARY KEY, - datec datetime, - tms timestamp, - fk_product integer, - fk_soc integer, - ref_fourn varchar(30), - entity integer DEFAULT 1 NOT NULL, -- multi company id - fk_user_author integer -)ENGINE=innodb; - --- --- List of codes for the field entity --- --- 1 : first company product --- 2 : second company product --- 3 : etc... --- \ No newline at end of file diff --git a/htdocs/install/mysql/tables/llx_product_fournisseur_price.key.sql b/htdocs/install/mysql/tables/llx_product_fournisseur_price.key.sql index 67ddb3cd150..7d3dc962152 100644 --- a/htdocs/install/mysql/tables/llx_product_fournisseur_price.key.sql +++ b/htdocs/install/mysql/tables/llx_product_fournisseur_price.key.sql @@ -19,9 +19,16 @@ ALTER TABLE llx_product_fournisseur_price ADD INDEX idx_product_fournisseur_price_fk_user (fk_user); -ALTER TABLE llx_product_fournisseur_price ADD INDEX idx_product_fournisseur_price_fk_product_fournisseur (fk_product_fournisseur); +--ALTER TABLE llx_product_fournisseur_price ADD INDEX idx_product_fournisseur_price_fk_product_fournisseur (fk_product_fournisseur); ALTER TABLE llx_product_fournisseur_price ADD CONSTRAINT fk_product_fournisseur_price_fk_user FOREIGN KEY (fk_user) REFERENCES llx_user (rowid); -ALTER TABLE llx_product_fournisseur_price ADD CONSTRAINT fk_product_fournisseur_price_fk_product_fournisseur FOREIGN KEY (fk_product_fournisseur) REFERENCES llx_product_fournisseur (rowid); +--ALTER TABLE llx_product_fournisseur_price ADD CONSTRAINT fk_product_fournisseur_price_fk_product_fournisseur FOREIGN KEY (fk_product_fournisseur) REFERENCES llx_product_fournisseur (rowid); +-- Added to remove table llx_product_fournisseur +ALTER TABLE llx_product_fournisseur_price ADD UNIQUE INDEX uk_product_fournisseur_price_ref (ref_fourn, fk_soc, entity); + +ALTER TABLE llx_product_fournisseur_price ADD INDEX idx_product_fourn_price_fk_product (fk_product, entity); +ALTER TABLE llx_product_fournisseur_price ADD INDEX idx_product_fourn_price_fk_soc (fk_soc, entity); + +ALTER TABLE llx_product_fournisseur_price ADD CONSTRAINT fk_product_fournisseur_price_fk_product FOREIGN KEY (fk_product) REFERENCES llx_product (rowid); diff --git a/htdocs/install/mysql/tables/llx_product_fournisseur_price.sql b/htdocs/install/mysql/tables/llx_product_fournisseur_price.sql index 0d49d733a28..42f9f836471 100644 --- a/htdocs/install/mysql/tables/llx_product_fournisseur_price.sql +++ b/htdocs/install/mysql/tables/llx_product_fournisseur_price.sql @@ -22,11 +22,14 @@ create table llx_product_fournisseur_price rowid integer AUTO_INCREMENT PRIMARY KEY, datec datetime, tms timestamp, - fk_product_fournisseur integer NOT NULL, + fk_product_fournisseur integer NOT NULL, -- deprecated + fk_product integer, + fk_soc integer, + ref_fourn varchar(30), fk_availability integer, price double(24,8) DEFAULT 0, quantity double, unitprice double(24,8) DEFAULT 0, - fk_user integer - + fk_user integer, + entity integer DEFAULT 1 NOT NULL, -- multi company id )ENGINE=innodb; diff --git a/htdocs/product/canvas/service/actions_card_service.class.php b/htdocs/product/canvas/service/actions_card_service.class.php index 591e220c22b..984edc8002f 100755 --- a/htdocs/product/canvas/service/actions_card_service.class.php +++ b/htdocs/product/canvas/service/actions_card_service.class.php @@ -310,7 +310,7 @@ class ActionsCardService extends Product if ($_GET["fourn_id"] > 0) { $fourn_id = $_GET["fourn_id"]; - $sql.= ", ".MAIN_DB_PREFIX."product_fournisseur as pf"; + $sql.= ", ".MAIN_DB_PREFIX."product_fournisseur_price as pfp"; } $sql.= " WHERE p.entity = ".$conf->entity; if ($search_categ) $sql.= " AND p.rowid = cp.fk_product"; // Join for the needed table to filter by categ @@ -335,7 +335,7 @@ class ActionsCardService extends Product } if ($fourn_id > 0) { - $sql.= " AND p.rowid = pf.fk_product AND pf.fk_soc = ".$fourn_id; + $sql.= " AND p.rowid = pfp.fk_product AND pfp.fk_soc = ".$fourn_id; } // Insert categ filter if ($search_categ) diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index cb662f912e9..e5d0e712536 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -37,7 +37,7 @@ class Product extends CommonObject public $element='product'; public $table_element='product'; public $fk_element='fk_product'; - public $childtables=array('propaldet','commandedet','facturedet','contratdet','product_fournisseur'); + public $childtables=array('propaldet','commandedet','facturedet','contratdet','product_fournisseur_price'); protected $isnolinkedbythird = 1; // No field fk_soc protected $ismultientitymanaged = 1; // 0=No test on entity, 1=Test with field entity, 2=Test with link by societe @@ -519,11 +519,11 @@ class Product extends CommonObject $this->db->begin(); // Delete supplier prices log - if (! $error) + /*if (! $error) { $sql = 'DELETE pfpl'; - $sql.= ' FROM '.MAIN_DB_PREFIX.'product_fournisseur_price_log as pfpl, '.MAIN_DB_PREFIX.'product_fournisseur as pf'; - $sql.= ' WHERE pfpl.fk_product_fournisseur = pf.rowid'; + $sql.= ' FROM '.MAIN_DB_PREFIX.'product_fournisseur_price_log as pfpl, '.MAIN_DB_PREFIX.'product_fournisseur_price as pfp'; + $sql.= ' WHERE pfpl.fk_product_fournisseur = pfp.rowid'; $sql.= ' AND pf.fk_product = '.$id; dol_syslog(get_class($this).'::delete sql='.$sql, LOG_DEBUG); $result = $this->db->query($sql); @@ -533,15 +533,14 @@ class Product extends CommonObject $this->error = $this->db->lasterror(); dol_syslog(get_class($this).'::delete error '.$this->error, LOG_ERR); } - } + }*/ // Delete supplier prices if (! $error) { $sql = 'DELETE pfp'; - $sql.= ' FROM '.MAIN_DB_PREFIX.'product_fournisseur_price as pfp, '.MAIN_DB_PREFIX.'product_fournisseur as pf'; - $sql.= ' WHERE pfp.fk_product_fournisseur = pf.rowid'; - $sql.= ' AND pf.fk_product = '.$id; + $sql.= ' FROM '.MAIN_DB_PREFIX.'product_fournisseur_price as pfp'; + $sql.= ' WHERE pfp.fk_product = '.$id; dol_syslog(get_class($this).'::delete sql='.$sql, LOG_DEBUG); $result = $this->db->query($sql); if (! $result) @@ -819,10 +818,9 @@ class Product extends CommonObject { $result = 0; $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.= " WHERE pf.rowid = pfp.fk_product_fournisseur"; - $sql.= " AND pfp.rowid = ".$prodfournprice; + $sql.= " pfp.fk_product, pfp.ref_fourn, pfp.fk_soc"; + $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp"; + $sql.= " WHERE pfp.rowid = ".$prodfournprice; $sql.= " AND pfp.quantity <= ".$qty; dol_syslog("Product::get_buyprice sql=".$sql); @@ -841,13 +839,12 @@ class Product extends CommonObject else { // 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,"; - $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.= " WHERE pf.rowid = pfp.fk_product_fournisseur"; - $sql.= " AND pf.ref_fourn = '".$fourn_ref."'"; - $sql.= " AND pf.fk_product = ".$product_id; - $sql.= " AND quantity <= ".$qty; + $sql = "SELECT pfp.price as price, pfp.quantity as quantity, pfp.fk_soc,"; + $sql.= " pfp.fk_product, pfp.ref_fourn"; + $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp"; + $sql.= " WHERE pfp.ref_fourn = '".$fourn_ref."'"; + $sql.= " AND pfp.fk_product = ".$product_id; + $sql.= " AND pfp.quantity <= ".$qty; $sql.= " ORDER BY pfp.quantity DESC"; $sql.= " LIMIT 1"; @@ -1774,8 +1771,10 @@ class Product extends CommonObject { global $conf; + $now=dol_now(); + $sql = "SELECT rowid, fk_product"; - $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur"; + $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price"; $sql.= " WHERE fk_soc = ".$id_fourn; $sql.= " AND ref_fourn = '".$ref_fourn."'"; $sql.= " AND entity = ".$conf->entity; @@ -1789,15 +1788,15 @@ class Product extends CommonObject // The reference supplier does not exist, we create it for this product. if (! $obj) { - $sql = "INSERT INTO ".MAIN_DB_PREFIX."product_fournisseur ("; + $sql = "INSERT INTO ".MAIN_DB_PREFIX."product_fournisseur_price ("; $sql.= "datec"; $sql.= ", entity"; $sql.= ", fk_product"; $sql.= ", fk_soc"; $sql.= ", ref_fourn"; - $sql.= ", fk_user_author"; + $sql.= ", fk_user"; $sql.= ") VALUES ("; - $sql.= $this->db->idate(mktime()); + $sql.= $this->db->idate($now); $sql.= ", ".$conf->entity; $sql.= ", ".$this->id; $sql.= ", ".$id_fourn; @@ -1808,7 +1807,7 @@ class Product extends CommonObject dol_syslog("Product::add_fournisseur sql=".$sql); if ($this->db->query($sql)) { - $this->product_fourn_id = $this->db->last_insert_id(MAIN_DB_PREFIX."product_fournisseur"); + $this->product_fourn_price_id = $this->db->last_insert_id(MAIN_DB_PREFIX."product_fournisseur_price"); return 1; } else @@ -1821,15 +1820,13 @@ class Product extends CommonObject // If the supplier ref already exists for this product else if ($obj->fk_product == $this->id) { - $this->product_fourn_id = $obj->rowid; - + $this->product_fourn_price_id = $obj->rowid; return 0; } // If the supplier ref already exists but for another product else { $this->product_id_already_linked = $obj->fk_product; - return -3; } } @@ -1852,8 +1849,8 @@ class Product extends CommonObject $list = array(); - $sql = "SELECT fk_soc"; - $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur as p"; + $sql = "SELECT p.fk_soc"; + $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as p"; $sql.= " WHERE p.fk_product = ".$this->id; $sql.= " AND p.entity = ".$conf->entity; @@ -1925,16 +1922,16 @@ class Product extends CommonObject /** * Recopie les fournisseurs et prix fournisseurs d'un produit/service sur un autre * - * @param fromId Id produit source - * @param toId Id produit cible - * @return int < 0 si erreur, > 0 si ok + * @param int $fromId Id produit source + * @param int $toId Id produit cible + * @return int < 0 si erreur, > 0 si ok */ function clone_fournisseurs($fromId, $toId) { $this->db->begin(); // les fournisseurs - $sql = "INSERT ".MAIN_DB_PREFIX."product_fournisseur (" + /*$sql = "INSERT ".MAIN_DB_PREFIX."product_fournisseur (" . " datec, fk_product, fk_soc, ref_fourn, fk_user_author )" . " SELECT '".$this->db->idate(mktime())."', ".$toId.", fk_soc, ref_fourn, fk_user_author" . " FROM ".MAIN_DB_PREFIX."product_fournisseur" @@ -1944,7 +1941,7 @@ class Product extends CommonObject { $this->db->rollback(); return -1; - } + }*/ // les prix de fournisseurs. $sql = "INSERT ".MAIN_DB_PREFIX."product_fournisseur_price (" @@ -1953,13 +1950,17 @@ class Product extends CommonObject . " FROM ".MAIN_DB_PREFIX."product_fournisseur_price" . " WHERE fk_product = ".$fromId; - if ( ! $this->db->query($sql ) ) + $resql=$this->db->query($sql); + if (! $resql) { $this->db->rollback(); return -1; } - $this->db->commit(); - return 1; + else + { + $this->db->commit(); + return 1; + } } /** diff --git a/htdocs/product/fournisseurs.php b/htdocs/product/fournisseurs.php index fcc5398b196..95647c1ca4f 100644 --- a/htdocs/product/fournisseurs.php +++ b/htdocs/product/fournisseurs.php @@ -34,6 +34,8 @@ $langs->load("products"); $langs->load("suppliers"); $langs->load("bills"); +$action=GETPOST('action'); + // If socid provided by ajax company selector if (! empty($_REQUEST['search_fourn_id'])) { @@ -43,10 +45,7 @@ if (! empty($_REQUEST['search_fourn_id'])) } // Security check -if (isset($_GET["id"]) || isset($_GET["ref"])) -{ - $id = isset($_GET["id"])?$_GET["id"]:(isset($_GET["ref"])?$_GET["ref"]:''); -} +$id = GETPOST('id')?GETPOST('id'):GETPOST('ref'); $fieldid = isset($_GET["ref"])?'ref':'rowid'; if ($user->societe_id) $socid=$user->societe_id; $result=restrictedArea($user,'produit|service&fournisseur',$id,'product','','',$fieldid); @@ -75,19 +74,6 @@ if ($_GET["action"] == 'remove_pf') $_GET["action"] = ''; $mesg = '
'.$langs->trans("PriceRemoved").'.
'; } - else - { - // Deprecated. Should not occurs - if ($product->remove_fournisseur($_GET["socid"]) > 0) - { - $_GET["action"] = ''; - $mesg = '
'.$langs->trans("SupplierRemoved").'.
'; - } - else - { - $_GET["action"] = ''; - } - } } } @@ -145,7 +131,7 @@ if ($_POST["action"] == 'updateprice' && $_POST["cancel"] <> $langs->trans("Canc $supplier=new Fournisseur($db); $result=$supplier->fetch($id_fourn); - $ret=$product->update_buyprice($_POST["qty"], $_POST["price"], $user, $_POST["price_base_type"], $supplier, $_POST["oselDispo"]); + $ret=$product->update_buyprice($_POST["qty"], $_POST["price"], $user, $_POST["price_base_type"], $supplier, $_POST["oselDispo"], $ref_fourn); if ($ret < 0) { $error++; @@ -169,6 +155,7 @@ if ($_POST["action"] == 'updateprice' && $_POST["cancel"] <> $langs->trans("Canc { $db->commit(); $_POST['action']=''; + $action=''; } else { @@ -259,17 +246,22 @@ if ($_GET["id"] || $_GET["ref"]) { $langs->load("suppliers"); - if ($_GET["rowid"]) { + if ($_GET["rowid"]) + { $product->fetch_product_fournisseur_price($_GET["rowid"]); print_fiche_titre($langs->trans("ChangeSupplierPrice")); - } else { + } + else + { print_fiche_titre($langs->trans("AddSupplierPrice")); } - print ''; + print ''; print ''; print ''; + print '
'; + print ''; print ''; - print '
'.$langs->trans("Supplier").''; if ($_GET["rowid"]) { @@ -330,12 +322,13 @@ if ($_GET["id"] || $_GET["ref"]) print '
'; + print '
'; + + print '
'; print '   '; - print ''; + print '
'; print ''; - print ''; } /* ************************************************************************** */ @@ -346,14 +339,13 @@ if ($_GET["id"] || $_GET["ref"]) print "\n
\n"; - if ($_GET["action"] != 'add_price') { - + if ($_GET["action"] != 'add_price' && $action != 'updateprice') + { if ($user->rights->produit->creer || $user->rights->service->creer) { print ''; print $langs->trans("AddSupplierPrice").''; } - } print "\n
\n"; @@ -371,16 +363,15 @@ if ($_GET["id"] || $_GET["ref"]) print ''; print_liste_field_titre($langs->trans("Suppliers"),$_SERVER["PHP_SELF"],"s.nom","",$param,"",$sortfield,$sortorder); print ''.$langs->trans("SupplierRef").''; - if(!empty($conf->global->FOURN_PRODUCT_AVAILABILITY)) - print_liste_field_titre($langs->trans("Availability"),$_SERVER["PHP_SELF"],"pfp.fk_availability","",$param,"",$sortfield,$sortorder); - print_liste_field_titre($langs->trans("QtyMin"),$_SERVER["PHP_SELF"],"pfp.quantity","",$param,"",$sortfield,$sortorder); + if (!empty($conf->global->FOURN_PRODUCT_AVAILABILITY)) print_liste_field_titre($langs->trans("Availability"),$_SERVER["PHP_SELF"],"pfp.fk_availability","",$param,"",$sortfield,$sortorder); + print_liste_field_titre($langs->trans("QtyMin"),$_SERVER["PHP_SELF"],"pfp.quantity","",$param,'align="right"',$sortfield,$sortorder); print ''.$langs->trans("PriceQtyMinHT").''; print_liste_field_titre($langs->trans("UnitPriceHT"),$_SERVER["PHP_SELF"],"pfp.unitprice","",$param,'align="right"',$sortfield,$sortorder); print ''; print "\n"; $product_fourn = new ProductFournisseur($db); - $product_fourn_list = $product_fourn->fetch_product_fournisseur($product->id); + $product_fourn_list = $product_fourn->list_product_fournisseur_price($product->id); if (count($product_fourn_list)>0) { @@ -406,7 +397,7 @@ if ($_GET["id"] || $_GET["ref"]) } // Quantity - print ''; + print ''; print $productfourn->fourn_qty; print ''; diff --git a/htdocs/product/liste.php b/htdocs/product/liste.php index 5be0bee72fc..7853db14257 100644 --- a/htdocs/product/liste.php +++ b/htdocs/product/liste.php @@ -133,8 +133,8 @@ else $sql.= ') '; //if ($fourn_id > 0) // The DISTINCT is used to avoid duplicate from this link //{ - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur as pf ON p.rowid = pf.fk_product"; - $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 as pf ON p.rowid = pf.fk_product"; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON p.rowid = pfp.fk_product"; //} $sql.= ' WHERE p.entity IN (0,'.(! empty($conf->entities['product']) ? $conf->entities['product'] : $conf->entity).')'; if ($search_categ) $sql.= " AND p.rowid = cp.fk_product"; // Join for the needed table to filter by categ @@ -156,7 +156,7 @@ else if (dol_strlen($canvas) > 0) $sql.= " AND p.canvas = '".$db->escape($canvas)."'"; if ($catid) $sql.= " AND cp.fk_categorie = ".$catid; if ($search_categ) $sql.= " AND cp.fk_categorie = ".$search_categ; - if ($fourn_id > 0) $sql.= " AND pf.fk_soc = ".$fourn_id; + if ($fourn_id > 0) $sql.= " AND pfp.fk_soc = ".$fourn_id; $sql.= " GROUP BY p.rowid, p.ref, p.label, p.barcode, p.price, p.price_ttc, p.price_base_type,"; $sql.= " p.fk_product_type, p.tms,"; $sql.= " p.duration, p.tosell, p.tobuy, p.seuil_stock_alerte"; diff --git a/htdocs/product/reassort.php b/htdocs/product/reassort.php index 93b96132635..e964f9bca59 100644 --- a/htdocs/product/reassort.php +++ b/htdocs/product/reassort.php @@ -96,12 +96,6 @@ $sql.= ' SUM(s.reel) as stock_physique'; $sql.= ' FROM ('.MAIN_DB_PREFIX.'product as p'; // We'll need this table joined to the select in order to filter by categ if ($search_categ) $sql.= ", ".MAIN_DB_PREFIX."categorie_product as cp"; -// We disable this because this create duplicate lines -/*if ($_GET["fourn_id"] > 0) -{ - $fourn_id = $_GET["fourn_id"]; - $sql.= ", ".MAIN_DB_PREFIX."product_fournisseur as pf"; -}*/ $sql.= ') LEFT JOIN '.MAIN_DB_PREFIX.'product_stock as s on p.rowid = s.fk_product'; $sql.= " WHERE p.entity = ".$conf->entity; if ($search_categ) $sql.= " AND p.rowid = cp.fk_product"; // Join for the needed table to filter by categ @@ -112,9 +106,12 @@ if ($sall) // if the type is not 1, we show all products (type = 0,2,3) if (dol_strlen($type)) { - if ($type==1) { + if ($type==1) + { $sql.= " AND p.fk_product_type = '1'"; - } else { + } + else + { $sql.= " AND p.fk_product_type <> '1'"; } }