| '.$langs->trans('Ref').' | ';
diff --git a/htdocs/comm/propal/document.php b/htdocs/comm/propal/document.php
index 45c4732f836..4a2ea5d326d 100644
--- a/htdocs/comm/propal/document.php
+++ b/htdocs/comm/propal/document.php
@@ -145,7 +145,7 @@ if ($id > 0 || ! empty($ref))
print '';
- $linkback=''.$langs->trans("BackToList").'';
+ $linkback=''.$langs->trans("BackToList").'';
// Ref
print '| '.$langs->trans('Ref').' | ';
diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php
new file mode 100644
index 00000000000..c6de90c89f3
--- /dev/null
+++ b/htdocs/comm/propal/list.php
@@ -0,0 +1,400 @@
+
+ * Copyright (C) 2004-2011 Laurent Destailleur
+ * Copyright (C) 2004 Eric Seigne
+ * Copyright (C) 2005 Marc Barilley / Ocebo
+ * Copyright (C) 2005-2012 Regis Houssin
+ * Copyright (C) 2006 Andre Cianfarani
+ * Copyright (C) 2010-2011 Juanjo Menent
+ * Copyright (C) 2010-2011 Philippe Grand
+ * Copyright (C) 2012 Christophe Battarel
+*
+ * 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 .
+ */
+
+/**
+ * \file htdocs/comm/propal.php
+ * \ingroup propale
+ * \brief Page of commercial proposals card and list
+ */
+
+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.formpropal.class.php");
+require_once(DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php');
+require_once(DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php');
+require_once(DOL_DOCUMENT_ROOT."/core/modules/propale/modules_propale.php");
+require_once(DOL_DOCUMENT_ROOT."/core/lib/propal.lib.php");
+require_once(DOL_DOCUMENT_ROOT."/core/lib/functions2.lib.php");
+if ($conf->projet->enabled) require_once(DOL_DOCUMENT_ROOT.'/projet/class/project.class.php');
+
+$langs->load('companies');
+$langs->load('propal');
+$langs->load('compta');
+$langs->load('bills');
+$langs->load('orders');
+$langs->load('products');
+
+$id=GETPOST('id','int');
+$ref=GETPOST('ref','alpha');
+$socid=GETPOST('socid','int');
+$action=GETPOST('action','alpha');
+$confirm=GETPOST('confirm','alpha');
+$lineid=GETPOST('lineid','int');
+
+$search_user=GETPOST('search_user','int');
+$search_ref=GETPOST('sf_ref')?GETPOST('sf_ref','alpha'):GETPOST('search_ref','alpha');
+$search_refcustomer=GETPOST('search_refcustomer','alpha');
+$search_societe=GETPOST('search_societe','alpha');
+$search_montant_ht=GETPOST('search_montant_ht','alpha');
+
+$sall=GETPOST("sall");
+$mesg=(GETPOST("msg") ? GETPOST("msg") : GETPOST("mesg"));
+$year=GETPOST("year");
+$month=GETPOST("month");
+
+// Nombre de ligne pour choix de produit/service predefinis
+$NBLINES=4;
+
+// Security check
+$module='propale';
+if (isset($socid))
+{
+ $objectid=$socid;
+ $module='societe';
+ $dbtable='&societe';
+}
+else if (isset($id) && $id > 0)
+{
+ $objectid=$id;
+ $module='propale';
+ $dbtable='propal';
+}
+if ($user->societe_id) $socid=$user->societe_id;
+$result = restrictedArea($user, $module, $objectid, $dbtable);
+
+$object = new Propal($db);
+
+// Load object
+if ($id > 0 || ! empty($ref))
+{
+ $ret=$object->fetch($id, $ref);
+}
+
+// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array
+include_once(DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php');
+$hookmanager=new HookManager($db);
+$hookmanager->initHooks(array('propalcard'));
+
+
+
+/*
+ * Actions
+ */
+
+// Do we click on purge search criteria ?
+if (GETPOST("button_removefilter_x"))
+{
+ $search_categ='';
+ $search_user='';
+ $search_ref='';
+ $search_refcustomer='';
+ $search_societe='';
+ $search_montant_ht='';
+ $year='';
+ $month='';
+}
+
+
+/*
+ * View
+ */
+
+llxHeader('',$langs->trans('Proposal'),'EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos');
+
+$form = new Form($db);
+$formother = new FormOther($db);
+$formfile = new FormFile($db);
+$formpropal = new FormPropal($db);
+$companystatic=new Societe($db);
+
+$now=dol_now();
+
+$sortfield = GETPOST("sortfield",'alpha');
+$sortorder = GETPOST("sortorder",'alpha');
+$page = GETPOST("page",'int');
+if ($page == -1) { $page = 0; }
+$offset = $conf->liste_limit * $page;
+$pageprev = $page - 1;
+$pagenext = $page + 1;
+
+$viewstatut=$db->escape(GETPOST('viewstatut'));
+$object_statut = $db->escape(GETPOST('propal_statut'));
+if($object_statut != '')
+$viewstatut=$object_statut;
+
+if (! $sortfield) $sortfield='p.datep';
+if (! $sortorder) $sortorder='DESC';
+$limit = $conf->liste_limit;
+
+$sql = 'SELECT s.nom, s.rowid, s.client, ';
+$sql.= 'p.rowid as propalid, p.total_ht, p.ref, p.ref_client, p.fk_statut, p.fk_user_author, p.datep as dp, p.fin_validite as dfv,';
+if (! $user->rights->societe->client->voir && ! $socid) $sql .= " sc.fk_soc, sc.fk_user,";
+$sql.= ' u.login';
+$sql.= ' FROM '.MAIN_DB_PREFIX.'societe as s, '.MAIN_DB_PREFIX.'propal as p';
+if ($sall) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'propaldet as pd ON p.rowid=pd.fk_propal';
+$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'user as u ON p.fk_user_author = u.rowid';
+if (! $user->rights->societe->client->voir && ! $socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
+if ($search_user > 0)
+{
+ $sql.=", ".MAIN_DB_PREFIX."element_contact as c";
+ $sql.=", ".MAIN_DB_PREFIX."c_type_contact as tc";
+}
+$sql.= ' WHERE p.fk_soc = s.rowid';
+$sql.= ' AND p.entity = '.$conf->entity;
+
+if (! $user->rights->societe->client->voir && ! $socid) //restriction
+{
+ $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id;
+}
+if ($search_ref)
+{
+ $sql.= " AND p.ref LIKE '%".$db->escape(trim($search_ref))."%'";
+}
+if ($search_refcustomer)
+{
+ $sql.= " AND p.ref_client LIKE '%".$db->escape(trim($search_refcustomer))."%'";
+}
+if ($search_societe)
+{
+ $sql.= " AND s.nom LIKE '%".$db->escape(trim($search_societe))."%'";
+}
+if ($search_montant_ht)
+{
+ $sql.= " AND p.total_ht='".$db->escape(trim($search_montant_ht))."'";
+}
+if ($sall) $sql.= " AND (s.nom LIKE '%".$db->escape($sall)."%' OR p.note LIKE '%".$db->escape($sall)."%' OR pd.description LIKE '%".$db->escape($sall)."%')";
+if ($socid) $sql.= ' AND s.rowid = '.$socid;
+if ($viewstatut <> '')
+{
+ $sql.= ' AND p.fk_statut IN ('.$viewstatut.')';
+}
+if ($month > 0)
+{
+ if ($year > 0)
+ $sql.= " AND date_format(p.datep, '%Y-%m') = '".$year."-".$month."'";
+ else
+ $sql.= " AND date_format(p.datep, '%m') = '".$month."'";
+}
+else if ($year > 0)
+{
+ $sql.= " AND date_format(p.datep, '%Y') = '".$year."'";
+}
+if ($search_user > 0)
+{
+ $sql.= " AND c.fk_c_type_contact = tc.rowid AND tc.element='propal' AND tc.source='internal' AND c.element_id = p.rowid AND c.fk_socpeople = ".$search_user;
+}
+
+
+$sql.= ' ORDER BY '.$sortfield.' '.$sortorder.', p.ref DESC';
+$sql.= $db->plimit($limit + 1,$offset);
+$result=$db->query($sql);
+
+if ($result)
+{
+ $objectstatic=new Propal($db);
+ $userstatic=new User($db);
+
+ $num = $db->num_rows($result);
+
+ if ($socid)
+ {
+ $soc = new Societe($db);
+ $soc->fetch($socid);
+ }
+
+ $param='&socid='.$socid.'&viewstatut='.$viewstatut;
+ if ($month) $param.='&month='.$month;
+ if ($year) $param.='&year='.$year;
+ print_barre_liste($langs->trans('ListOfProposals').' '.($socid?'- '.$soc->nom:''), $page, $_SERVER["PHP_SELF"],$param,$sortfield,$sortorder,'',$num);
+
+ // Lignes des champs de filtre
+ print '';
+
+ $db->free($result);
+}
+else
+{
+ dol_print_error($db);
+}
+
+// End of page
+llxFooter();
+$db->close();
+?>
diff --git a/htdocs/comm/propal/note.php b/htdocs/comm/propal/note.php
index fde8d2411d3..d7d88029062 100644
--- a/htdocs/comm/propal/note.php
+++ b/htdocs/comm/propal/note.php
@@ -86,7 +86,7 @@ if ($id > 0 || ! empty($ref))
print '';
- $linkback="".$langs->trans("BackToList")."";
+ $linkback="".$langs->trans("BackToList")."";
// Ref
print '| '.$langs->trans('Ref').' | ';
diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php
index 818d6d902f8..e12636725af 100644
--- a/htdocs/core/menus/standard/eldy.lib.php
+++ b/htdocs/core/menus/standard/eldy.lib.php
@@ -826,13 +826,13 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after)
$langs->load("propal");
$newmenu->add("/comm/propal/index.php?leftmenu=propals", $langs->trans("Prop"), 0, $user->rights->propale->lire, '', $mainmenu, 'propals');
$newmenu->add("/societe/societe.php?leftmenu=propals", $langs->trans("NewPropal"), 1, $user->rights->propale->creer);
- $newmenu->add("/comm/propal.php?leftmenu=propals", $langs->trans("List"), 1, $user->rights->propale->lire);
- if ($leftmenu=="propals") $newmenu->add("/comm/propal.php?leftmenu=propals&viewstatut=0", $langs->trans("PropalsDraft"), 2, $user->rights->propale->lire);
- if ($leftmenu=="propals") $newmenu->add("/comm/propal.php?leftmenu=propals&viewstatut=1", $langs->trans("PropalsOpened"), 2, $user->rights->propale->lire);
- if ($leftmenu=="propals") $newmenu->add("/comm/propal.php?leftmenu=propals&viewstatut=2", $langs->trans("PropalStatusSigned"), 2, $user->rights->propale->lire);
- if ($leftmenu=="propals") $newmenu->add("/comm/propal.php?leftmenu=propals&viewstatut=3", $langs->trans("PropalStatusNotSigned"), 2, $user->rights->propale->lire);
- if ($leftmenu=="propals") $newmenu->add("/comm/propal.php?leftmenu=propals&viewstatut=4", $langs->trans("PropalStatusBilled"), 2, $user->rights->propale->lire);
- //if ($leftmenu=="propals") $newmenu->add("/comm/propal.php?leftmenu=propals&viewstatut=2,3,4", $langs->trans("PropalStatusClosedShort"), 2, $user->rights->propale->lire);
+ $newmenu->add("/comm/propal/list.php?leftmenu=propals", $langs->trans("List"), 1, $user->rights->propale->lire);
+ if ($leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=0", $langs->trans("PropalsDraft"), 2, $user->rights->propale->lire);
+ if ($leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=1", $langs->trans("PropalsOpened"), 2, $user->rights->propale->lire);
+ if ($leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=2", $langs->trans("PropalStatusSigned"), 2, $user->rights->propale->lire);
+ if ($leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=3", $langs->trans("PropalStatusNotSigned"), 2, $user->rights->propale->lire);
+ if ($leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=4", $langs->trans("PropalStatusBilled"), 2, $user->rights->propale->lire);
+ //if ($leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=2,3,4", $langs->trans("PropalStatusClosedShort"), 2, $user->rights->propale->lire);
$newmenu->add("/comm/propal/stats/index.php?leftmenu=propals", $langs->trans("Statistics"), 1, $user->rights->propale->lire);
}
diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang
index ee557fb9eb7..7af3740e054 100644
--- a/htdocs/langs/en_US/main.lang
+++ b/htdocs/langs/en_US/main.lang
@@ -618,6 +618,7 @@ ByYear=By year
ByMonth=by month
ByDay=By day
BySalesRepresentative=By sales representative
+LinkedToSpecificUsers=Linked to a particular user contact
# Week day
Monday=Monday
diff --git a/htdocs/langs/fr_FR/main.lang b/htdocs/langs/fr_FR/main.lang
index 81484ba7c2e..9c58ef9271b 100644
--- a/htdocs/langs/fr_FR/main.lang
+++ b/htdocs/langs/fr_FR/main.lang
@@ -620,6 +620,7 @@ ByYear=Par année
ByMonth=Par mois
ByDay=Par jour
BySalesRepresentative=Par commerciaux
+LinkedToSpecificUsers=Liés à un contact utilisateur particulier
# Week day
Monday=Lundi
| | |