From 59291be6e0c60df2a712af5eca45470a56d489b8 Mon Sep 17 00:00:00 2001
From: Laurent Destailleur <eldy@destailleur.fr>
Date: Thu, 3 Nov 2016 19:39:54 +0100
Subject: [PATCH] NEW Can filter on status on objects on the "statistics" page.

---
 htdocs/adherents/class/adherent.class.php     |  11 ++
 htdocs/adherents/list.php                     |   2 +-
 htdocs/comm/propal/stats/index.php            |   7 +-
 htdocs/commande/list.php                      |  10 +-
 htdocs/commande/stats/index.php               |  32 ++++++
 htdocs/compta/bank/bankentries.php            |   5 +-
 htdocs/compta/facture/stats/index.php         |  24 +++-
 htdocs/core/class/html.formpropal.class.php   |  22 ++--
 .../html.formsupplier_proposal.class.php      | 104 ------------------
 htdocs/langs/en_US/supplier_proposal.lang     |   1 +
 htdocs/supplier_proposal/card.php             |   2 -
 .../class/supplier_proposal.class.php         |   7 +-
 htdocs/supplier_proposal/list.php             |   6 +-
 13 files changed, 101 insertions(+), 132 deletions(-)
 delete mode 100644 htdocs/core/class/html.formsupplier_proposal.class.php

diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php
index 191b23bea32..79c12e68561 100644
--- a/htdocs/adherents/class/adherent.class.php
+++ b/htdocs/adherents/class/adherent.class.php
@@ -1682,6 +1682,17 @@ class Adherent extends CommonObject
             if ($statut == 0)  return img_picto($langs->trans('MemberStatusResiliated'),'statut5').' '.$langs->trans("MemberStatusResiliated");
         }
         if ($mode == 5)
+        {
+            if ($statut == -1) return $langs->trans("MemberStatusDraft").' '.img_picto($langs->trans('MemberStatusDraft'),'statut0');
+            if ($statut >= 1)
+            {
+                if (! $date_end_subscription)            return '<span class="hideonsmartphone">'.$langs->trans("MemberStatusActiveShort").' </span>'.img_picto($langs->trans('MemberStatusActive'),'statut1');
+                elseif ($date_end_subscription < time()) return '<span class="hideonsmartphone">'.$langs->trans("MemberStatusActiveLateShort").' </span>'.img_picto($langs->trans('MemberStatusActiveLate'),'statut3');
+                else                                     return '<span class="hideonsmartphone">'.$langs->trans("MemberStatusPaidShort").' </span>'.img_picto($langs->trans('MemberStatusPaid'),'statut4');
+            }
+            if ($statut == 0)  return '<span class="hideonsmartphone">'.$langs->trans("MemberStatusResiliated").' </span>'.img_picto($langs->trans('MemberStatusResiliated'),'statut5');
+        }
+        if ($mode == 6)
         {
             if ($statut == -1) return $langs->trans("MemberStatusDraft").' '.img_picto($langs->trans('MemberStatusDraft'),'statut0');
             if ($statut >= 1)
diff --git a/htdocs/adherents/list.php b/htdocs/adherents/list.php
index c98ad4abf31..0727002aa59 100644
--- a/htdocs/adherents/list.php
+++ b/htdocs/adherents/list.php
@@ -809,7 +809,7 @@ while ($i < $num && $i < $conf->liste_limit)
 	if (! empty($arrayfields['d.statut']['checked']))
 	{
 	    print '<td align="right" class="nowrap">';
-	    print $memberstatic->LibStatut($obj->statut,$obj->subscription,$datefin,2);
+	    print $memberstatic->LibStatut($obj->statut,$obj->subscription,$datefin,5);
 	    print '</td>';
 	    if (! $i) $totalarray['nbfield']++;
 	}
diff --git a/htdocs/comm/propal/stats/index.php b/htdocs/comm/propal/stats/index.php
index aa5a865dbf2..04c1af11e1d 100644
--- a/htdocs/comm/propal/stats/index.php
+++ b/htdocs/comm/propal/stats/index.php
@@ -37,7 +37,7 @@ $mode=GETPOST("mode")?GETPOST("mode"):'customer';
 if ($mode == 'customer' && ! $user->rights->propale->lire) accessforbidden();
 if ($mode == 'supplier' && ! $user->rights->supplier_proposal->lire) accessforbidden();
 
-$object_statut=GETPOST('propal_statut');
+$object_status=GETPOST('object_status');
 
 $userid=GETPOST('userid','int');
 $socid=GETPOST('socid','int');
@@ -58,6 +58,7 @@ $langs->load('orders');
 $langs->load('companies');
 $langs->load('other');
 $langs->load('suppliers');
+$langs->load('supplier_proposal');
 
 
 /*
@@ -91,7 +92,7 @@ dol_mkdir($dir);
 
 
 $stats = new PropaleStats($db, $socid, ($userid>0?$userid:0), $mode);
-if ($object_statut != '' && $object_statut >= 0) $stats->where .= ' AND p.fk_statut IN ('.$object_statut.')';
+if ($object_status != '' && $object_status >= 0) $stats->where .= ' AND p.fk_statut IN ('.$object_status.')';
 
 // Build graphic number of object
 $data = $stats->getNbByMonthWithPrevYear($endyear,$startyear);
@@ -265,7 +266,7 @@ print '<div class="fichecenter"><div class="fichethirdleft">';
 	print '</td></tr>';
 	// Status
 	print '<tr><td align="left">'.$langs->trans("Status").'</td><td align="left">';
-	$formpropal->selectProposalStatus($object_statut,0,1,1,$mode);
+    $formpropal->selectProposalStatus(($object_status!=''?$object_status:-1),0,0,1,$mode,'object_status');
 	print '</td></tr>';
 	// Year
 	print '<tr><td align="left">'.$langs->trans("Year").'</td><td align="left">';
diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php
index 14c2b88214e..87a95062323 100644
--- a/htdocs/commande/list.php
+++ b/htdocs/commande/list.php
@@ -1014,11 +1014,11 @@ if ($resql)
 	{
 	    print '<td class="liste_titre maxwidthonsmartphone" align="right">';
     	$liststatus=array(
-    	    '0'=>$langs->trans("StatusOrderDraftShort"), 
-    	    '1'=>$langs->trans("StatusOrderValidated"), 
-    	    '2'=>$langs->trans("StatusOrderSentShort"), 
-    	    '3'=>$langs->trans("StatusOrderDelivered"), 
-    	    '-1'=>$langs->trans("StatusOrderCanceledShort")
+    	    Commande::STATUS_DRAFT=>$langs->trans("StatusOrderDraftShort"), 
+    	    Commande::STATUS_VALIDATED=>$langs->trans("StatusOrderValidated"), 
+    	    Commande::STATUS_ACCEPTED=>$langs->trans("StatusOrderSentShort"), 
+    	    Commande::STATUS_CLOSED=>$langs->trans("StatusOrderDelivered"), 
+    	    Commande::STATUS_CANCELED=>$langs->trans("StatusOrderCanceledShort")
     	);
     	print $form->selectarray('viewstatut', $liststatus, $viewstatut, -4);
 	    print '</td>';
diff --git a/htdocs/commande/stats/index.php b/htdocs/commande/stats/index.php
index 1f0f763bfd1..55b82d1063c 100644
--- a/htdocs/commande/stats/index.php
+++ b/htdocs/commande/stats/index.php
@@ -28,6 +28,7 @@
 require '../../main.inc.php';
 require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php';
 require_once DOL_DOCUMENT_ROOT.'/commande/class/commandestats.class.php';
+require_once DOL_DOCUMENT_ROOT.'/core/class/html.formorder.class.php';
 require_once DOL_DOCUMENT_ROOT.'/core/class/dolgraph.class.php';
 
 $WIDTH=DolGraph::getDefaultGraphSizeForStats('width');
@@ -37,6 +38,8 @@ $mode=GETPOST("mode")?GETPOST("mode"):'customer';
 if ($mode == 'customer' && ! $user->rights->commande->lire) accessforbidden();
 if ($mode == 'supplier' && ! $user->rights->fournisseur->commande->lire) accessforbidden();
 
+$object_status=GETPOST('object_status');
+
 $userid=GETPOST('userid','int');
 $socid=GETPOST('socid','int');
 // Security check
@@ -63,6 +66,7 @@ $langs->load('suppliers');
  */
 
 $form=new Form($db);
+$formorder=new FormOrder($db);
 
 if ($mode == 'customer')
 {
@@ -82,9 +86,19 @@ print load_fiche_titre($title,'','title_commercial.png');
 dol_mkdir($dir);
 
 $stats = new CommandeStats($db, $socid, $mode, ($userid>0?$userid:0));
+if ($mode == 'customer')
+{
+    if ($object_status != '' && $object_status >= -1) $stats->where .= ' AND c.fk_statut IN ('.$object_status.')';
+}
+if ($mode == 'supplier')
+{
+    if ($object_status != '' && $object_status >= 0) $stats->where .= ' AND c.fk_statut IN ('.$object_status.')';
+}
+
 
 // Build graphic number of object
 $data = $stats->getNbByMonthWithPrevYear($endyear,$startyear);
+
 //var_dump($data);
 // $data = array(array('Lib',val1,val2,val3),...)
 
@@ -261,6 +275,24 @@ print '<div class="fichecenter"><div class="fichethirdleft">';
 	// User
 	print '<tr><td align="left">'.$langs->trans("CreatedBy").'</td><td align="left">';
 	print $form->select_dolusers($userid, 'userid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300');
+	// Status
+	print '<tr><td align="left">'.$langs->trans("Status").'</td><td align="left">';
+	if ($mode == 'customer')
+	{
+	    $liststatus=array(
+	        Commande::STATUS_DRAFT=>$langs->trans("StatusOrderDraft"),
+	        Commande::STATUS_VALIDATED=>$langs->trans("StatusOrderValidated"),
+	        Commande::STATUS_ACCEPTED=>$langs->trans("StatusOrderSent"),
+	        Commande::STATUS_CLOSED=>$langs->trans("StatusOrderDelivered"),
+	        Commande::STATUS_CANCELED=>$langs->trans("StatusOrderCanceled")
+	    );
+	    print $form->selectarray('object_status', $liststatus, GETPOST('object_status'), -4);
+	}
+	if ($mode == 'supplier')
+	{
+	    $formorder->selectSupplierOrderStatus((strstr($object_status, ',')?-1:$object_status), 0, 'object_status');
+	}
+	print '</td></tr>';
 	// Year
 	print '<tr><td align="left">'.$langs->trans("Year").'</td><td align="left">';
 	if (! in_array($year,$arrayyears)) $arrayyears[$year]=$year;
diff --git a/htdocs/compta/bank/bankentries.php b/htdocs/compta/bank/bankentries.php
index bb56c494854..477c65a66b3 100644
--- a/htdocs/compta/bank/bankentries.php
+++ b/htdocs/compta/bank/bankentries.php
@@ -108,14 +108,13 @@ if (! $sortfield) $sortfield='b.datev';
 
 $mode_balance_ok=false;
 //if (($sortfield == 'b.datev' || $sortfield == 'b.datev, b.dateo, b.rowid'))    // TODO Manage balance when account not selected
-if (($sortfield == 'b.datev' || $sortfield == 'b.datev, b.dateo, b.rowid') && ($id > 0 || ! empty($ref)))
+if (($sortfield == 'b.datev' || $sortfield == 'b.datev, b.dateo, b.rowid'))
 {
     $sortfield = 'b.datev, b.dateo, b.rowid';
-    $mode_balance_ok = true;
+    if ($id > 0 || ! empty($ref) || $account > 0) $mode_balance_ok = true;
 }
 if (strtolower($sortorder) == 'desc') $mode_balance_ok = false;
 
-
 $object = new Account($db);
 if ($id > 0 || ! empty($ref))
 {
diff --git a/htdocs/compta/facture/stats/index.php b/htdocs/compta/facture/stats/index.php
index 9ca0c2f7718..5c5aa8489be 100644
--- a/htdocs/compta/facture/stats/index.php
+++ b/htdocs/compta/facture/stats/index.php
@@ -36,6 +36,8 @@ $mode=GETPOST("mode")?GETPOST("mode"):'customer';
 if ($mode == 'customer' && ! $user->rights->facture->lire) accessforbidden();
 if ($mode == 'supplier' && ! $user->rights->fournisseur->facture->lire) accessforbidden();
 
+$object_status=GETPOST('object_status');
+
 $userid=GETPOST('userid','int');
 $socid=GETPOST('socid','int');
 // Security check
@@ -80,7 +82,14 @@ print load_fiche_titre($title, $mesg, 'title_accountancy.png');
 dol_mkdir($dir);
 
 $stats = new FactureStats($db, $socid, $mode, ($userid>0?$userid:0));
-
+if ($mode == 'customer')
+{
+    if ($object_status != '' && $object_status >= -1) $stats->where .= ' AND f.fk_statut IN ('.$object_status.')';
+}
+if ($mode == 'supplier')
+{
+    if ($object_status != '' && $object_status >= 0) $stats->where .= ' AND f.fk_statut IN ('.$object_status.')';
+}
 
 // Build graphic number of object
 // $data = array(array('Lib',val1,val2,val3),...)
@@ -246,6 +255,19 @@ print '<div class="fichecenter"><div class="fichethirdleft">';
 	print '<tr><td>'.$langs->trans("CreatedBy").'</td><td>';
 	print $form->select_dolusers($userid, 'userid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300');
 	print '</td></tr>';
+	// Status
+	print '<tr><td align="left">'.$langs->trans("Status").'</td><td align="left">';
+	if ($mode == 'customer')
+	{
+	    $liststatus=array('0'=>$langs->trans("BillStatusDraft"), '1'=>$langs->trans("BillStatusNotPaid"), '2'=>$langs->trans("BillStatusPaid"), '3'=>$langs->trans("BillStatusCanceled"));
+	    print $form->selectarray('object_status', $liststatus, $object_status, 1);
+	}
+	if ($mode == 'supplier')
+	{
+	    $liststatus=array('0'=>$langs->trans("BillStatusDraft"),'1'=>$langs->trans("BillStatusNotPaid"), '2'=>$langs->trans("BillStatusPaid"));
+	    print $form->selectarray('object_status', $liststatus, $object_status, 1);
+	}
+	print '</td></tr>';
 	// Year
 	print '<tr><td>'.$langs->trans("Year").'</td><td>';
 	if (! in_array($year,$arrayyears)) $arrayyears[$year]=$year;
diff --git a/htdocs/core/class/html.formpropal.class.php b/htdocs/core/class/html.formpropal.class.php
index 57dd6336a43..2cfeaadd368 100644
--- a/htdocs/core/class/html.formpropal.class.php
+++ b/htdocs/core/class/html.formpropal.class.php
@@ -50,9 +50,10 @@ class FormPropal
      *    @param	int		$excludedraft	0=All status, 1=Exclude draft status
      *    @param	int 	$showempty		1=Add empty line
      *    @param    string  $mode           'customer', 'supplier'
+     *    @param    string  $htmlname       Name of select field
      *    @return	void
      */
-    function selectProposalStatus($selected='',$short=0, $excludedraft=0, $showempty=1, $mode='customer')
+    function selectProposalStatus($selected='',$short=0, $excludedraft=0, $showempty=1, $mode='customer',$htmlname='propal_statut')
     {
         global $langs;
 
@@ -63,7 +64,13 @@ class FormPropal
             $prefix='SupplierProposalStatus';
             
             $langs->load("supplier_proposal");
-            $listofstatus=array(0=>array('code'=>'PR_DRAFT'), 1=>array('code'=>'PR_OPEN'), 2=>array('code'=>'PR_SIGNED'), 3=>array('code'=>'PR_NOTSIGNED'), 4=>array('code'=>'PR_CLOSED'));
+            $listofstatus=array(
+                0=>array('id'=>0, 'code'=>'PR_DRAFT'),
+                1=>array('id'=>1, 'code'=>'PR_OPEN'),
+                2=>array('id'=>2, 'code'=>'PR_SIGNED'),
+                3=>array('id'=>3, 'code'=>'PR_NOTSIGNED'),
+                4=>array('id'=>4, 'code'=>'PR_CLOSED')
+            );
         }
         else
         {
@@ -93,7 +100,7 @@ class FormPropal
             }
         }
 
-        print '<select class="flat" name="propal_statut">';
+        print '<select class="flat" name="'.$htmlname.'">';
         if ($showempty) print '<option value="">&nbsp;</option>';
 
         foreach($listofstatus as $key => $obj)
@@ -115,15 +122,16 @@ class FormPropal
                 print '<option value="'.$obj['id'].'">';
             }
             $key=$obj['code'];
-            if ($langs->trans($prefix."PropalStatus".$key.($short?'Short':'')) != $prefix."PropalStatus".$key.($short?'Short':''))
+            if ($langs->trans($prefix.$key.($short?'Short':'')) != $prefix.$key.($short?'Short':''))
             {
-                print $langs->trans($prefix."PropalStatus".$key.($short?'Short':''));
+                print $langs->trans($prefix.$key.($short?'Short':''));
             }
             else
 			{
-                $conv_to_new_code=array('PR_DRAFT'=>'Draft','PR_OPEN'=>'Opened','PR_CLOSED'=>'Closed','PR_SIGNED'=>'Signed','PR_NOTSIGNED'=>'NotSigned','PR_FAC'=>'Billed');
+                $conv_to_new_code=array('PR_DRAFT'=>'Draft','PR_OPEN'=>'Validated','PR_CLOSED'=>'Closed','PR_SIGNED'=>'Signed','PR_NOTSIGNED'=>'NotSigned','PR_FAC'=>'Billed');
                 if (! empty($conv_to_new_code[$obj['code']])) $key=$conv_to_new_code[$obj['code']];
-                print ($langs->trans($prefix.$key.($short?'Short':''))!=$prefix.$key.($short?'Short':''))?$langs->trans($prefix.$key.($short?'Short':'')):$obj['label'];
+
+                print ($langs->trans($prefix.$key.($short?'Short':''))!=$prefix.$key.($short?'Short':''))?$langs->trans($prefix.$key.($short?'Short':'')):($obj['label']?$obj['label']:$obj['code']);
             }
             print '</option>';
             $i++;
diff --git a/htdocs/core/class/html.formsupplier_proposal.class.php b/htdocs/core/class/html.formsupplier_proposal.class.php
deleted file mode 100644
index ed8781731a0..00000000000
--- a/htdocs/core/class/html.formsupplier_proposal.class.php
+++ /dev/null
@@ -1,104 +0,0 @@
-<?php
-/* Copyright (C) 2012 Laurent Destailleur   <eldy@users.sourceforge.net>
- *
- * 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 3 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 <http://www.gnu.org/licenses/>.
- */
-
-/**
- *	\file       htdocs/core/class/html.formpropal.class.php
- *  \ingroup    core
- *	\brief      File of class with all html predefined components
- */
-
-
-/**
- *	Class to manage generation of HTML components for proposal management
- */
-class FormSupplierProposal
-{
-	var $db;
-	var $error;
-
-
-	/**
-	 * Constructor
-	 *
-	 * @param		DoliDB		$db      Database handler
-	 */
-	public function __construct($db)
-	{
-		$this->db = $db;
-	}
-
-    /**
-     *    Return combo list of differents status of a proposal
-     *    Values are id of table c_propalst
-     *
-     *    @param	string	$selected   Preselected value
-     *    @param	int		$short		Use short labels
-     *    @return	void
-     */
-    function selectSupplierProposalStatus($selected='',$short=0)
-    {
-        global $langs;
-
-        $sql = "SELECT id, code, label, active FROM ".MAIN_DB_PREFIX."c_propalst";
-        $sql .= " WHERE active = 1";
-
-        dol_syslog(get_class($this)."::selectSupplierProposalStatus", LOG_DEBUG);
-        $resql=$this->db->query($sql);
-        if ($resql)
-        {
-            print '<select class="flat" name="supplier_proposal_statut">';
-            print '<option value="">&nbsp;</option>';
-            $num = $this->db->num_rows($resql);
-            $i = 0;
-            if ($num)
-            {
-                while ($i < $num)
-                {
-                    $obj = $this->db->fetch_object($resql);
-                    if ($selected == $obj->id)
-                    {
-                        print '<option value="'.$obj->id.'" selected>';
-                    }
-                    else
-                    {
-                        print '<option value="'.$obj->id.'">';
-                    }
-                    $key=$obj->code;
-                    if ($langs->trans("PropalStatus".$key.($short?'Short':'')) != "PropalStatus".$key.($short?'Short':''))
-                    {
-                        print $langs->trans("PropalStatus".$key.($short?'Short':''));
-                    }
-                    else
-                    {
-                        $conv_to_new_code=array('PR_DRAFT'=>'Draft','PR_OPEN'=>'Opened','PR_CLOSED'=>'Closed','PR_SIGNED'=>'Signed','PR_NOTSIGNED'=>'NotSigned','PR_FAC'=>'Closed');
-                        if (! empty($conv_to_new_code[$obj->code])) $key=$conv_to_new_code[$obj->code];
-                        print ($langs->trans("PropalStatus".$key.($short?'Short':''))!="PropalStatus".$key.($short?'Short':''))?$langs->trans("PropalStatus".$key.($short?'Short':'')):$obj->label;
-                    }
-                    print '</option>';
-                    $i++;
-                }
-            }
-            print '</select>';
-        }
-        else
-        {
-            dol_print_error($this->db);
-        }
-    }
-
-}
-
diff --git a/htdocs/langs/en_US/supplier_proposal.lang b/htdocs/langs/en_US/supplier_proposal.lang
index 94c0ef2e039..621d7784e35 100644
--- a/htdocs/langs/en_US/supplier_proposal.lang
+++ b/htdocs/langs/en_US/supplier_proposal.lang
@@ -28,6 +28,7 @@ SupplierProposalStatusClosed=Closed
 SupplierProposalStatusSigned=Accepted
 SupplierProposalStatusNotSigned=Refused
 SupplierProposalStatusDraftShort=Draft
+SupplierProposalStatusValidatedShort=Validated
 SupplierProposalStatusClosedShort=Closed
 SupplierProposalStatusSignedShort=Accepted
 SupplierProposalStatusNotSignedShort=Refused
diff --git a/htdocs/supplier_proposal/card.php b/htdocs/supplier_proposal/card.php
index 0658416797e..804c02cfa68 100644
--- a/htdocs/supplier_proposal/card.php
+++ b/htdocs/supplier_proposal/card.php
@@ -34,7 +34,6 @@
 require '../main.inc.php';
 require_once DOL_DOCUMENT_ROOT . '/core/class/html.formother.class.php';
 require_once DOL_DOCUMENT_ROOT . '/core/class/html.formfile.class.php';
-require_once DOL_DOCUMENT_ROOT . '/core/class/html.formsupplier_proposal.class.php';
 require_once DOL_DOCUMENT_ROOT . '/core/class/html.formmargin.class.php';
 require_once DOL_DOCUMENT_ROOT . '/supplier_proposal/class/supplier_proposal.class.php';
 require_once DOL_DOCUMENT_ROOT . '/comm/action/class/actioncomm.class.php';
@@ -997,7 +996,6 @@ llxHeader('', $langs->trans('CommRequests'), 'EN:Ask_Price_Supplier|FR:Demande_d
 $form = new Form($db);
 $formother = new FormOther($db);
 $formfile = new FormFile($db);
-$formsupplier_proposal = new FormSupplierProposal($db);
 $formmargin = new FormMargin($db);
 $companystatic = new Societe($db);
 if (! empty($conf->projet->enabled)) { $formproject = new FormProjets($db); }
diff --git a/htdocs/supplier_proposal/class/supplier_proposal.class.php b/htdocs/supplier_proposal/class/supplier_proposal.class.php
index 45dacd3805a..1d249ad627d 100644
--- a/htdocs/supplier_proposal/class/supplier_proposal.class.php
+++ b/htdocs/supplier_proposal/class/supplier_proposal.class.php
@@ -2095,11 +2095,12 @@ class SupplierProposal extends CommonObject
 
 		if ($mode == 0)	return $this->labelstatut[$statut];
 		if ($mode == 1)	return $this->labelstatut_short[$statut];
-		if ($mode == 2)	return img_picto($this->labelstatut_short[$statut], $statuttrans).' '.$this->labelstatut_short[$statut];
+		if ($mode == 2)	return img_picto($this->labelstatut[$statut], $statuttrans).' '.$this->labelstatut_short[$statut];
 		if ($mode == 3)	return img_picto($this->labelstatut[$statut], $statuttrans);
 		if ($mode == 4)	return img_picto($this->labelstatut[$statut],$statuttrans).' '.$this->labelstatut[$statut];
-		if ($mode == 5)	return '<span class="hideonsmartphone">'.$this->labelstatut_short[$statut].' </span>'.img_picto($this->labelstatut_short[$statut],$statuttrans);
-    }
+		if ($mode == 5)	return '<span class="hideonsmartphone">'.$this->labelstatut_short[$statut].' </span>'.img_picto($this->labelstatut[$statut],$statuttrans);
+		if ($mode == 6)	return '<span class="hideonsmartphone">'.$this->labelstatut[$statut].' </span>'.img_picto($this->labelstatut[$statut],$statuttrans);
+	}
 
 
     /**
diff --git a/htdocs/supplier_proposal/list.php b/htdocs/supplier_proposal/list.php
index e51ddfcdceb..a50e8509ba5 100644
--- a/htdocs/supplier_proposal/list.php
+++ b/htdocs/supplier_proposal/list.php
@@ -34,8 +34,8 @@
 require '../main.inc.php';
 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
-require_once DOL_DOCUMENT_ROOT.'/core/class/html.formsupplier_proposal.class.php';
 require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
+require_once DOL_DOCUMENT_ROOT.'/core/class/html.formpropal.class.php';
 require_once DOL_DOCUMENT_ROOT.'/supplier_proposal/class/supplier_proposal.class.php';
 if (! empty($conf->projet->enabled))
 	require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
@@ -191,7 +191,7 @@ llxHeader('',$langs->trans('CommRequest'),'EN:Ask_Price_Supplier|FR:Demande_de_p
 $form = new Form($db);
 $formother = new FormOther($db);
 $formfile = new FormFile($db);
-$formsupplier_proposal = new FormSupplierProposal($db);
+$formpropal = new FormPropal($db);
 $companystatic=new Societe($db);
 
 $now=dol_now();
@@ -388,7 +388,7 @@ if ($result)
 	print '<input class="flat" size="10" type="text" name="search_author" value="'.$search_author.'">';
 	print '</td>';
 	print '<td class="liste_titre" align="right">';
-	$formsupplier_proposal->selectSupplierProposalStatus($viewstatut,1);
+	$formpropal->selectProposalStatus($viewstatut,1,0,1,'supplier');
 	print '</td>';
 	// Check boxes
 	print '<td class="liste_titre" align="right">';
-- 
GitLab