task #11240: Show parent products when product is a sub product
This commit is contained in:
parent
31bb9d02d6
commit
8442baa6f0
@ -113,7 +113,8 @@ MultiPricesNumPrices=Nº de preus
|
|||||||
MultiPriceLevelsName=Categoria de preus
|
MultiPriceLevelsName=Categoria de preus
|
||||||
AssociatedProductsAbility=Activar productes compostos
|
AssociatedProductsAbility=Activar productes compostos
|
||||||
AssociatedProducts=Productes compostos
|
AssociatedProducts=Productes compostos
|
||||||
AssociatedProductsNumber=Nº de productes compostos
|
AssociatedProductsNumber=Nº de productes que composen aquest producte
|
||||||
|
ParentProductsNumber=Nº de productes que aquest producte compon
|
||||||
EditAssociate=Compondre
|
EditAssociate=Compondre
|
||||||
Translation=Traducció
|
Translation=Traducció
|
||||||
KeywordFilter=Filtre per clau
|
KeywordFilter=Filtre per clau
|
||||||
@ -123,6 +124,7 @@ AddDel=Adjuntar/Retirar
|
|||||||
Quantity=Quantitat
|
Quantity=Quantitat
|
||||||
NoMatchFound=No s'han trobat resultats
|
NoMatchFound=No s'han trobat resultats
|
||||||
ProductAssociationList=Llistat de productes/serveis components d'aquest producte: el nombre entre parèntesis és la quantitat afectada en aquesta composició
|
ProductAssociationList=Llistat de productes/serveis components d'aquest producte: el nombre entre parèntesis és la quantitat afectada en aquesta composició
|
||||||
|
ProductParentList=Llistat de productes/serveis amb aquest producte com a component
|
||||||
ErrorAssociationIsFatherOfThis=Un dels productes seleccionats és pare del producte en curs
|
ErrorAssociationIsFatherOfThis=Un dels productes seleccionats és pare del producte en curs
|
||||||
DeleteProduct=Eliminar un producte/servei
|
DeleteProduct=Eliminar un producte/servei
|
||||||
ConfirmDeleteProduct=Esteu segur de voler eliminar aquest producte/servei?
|
ConfirmDeleteProduct=Esteu segur de voler eliminar aquest producte/servei?
|
||||||
|
|||||||
@ -114,6 +114,7 @@ MultiPriceLevelsName=Price categories
|
|||||||
AssociatedProductsAbility=Activate the sub-products
|
AssociatedProductsAbility=Activate the sub-products
|
||||||
AssociatedProducts=Sub-products
|
AssociatedProducts=Sub-products
|
||||||
AssociatedProductsNumber=Number of products composing this product
|
AssociatedProductsNumber=Number of products composing this product
|
||||||
|
ParentProductsNumber=Number of parent product
|
||||||
EditAssociate=Associate
|
EditAssociate=Associate
|
||||||
Translation=Translation
|
Translation=Translation
|
||||||
KeywordFilter=Keyword filter
|
KeywordFilter=Keyword filter
|
||||||
@ -123,6 +124,7 @@ AddDel=Add/Delete
|
|||||||
Quantity=Quantity
|
Quantity=Quantity
|
||||||
NoMatchFound=No match found
|
NoMatchFound=No match found
|
||||||
ProductAssociationList=List of related products/services: name of product/service (quantity affected)
|
ProductAssociationList=List of related products/services: name of product/service (quantity affected)
|
||||||
|
ProductParentList=List of products/services with this product as a component
|
||||||
ErrorAssociationIsFatherOfThis=One of selected product is parent with current product
|
ErrorAssociationIsFatherOfThis=One of selected product is parent with current product
|
||||||
DeleteProduct=Delete a product/service
|
DeleteProduct=Delete a product/service
|
||||||
ConfirmDeleteProduct=Are you sure you want to delete this product/service?
|
ConfirmDeleteProduct=Are you sure you want to delete this product/service?
|
||||||
|
|||||||
@ -113,7 +113,8 @@ MultiPricesNumPrices=Nº de precios
|
|||||||
MultiPriceLevelsName=Categoría de precios
|
MultiPriceLevelsName=Categoría de precios
|
||||||
AssociatedProductsAbility=Activar productos compuestos
|
AssociatedProductsAbility=Activar productos compuestos
|
||||||
AssociatedProducts=Productos compuestos
|
AssociatedProducts=Productos compuestos
|
||||||
AssociatedProductsNumber=Nº de productos compuestos
|
AssociatedProductsNumber=Nº de productos que componen este producto
|
||||||
|
ParentProductsNumber=Nº de productos que este producto compone
|
||||||
EditAssociate=Componer
|
EditAssociate=Componer
|
||||||
Translation=Traducción
|
Translation=Traducción
|
||||||
KeywordFilter=Filtro por clave
|
KeywordFilter=Filtro por clave
|
||||||
@ -123,6 +124,7 @@ AddDel=Adjuntar/Retirar
|
|||||||
Quantity=Cantidad
|
Quantity=Cantidad
|
||||||
NoMatchFound=No se han encontrado resultados
|
NoMatchFound=No se han encontrado resultados
|
||||||
ProductAssociationList=Listado de productos/servicios componentes de este producto : el número entre paréntesis es la cantidad afectada en esta composición
|
ProductAssociationList=Listado de productos/servicios componentes de este producto : el número entre paréntesis es la cantidad afectada en esta composición
|
||||||
|
ProductParentList=Listado de productos/servicios con este producto como componente
|
||||||
ErrorAssociationIsFatherOfThis=Uno de los productos seleccionados es padre del producto en curso
|
ErrorAssociationIsFatherOfThis=Uno de los productos seleccionados es padre del producto en curso
|
||||||
DeleteProduct=Eliminar un producto/servicio
|
DeleteProduct=Eliminar un producto/servicio
|
||||||
ConfirmDeleteProduct=¿Está seguro de querer eliminar este producto/servicio?
|
ConfirmDeleteProduct=¿Está seguro de querer eliminar este producto/servicio?
|
||||||
|
|||||||
@ -114,6 +114,7 @@ MultiPriceLevelsName=Catégorie de prix
|
|||||||
AssociatedProductsAbility=Prise en charge des produits composés
|
AssociatedProductsAbility=Prise en charge des produits composés
|
||||||
AssociatedProducts=Composition
|
AssociatedProducts=Composition
|
||||||
AssociatedProductsNumber=Nbre de sous-produits composant ce produit
|
AssociatedProductsNumber=Nbre de sous-produits composant ce produit
|
||||||
|
ParentProductsNumber=Nbre de produits parent
|
||||||
EditAssociate=Composer
|
EditAssociate=Composer
|
||||||
Translation=Traduction
|
Translation=Traduction
|
||||||
KeywordFilter=Filtre par mot-clé
|
KeywordFilter=Filtre par mot-clé
|
||||||
@ -123,6 +124,7 @@ AddDel=Ajouter/Retirer
|
|||||||
Quantity=Quantité
|
Quantity=Quantité
|
||||||
NoMatchFound=Aucun résultat n'a été trouvé
|
NoMatchFound=Aucun résultat n'a été trouvé
|
||||||
ProductAssociationList=Liste des produits/services composant ce produit: Le nombre entre parenthèse est la quantité affectée dans cette composition.
|
ProductAssociationList=Liste des produits/services composant ce produit: Le nombre entre parenthèse est la quantité affectée dans cette composition.
|
||||||
|
ProductParentList=Liste des produits/services avec ce produit comme composante
|
||||||
ErrorAssociationIsFatherOfThis=L'un des produits sélectionnés est parent du produit en cours
|
ErrorAssociationIsFatherOfThis=L'un des produits sélectionnés est parent du produit en cours
|
||||||
DeleteProduct=Supprimer un produit/service
|
DeleteProduct=Supprimer un produit/service
|
||||||
ConfirmDeleteProduct=Êtes-vous sûr de vouloir supprimer ce produit/service ?
|
ConfirmDeleteProduct=Êtes-vous sûr de vouloir supprimer ce produit/service ?
|
||||||
|
|||||||
@ -24,7 +24,7 @@
|
|||||||
* \file htdocs/product/class/product.class.php
|
* \file htdocs/product/class/product.class.php
|
||||||
* \ingroup produit
|
* \ingroup produit
|
||||||
* \brief Fichier de la classe des produits predefinis
|
* \brief Fichier de la classe des produits predefinis
|
||||||
* \version $Id: product.class.php,v 1.50 2011/08/17 15:56:26 eldy Exp $
|
* \version $Id: product.class.php,v 1.51 2011/08/18 16:16:04 simnandez Exp $
|
||||||
*/
|
*/
|
||||||
require_once(DOL_DOCUMENT_ROOT ."/core/class/commonobject.class.php");
|
require_once(DOL_DOCUMENT_ROOT ."/core/class/commonobject.class.php");
|
||||||
|
|
||||||
@ -2081,6 +2081,40 @@ class Product extends CommonObject
|
|||||||
return $this->res;
|
return $this->res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return all Father products fo current product
|
||||||
|
* @return array prod
|
||||||
|
*/
|
||||||
|
function getFather()
|
||||||
|
{
|
||||||
|
|
||||||
|
$sql = "SELECT p.label as label,p.rowid,pa.fk_product_pere as id,p.fk_product_type";
|
||||||
|
$sql.= " FROM ".MAIN_DB_PREFIX."product_association as pa,";
|
||||||
|
$sql.= " ".MAIN_DB_PREFIX."product as p";
|
||||||
|
$sql.= " WHERE p.rowid = pa.fk_product_pere";
|
||||||
|
$sql.= " AND pa.fk_product_fils=".$this->id;
|
||||||
|
|
||||||
|
$res = $this->db->query($sql);
|
||||||
|
if ($res)
|
||||||
|
{
|
||||||
|
$prods = array ();
|
||||||
|
while ($record = $this->db->fetch_array ($res))
|
||||||
|
{
|
||||||
|
$prods[$record['id']]['id'] = $record['rowid'];
|
||||||
|
$prods[$record['id']]['label'] = $this->db->escape($record['label']);
|
||||||
|
$prods[$record['id']]['fk_product_type'] = $record['fk_product_type'];
|
||||||
|
}
|
||||||
|
return $prods;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dol_print_error ($this->db);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return all parent products fo current product
|
* Return all parent products fo current product
|
||||||
* @return array prod
|
* @return array prod
|
||||||
|
|||||||
@ -24,7 +24,7 @@
|
|||||||
* \file htdocs/product/composition/fiche.php
|
* \file htdocs/product/composition/fiche.php
|
||||||
* \ingroup product
|
* \ingroup product
|
||||||
* \brief Page de la fiche produit
|
* \brief Page de la fiche produit
|
||||||
* \version $Id: fiche.php,v 1.11 2011/08/10 11:53:25 eldy Exp $
|
* \version $Id: fiche.php,v 1.12 2011/08/18 16:16:05 simnandez Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require("../../main.inc.php");
|
require("../../main.inc.php");
|
||||||
@ -201,6 +201,7 @@ if ($id || $ref)
|
|||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
// Number of subproducts
|
// Number of subproducts
|
||||||
|
$prodsfather = $product->getFather(); //Parent Products
|
||||||
$product->get_sousproduits_arbo ();
|
$product->get_sousproduits_arbo ();
|
||||||
print '<tr><td>'.$langs->trans("AssociatedProductsNumber").'</td><td>'.sizeof($product->get_arbo_each_prod()).'</td>';
|
print '<tr><td>'.$langs->trans("AssociatedProductsNumber").'</td><td>'.sizeof($product->get_arbo_each_prod()).'</td>';
|
||||||
|
|
||||||
@ -233,6 +234,29 @@ if ($id || $ref)
|
|||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Number of parent products
|
||||||
|
print '<tr><td>'.$langs->trans("ParentProductsNumber").'</td><td>'.sizeof($prodsfather).'</td>';
|
||||||
|
|
||||||
|
if(sizeof($prodsfather) > 0)
|
||||||
|
{
|
||||||
|
print '<tr><td colspan="2">';
|
||||||
|
print '<b>'.$langs->trans("ProductParentList").'</b><br>';
|
||||||
|
print '<table class="nobordernopadding">';
|
||||||
|
foreach($prodsfather as $value)
|
||||||
|
{
|
||||||
|
$idprod= $value["id"];
|
||||||
|
$productstatic->id=$idprod;// $value["id"];
|
||||||
|
$productstatic->type=$value["fk_product_type"];
|
||||||
|
$productstatic->ref=$value['label'];
|
||||||
|
if ($conf->stock->enabled) $productstatic->load_stock();
|
||||||
|
print '<tr>';
|
||||||
|
print '<td>'.$productstatic->getNomUrl(1).'</td>';;
|
||||||
|
print '</tr>';
|
||||||
|
}
|
||||||
|
print '</table>';
|
||||||
|
print '</td></tr>';
|
||||||
|
}
|
||||||
|
|
||||||
print "</table>\n";
|
print "</table>\n";
|
||||||
|
|
||||||
dol_fiche_end();
|
dol_fiche_end();
|
||||||
@ -451,5 +475,5 @@ print "\n</div>\n";
|
|||||||
|
|
||||||
$db->close();
|
$db->close();
|
||||||
|
|
||||||
llxFooter('$Date: 2011/08/10 11:53:25 $ - $Revision: 1.11 $');
|
llxFooter('$Date: 2011/08/18 16:16:05 $ - $Revision: 1.12 $');
|
||||||
?>
|
?>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user