Fix into user webservices : better error management and country detection

- Avoid errors when creating an user with thirdparty
- Add country detection in webservices when country_code is filled
This commit is contained in:
jfefe 2014-02-04 17:53:41 +01:00
parent 408a028320
commit 1ae87887fb

View File

@ -181,7 +181,8 @@ $thirdpartywithuser_fields = array(
'tva_intra' => array('name'=>'tva_intra','type'=>'xsd:string'), 'tva_intra' => array('name'=>'tva_intra','type'=>'xsd:string'),
// For user // For user
'login' => array('name'=>'login','type'=>'xsd:string'), 'login' => array('name'=>'login','type'=>'xsd:string'),
'password' => array('name'=>'password','type'=>'xsd:string') 'password' => array('name'=>'password','type'=>'xsd:string'),
'group_id' => array('name'=>'group_id','type'=>'xsd:string')
); );
//Retreive all extrafield for contact //Retreive all extrafield for contact
@ -523,6 +524,7 @@ function createUserFromThirdparty($authentication,$thirdpartywithuser)
} }
else else
{ {
$db->begin();
/* /*
* Company creation * Company creation
*/ */
@ -533,6 +535,25 @@ function createUserFromThirdparty($authentication,$thirdpartywithuser)
$thirdparty->town=$thirdpartywithuser['town']; $thirdparty->town=$thirdpartywithuser['town'];
$thirdparty->country_id=$thirdpartywithuser['country_id']; $thirdparty->country_id=$thirdpartywithuser['country_id'];
$thirdparty->country_code=$thirdpartywithuser['country_code']; $thirdparty->country_code=$thirdpartywithuser['country_code'];
// find the country id by code
$langs->load("dict");
$sql = "SELECT rowid";
$sql.= " FROM ".MAIN_DB_PREFIX."c_pays";
$sql.= " WHERE active = 1";
$sql.= " AND code='".$thirdparty->country_code."'";
$resql=$db->query($sql);
if ($resql)
{
$num = $db->num_rows($resql);
if ($num)
{
$obj = $db->fetch_object($resql);
$thirdparty->country_id = $obj->rowid;
}
}
$thirdparty->phone=$thirdpartywithuser['phone']; $thirdparty->phone=$thirdpartywithuser['phone'];
$thirdparty->fax=$thirdpartywithuser['fax']; $thirdparty->fax=$thirdpartywithuser['fax'];
$thirdparty->email=$thirdpartywithuser['email']; $thirdparty->email=$thirdpartywithuser['email'];
@ -570,6 +591,9 @@ function createUserFromThirdparty($authentication,$thirdpartywithuser)
$contact->phone_pro = $thirdparty->phone; $contact->phone_pro = $thirdparty->phone;
$contact->phone_mobile = $thirdpartywithuser['phone_mobile']; $contact->phone_mobile = $thirdpartywithuser['phone_mobile'];
$contact->fax = $thirdparty->fax; $contact->fax = $thirdparty->fax;
$contact->statut = 1;
$contact->country_id = $thirdparty->country_id;
$contact->country_code = $thirdparty->country_code;
//Retreive all extrafield for thirdsparty //Retreive all extrafield for thirdsparty
// fetch optionals attributes and labels // fetch optionals attributes and labels
@ -591,33 +615,29 @@ function createUserFromThirdparty($authentication,$thirdpartywithuser)
* *
*/ */
$edituser = new User($db); $edituser = new User($db);
$db->begin();
$id = $edituser->create_from_contact($contact,$thirdpartywithuser["login"]); $id = $edituser->create_from_contact($contact,$thirdpartywithuser["login"]);
if ($id > 0) if ($id > 0)
{ {
$edituser->setPassword($user,trim($thirdpartywithuser['password'])); $edituser->setPassword($fuser,trim($thirdpartywithuser['password']));
if($thirdpartywithuser['group_id'] > 0 )
$edituser->SetInGroup($thirdpartywithuser['group_id'],$conf->entity);
} }
else else
{ {
$error++; $error++;
$errorcode='NOT_CREATE'; $errorlabel='Object not create : no contact found or create'; $errorcode='NOT_CREATE'; $errorlabel='Object not create : '.$edituser->error;
} }
if (! $error && $id > 0)
{
$db->commit();
} }
else else
{ {
$db->rollback();
$error++; $error++;
$errorcode='NOT_CREATE'; $errorlabel='Contact not create'; $errorcode='NOT_CREATE'; $errorlabel='Object not create : '.$contact->error;
}
} }
if(!$error) { if(!$error) {
$db->commit();
$objectresp=array('result'=>array('result_code'=>'OK', 'result_label'=>'SUCCESS'),'id'=>$socid_return); $objectresp=array('result'=>array('result_code'=>'OK', 'result_label'=>'SUCCESS'),'id'=>$socid_return);
$error=0; $error=0;
} }
@ -645,6 +665,7 @@ function createUserFromThirdparty($authentication,$thirdpartywithuser)
if ($error) if ($error)
{ {
$db->rollback();
$objectresp = array( $objectresp = array(
'result'=>array('result_code' => $errorcode, 'result_label' => $errorlabel) 'result'=>array('result_code' => $errorcode, 'result_label' => $errorlabel)
); );