diff --git a/htdocs/langs/en_US/products.lang b/htdocs/langs/en_US/products.lang index 8dd3ffa83d7..3db60d0fa17 100644 --- a/htdocs/langs/en_US/products.lang +++ b/htdocs/langs/en_US/products.lang @@ -33,6 +33,10 @@ Movement=Movement Movements=Movements OnSell=On sell NotOnSell=Out of Sell +ProductStatusOnSell=On sell +ProductStatusNotOnSell=Out of sell +ProductStatusOnSellShort=On sell +ProductStatusNotOnSellShort=Out of sell UpdatePrice=Update price AppliedPricesFrom=Applied prices from SellingPrice=Selling price diff --git a/htdocs/langs/fr_FR/products.lang b/htdocs/langs/fr_FR/products.lang index e538508a715..67976028d82 100644 --- a/htdocs/langs/fr_FR/products.lang +++ b/htdocs/langs/fr_FR/products.lang @@ -37,6 +37,10 @@ Movement=Mouvement Movements=Mouvements OnSell=En vente NotOnSell=Hors vente +ProductStatusOnSell=En vente +ProductStatusNotOnSell=Hors vente +ProductStatusOnSellShort=En vente +ProductStatusNotOnSellShort=Hors vente UpdatePrice=Changer le prix AppliedPricesFrom=Prix de vente pratiqués à partir du SellingPrice=Prix de vente diff --git a/htdocs/product.class.php b/htdocs/product.class.php index 28a0abc47c1..d7e1f6735a8 100644 --- a/htdocs/product.class.php +++ b/htdocs/product.class.php @@ -48,6 +48,7 @@ class Product var $seuil_stock_alerte; var $duration_value; var $duration_unit; + var $status; var $stats_propale=array(); var $stats_commande=array(); @@ -66,7 +67,8 @@ class Product { $this->db = $DB; $this->id = $id ; - $this->envente = 0; + $this->envente = 0; // deprecated + $this->status = 0; $this->seuil_stock_alerte = 0; } @@ -110,7 +112,8 @@ class Product if (strlen($this->tva_tx)==0) $this->tva_tx = 0; if (strlen($this->price)==0) $this->price = 0; - if (strlen($this->envente)==0) $this->envente = 0; + if (strlen($this->envente)==0) $this->envente = 0; // deprecated + if (strlen($this->status)==0) $this->status = 0; $this->price = ereg_replace(",",".",$this->price); dolibarr_syslog("Product::Create ref=".$this->ref." Categorie : ".$this->catid); @@ -425,7 +428,8 @@ class Product $this->tva_tx = $result["tva_tx"]; $this->type = $result["fk_product_type"]; $this->nbvente = $result["nbvente"]; - $this->envente = $result["envente"]; + $this->envente = $result["envente"]; // deprecated + $this->status = $result["envente"]; $this->duration = $result["duration"]; $this->duration_value = substr($result["duration"],0,strlen($result["duration"])-1); $this->duration_unit = substr($result["duration"],-1); @@ -947,6 +951,31 @@ class Product return 1; } + /** + * \brief Retourne le libellé du statut d'une facture (brouillon, validée, abandonnée, payée) + * \param mode 0=libellé long, 1=libellé court + * \return string Libelle + */ + function getLibStatut($mode=0) + { + return $this->LibStatut($this->status,$mode); + } + + /** + * \brief Renvoi le libellé d'un statut donne + * \param status Statut + * \param mode 0=libellé long, 1=libellé court + * \return string Libellé du statut + */ + function LibStatut($status,$mode=0) + { + global $langs; + $langs->load('products'); + if ($status == 0) return $langs->trans('ProductStatusNotOnSell'.($mode?'Short':'')); + if ($status == 1) return $langs->trans('ProductStatusOnSell'.($mode?'Short':'')); + return $langs->trans('Unknown'); + } + /** * \brief Entre un nombre de piece du produit en stock dans un entrepôt * \param id_entrepot id de l'entrepot diff --git a/htdocs/product/liste.php b/htdocs/product/liste.php index a003de11ac2..2056c96b15a 100644 --- a/htdocs/product/liste.php +++ b/htdocs/product/liste.php @@ -28,6 +28,7 @@ */ require("./pre.inc.php"); +require_once(DOL_DOCUMENT_ROOT.'/product.class.php'); $langs->load("products"); @@ -62,15 +63,15 @@ if (isset($_POST["button_removefilter_x"])) /* - * Mode Liste + * Affichage mode liste * */ $title=$langs->trans("ProductsAndServices"); -$sql = 'SELECT p.rowid, p.ref, p.label, p.price, p.fk_product_type, '.$db->pdate('p.tms').' as datem'; +$sql = 'SELECT p.rowid, p.ref, p.label, p.price, p.fk_product_type, '.$db->pdate('p.tms').' as datem,'; +$sql.= ' p.duration, p.envente as statut'; $sql.= ' FROM '.MAIN_DB_PREFIX.'product as p'; - if ($_GET["fourn_id"] > 0) { $fourn_id = $_GET["fourn_id"]; @@ -97,16 +98,9 @@ if (isset($_GET["envente"]) && strlen($_GET["envente"]) > 0) { $sql .= " AND p.envente = ".$_GET["envente"]; } -else -{ - if ($fourn_id == 0) - { - $sql .= " AND p.envente = 1"; - } -} if ($fourn_id > 0) { - $sql .= " AND p.rowid = pf.fk_product AND pf.fk_soc = $fourn_id"; + $sql .= " AND p.rowid = pf.fk_product AND pf.fk_soc = ".$fourn_id; } $sql .= " ORDER BY $sortfield $sortorder "; $sql .= $db->plimit($limit + 1 ,$offset); @@ -133,96 +127,103 @@ if ($resql) $envente=1; } - if (! $envente) + if (isset($_GET["type"]) || isset($_POST["type"])) { - if (isset($_GET["type"]) || isset($_POST["type"])) { - $type=isset($_GET["type"])?$_GET["type"]:$_POST["type"]; - if ($type) { $texte = $langs->trans("ServicesNotOnSell"); } - else { $texte = $langs->trans("ProductsNotOnSell"); } - } else { - $texte = $langs->trans("ProductsAndServicesNotOnSell"); - } - } - else + $type=isset($_GET["type"])?$_GET["type"]:$_POST["type"]; + if ($type) { $texte = $langs->trans("Services"); } + else { $texte = $langs->trans("Products"); } + } else { + $texte = $langs->trans("ProductsAndServices"); + } + + + llxHeader("","",$texte); + + if ($sref || $snom || $_POST["sall"] || $_POST["search"]) + { + print_barre_liste($texte, $page, "liste.php", "&sref=".$sref."&snom=".$snom."&envente=".$_POST["envente"], $sortfield, $sortorder,'',$num); + } + else + { + print_barre_liste($texte, $page, "liste.php", "&sref=$sref&snom=$snom&fourn_id=$fourn_id".(isset($type)?"&type=$type":""), $sortfield, $sortorder,'',$num); + } + + print ''; + + // Lignes des titres + print ""; + print_liste_field_titre($langs->trans("Ref"),"liste.php", "p.ref","&envente=$envente".(isset($type)?"&type=$type":"")."&fourn_id=$fourn_id&snom=$snom&sref=$sref","","",$sortfield); + print_liste_field_titre($langs->trans("Label"),"liste.php", "p.label","&envente=$envente&".(isset($type)?"&type=$type":"")."&fourn_id=$fourn_id&snom=$snom&sref=$sref","","",$sortfield); + print_liste_field_titre($langs->trans("DateModification"),"liste.php", "p.tms","&envente=$envente&".(isset($type)?"&type=$type":"")."&fourn_id=$fourn_id&snom=$snom&sref=$sref","",'align="center"',$sortfield); + if ($conf->service->enabled && $type != 0) print_liste_field_titre($langs->trans("Duration"),"liste.php", "p.duration","&envente=$envente&".(isset($type)?"&type=$type":"")."&fourn_id=$fourn_id&snom=$snom&sref=$sref","",'align="center"',$sortfield); + print_liste_field_titre($langs->trans("SellingPrice"),"liste.php", "p.price","&envente=$envente&".(isset($type)?"&type=$type":"")."&fourn_id=$fourn_id&snom=$snom&sref=$sref","",'align="right"',$sortfield); + print_liste_field_titre($langs->trans("Status"),"liste.php", "p.envente","&envente=$envente&".(isset($type)?"&type=$type":"")."&fourn_id=$fourn_id&snom=$snom&sref=$sref","",'align="center"',$sortfield); + print "\n"; + + // Lignes des champs de filtre + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + if ($conf->service->enabled && $type != 0) + { + print ''; + } + print ''; + print ''; + print ''; + print ''; + print ''; + + $product_static=new Product($db); + + $var=True; + while ($i < min($num,$limit)) + { + $objp = $db->fetch_object($resql); + $var=!$var; + print "'; + print ''; + print ''; + if ($conf->service->enabled && $type != 0) { - if (isset($_POST["type"]) || isset($_GET["type"])) { - if ($type) { $texte = $langs->trans("ServicesOnSell"); } - else { $texte = $langs->trans("ProductsOnSell"); } - } else { - $texte = $langs->trans("ProductsAndServicesOnSell"); - } - } - - llxHeader("","",$texte); - - if ($sref || $snom || $_POST["sall"] || $_POST["search"]) - { - print_barre_liste($texte, $page, "liste.php", "&sref=".$sref."&snom=".$snom."&envente=".$_POST["envente"], $sortfield, $sortorder,'',$num); - } - else - { - print_barre_liste($texte, $page, "liste.php", "&sref=$sref&snom=$snom&fourn_id=$fourn_id".(isset($type)?"&type=$type":""), $sortfield, $sortorder,'',$num); - } - - print '
'; + print ''; + print ''; + print ''; + print ''; + print ' '; + print ''; + print ' '; + print ''; + print ' '; + print ''; + print ''; + print ''; + print '
"; + print "rowid\">"; + if ($objp->fk_product_type) print img_object($langs->trans("ShowService"),"service"); + else print img_object($langs->trans("ShowProduct"),"product"); + print ' '; + print ''.$objp->ref.''.$objp->label.''.dolibarr_print_date($objp->datem).'
'; - - // Lignes des titres - print ""; - print_liste_field_titre($langs->trans("Ref"),"liste.php", "p.ref","&envente=$envente".(isset($type)?"&type=$type":"")."&fourn_id=$fourn_id&snom=$snom&sref=$sref","","",$sortfield); - print_liste_field_titre($langs->trans("Label"),"liste.php", "p.label","&envente=$envente&".(isset($type)?"&type=$type":"")."&fourn_id=$fourn_id&snom=$snom&sref=$sref","","",$sortfield); - print_liste_field_titre($langs->trans("DateModification"),"liste.php", "p.tms","&envente=$envente&".(isset($type)?"&type=$type":"")."&fourn_id=$fourn_id&snom=$snom&sref=$sref","",'align="center"',$sortfield); - print_liste_field_titre($langs->trans("SellingPrice"),"liste.php", "p.price","&envente=$envente&".(isset($type)?"&type=$type":"")."&fourn_id=$fourn_id&snom=$snom&sref=$sref","",'align="right"',$sortfield); - print "\n"; - - // Lignes des champs de filtre - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - - - $var=True; - while ($i < min($num,$limit)) - { - $objp = $db->fetch_object($resql); - $var=!$var; - print "'; - print ''; - print ''; - print ''; - print "\n"; - $i++; - } - $db->free($resql); - - print "
'; - print ''; - print ''; - print ''; - print ''; - print ' '; - print ''; - print ''; - print ''; - print '
"; - print "rowid\">"; - if ($objp->fk_product_type) print img_object($langs->trans("ShowService"),"service"); - else print img_object($langs->trans("ShowProduct"),"product"); - print ' '; - print ''.$objp->ref.''.$objp->label.''.dolibarr_print_date($objp->datem).''.price($objp->price).'
"; - - } - else - { - dolibarr_print_error($db); + print ''.$objp->duration.''; } + print ''.price($objp->price).''; + print ''.$product_static->LibStatut($objp->statut).''; + print "\n"; + $i++; + } + $db->free($resql); + + print ""; + +} +else +{ + dolibarr_print_error($db); +} $db->close();