diff --git a/htdocs/comm/propal/note.php b/htdocs/comm/propal/note.php index da6b1150a54..ca8bf2dbe75 100644 --- a/htdocs/comm/propal/note.php +++ b/htdocs/comm/propal/note.php @@ -35,6 +35,7 @@ require_once(DOL_DOCUMENT_ROOT."/lib/propal.lib.php"); $langs->load('propal'); $langs->load('compta'); +$langs->load('bills'); $user->getrights('propale'); if (!$user->rights->propale->lire) diff --git a/htdocs/commande/commande.class.php b/htdocs/commande/commande.class.php index 671003f2b99..7adbfde3875 100644 --- a/htdocs/commande/commande.class.php +++ b/htdocs/commande/commande.class.php @@ -1628,266 +1628,267 @@ class Commande } /** - * \brief Liste les valeurs possibles de type de contacts pour les factures - * \param source 'internal' ou 'external' - * \return array Tableau des types de contacts - */ - function liste_type_contact($source) - { - global $langs; - $element='commande'; - $tab = array(); - - $sql = "SELECT distinct tc.rowid, tc.code, tc.libelle"; - $sql.= " FROM ".MAIN_DB_PREFIX."c_type_contact as tc"; - $sql.= " WHERE element='".$element."'"; - $sql.= " AND source='".$source."'"; - $sql.= " ORDER by tc.code"; - - $resql=$this->db->query($sql); - - if ($resql) - { - $num=$this->db->num_rows($resql); - $i=0; - - while ($i < $num) - { - $obj = $this->db->fetch_object($resql); - $transkey="TypeContact_".$element."_".$source."_".$obj->code; - $libelle_type=($langs->trans($transkey)!=$transkey ? $langs->trans($transkey) : $obj->libelle); - $tab[$obj->rowid]=$libelle_type; - $i++; - } - - return $tab; - } - else - { - $this->error=$this->db->error(); - return null; - } - } - - - /** - * \brief Récupère les lignes de contact de l'objet - * \param statut Statut des lignes detail à récupérer - * \param source Source du contact external (llx_socpeople) ou internal (llx_user) - * \return array Tableau des rowid des contacts - */ - function liste_contact($statut=-1,$source='external') - { - global $langs; - $element='commande'; - $tab=array(); - - $sql = "SELECT ec.rowid, ec.statut, ec.fk_socpeople as id,"; - if ($source == 'internal') $sql.=" '-1' as socid,"; - if ($source == 'external') $sql.=" t.fk_soc as socid,"; - if ($source == 'internal') $sql.=" t.name as nom,"; - if ($source == 'external') $sql.=" t.name as nom,"; - $sql.= "tc.source, tc.element, tc.code, tc.libelle"; - $sql.= " FROM ".MAIN_DB_PREFIX."element_contact ec,"; - if ($source == 'internal') $sql.=" ".MAIN_DB_PREFIX."user t,"; - if ($source == 'external') $sql.=" ".MAIN_DB_PREFIX."socpeople t,"; - $sql.= " ".MAIN_DB_PREFIX."c_type_contact tc"; - $sql.= " WHERE element_id =".$this->id; - $sql.= " AND ec.fk_c_type_contact=tc.rowid"; - $sql.= " AND tc.element='".$element."'"; - if ($source == 'internal') $sql.= " AND tc.source = 'internal'"; - if ($source == 'external') $sql.= " AND tc.source = 'external'"; - $sql.= " AND tc.active=1"; - if ($source == 'internal') $sql.= " AND ec.fk_socpeople = t.rowid"; - if ($source == 'external') $sql.= " AND ec.fk_socpeople = t.idp"; - if ($statut >= 0) $sql.= " AND statut = '$statut'"; - $sql.=" ORDER BY t.name ASC"; - - $resql=$this->db->query($sql); - - if ($resql) - { - $num=$this->db->num_rows($resql); - $i=0; - - while ($i < $num) - { - $obj = $this->db->fetch_object($resql); - $transkey="TypeContact_".$obj->element."_".$obj->source."_".$obj->code; - $libelle_type=($langs->trans($transkey)!=$transkey ? $langs->trans($transkey) : $obj->libelle); - $tab[$i]=array('source'=>$obj->source,'socid'=>$obj->socid,'id'=>$obj->id,'nom'=>$obj->nom,'rowid'=>$obj->rowid,'code'=>$obj->code,'libelle'=>$libelle_type,'status'=>$obj->statut); - $i++; - } - - return $tab; - } - else - { - $this->error=$this->db->error(); - dolibarr_print_error($this->db); - return -1; - } - } - - - /** - * \brief Ajoute un contact associé une commande - * \param fk_socpeople Id du contact a ajouter. - * \param type_contact Type de contact - * \param source extern=Contact externe (llx_socpeople), intern=Contact interne (llx_user) - * \return int <0 si erreur, >0 si ok - */ - function add_contact($fk_socpeople, $type_contact, $source='extern') - { - dolibarr_syslog("Commande::add_contact $fk_socpeople, $type_contact, $source"); - - if ($fk_socpeople <= 0) return -1; - - // Verifie type_contact - if (! $type_contact || ! is_numeric($type_contact)) - { - $this->error="Valeur pour type_contact incorrect"; - return -3; - } - - $datecreate = time(); - - // Insertion dans la base - $sql = "INSERT INTO ".MAIN_DB_PREFIX."element_contact"; - $sql.= " (element_id, fk_socpeople, datecreate, statut, fk_c_type_contact) "; - $sql.= " VALUES (".$this->id.", ".$fk_socpeople." , " ; - $sql.= $this->db->idate($datecreate); - $sql.= ", 4, '". $type_contact . "' "; - $sql.= ")"; - - // Retour - if ( $this->db->query($sql) ) - { - return 1; - } - else - { - $this->error=$this->db->error()." - $sql"; - return -1; - } - } - - - /** - * \brief Supprime une ligne de contact - * \param rowid La reference du contact - * \return statur >0 si ok, <0 si ko - */ - function delete_contact($rowid) - { - $sql = "DELETE FROM ".MAIN_DB_PREFIX."element_contact"; - $sql.= " WHERE rowid =".$rowid; - - if ($this->db->query($sql)) - { - return 1; - } - else - { - return -1; - } - } - - /** - * \brief Le détail d'un contact - * \param rowid L'identifiant du contact - * \return object L'objet construit par DoliDb.fetch_object - */ - function detail_contact($rowid) - { - $element='commande'; - - $sql = "SELECT ec.datecreate, ec.statut, ec.fk_socpeople, ec.fk_c_type_contact,"; - $sql.= " tc.code, tc.libelle, s.fk_soc"; - $sql.= " FROM ".MAIN_DB_PREFIX."element_contact as ec, ".MAIN_DB_PREFIX."c_type_contact as tc, "; - $sql.= " ".MAIN_DB_PREFIX."socpeople as s"; - $sql.= " WHERE ec.rowid =".$rowid; - $sql.= " AND ec.fk_socpeople=s.idp"; - $sql.= " AND ec.fk_c_type_contact=tc.rowid"; - $sql.= " AND tc.element = '".$element."'"; - - $resql=$this->db->query($sql); - if ($resql) - { - $obj = $this->db->fetch_object($resql); - return $obj; - } - else - { - $this->error=$this->db->error(); - dolibarr_print_error($this->db); - return null; - } - } - - /** - * \brief Mise a jour du contact associé à une commande - * \param rowid La reference du lien commande-contact - * \param statut Le nouveau statut - * \param type_contact_id Description du type de contact - * \return int <0 si erreur, =0 si ok - */ + * \brief Liste les valeurs possibles de type de contacts pour les factures + * \param source 'internal' ou 'external' + * \return array Tableau des types de contacts + */ + function liste_type_contact($source) + { + global $langs; + $element='commande'; + $tab = array(); + + $sql = "SELECT distinct tc.rowid, tc.code, tc.libelle"; + $sql.= " FROM ".MAIN_DB_PREFIX."c_type_contact as tc"; + $sql.= " WHERE element='".$element."'"; + $sql.= " AND source='".$source."'"; + $sql.= " ORDER by tc.code"; + + $resql=$this->db->query($sql); + + if ($resql) + { + $num=$this->db->num_rows($resql); + $i=0; + + while ($i < $num) + { + $obj = $this->db->fetch_object($resql); + $transkey="TypeContact_".$element."_".$source."_".$obj->code; + $libelle_type=($langs->trans($transkey)!=$transkey ? $langs->trans($transkey) : $obj->libelle); + $tab[$obj->rowid]=$libelle_type; + $i++; + } + + return $tab; + } + else + { + $this->error=$this->db->error(); + return null; + } + } + + + /** + * \brief Récupère les lignes de contact de l'objet + * \param statut Statut des lignes detail à récupérer + * \param source Source du contact external (llx_socpeople) ou internal (llx_user) + * \return array Tableau des rowid des contacts + */ + function liste_contact($statut=-1,$source='external') + { + global $langs; + $element='commande'; + $tab=array(); + + $sql = "SELECT ec.rowid, ec.statut, ec.fk_socpeople as id,"; + if ($source == 'internal') $sql.=" '-1' as socid,"; + if ($source == 'external') $sql.=" t.fk_soc as socid,"; + if ($source == 'internal') $sql.=" t.name as nom,"; + if ($source == 'external') $sql.=" t.name as nom,"; + $sql.= "tc.source, tc.element, tc.code, tc.libelle"; + $sql.= " FROM ".MAIN_DB_PREFIX."element_contact ec,"; + if ($source == 'internal') $sql.=" ".MAIN_DB_PREFIX."user t,"; + if ($source == 'external') $sql.=" ".MAIN_DB_PREFIX."socpeople t,"; + $sql.= " ".MAIN_DB_PREFIX."c_type_contact tc"; + $sql.= " WHERE element_id =".$this->id; + $sql.= " AND ec.fk_c_type_contact=tc.rowid"; + $sql.= " AND tc.element='".$element."'"; + if ($source == 'internal') $sql.= " AND tc.source = 'internal'"; + if ($source == 'external') $sql.= " AND tc.source = 'external'"; + $sql.= " AND tc.active=1"; + if ($source == 'internal') $sql.= " AND ec.fk_socpeople = t.rowid"; + if ($source == 'external') $sql.= " AND ec.fk_socpeople = t.idp"; + if ($statut >= 0) $sql.= " AND statut = '$statut'"; + $sql.=" ORDER BY t.name ASC"; + + $resql=$this->db->query($sql); + + if ($resql) + { + $num=$this->db->num_rows($resql); + $i=0; + + while ($i < $num) + { + $obj = $this->db->fetch_object($resql); + $transkey="TypeContact_".$obj->element."_".$obj->source."_".$obj->code; + $libelle_type=($langs->trans($transkey)!=$transkey ? $langs->trans($transkey) : $obj->libelle); + $tab[$i]=array('source'=>$obj->source,'socid'=>$obj->socid,'id'=>$obj->id,'nom'=>$obj->nom,'rowid'=>$obj->rowid,'code'=>$obj->code,'libelle'=>$libelle_type,'status'=>$obj->statut); + $i++; + } + + return $tab; + } + else + { + $this->error=$this->db->error(); + dolibarr_print_error($this->db); + return -1; + } + } + + + /** + * \brief Ajoute un contact associé une commande + * \param fk_socpeople Id du contact a ajouter. + * \param type_contact Type de contact + * \param source extern=Contact externe (llx_socpeople), intern=Contact interne (llx_user) + * \return int <0 si erreur, >0 si ok + */ + function add_contact($fk_socpeople, $type_contact, $source='extern') + { + dolibarr_syslog("Commande::add_contact $fk_socpeople, $type_contact, $source"); + + if ($fk_socpeople <= 0) return -1; + + // Verifie type_contact + if (! $type_contact || ! is_numeric($type_contact)) + { + $this->error="Valeur pour type_contact incorrect"; + return -3; + } + + $datecreate = time(); + + // Insertion dans la base + $sql = "INSERT INTO ".MAIN_DB_PREFIX."element_contact"; + $sql.= " (element_id, fk_socpeople, datecreate, statut, fk_c_type_contact) "; + $sql.= " VALUES (".$this->id.", ".$fk_socpeople." , " ; + $sql.= $this->db->idate($datecreate); + $sql.= ", 4, '". $type_contact . "' "; + $sql.= ")"; + + // Retour + if ( $this->db->query($sql) ) + { + return 1; + } + else + { + $this->error=$this->db->error()." - $sql"; + return -1; + } + } + + + /** + * \brief Supprime une ligne de contact + * \param rowid La reference du contact + * \return statur >0 si ok, <0 si ko + */ + function delete_contact($rowid) + { + $sql = "DELETE FROM ".MAIN_DB_PREFIX."element_contact"; + $sql.= " WHERE rowid =".$rowid; + + if ($this->db->query($sql)) + { + return 1; + } + else + { + return -1; + } + } + + /** + * \brief Le détail d'un contact + * \param rowid L'identifiant du contact + * \return object L'objet construit par DoliDb.fetch_object + */ + function detail_contact($rowid) + { + $element='commande'; + + $sql = "SELECT ec.datecreate, ec.statut, ec.fk_socpeople, ec.fk_c_type_contact,"; + $sql.= " tc.code, tc.libelle, s.fk_soc"; + $sql.= " FROM ".MAIN_DB_PREFIX."element_contact as ec, ".MAIN_DB_PREFIX."c_type_contact as tc, "; + $sql.= " ".MAIN_DB_PREFIX."socpeople as s"; + $sql.= " WHERE ec.rowid =".$rowid; + $sql.= " AND ec.fk_socpeople=s.idp"; + $sql.= " AND ec.fk_c_type_contact=tc.rowid"; + $sql.= " AND tc.element = '".$element."'"; + + $resql=$this->db->query($sql); + if ($resql) + { + $obj = $this->db->fetch_object($resql); + return $obj; + } + else + { + $this->error=$this->db->error(); + dolibarr_print_error($this->db); + return null; + } + } + + /** + * \brief Mise a jour du contact associé à une commande + * \param rowid La reference du lien commande-contact + * \param statut Le nouveau statut + * \param type_contact_id Description du type de contact + * \return int <0 si erreur, =0 si ok + */ function update_contact($rowid, $statut, $type_contact_id) { - // Insertion dans la base - $sql = "UPDATE ".MAIN_DB_PREFIX."element_contact set"; - $sql.= " statut = $statut,"; - $sql.= " fk_c_type_contact = '".$type_contact_id ."'"; - $sql.= " where rowid = ".$rowid; - // Retour - if ( $this->db->query($sql) ) - { - return 0; - } - else - { - dolibarr_print_error($this->db); - return -1; - } - } + // Insertion dans la base + $sql = "UPDATE ".MAIN_DB_PREFIX."element_contact set"; + $sql.= " statut = $statut,"; + $sql.= " fk_c_type_contact = '".$type_contact_id ."'"; + $sql.= " where rowid = ".$rowid; + // Retour + if ( $this->db->query($sql) ) + { + return 0; + } + else + { + dolibarr_print_error($this->db); + return -1; + } + } - /** - * - * - * - */ - function getIdContact($source,$code) - { - $element='commande'; // Contact sur la facture - $result=array(); - $i=0; - - $sql = "SELECT ec.fk_socpeople"; - $sql.= " FROM ".MAIN_DB_PREFIX."element_contact as ec, ".MAIN_DB_PREFIX."c_type_contact as tc"; - $sql.= " WHERE ec.element_id = ".$this->id; - $sql.= " AND ec.fk_c_type_contact=tc.rowid"; - $sql.= " AND tc.element = '".$element."'"; - $sql.= " AND tc.source = '".$source."'"; - $sql.= " AND tc.code = '".$code."'"; - - $resql=$this->db->query($sql); - - if ($resql) - { - while ($obj = $this->db->fetch_object($resql)) - { - $result[$i]=$obj->fk_socpeople; - $i++; - } - } - else - { - $this->error=$this->db->error(); - return null; - } - - return $result; - } + /** + * \brief Renvoi tableau des id des contacts d'un type donné + * \param source 'internel' ou 'external' + * \param code Type de contact + * \param array Tableau des id de réponses + */ + function getIdContact($source,$code) + { + $element='commande'; // Contact sur commande + $result=array(); + $i=0; + + $sql = "SELECT ec.fk_socpeople"; + $sql.= " FROM ".MAIN_DB_PREFIX."element_contact as ec, ".MAIN_DB_PREFIX."c_type_contact as tc"; + $sql.= " WHERE ec.element_id = ".$this->id; + $sql.= " AND ec.fk_c_type_contact=tc.rowid"; + $sql.= " AND tc.element = '".$element."'"; + $sql.= " AND tc.source = '".$source."'"; + $sql.= " AND tc.code = '".$code."'"; + + $resql=$this->db->query($sql); + + if ($resql) + { + while ($obj = $this->db->fetch_object($resql)) + { + $result[$i]=$obj->fk_socpeople; + $i++; + } + } + else + { + $this->error=$this->db->error(); + return null; + } + + return $result; + } diff --git a/htdocs/commande/contact.php b/htdocs/commande/contact.php index 8224a2abae8..3a4c8c7269f 100644 --- a/htdocs/commande/contact.php +++ b/htdocs/commande/contact.php @@ -21,9 +21,9 @@ */ /** - \file htdocs/compta/contact.php - \ingroup facture - \brief Onglet de gestion des contacts des factures + \file htdocs/commande/contact.php + \ingroup commande + \brief Onglet de gestion des contacts de commande \version $Revision$ */ diff --git a/htdocs/langs/en_US/propal.lang b/htdocs/langs/en_US/propal.lang index 8df8d0e9565..4847badb9aa 100644 --- a/htdocs/langs/en_US/propal.lang +++ b/htdocs/langs/en_US/propal.lang @@ -5,6 +5,7 @@ ProposalsDraft=Draft commercial proposals ProposalDraft=Draft commercial proposal ProposalsOpened=Opened commercial proposals Prop=Commercial proposals +ProposalContact=Proposal contact NewProp=New commercial proposal NewProposal=New commercial proposal NewPropal=New proposal diff --git a/htdocs/langs/fr_FR/propal.lang b/htdocs/langs/fr_FR/propal.lang index 55822cfee0d..95e5f5cf480 100644 --- a/htdocs/langs/fr_FR/propal.lang +++ b/htdocs/langs/fr_FR/propal.lang @@ -5,6 +5,7 @@ ProposalsDraft=Propositions commerciales brouillons ProposalDraft=Proposition commerciale brouillon Prop=Propositions commerc. ProposalsOpened=Propositions commerciales ouvertes +ProposalContact=Contact proposition NewProp=Nouvelle proposition commerciale NewProposal=Nouvelle proposition commerciale NewPropal=Nouvelle proposition diff --git a/htdocs/lib/propal.lib.php b/htdocs/lib/propal.lib.php index 8b89a0bc806..e725b27fac3 100644 --- a/htdocs/lib/propal.lib.php +++ b/htdocs/lib/propal.lib.php @@ -55,6 +55,11 @@ function propal_prepare_head($propal) $h++; } + $head[$h][0] = DOL_URL_ROOT.'/comm/propal/contact.php?propalid='.$propal->id; + $head[$h][1] = $langs->trans('ProposalContact'); + $head[$h][2] = 'contact'; + $h++; + $head[$h][0] = DOL_URL_ROOT.'/comm/propal/note.php?propalid='.$propal->id; $head[$h][1] = $langs->trans('Note'); $head[$h][2] = 'note'; diff --git a/htdocs/propal.class.php b/htdocs/propal.class.php index 9fa753d4624..56ecaabdb57 100644 --- a/htdocs/propal.class.php +++ b/htdocs/propal.class.php @@ -349,6 +349,270 @@ class Propal } + /** + * \brief Liste les valeurs possibles de type de contacts pour les factures + * \param source 'internal' ou 'external' + * \return array Tableau des types de contacts + */ + function liste_type_contact($source) + { + global $langs; + $element='propal'; + $tab = array(); + + $sql = "SELECT distinct tc.rowid, tc.code, tc.libelle"; + $sql.= " FROM ".MAIN_DB_PREFIX."c_type_contact as tc"; + $sql.= " WHERE element='".$element."'"; + $sql.= " AND source='".$source."'"; + $sql.= " ORDER by tc.code"; + + $resql=$this->db->query($sql); + + if ($resql) + { + $num=$this->db->num_rows($resql); + $i=0; + + while ($i < $num) + { + $obj = $this->db->fetch_object($resql); + $transkey="TypeContact_".$element."_".$source."_".$obj->code; + $libelle_type=($langs->trans($transkey)!=$transkey ? $langs->trans($transkey) : $obj->libelle); + $tab[$obj->rowid]=$libelle_type; + $i++; + } + + return $tab; + } + else + { + $this->error=$this->db->error(); + return null; + } + } + + + /** + * \brief Récupère les lignes de contact de l'objet + * \param statut Statut des lignes detail à récupérer + * \param source Source du contact external (llx_socpeople) ou internal (llx_user) + * \return array Tableau des rowid des contacts + */ + function liste_contact($statut=-1,$source='external') + { + global $langs; + $element='propal'; + $tab=array(); + + $sql = "SELECT ec.rowid, ec.statut, ec.fk_socpeople as id,"; + if ($source == 'internal') $sql.=" '-1' as socid,"; + if ($source == 'external') $sql.=" t.fk_soc as socid,"; + if ($source == 'internal') $sql.=" t.name as nom,"; + if ($source == 'external') $sql.=" t.name as nom,"; + $sql.= "tc.source, tc.element, tc.code, tc.libelle"; + $sql.= " FROM ".MAIN_DB_PREFIX."element_contact ec,"; + if ($source == 'internal') $sql.=" ".MAIN_DB_PREFIX."user t,"; + if ($source == 'external') $sql.=" ".MAIN_DB_PREFIX."socpeople t,"; + $sql.= " ".MAIN_DB_PREFIX."c_type_contact tc"; + $sql.= " WHERE element_id =".$this->id; + $sql.= " AND ec.fk_c_type_contact=tc.rowid"; + $sql.= " AND tc.element='".$element."'"; + if ($source == 'internal') $sql.= " AND tc.source = 'internal'"; + if ($source == 'external') $sql.= " AND tc.source = 'external'"; + $sql.= " AND tc.active=1"; + if ($source == 'internal') $sql.= " AND ec.fk_socpeople = t.rowid"; + if ($source == 'external') $sql.= " AND ec.fk_socpeople = t.idp"; + if ($statut >= 0) $sql.= " AND statut = '$statut'"; + $sql.=" ORDER BY t.name ASC"; + + $resql=$this->db->query($sql); + + if ($resql) + { + $num=$this->db->num_rows($resql); + $i=0; + + while ($i < $num) + { + $obj = $this->db->fetch_object($resql); + $transkey="TypeContact_".$obj->element."_".$obj->source."_".$obj->code; + $libelle_type=($langs->trans($transkey)!=$transkey ? $langs->trans($transkey) : $obj->libelle); + $tab[$i]=array('source'=>$obj->source,'socid'=>$obj->socid,'id'=>$obj->id,'nom'=>$obj->nom,'rowid'=>$obj->rowid,'code'=>$obj->code,'libelle'=>$libelle_type,'status'=>$obj->statut); + $i++; + } + + return $tab; + } + else + { + $this->error=$this->db->error(); + dolibarr_print_error($this->db); + return -1; + } + } + + + /** + * \brief Ajoute un contact associé une commande + * \param fk_socpeople Id du contact a ajouter. + * \param type_contact Type de contact + * \param source extern=Contact externe (llx_socpeople), intern=Contact interne (llx_user) + * \return int <0 si erreur, >0 si ok + */ + function add_contact($fk_socpeople, $type_contact, $source='extern') + { + dolibarr_syslog("Commande::add_contact $fk_socpeople, $type_contact, $source"); + + if ($fk_socpeople <= 0) return -1; + + // Verifie type_contact + if (! $type_contact || ! is_numeric($type_contact)) + { + $this->error="Valeur pour type_contact incorrect"; + return -3; + } + + $datecreate = time(); + + // Insertion dans la base + $sql = "INSERT INTO ".MAIN_DB_PREFIX."element_contact"; + $sql.= " (element_id, fk_socpeople, datecreate, statut, fk_c_type_contact) "; + $sql.= " VALUES (".$this->id.", ".$fk_socpeople." , " ; + $sql.= $this->db->idate($datecreate); + $sql.= ", 4, '". $type_contact . "' "; + $sql.= ")"; + + // Retour + if ( $this->db->query($sql) ) + { + return 1; + } + else + { + $this->error=$this->db->error()." - $sql"; + return -1; + } + } + + + /** + * \brief Supprime une ligne de contact + * \param rowid La reference du contact + * \return statur >0 si ok, <0 si ko + */ + function delete_contact($rowid) + { + $sql = "DELETE FROM ".MAIN_DB_PREFIX."element_contact"; + $sql.= " WHERE rowid =".$rowid; + + if ($this->db->query($sql)) + { + return 1; + } + else + { + return -1; + } + } + + /** + * \brief Le détail d'un contact + * \param rowid L'identifiant du contact + * \return object L'objet construit par DoliDb.fetch_object + */ + function detail_contact($rowid) + { + $element='propal'; + + $sql = "SELECT ec.datecreate, ec.statut, ec.fk_socpeople, ec.fk_c_type_contact,"; + $sql.= " tc.code, tc.libelle, s.fk_soc"; + $sql.= " FROM ".MAIN_DB_PREFIX."element_contact as ec, ".MAIN_DB_PREFIX."c_type_contact as tc, "; + $sql.= " ".MAIN_DB_PREFIX."socpeople as s"; + $sql.= " WHERE ec.rowid =".$rowid; + $sql.= " AND ec.fk_socpeople=s.idp"; + $sql.= " AND ec.fk_c_type_contact=tc.rowid"; + $sql.= " AND tc.element = '".$element."'"; + + $resql=$this->db->query($sql); + if ($resql) + { + $obj = $this->db->fetch_object($resql); + return $obj; + } + else + { + $this->error=$this->db->error(); + dolibarr_print_error($this->db); + return null; + } + } + + /** + * \brief Mise a jour du contact associé à une commande + * \param rowid La reference du lien commande-contact + * \param statut Le nouveau statut + * \param type_contact_id Description du type de contact + * \return int <0 si erreur, =0 si ok + */ + function update_contact($rowid, $statut, $type_contact_id) + { + // Insertion dans la base + $sql = "UPDATE ".MAIN_DB_PREFIX."element_contact set"; + $sql.= " statut = $statut,"; + $sql.= " fk_c_type_contact = '".$type_contact_id ."'"; + $sql.= " where rowid = ".$rowid; + // Retour + if ( $this->db->query($sql) ) + { + return 0; + } + else + { + dolibarr_print_error($this->db); + return -1; + } + } + + /** + * \brief Renvoi tableau des id des contacts d'un type donné + * \param source 'internel' ou 'external' + * \param code Type de contact + * \param array Tableau des id de réponses + */ + function getIdContact($source,$code) + { + $element='propal'; // Contact sur propal + $result=array(); + $i=0; + + $sql = "SELECT ec.fk_socpeople"; + $sql.= " FROM ".MAIN_DB_PREFIX."element_contact as ec, ".MAIN_DB_PREFIX."c_type_contact as tc"; + $sql.= " WHERE ec.element_id = ".$this->id; + $sql.= " AND ec.fk_c_type_contact=tc.rowid"; + $sql.= " AND tc.element = '".$element."'"; + $sql.= " AND tc.source = '".$source."'"; + $sql.= " AND tc.code = '".$code."'"; + + $resql=$this->db->query($sql); + + if ($resql) + { + while ($obj = $this->db->fetch_object($resql)) + { + $result[$i]=$obj->fk_socpeople; + $i++; + } + } + else + { + $this->error=$this->db->error(); + return null; + } + + return $result; + } + + /** * *