Index: contrat.class.php =================================================================== RCS file: /cvsroot/dolibarr/dolibarr/htdocs/contrat/contrat.class.php,v retrieving revision 1.37 diff -r1.37 contrat.class.php 692a693,879 > /* gestion des contacts d'un contrat */ > > /** > * > * \brief Ajoute un contact associé au contrat > * \param fk_socpeople Id du contact a ajouter. > * \param nature description du contact > * \return int <0 si erreur, >0 si ok > */ > function add_contact($fk_socpeople, $nature) > { > > if ($fk_socpeople <= 0 > || $this->societe->contact_get_email($fk_socpeople) == "" ) > { > // le contact n'existe pas ou est invalide > return -1; > } > > $lNature = addslashes(trim($nature)); > $datecreate = mktime(); > > // Insertion dans la base > $sql = "INSERT INTO ".MAIN_DB_PREFIX."contrat_contact"; > $sql.= " (fk_contrat, fk_socpeople, datecreate, statut, nature) "; > $sql.= " VALUES ($this->id, $fk_socpeople , " ; > $sql.= $this->db->pdate(time()); > $sql.= ", 5, '". $lNature . "' "; > $sql.= ");"; > > // Retour > if ( $this->db->query($sql) ) > { > return 0; > } > else > { > dolibarr_print_error($this->db); > return -1; > } > } > > /** > * > * \brief Misea jour du contact associé au contrat > * \param rowid La reference du lien contant contact. > * \param statut Le nouveau statut > * \param nature description du contact > * \return int <0 si erreur, >0 si ok > */ > function update_contact($rowid, $statut, $nature) > { > > $lNature = addslashes(trim($nature)); > > // Insertion dans la base > $sql = "UPDATE ".MAIN_DB_PREFIX."contrat_contact set "; > $sql.= " statut = $statut ,"; > $sql.= " nature = '" . $lNature ."'"; > $sql.= " where rowid = $rowid ;"; > // Retour > if ( $this->db->query($sql) ) > { > return 0; > } > else > { > dolibarr_print_error($this->db); > return -1; > } > } > > /** > * \brief Supprime une ligne de contact de contrat > * \param idligne La reference du contact > * \return statur 0 OK, -1 erreur > */ > function delete_contact($idligne) > { > > $sql = "DELETE FROM ".MAIN_DB_PREFIX."contrat_contact WHERE rowid =".$idligne; > > if ($this->db->query($sql) ) { > > return 0; > } > else > { > return 1; > } > } > > /** > * \brief Récupère les lignes de contact du contrat > * \param statut Statut des lignes detail à récupérer > * \return array Tableau des rowid des contacts > */ > function liste_contact($statut=-1) > { > $tab=array(); > > $sql = "SELECT cd.rowid"; > $sql.= " FROM ".MAIN_DB_PREFIX."contrat_contact cd , ".MAIN_DB_PREFIX."socpeople sp"; > $sql.= " WHERE fk_contrat =".$this->id; > $sql.= " and cd.fk_socpeople = sp.idp"; > if ($statut >= 0) $sql.= " AND statut = '$statut'"; > $sql.=" order by sp.name asc ;"; > > $resql=$this->db->query($sql); > if ($resql) > { > $num=$this->db->num_rows($result); > $i=0; > while ($i < $num) > { > $obj = $this->db->fetch_object($result); > $tab[$i]=$obj->rowid; > $i++; > } > return $tab; > } > else > { > $this->error=$this->db->error(); > print "erreur ". $this->error; > return -1; > } > } > > /** > * \brief Le détail d'un contact > * \param rowid L'identifiant du contant de contrat > * \return object L'objet de construit par DoliDb.fetch_object > */ > function detail_contact($rowid) > { > > $sql = "SELECT datecreate, statut, nature, fk_socpeople"; > $sql.= " FROM ".MAIN_DB_PREFIX."contrat_contact"; > $sql.= " WHERE rowid =".$rowid.";"; > > $resql=$this->db->query($sql); > if ($resql) > { > $obj = $this->db->fetch_object($result); > > return $obj; > } > else > { > $this->error=$this->db->error(); > return null; > } > } > > /** > * \brief La liste des valeurs possibles de nature de contats > * > * \return array La liste des natures > */ > function liste_nature_contact() > { > $tab = array(); > > $sql = "SELECT distinct nature"; > $sql.= " FROM ".MAIN_DB_PREFIX."contrat_contact"; > $sql.= " order by nature;"; > > $resql=$this->db->query($sql); > if ($resql) > { > $num=$this->db->num_rows($result); > $i=0; > while ($i < $num) > { > $obj = $this->db->fetch_object($result); > $tab[$i]=$obj->nature; > $i++; > } > return $tab; > } > else > { > $this->error=$this->db->error(); > return null; > } > } Index: fiche.php =================================================================== RCS file: /cvsroot/dolibarr/dolibarr/htdocs/contrat/fiche.php,v retrieving revision 1.48 diff -r1.48 fiche.php 19c19 < * $Id: fiche.php,v 1.48 2005/08/20 18:04:15 eldy Exp $ --- > * $Id: fiche.php,v 1.49 2005/08/25 20:27:18 eldy Exp $ 28c28 < \version $Revision: 1.48 $ --- > \version $Revision: 1.49 $ 33,34c33,34 < if ($conf->propal->enabled) require_once("../propal.class.php"); < if ($conf->contrat->enabled) require_once (DOL_DOCUMENT_ROOT."/contrat/contrat.class.php"); --- > if ($conf->propal->enabled) require_once(DOL_DOCUMENT_ROOT."/propal.class.php"); > if ($conf->contrat->enabled) require_once(DOL_DOCUMENT_ROOT."/contrat/contrat.class.php"); 470c470,474 < --- > > $head[$h][0] = DOL_URL_ROOT.'/contrat/contact.php?id='.$contrat->id; > $head[$h][1] = $langs->trans("Contacts"); > $h++; > Index: info.php =================================================================== RCS file: /cvsroot/dolibarr/dolibarr/htdocs/contrat/info.php,v retrieving revision 1.2 diff -r1.2 info.php 60a61,64 > $head[$h][0] = DOL_URL_ROOT.'/contrat/concat.php?id='.$contrat->id; > $head[$h][1] = $langs->trans("Contacts"); > $h++; > Index: contact.php =================================================================== RCS file: contact.php diff -N contact.php 0a1,426 > > > /* Copyright (C) 2005 Patrick Rouillon > * > * 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/contrat/contact.php > \ingroup contrat > \brief Gestion des contacts des contrats > \version $Revision: $ > */ > > require ("./pre.inc.php"); > > if ($conf->contrat->enabled) > require_once (DOL_DOCUMENT_ROOT."/contrat/contrat.class.php"); > require_once ("../contact.class.php"); > > $langs->load("contracts"); > // $langs->load("orders"); > $langs->load("companies"); > > $user->getrights('contrat'); > > if (!$user->rights->contrat->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($contrat, $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 = $contrat->db->query($sql); > if ($resql) > { > $javaScript = "window.location='./contact.php?id=".$contrat->id."&".$htmlname."=' + form.".$htmlname.".options[form.".$htmlname.".selectedIndex].value;"; > print '\n"; > return $firstCompany; > } else > { > dolibarr_print_error($contrat->db); > } > } > > /** > * > */ > function select_nature_contact($contrat, $defValue, $htmlname = 'nature') > { > $lesNatures = $contrat->liste_nature_contact(); > print ''; > 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->contrat->creer) > { > $result = 0; > $contrat = new Contrat($db); > $result = $contrat->fetch($_GET["id"]); > if ($_POST["id"] > 0) > { > $result = $contrat->add_contact($_POST["contactid"], $_POST["newnature"]); > } > > if ($result >= 0) > { > Header("Location: contact.php?id=".$contrat->id); > exit; > } else > { > $mesg = '
'.$contrat->error.'
'; > } > } > // modification d'un contact. On enregistre la nature > if ($_POST["action"] == 'updateligne' && $user->rights->contrat->creer) > { > $contrat = new Contrat($db); > if ($contrat->fetch($_GET["id"])) > { > $contact = $contrat->detail_contact($_POST["elrowid"]); > $nature = $_POST["nature"]; > $statut = $contact->statut; > > $result = $contrat->update_contact($_POST["elrowid"], $statut, $nature); > 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->contrat->creer) > { > $contrat = new Contrat($db); > if ($contrat->fetch($_GET["id"])) > { > $contact = $contrat->detail_contact($_GET["ligne"]); > $nature = $contact->nature; > $statut = ($contact->statut == 4) ? 5 : 4; > > $result = $contrat->update_contact($_GET["ligne"], $statut, $nature); > if ($result >= 0) > { > $db->commit(); > } else > { > dolibarr_print_error($db, "result=$result"); > $db->rollback(); > } > } else > { > dolibarr_print_error($db); > } > } > > if ($_GET["action"] == 'deleteline' && $user->rights->contrat->creer) > { > $contrat = new Contrat($db); > $contrat->fetch($_GET["id"]); > $result = $contrat->delete_contact($_GET["lineid"]); > > if ($result >= 0) > { > Header("Location: contact.php?id=".$contrat->id); > exit; > } > } > > llxHeader('', $langs->trans("ContractCard"), "Contrat"); > > $html = new Form($db); > > /* *************************************************************************** */ > /* */ > /* Mode vue et edition */ > /* */ > /* *************************************************************************** */ > $id = $_GET["id"]; > if ($id > 0) > { > $contrat = New Contrat($db); > if ($contrat->fetch($id) > 0) > { > if ($mesg) > print $mesg; > > $h = 0; > $head[$h][0] = DOL_URL_ROOT.'/contrat/fiche.php?id='.$contrat->id; > $head[$h][1] = $langs->trans("ContractCard"); > $h ++; > > $head[$h][0] = DOL_URL_ROOT.'/contrat/info.php?id='.$contrat->id; > $head[$h][1] = $langs->trans("Info"); > $h ++; > > $head[$h][0] = DOL_URL_ROOT.'/contrat/contact.php?id='.$contrat->id; > $head[$h][1] = $langs->trans("Contacts"); > $hselected = $h; > $h ++; > > dolibarr_fiche_head($head, $hselected, $langs->trans("Contract").': '.$contrat->id); > > /* > * Contrat > */ > print ''; > > // Reference du contrat > print '"; > > // Customer > print ""; > print ''; > > print "
'.$langs->trans("Ref").''; > print $contrat->ref; > print "
".$langs->trans("Customer")."'; > print ''.$contrat->societe->nom.'
"; > /* > * Lignes de contacts > */ > echo '
'; > > $tab = $contrat->liste_contact(); > > $num = ($tab == null) ? 0 : count($tab); > if ($tab != null && $num > 0) > { > $i = 0; > $total = 0; > > print ''; > print ''; > print ''; > > print ''; > print ''; > print "\n"; > > $var = true; > $person = new Contact($db); > $societe = new Societe($db); > > while ($i < $num) > { > $objp = $contrat->detail_contact($tab[$i]); > // detail du contact > $person->fetch($objp->fk_socpeople); > $var = !$var; // flip flop lines > > if ($_GET["action"] != 'editline' || $_GET["rowid"] != $tab[$i]) > { > print ''; > print ''; > print ''; > > // Description > print ''; > // Statut > print ''; > > // Icon update et delete (statut contrat 0=brouillon,1=validé,2=fermé) > print ''; > > print "\n"; > > } > // mode edition de une ligne ligne (editline) > // on ne change pas le contact. Seulement la nature > else > { > > print ""; > print ''; > print ''; > // Ligne carac > print ""; > > print ''; > print ''; > // Description > print '"; > // Statut > print ''; > > // Icon update et delete (statut contrat 0=brouillon,1=validé,2=fermé) > print ''; > > print ''."\n"; > print "\n"; > } > $i ++; > } > $db->free($result); > } else > { > dolibarr_print_error($db); > } > > /* > * Ajouter une ligne de contact > * uniquement sur les contats en creation. > * En pas en mode modification de ligne > */ > if ($_GET["action"] != 'editline' && $user->rights->contrat->creer && $contrat->statut == 0) > { > print ''; > print ''; > print ''; > print ''; > print ''; > print "\n"; > > $var = false; > > print ''; > print ''; > print ''; > > print ""; > print ''; > > print ''; > print ''; > $var = !$var; > print "\n"; > > print ''; > print ''; > > print ""; > > } > print "
'.$langs->trans("Societe").''.$langs->trans("Contacts").''.$langs->trans("nature").''.$langs->trans("Status").'
'.$societe->get_nom($person->socid).''; > print ''; > print $person->fullname.''; > print ''.$objp->nature.''; > // Activation descativation du contact > if ($contrat->statut >= 0) > print ''; > print img_statut($objp->statut); > if ($contrat->statut > 0) > print ''; > print ''; > if ($contrat->statut != 2 && $user->rights->contrat->creer) > { > print ''; > print img_edit(); > print ''; > } else > { > print ' '; > } > if ($contrat->statut == 0 && $user->rights->contrat->creer) > { > print ' '; > print ''; > print img_delete(); > print ''; > } > print '
'; > print ''; > print $person->fullname.''; > print ''.$societe->get_nom($person->socid).''; > > select_nature_contact($contrat, $objp->nature, 'nature'); > print "'.img_statut($objp->statut).'
'.$langs->trans("Societe").''.$langs->trans("Contacts").''.$langs->trans("nature").'
'; > $selectedCompany = $_GET["newcompany"]; // vide pour la premiere recherche > $selectedCompany = select_societes_for_newconcat($contrat, $selectedCompany, $htmlname = 'newcompany'); > print ''; > $html->select_contacts($selectedCompany, $selected = '', $htmlname = 'contactid'); > print ''; > select_nature_contact($contrat, "", 'newnature'); > print '
"; > /* > * Fin Ajout ligne > */ > > print ''; > > } else > { > // Contrat non trouvé > print "Contrat inexistant ou accés refusé"; > } > } > > $db->close(); > > llxFooter('$Date: $'); > ?>