diff --git a/htdocs/contact/canvas/actions_contactcard_common.class.php b/htdocs/contact/canvas/actions_contactcard_common.class.php
index cd3d6ff0860db905f3c34fa67a0eb2774f86754f..98e2f1595bd3a96f8c83c9ccd43ec62815796b98 100644
--- a/htdocs/contact/canvas/actions_contactcard_common.class.php
+++ b/htdocs/contact/canvas/actions_contactcard_common.class.php
@@ -261,8 +261,8 @@ class ActionsContactCardCommon
         $this->object->civilite_id			= 	$_POST["civilite_id"];
         $this->object->poste				= 	$_POST["poste"];
         $this->object->address				=	$_POST["address"];
-        $this->object->cp					=	$_POST["zipcode"];
-        $this->object->ville				=	$_POST["town"];
+        $this->object->zip					=	$_POST["zipcode"];
+        $this->object->town					=	$_POST["town"];
         $this->object->fk_pays				=	$_POST["pays_id"]?$_POST["pays_id"]:$mysoc->pays_id;
         $this->object->fk_departement		=	$_POST["departement_id"];
         $this->object->phone_pro			= 	$_POST["phone_pro"];
diff --git a/htdocs/contact/class/contact.class.php b/htdocs/contact/class/contact.class.php
index e9f5f2d4b402a7a2a8d089ff0277304ce0b8a481..d83005134a640eb42c3dfb3bbc49fe051603a2cf 100644
--- a/htdocs/contact/class/contact.class.php
+++ b/htdocs/contact/class/contact.class.php
@@ -46,8 +46,10 @@ class Contact extends CommonObject
 	var $name;
 	var $firstname;
 	var $address;
-	var $cp;
-	var $ville;
+	var $cp;	// TODO deprecated
+	var $zip;
+	var $ville;	// TODO deprecated
+	var $town;
 
 	var $fk_departement;		// Id of department
 	var $departement_code;		// Code of department
@@ -210,8 +212,8 @@ class Contact extends CommonObject
 		$sql .= ", name='".$this->db->escape($this->name)."'";
 		$sql .= ", firstname='".$this->db->escape($this->firstname)."'";
 		$sql .= ", address='".$this->db->escape($this->address)."'";
-		$sql .= ", cp='".$this->db->escape($this->cp)."'";
-		$sql .= ", ville='".$this->db->escape($this->ville)."'";
+		$sql .= ", cp='".$this->db->escape($this->zip)."'";
+		$sql .= ", ville='".$this->db->escape($this->town)."'";
 		$sql .= ", fk_pays=".($this->fk_pays>0?$this->fk_pays:'NULL');
 		$sql .= ", fk_departement=".($this->fk_departement>0?$this->fk_departement:'NULL');
 		$sql .= ", poste='".$this->db->escape($this->poste)."'";
diff --git a/htdocs/contact/fiche.php b/htdocs/contact/fiche.php
index ca90e5b223310c3f0c7ff6be35f1083c338a668c..2695c639b2fccdbac26dec065d16c4962cdb02ae 100644
--- a/htdocs/contact/fiche.php
+++ b/htdocs/contact/fiche.php
@@ -139,25 +139,25 @@ else
 
 	    $db->begin();
 
-		$object->socid        = $_POST["socid"];
-
-		$object->name         = $_POST["name"];
-		$object->firstname    = $_POST["firstname"];
-		$object->civilite_id  = $_POST["civilite_id"];
-		$object->poste        = $_POST["poste"];
-		$object->address      = $_POST["address"];
-		$object->cp           = $_POST["cp"];
-		$object->ville        = $_POST["ville"];
-		$object->fk_pays      = $_POST["pays_id"];
+		$object->socid			= $_POST["socid"];
+
+		$object->name			= $_POST["name"];
+		$object->firstname		= $_POST["firstname"];
+		$object->civilite_id	= $_POST["civilite_id"];
+		$object->poste			= $_POST["poste"];
+		$object->address		= $_POST["address"];
+		$object->zip			= $_POST["zipcode"];
+		$object->town			= $_POST["town"];
+		$object->fk_pays		= $_POST["pays_id"];
 		$object->fk_departement = $_POST["departement_id"];
-		$object->email        = $_POST["email"];
-		$object->phone_pro    = $_POST["phone_pro"];
-		$object->phone_perso  = $_POST["phone_perso"];
-		$object->phone_mobile = $_POST["phone_mobile"];
-		$object->fax          = $_POST["fax"];
-		$object->jabberid     = $_POST["jabberid"];
-		$object->priv         = $_POST["priv"];
-		$object->note         = $_POST["note"];
+		$object->email			= $_POST["email"];
+		$object->phone_pro		= $_POST["phone_pro"];
+		$object->phone_perso	= $_POST["phone_perso"];
+		$object->phone_mobile	= $_POST["phone_mobile"];
+		$object->fax			= $_POST["fax"];
+		$object->jabberid		= $_POST["jabberid"];
+		$object->priv			= $_POST["priv"];
+		$object->note			= $_POST["note"];
 
         // Note: Correct date should be completed with location to have exact GM time of birth.
         $object->birthday = dol_mktime(0,0,0,$_POST["birthdaymonth"],$_POST["birthdayday"],$_POST["birthdayyear"]);
@@ -229,29 +229,29 @@ else
 
 			$object->oldcopy=dol_clone($object);
 
-			$object->old_name      = $_POST["old_name"];
-			$object->old_firstname = $_POST["old_firstname"];
-
-			$object->socid         = $_POST["socid"];
-			$object->name          = $_POST["name"];
-			$object->firstname     = $_POST["firstname"];
-			$object->civilite_id   = $_POST["civilite_id"];
-			$object->poste         = $_POST["poste"];
-
-			$object->address       = $_POST["address"];
-			$object->cp            = $_POST["cp"];
-			$object->ville         = $_POST["ville"];
-			$object->fk_departement= $_POST["departement_id"];
-			$object->fk_pays       = $_POST["pays_id"];
-
-			$object->email         = $_POST["email"];
-			$object->phone_pro     = $_POST["phone_pro"];
-			$object->phone_perso   = $_POST["phone_perso"];
-			$object->phone_mobile  = $_POST["phone_mobile"];
-			$object->fax           = $_POST["fax"];
-			$object->jabberid      = $_POST["jabberid"];
-			$object->priv          = $_POST["priv"];
-			$object->note          = $_POST["note"];
+			$object->old_name		= $_POST["old_name"];
+			$object->old_firstname	= $_POST["old_firstname"];
+
+			$object->socid			= $_POST["socid"];
+			$object->name			= $_POST["name"];
+			$object->firstname		= $_POST["firstname"];
+			$object->civilite_id	= $_POST["civilite_id"];
+			$object->poste			= $_POST["poste"];
+
+			$object->address		= $_POST["address"];
+			$object->zip			= $_POST["zipcode"];
+			$object->town			= $_POST["town"];
+			$object->fk_departement	= $_POST["departement_id"];
+			$object->fk_pays		= $_POST["pays_id"];
+
+			$object->email			= $_POST["email"];
+			$object->phone_pro		= $_POST["phone_pro"];
+			$object->phone_perso	= $_POST["phone_perso"];
+			$object->phone_mobile	= $_POST["phone_mobile"];
+			$object->fax			= $_POST["fax"];
+			$object->jabberid		= $_POST["jabberid"];
+			$object->priv			= $_POST["priv"];
+			$object->note			= $_POST["note"];
 
 			$result = $object->update($_POST["contactid"], $user);
 
@@ -514,10 +514,12 @@ else
 			print '<tr><td>'.$langs->trans("Address").'</td><td colspan="3"><textarea class="flat" name="address" cols="70">'.(isset($_POST["address"])?$_POST["address"]:$object->address).'</textarea></td>';
 
 			// Zip / Town
-			if (($objsoc->typent_code == 'TE_PRIVATE') && dol_strlen(trim($object->cp)) == 0) $object->cp = $objsoc->cp;			// Predefined with third party
-			if (($objsoc->typent_code == 'TE_PRIVATE') && dol_strlen(trim($object->ville)) == 0) $object->ville = $objsoc->ville;	// Predefined with third party
-			print '<tr><td>'.$langs->trans("Zip").' / '.$langs->trans("Town").'</td><td colspan="3"><input name="cp" type="text" size="6" maxlength="80" value="'.(isset($_POST["cp"])?$_POST["cp"]:$object->cp).'">&nbsp;';
-			print '<input name="ville" type="text" size="20" value="'.(isset($_POST["ville"])?$_POST["ville"]:$object->ville).'" maxlength="80"></td></tr>';
+			if (($objsoc->typent_code == 'TE_PRIVATE') && dol_strlen(trim($object->zip)) == 0) $object->zip = $objsoc->zip;			// Predefined with third party
+			if (($objsoc->typent_code == 'TE_PRIVATE') && dol_strlen(trim($object->town)) == 0) $object->town = $objsoc->town;	// Predefined with third party
+			print '<tr><td>'.$langs->trans("Zip").' / '.$langs->trans("Town").'</td><td colspan="3">';
+			print $formcompany->select_ziptown((isset($_POST["zipcode"])?$_POST["zipcode"]:$object->zip),'zipcode',array('town','selectpays_id','departement_id'),6).'&nbsp;';
+			print $formcompany->select_ziptown((isset($_POST["town"])?$_POST["town"]:$object->town),'town',array('zipcode','selectpays_id','departement_id'));
+			print '</td></tr>';
 
 			// Country
 			if (dol_strlen(trim($object->fk_pays)) == 0) $object->fk_pays = $objsoc->pays_id;	// Predefined with third party
@@ -686,8 +688,10 @@ else
 			print '<tr><td>'.$langs->trans("Address").'</td><td colspan="3"><textarea class="flat" name="address" cols="70">'.(isset($_POST["address"])?$_POST["address"]:$object->address).'</textarea></td>';
 
 			// Zip / Town
-			print '<tr><td>'.$langs->trans("Zip").' / '.$langs->trans("Town").'</td><td colspan="3"><input name="cp" type="text" size="6" maxlength="80" value="'.(isset($_POST["cp"])?$_POST["cp"]:$object->cp).'">&nbsp;';
-			print '<input name="ville" type="text" size="20" value="'.(isset($_POST["ville"])?$_POST["ville"]:$object->ville).'" maxlength="80"></td></tr>';
+			print '<tr><td>'.$langs->trans("Zip").' / '.$langs->trans("Town").'</td><td colspan="3">';
+			print $formcompany->select_ziptown((isset($_POST["zipcode"])?$_POST["zipcode"]:$object->zip),'zipcode',array('town','selectpays_id','departement_id'),6).'&nbsp;';
+			print $formcompany->select_ziptown((isset($_POST["town"])?$_POST["town"]:$object->town),'town',array('zipcode','selectpays_id','departement_id'));
+			print '</td></tr>';
 
 			// Country
 			print '<tr><td>'.$langs->trans("Country").'</td><td colspan="3">';