diff --git a/htdocs/comm/propal/contact.php b/htdocs/comm/propal/contact.php new file mode 100644 index 00000000000..3dc0d553b3d --- /dev/null +++ b/htdocs/comm/propal/contact.php @@ -0,0 +1,437 @@ + + * Copyright (C) 2005-2006 Destailleur Laurent + * + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * $Id$ + * $Source$ + */ + +/** + \file htdocs/comm/propal/contact.php + \ingroup propal + \brief Onglet de gestion des contacts de propal + \version $Revision$ +*/ + +require ("./pre.inc.php"); +require_once(DOL_DOCUMENT_ROOT."/propal.class.php"); +require_once(DOL_DOCUMENT_ROOT."/contact.class.php"); +require_once(DOL_DOCUMENT_ROOT."/lib/propal.lib.php"); + +$langs->load("facture"); +$langs->load("orders"); +$langs->load("sendings"); +$langs->load("companies"); + +$user->getrights('propale'); +if (!$user->rights->propale->lire) + accessforbidden(); + +// les methodes locales +/** + * \brief Retourne la liste déroulante des sociétés + * \param selected Societe présélectionnée + * \param htmlname Nom champ formulaire + */ +function select_societes_for_newconcat($propal, $selected = '', $htmlname = 'newcompany'){ + // On recherche les societes + $sql = "SELECT s.idp, s.nom FROM"; + $sql .= " ".MAIN_DB_PREFIX."societe as s"; +// if ($filter) $sql .= " WHERE $filter"; + $sql .= " ORDER BY nom ASC"; + + $resql = $propal->db->query($sql); + if ($resql) + { + $javaScript = "window.location='./contact.php?propalid=".$propal->id."&".$htmlname."=' + form.".$htmlname.".options[form.".$htmlname.".selectedIndex].value;"; + print '\n"; + return $firstCompany; + } else + { + dolibarr_print_error($propal->db); + } +} + +/** + * + */ +function select_type_contact($propal, $defValue, $htmlname = 'type', $source) +{ + $lesTypes = $propal->liste_type_contact($source); + print '\n"; +} + + +// Sécurité accés client +if ($user->societe_id > 0) +{ + $action = ''; + $socidp = $user->societe_id; +} + +/* + * Ajout d'un nouveau contact + */ + +if ($_POST["action"] == 'addcontact' && $user->rights->propale->creer) +{ + + $result = 0; + $propal = new Propal($db); + $result = $propal->fetch($_GET["propalid"]); + + if ($result > 0 && $_GET["propalid"] > 0) + { + $result = $propal->add_contact($_POST["contactid"], $_POST["type"], $_POST["source"]); + } + + if ($result >= 0) + { + Header("Location: contact.php?propalid=".$propal->id); + exit; + } else + { + $mesg = '
'.$propal->error.'
'; + } +} +// modification d'un contact. On enregistre le type +if ($_POST["action"] == 'updateligne' && $user->rights->propale->creer) +{ + $propal = new Propal($db); + if ($propal->fetch($_GET["propalid"])) + { + $contact = $propal->detail_contact($_POST["elrowid"]); + $type = $_POST["type"]; + $statut = $contact->statut; + + $result = $propal->update_contact($_POST["elrowid"], $statut, $type); + if ($result >= 0) + { + $db->commit(); + } else + { + dolibarr_print_error($db, "result=$result"); + $db->rollback(); + } + } else + { + dolibarr_print_error($db); + } +} + +// bascule du statut d'un contact +if ($_GET["action"] == 'swapstatut' && $user->rights->propale->creer) +{ + $propal = new Propal($db); + if ($propal->fetch($_GET["propalid"])) + { + $contact = $propal->detail_contact($_GET["ligne"]); + $id_type_contact = $contact->fk_c_type_contact; + $statut = ($contact->statut == 4) ? 5 : 4; + + $result = $propal->update_contact($_GET["ligne"], $statut, $id_type_contact); + if ($result >= 0) + { + $db->commit(); + } else + { + dolibarr_print_error($db, "result=$result"); + $db->rollback(); + } + } else + { + dolibarr_print_error($db); + } +} + +// Efface un contact +if ($_GET["action"] == 'deleteline' && $user->rights->propale->creer) +{ + $propal = new Propal($db); + $propal->fetch($_GET["propalid"]); + $result = $propal->delete_contact($_GET["lineid"]); + + if ($result >= 0) + { + Header("Location: contact.php?propalid=".$propal->id); + exit; + } + else { + dolibarr_print_error($db); + } +} + + +llxHeader('', $langs->trans("Proposal"), "Propal"); + +$html = new Form($db); + +/* *************************************************************************** */ +/* */ +/* Mode vue et edition */ +/* */ +/* *************************************************************************** */ +if ( isset($mesg)) + print $mesg; +$id = $_GET["propalid"]; +if ($id > 0) +{ + $langs->trans("PropalCard"); + $propal = New Propal($db); + if ( $propal->fetch($_GET['propalid'], $user->societe_id) > 0) + { + $soc = new Societe($db, $propal->soc_id); + $soc->fetch($propal->soc_id); + + + $head = propal_prepare_head($propal); + dolibarr_fiche_head($head, 'contact', $langs->trans("Proposal")); + + + /* + * Facture synthese pour rappel + */ + print ''; + + // Ref + print '"; + + // Customer + if ( is_null($propal->client) ) + $propal->fetch_client(); + + print ""; + print ''; + print "
'.$langs->trans("Ref").''; + print $propal->ref_url; + print "
".$langs->trans("Company")."'.$propal->client->getNomUrl(1).'
"; + + print ''; + + /* + * Lignes de contacts + */ + echo '
'; + + /* + * Ajouter une ligne de contact + * Non affiché en mode modification de ligne + */ + if ($_GET["action"] != 'editline' && $user->rights->facture->creer) + { + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print "\n"; + + $var = false; + + print ''; + print ''; + print ''; + print ''; + + // Ligne ajout pour contact interne + print ""; + + print ''; + + print ''; + + print ''; + print ''; + print ''; + print ''; + + print ''; + + print ''; + print ''; + print ''; + print ''; + + // Ligne ajout pour contact externe + $var=!$var; + print ""; + + print ''; + + print ''; + + print ''; + print ''; + print ''; + print ''; + + print ""; + + print ''; + } + + // Liste des contacts liés + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print "\n"; + + $societe = new Societe($db); + $var = true; + + foreach(array('internal','external') as $source) + { + $tab = $propal->liste_contact(-1,$source); + $num=sizeof($tab); + + $i = 0; + while ($i < $num) + { + $var = !$var; + + print ''; + + // Source + print ''; + + // Societe + print ''; + + // Contact + print ''; + + // Type de contact + print ''; + + // Statut + print ''; + + // Icon update et delete + print ''; + + print "\n"; + + $i ++; + } + $db->free($result); + } + print "
'.$langs->trans("Source").''.$langs->trans("Company").''.$langs->trans("Contacts").''.$langs->trans("ContactType").' 
'; + print $langs->trans("Internal"); + print ''; + print $conf->global->MAIN_INFO_SOCIETE_NOM; + print ''; + $html->select_users($user->id,'contactid'); + print ''; + select_type_contact($propal, '', 'type','internal'); + print '
'; + print $langs->trans("External"); + print ''; + $selectedCompany = isset($_GET["newcompany"])?$_GET["newcompany"]:$propal->client->id; + $selectedCompany = select_societes_for_newconcat($propal, $selectedCompany, $htmlname = 'newcompany'); + print ''; + $html->select_contacts($selectedCompany, $selected = '', $htmlname = 'contactid'); + print ''; + select_type_contact($propal, '', 'type','external'); + print '
 
'.$langs->trans("Source").''.$langs->trans("Company").''.$langs->trans("Contacts").''.$langs->trans("ContactType").''.$langs->trans("Status").' 
'; + if ($tab[$i]['source']=='internal') print $langs->trans("Internal"); + if ($tab[$i]['source']=='external') print $langs->trans("External"); + print ''; + if ($tab[$i]['socid'] > 0) + { + print ''; + print img_object($langs->trans("ShowCompany"),"company").' '.$societe->get_nom($tab[$i]['socid']); + print ''; + } + if ($tab[$i]['socid'] < 0) + { + print $conf->global->MAIN_INFO_SOCIETE_NOM; + } + if (! $tab[$i]['socid']) + { + print ' '; + } + print ''; + if ($tab[$i]['source']=='internal') + { + print ''; + print img_object($langs->trans("ShowUser"),"user").' '.$tab[$i]['nom'].''; + } + if ($tab[$i]['source']=='external') + { + print ''; + print img_object($langs->trans("ShowContact"),"contact").' '.$tab[$i]['nom'].''; + } + print ''.$tab[$i]['libelle'].''; + // Activation desativation du contact + if ($propal->statut >= 0) + print ''; + print img_statut($tab[$i]['status']); + + if ($propal->statut >= 0) + print ''; + print ''; + if ($propal->statut < 5 && $user->rights->propale->creer) + { + print ' '; + print ''; + print img_delete(); + print ''; + } + print '
"; + } + else + { + // Contrat non trouv + print "Contrat inexistant ou accés refusé"; + } +} + +$db->close(); + +llxFooter('$Date$'); +?> \ No newline at end of file