Merge pull request #2325 from aaujon/3.6-webservices-contact

FIXED #1824 Add ref_ext for Contact webservices
This commit is contained in:
Laurent Destailleur 2015-02-07 23:47:19 +01:00
commit 6eb0d34032
2 changed files with 19 additions and 12 deletions

View File

@ -140,6 +140,7 @@ class Contact extends CommonObject
$sql.= ", statut"; $sql.= ", statut";
$sql.= ", canvas"; $sql.= ", canvas";
$sql.= ", entity"; $sql.= ", entity";
$sql.= ",ref_ext";
$sql.= ", import_key"; $sql.= ", import_key";
$sql.= ") VALUES ("; $sql.= ") VALUES (";
$sql.= "'".$this->db->idate($now)."',"; $sql.= "'".$this->db->idate($now)."',";
@ -152,6 +153,7 @@ class Contact extends CommonObject
$sql.= " ".$this->statut.","; $sql.= " ".$this->statut.",";
$sql.= " ".(! empty($this->canvas)?"'".$this->canvas."'":"null").","; $sql.= " ".(! empty($this->canvas)?"'".$this->canvas."'":"null").",";
$sql.= " ".$conf->entity.","; $sql.= " ".$conf->entity.",";
$sql.= "'".$this->db->escape($this->ref_ext)."',";
$sql.= " ".(! empty($this->import_key)?"'".$this->import_key."'":"null"); $sql.= " ".(! empty($this->import_key)?"'".$this->import_key."'":"null");
$sql.= ")"; $sql.= ")";
@ -496,10 +498,12 @@ class Contact extends CommonObject
* *
* @param int $id id du contact * @param int $id id du contact
* @param User $user Utilisateur (abonnes aux alertes) qui veut les alertes de ce contact * @param User $user Utilisateur (abonnes aux alertes) qui veut les alertes de ce contact
* @param string $ref_ext External reference, not given by Dolibarr
* @return int -1 if KO, 0 if OK but not found, 1 if OK * @return int -1 if KO, 0 if OK but not found, 1 if OK
*/ */
function fetch($id, $user=0) function fetch($id, $user=0, $ref_ext='')
{ {
dol_syslog(get_class($this)."::fetch ".$this->error, LOG_ERR);
global $langs; global $langs;
$langs->load("companies"); $langs->load("companies");
@ -521,7 +525,8 @@ class Contact extends CommonObject
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_departements as d ON c.fk_departement = d.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."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.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON c.fk_soc = s.rowid";
$sql.= " WHERE c.rowid = ". $id; if ($id) $sql.= " WHERE c.rowid = ". $id;
elseif ($ref_ext) $sql .= " WHERE c.ref_ext = '".$this->db->escape($ref_ext)."'";
dol_syslog(get_class($this)."::fetch sql=".$sql); dol_syslog(get_class($this)."::fetch sql=".$sql);
$resql=$this->db->query($sql); $resql=$this->db->query($sql);

View File

@ -83,6 +83,7 @@ $server->wsdl->addComplexType(
$contact_fields = array( $contact_fields = array(
'id' => array('name'=>'id','type'=>'xsd:string'), 'id' => array('name'=>'id','type'=>'xsd:string'),
'ref_ext' => array('name'=>'ref_ext','type'=>'xsd:string'),
'lastname' => array('name'=>'lastname','type'=>'xsd:string'), 'lastname' => array('name'=>'lastname','type'=>'xsd:string'),
'firstname' => array('name'=>'firstname','type'=>'xsd:string'), 'firstname' => array('name'=>'firstname','type'=>'xsd:string'),
'address' => array('name'=>'address','type'=>'xsd:string'), 'address' => array('name'=>'address','type'=>'xsd:string'),
@ -176,14 +177,14 @@ $styleuse='encoded'; // encoded/literal/literal wrapped
$server->register( $server->register(
'getContact', 'getContact',
// Entry values // Entry values
array('authentication'=>'tns:authentication','id'=>'xsd:string','ref'=>'xsd:string','ref_ext'=>'xsd:string'), array('authentication'=>'tns:authentication','id'=>'xsd:string','ref_ext'=>'xsd:string'),
// Exit values // Exit values
array('result'=>'tns:result','contact'=>'tns:contact'), array('result'=>'tns:result','contact'=>'tns:contact'),
$ns, $ns,
$ns.'#getContact', $ns.'#getContact',
$styledoc, $styledoc,
$styleuse, $styleuse,
'WS to get contact' 'WS to get a contact'
); );
// Register WSDL // Register WSDL
@ -233,15 +234,14 @@ $server->register(
* *
* @param array $authentication Array of authentication information * @param array $authentication Array of authentication information
* @param int $id Id of object * @param int $id Id of object
* @param string $ref Ref of object * @param string $ref_ext Ref external of object
* @param ref_ext $ref_ext Ref external of object
* @return mixed * @return mixed
*/ */
function getContact($authentication,$id,$ref='',$ref_ext='') function getContact($authentication,$id,$ref_ext)
{ {
global $db,$conf,$langs; global $db,$conf,$langs;
dol_syslog("Function: getContact login=".$authentication['login']." id=".$id." ref=".$ref." ref_ext=".$ref_ext); dol_syslog("Function: getContact login=".$authentication['login']." id=".$id." ref_ext=".$ref_ext);
if ($authentication['entity']) $conf->entity=$authentication['entity']; if ($authentication['entity']) $conf->entity=$authentication['entity'];
@ -251,10 +251,10 @@ function getContact($authentication,$id,$ref='',$ref_ext='')
$error=0; $error=0;
$fuser=check_authentication($authentication,$error,$errorcode,$errorlabel); $fuser=check_authentication($authentication,$error,$errorcode,$errorlabel);
// Check parameters // Check parameters
if (! $error && (($id && $ref) || ($id && $ref_ext) || ($ref && $ref_ext))) if (! $error && ($id && $ref_ext))
{ {
$error++; $error++;
$errorcode='BAD_PARAMETERS'; $errorlabel="Parameter id, ref and ref_ext can't be both provided. You must choose one or other but not both."; $errorcode='BAD_PARAMETERS'; $errorlabel="Parameter id and ref_ext can't be both provided. You must choose one or other but not both.";
} }
if (! $error) if (! $error)
@ -262,7 +262,7 @@ function getContact($authentication,$id,$ref='',$ref_ext='')
$fuser->getrights(); $fuser->getrights();
$contact=new Contact($db); $contact=new Contact($db);
$result=$contact->fetch($id,$ref,$ref_ext); $result=$contact->fetch($id,0,$ref_ext);
if ($result > 0) if ($result > 0)
{ {
// Only internal user who have contact read permission // Only internal user who have contact read permission
@ -273,6 +273,7 @@ function getContact($authentication,$id,$ref='',$ref_ext='')
){ ){
$contact_result_fields =array( $contact_result_fields =array(
'id' => $contact->id, 'id' => $contact->id,
'ref_ext' => $contact->ref_ext,
'lastname' => $contact->lastname, 'lastname' => $contact->lastname,
'firstname' => $contact->firstname, 'firstname' => $contact->firstname,
'address' => $contact->address, 'address' => $contact->address,
@ -383,6 +384,7 @@ function createContact($authentication,$contact)
$newobject=new Contact($db); $newobject=new Contact($db);
$newobject->id=$contact['id']; $newobject->id=$contact['id'];
$newobject->ref_ext=$contact['ref_ext'];
$newobject->civility_id=$contact['civility_id']; $newobject->civility_id=$contact['civility_id'];
$newobject->lastname=$contact['lastname']; $newobject->lastname=$contact['lastname'];
$newobject->firstname=$contact['firstname']; $newobject->firstname=$contact['firstname'];