diff --git a/htdocs/contact/class/contact.class.php b/htdocs/contact/class/contact.class.php index 3ab6428336b..ba47b2a2304 100644 --- a/htdocs/contact/class/contact.class.php +++ b/htdocs/contact/class/contact.class.php @@ -22,12 +22,11 @@ */ /** - * \file htdocs/contact/contact.class.php + * \file htdocs/contact/class/contact.class.php * \ingroup societe * \brief File of contacts class * \version $Id$ */ - require_once(DOL_DOCUMENT_ROOT ."/core/class/commonobject.class.php"); @@ -49,8 +48,15 @@ class Contact extends CommonObject var $address; var $cp; var $ville; + + var $fk_departement; // Id of department + var $departement_code; // Code of department + var $departement; // Label of department + var $fk_pays; // Id of country var $pays_code; // Code of country + var $pays; // Label of country + var $socid; // fk_soc var $status; // 0=brouillon, 1=4=actif, 5=inactif @@ -84,7 +90,7 @@ class Contact extends CommonObject } /** - * \brief Add a contact in database + * \brief Add a contact into database * \param user Object user that create * \return int <0 if KO, >0 if OK */ @@ -92,13 +98,15 @@ class Contact extends CommonObject { global $conf, $langs; + $now=dol_now(); + // Clean parameters $this->name=trim($this->name); if (! $this->socid) $this->socid = 0; if (! $this->priv) $this->priv = 0; $sql = "INSERT INTO ".MAIN_DB_PREFIX."socpeople (datec, fk_soc, name, fk_user_creat, priv)"; - $sql.= " VALUES (".$this->db->idate(mktime()).","; + $sql.= " VALUES ('".$this->db->idate($now)."',"; if ($this->socid > 0) $sql.= " ".$this->socid.","; else $sql.= "null,"; $sql.= "'".addslashes($this->name)."',"; @@ -173,6 +181,7 @@ class Contact extends CommonObject $sql .= ", cp='".addslashes($this->cp)."'"; $sql .= ", ville='".addslashes($this->ville)."'"; $sql .= ", fk_pays=".($this->fk_pays>0?$this->fk_pays:'NULL'); + $sql .= ", fk_departement=".($this->fk_departement>0?$this->fk_departement:'NULL'); $sql .= ", poste='".addslashes($this->poste)."'"; $sql .= ", fax='".addslashes($this->fax)."'"; $sql .= ", email='".addslashes($this->email)."'"; @@ -390,6 +399,7 @@ class Contact extends CommonObject $sql = "SELECT c.rowid, c.fk_soc, c.civilite as civilite_id, c.name, c.firstname,"; $sql.= " c.address, c.cp, c.ville,"; $sql.= " c.fk_pays, p.libelle as pays, p.code as pays_code,"; + $sql.= " c.fk_departement, d.nom as departement, d.code_departement as departement_code,"; $sql.= " c.birthday,"; $sql.= " c.poste, c.phone, c.phone_perso, c.phone_mobile, c.fax, c.email, c.jabberid,"; $sql.= " c.priv, c.note, c.default_lang,"; @@ -397,6 +407,7 @@ class Contact extends CommonObject $sql.= " s.nom as socname, s.address as socaddress, s.cp as soccp, s.ville as soccity, s.default_lang as socdefault_lang"; $sql.= " FROM ".MAIN_DB_PREFIX."socpeople as c"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_pays as p ON c.fk_pays = p.rowid"; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_departements as d ON c.fk_departement = d.rowid"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."user as u ON c.rowid = u.fk_socpeople"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON c.fk_soc = s.rowid"; $sql.= " WHERE c.rowid = ". $id; @@ -422,6 +433,11 @@ class Contact extends CommonObject $this->cp = $obj->cp?$obj->cp:$obj->soccp; $this->ville = $obj->ville?$obj->ville:$obj->soccity; $this->fk_pays = $obj->fk_pays; + + $this->fk_departement = $obj->fk_departement; + $this->departement_code = $obj->fk_departement?$obj->departement_code:''; + $this->departement = $obj->fk_departement?$obj->departement:''; + $this->pays_code = $obj->fk_pays?$obj->pays_code:''; $this->pays = ($obj->fk_pays > 0)?$langs->transnoentities("Country".$obj->pays_code):$langs->transnoentities("SelectCountry"); diff --git a/htdocs/contact/fiche.php b/htdocs/contact/fiche.php index 335d901aeef..07bd3cad99c 100644 --- a/htdocs/contact/fiche.php +++ b/htdocs/contact/fiche.php @@ -37,7 +37,7 @@ require_once(DOL_DOCUMENT_ROOT."/core/class/html.formcompany.class.php"); $langs->load("companies"); $langs->load("users"); -$error = array(); +$errors = array(); $socid=$_GET["socid"]?$_GET["socid"]:$_POST["socid"]; // If socid provided by ajax company selector @@ -98,6 +98,7 @@ if ($_POST["action"] == 'add' && $user->rights->societe->contact->creer) $contact->cp = $_POST["cp"]; $contact->ville = $_POST["ville"]; $contact->fk_pays = $_POST["pays_id"]; + $contact->fk_departement = $_POST["departement_id"]; $contact->email = $_POST["email"]; $contact->phone_pro = $_POST["phone_pro"]; $contact->phone_perso = $_POST["phone_perso"]; @@ -110,8 +111,10 @@ if ($_POST["action"] == 'add' && $user->rights->societe->contact->creer) if (! $_POST["name"]) { - array_push($error,$langs->trans("ErrorFieldRequired",$langs->transnoentities("Lastname").' / '.$langs->transnoentities("Label"))); - $_GET["action"]="create"; + array_push($errors,$langs->trans("ErrorFieldRequired",$langs->transnoentities("Lastname").' / '.$langs->transnoentities("Label"))); + $_GET["action"] = 'create'; + $_POST["action"] = 'create'; + $_REQUEST["action"] = 'create'; } if ($_POST["name"]) @@ -124,8 +127,10 @@ if ($_POST["action"] == 'add' && $user->rights->societe->contact->creer) } else { - $error=array($contact->error); + $errors=array($contact->error); $_GET["action"] = 'create'; + $_POST["action"] = 'create'; + $_REQUEST["action"] = 'create'; } } } @@ -152,45 +157,58 @@ if ($_REQUEST["action"] == 'confirm_delete' && $_REQUEST["confirm"] == 'yes' && if ($_POST["action"] == 'update' && ! $_POST["cancel"] && $user->rights->societe->contact->creer) { - $contact = new Contact($db); - $contact->fetch($_POST["contactid"]); - - $contact->oldcopy=dol_clone($contact); - - $contact->old_name = $_POST["old_name"]; - $contact->old_firstname = $_POST["old_firstname"]; - - $contact->socid = $_POST["socid"]; - $contact->name = $_POST["name"]; - $contact->firstname = $_POST["firstname"]; - $contact->civilite_id = $_POST["civilite_id"]; - $contact->poste = $_POST["poste"]; - - $contact->address = $_POST["address"]; - $contact->cp = $_POST["cp"]; - $contact->ville = $_POST["ville"]; - $contact->fk_pays = $_POST["pays_id"]; - - $contact->email = $_POST["email"]; - $contact->phone_pro = $_POST["phone_pro"]; - $contact->phone_perso = $_POST["phone_perso"]; - $contact->phone_mobile = $_POST["phone_mobile"]; - $contact->fax = $_POST["fax"]; - $contact->jabberid = $_POST["jabberid"]; - $contact->priv = $_POST["priv"]; - - $contact->note = $_POST["note"]; - - $result = $contact->update($_POST["contactid"], $user); - - if ($result > 0) + if (empty($_POST["name"])) { - $contact->old_name=''; - $contact->old_firstname=''; + $errors=array($langs->trans("ErrorFieldRequired",$langs->transnoentities("Name").' / '.$langs->transnoentities("Label"))); + $error++; + $_GET["action"] = 'edit'; + $_POST["action"] = 'edit'; + $_REQUEST["action"] = 'edit'; } - else + + if (! sizeof($errors)) { - $error = $contact->error; + $contact = new Contact($db); + $contact->fetch($_POST["contactid"]); + + $contact->oldcopy=dol_clone($contact); + + $contact->old_name = $_POST["old_name"]; + $contact->old_firstname = $_POST["old_firstname"]; + + $contact->socid = $_POST["socid"]; + $contact->name = $_POST["name"]; + $contact->firstname = $_POST["firstname"]; + $contact->civilite_id = $_POST["civilite_id"]; + $contact->poste = $_POST["poste"]; + + $contact->address = $_POST["address"]; + $contact->cp = $_POST["cp"]; + $contact->ville = $_POST["ville"]; + $contact->fk_departement= $_POST["departement_id"]; + $contact->fk_pays = $_POST["pays_id"]; + + $contact->email = $_POST["email"]; + $contact->phone_pro = $_POST["phone_pro"]; + $contact->phone_perso = $_POST["phone_perso"]; + $contact->phone_mobile = $_POST["phone_mobile"]; + $contact->fax = $_POST["fax"]; + $contact->jabberid = $_POST["jabberid"]; + $contact->priv = $_POST["priv"]; + + $contact->note = $_POST["note"]; + + $result = $contact->update($_POST["contactid"], $user); + + if ($result > 0) + { + $contact->old_name=''; + $contact->old_firstname=''; + } + else + { + $mesg=$contact->error; + } } } @@ -204,6 +222,8 @@ llxHeader('',$langs->trans("Contacts"),'EN:Module_Third_Parties|FR:Module_Tiers| $form = new Form($db); $formcompany = new FormCompany($db); +$countrynotdefined=$langs->trans("ErrorSetACountryFirst").' ('.$langs->trans("SeeAbove").')'; + if ($socid) { $objsoc = new Societe($db); @@ -248,23 +268,40 @@ if ($user->rights->societe->contact->supprimer) if ($user->rights->societe->contact->creer) { - if ($_GET["action"] == 'create') + if ($_GET["action"] == 'create' || $_POST["action"] == 'create') { /* * Fiche en mode creation */ + $contact->fk_departement = $_POST["departement_id"]; + + // We set pays_id, pays_code and label for the selected country + $contact->fk_pays=$_POST["pays_id"]?$_POST["pays_id"]:$conf->global->MAIN_INFO_SOCIETE_PAYS; + if ($contact->fk_pays) + { + $sql = "SELECT code, libelle"; + $sql.= " FROM ".MAIN_DB_PREFIX."c_pays"; + $sql.= " WHERE rowid = ".$contact->fk_pays; + $resql=$db->query($sql); + if ($resql) + { + $obj = $db->fetch_object($resql); + } + else + { + dol_print_error($db); + } + $contact->pays_code=$obj->code; + $contact->pays=$obj->libelle; + } + print_fiche_titre($langs->trans("AddContact")); // Affiche les erreurs - if (sizeof($error)) - { - print "