* Copyright (C) 2004-2011 Laurent Destailleur * Copyright (C) 2005-2009 Regis Houssin * Copyright (C) 2020 Open-Dsi * * 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 . */ /** * \file htdocs/comm/prospect/index.php * \ingroup commercial * \brief Home page of propest area */ // Load Dolibarr environment require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/agenda.lib.php'; // Load translation files required by the page $langs->load("propal"); if ($user->socid > 0) { $socid = $user->socid; } // Security check $socid = GETPOSTINT('socid'); if ($user->socid) { $action = ''; $socid = $user->socid; } $result = restrictedArea($user, 'propal', $socid, ''); /* * View */ $companystatic = new Societe($db); llxHeader(); print load_fiche_titre($langs->trans("ProspectionArea")); //print ''; //print '
'; print '
'; if (isModEnabled("propal")) { $var = false; print '
'; print ''; print ''; print ''; print ''; print ''; print ''; print "
'.$langs->trans("SearchAProposal").'
'; print $langs->trans("Ref").':
'.$langs->trans("Other").':

\n"; } /* * Prospects par statut */ $sql = "SELECT count(*) as cc, st.libelle as stcomm, st.picto, st.id"; $sql .= " FROM ".MAIN_DB_PREFIX."societe as s"; $sql .= ", ".MAIN_DB_PREFIX."c_stcomm as st "; $sql .= " WHERE s.fk_stcomm = st.id"; $sql .= " AND s.client IN (2, 3)"; $sql .= " AND s.entity IN (".getEntity($companystatic->element).")"; // If the internal user must only see his customers, force searching by him $search_sale = 0; if (!$user->hasRight('societe', 'client', 'voir')) { $search_sale = $user->id; } // Search on sale representative if ($search_sale && $search_sale != '-1') { if ($search_sale == -2) { $sql .= " AND NOT EXISTS (SELECT sc.fk_soc FROM ".MAIN_DB_PREFIX."societe_commerciaux as sc WHERE sc.fk_soc = s.rowid)"; } elseif ($search_sale > 0) { $sql .= " AND EXISTS (SELECT sc.fk_soc FROM ".MAIN_DB_PREFIX."societe_commerciaux as sc WHERE sc.fk_soc = s.rowid AND sc.fk_user = ".((int) $search_sale).")"; } } // Search on socid if ($socid) { $sql .= " AND s.rowid = ".((int) $socid); } $sql .= " GROUP BY st.id"; $sql .= " ORDER BY st.id"; $resql = $db->query($sql); if ($resql) { $num = $db->num_rows($resql); $i = 0; if ($num > 0) { print ''; print ''; print ''; while ($i < $num) { $obj = $db->fetch_object($resql); print ''; $i++; } print "
'.$langs->trans("ProspectsByStatus").'
'; print ''; print img_action($langs->trans("Show"), $obj->id, $obj->picto).' '; print $langs->trans("StatusProspect".$obj->id); print ''.$obj->cc.'

"; } } /* * Liste des propal brouillons */ if (isModEnabled("propal") && $user->hasRight('propal', 'lire')) { $sql = "SELECT p.rowid, p.ref, p.price, s.nom as sname"; $sql .= " FROM ".MAIN_DB_PREFIX."propal as p"; $sql .= ", ".MAIN_DB_PREFIX."societe as s"; $sql .= " WHERE p.fk_statut = 0"; $sql .= " AND p.fk_soc = s.rowid"; $sql .= " AND p.entity IN (".getEntity('propal').")"; // If the internal user must only see his customers, force searching by him $search_sale = 0; if (!$user->hasRight('societe', 'client', 'voir')) { $search_sale = $user->id; } // Search on sale representative if ($search_sale && $search_sale != '-1') { if ($search_sale == -2) { $sql .= " AND NOT EXISTS (SELECT sc.fk_soc FROM ".MAIN_DB_PREFIX."societe_commerciaux as sc WHERE sc.fk_soc = s.rowid)"; } elseif ($search_sale > 0) { $sql .= " AND EXISTS (SELECT sc.fk_soc FROM ".MAIN_DB_PREFIX."societe_commerciaux as sc WHERE sc.fk_soc = s.rowid AND sc.fk_user = ".((int) $search_sale).")"; } } // Search on socid if ($socid) { $sql .= " AND s.rowid = ".((int) $socid); } $resql = $db->query($sql); if ($resql) { $total = 0; $num = $db->num_rows($resql); $i = 0; if ($num > 0) { print ''; print ''; print ''; while ($i < $num) { $obj = $db->fetch_object($resql); print '"; $i++; $total += $obj->price; } if ($total > 0) { print '"; } print "
'.$langs->trans("ProposalsDraft").'
'; print ''.img_object($langs->trans("ShowPropal"), "propal").' '.$obj->ref.''; print ''; print price($obj->price); print "
'.$langs->trans("Total")."".price($total)."

"; } $db->free($resql); } } print '
'; /* * Actions commerciales a faire */ if (isModEnabled('agenda')) { show_array_actions_to_do(10); } /* * Dernieres propales ouvertes */ if (isModEnabled("propal") && $user->hasRight('propal', 'lire')) { $sql = "SELECT s.nom as name, s.rowid as socid, s.client, s.canvas,"; $sql .= " p.rowid as propalid, p.total_ttc, p.ref, p.datep as dp, c.label as statut, c.id as statutid"; $sql .= " FROM ".MAIN_DB_PREFIX."societe as s"; $sql .= ", ".MAIN_DB_PREFIX."propal as p"; $sql .= ", ".MAIN_DB_PREFIX."c_propalst as c"; $sql .= " WHERE p.fk_soc = s.rowid"; $sql .= " AND p.fk_statut = c.id"; $sql .= " AND p.fk_statut = 1"; $sql .= " AND p.entity IN (".getEntity('propal').")"; // If the internal user must only see his customers, force searching by him $search_sale = 0; if (!$user->hasRight('societe', 'client', 'voir')) { $search_sale = $user->id; } // Search on sale representative if ($search_sale && $search_sale != '-1') { if ($search_sale == -2) { $sql .= " AND NOT EXISTS (SELECT sc.fk_soc FROM ".MAIN_DB_PREFIX."societe_commerciaux as sc WHERE sc.fk_soc = p.fk_soc)"; } elseif ($search_sale > 0) { $sql .= " AND EXISTS (SELECT sc.fk_soc FROM ".MAIN_DB_PREFIX."societe_commerciaux as sc WHERE sc.fk_soc = p.fk_soc AND sc.fk_user = ".((int) $search_sale).")"; } } // Search on socid if ($socid) { $sql .= " AND p.fk_soc = ".((int) $socid); } $sql .= " ORDER BY p.rowid DESC"; $sql .= $db->plimit(5, 0); $resql = $db->query($sql); if ($resql) { $total = 0; $num = $db->num_rows($resql); $i = 0; if ($num > 0) { print ''; print ''; while ($i < $num) { $obj = $db->fetch_object($resql); print ''; print "\n"; print "\n"; print "\n"; $i++; $total += $obj->price; } if ($total > 0) { print '"; } print "
'.$langs->trans("ProposalsOpened").'
'; print ''; print img_object($langs->trans("ShowPropal"), "propal").' '.$obj->ref.'"; $companystatic->id = $obj->socid; $companystatic->name = $obj->name; $companystatic->client = $obj->client; $companystatic->canvas = $obj->canvas; print $companystatic->getNomUrl(1, '', 44); print ""; print dol_print_date($db->jdate($obj->dp), 'day')."".price($obj->total_ttc)."
'.$langs->trans("Total")."".price($total)."

"; } } else { dol_print_error($db); } } /* * Companies to contact */ $sql = "SELECT s.nom as name, s.rowid as socid, s.client, s.canvas"; $sql .= " FROM ".MAIN_DB_PREFIX."societe as s"; $sql .= " WHERE s.fk_stcomm = 1"; $sql .= " AND s.entity IN (".getEntity($companystatic->element).")"; // If the internal user must only see his customers, force searching by him $search_sale = 0; if (!$user->hasRight('societe', 'client', 'voir')) { $search_sale = $user->id; } // Search on sale representative if ($search_sale && $search_sale != '-1') { if ($search_sale == -2) { $sql .= " AND NOT EXISTS (SELECT sc.fk_soc FROM ".MAIN_DB_PREFIX."societe_commerciaux as sc WHERE sc.fk_soc = s.rowid)"; } elseif ($search_sale > 0) { $sql .= " AND EXISTS (SELECT sc.fk_soc FROM ".MAIN_DB_PREFIX."societe_commerciaux as sc WHERE sc.fk_soc = s.rowid AND sc.fk_user = ".((int) $search_sale).")"; } } // Search on socid if ($socid) { $sql .= " AND s.rowid = ".((int) $socid); } $sql .= " ORDER BY s.tms ASC"; $sql .= $db->plimit(15, 0); $resql = $db->query($sql); if ($resql) { $num = $db->num_rows($resql); $i = 0; if ($num > 0) { print ''; print ''; while ($i < $num) { $obj = $db->fetch_object($resql); print ''; $i++; } print "
'.$langs->trans("ProspectToContact").'
'; $companystatic->id = $obj->socid; $companystatic->name = $obj->name; $companystatic->client = $obj->client; $companystatic->canvas = $obj->canvas; print $companystatic->getNomUrl(1, 'prospect', 44); print '

"; } } print '
'; // End of page llxFooter(); $db->close();