diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index e69ee5dec0a..65ca615ad25 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -54,6 +54,7 @@ class Commande extends CommonObject var $ref; var $ref_client; var $ref_ext; + var $ref_int; var $contactid; var $fk_project; var $statut; // -1=Canceled, 0=Draft, 1=Validated, (2=Accepted/On process not managed for customer orders), 3=Closed (Sent/Received, billed or not) diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index f239b7a4b60..069f8ea54c7 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -540,7 +540,7 @@ if ($action == 'add' && $user->rights->facture->creer) $object->note_public = trim($_POST['note_public']); $object->note = trim($_POST['note']); $object->ref_client = $_POST['ref_client']; - $object->ref_ext = $_POST['ref_ext']; + $object->ref_int = $_POST['ref_int']; $object->modelpdf = $_POST['model']; $object->fk_project = $_POST['projectid']; $object->cond_reglement_id = $_POST['cond_reglement_id']; @@ -586,7 +586,7 @@ if ($action == 'add' && $user->rights->facture->creer) $object->note_public = trim($_POST['note_public']); $object->note = trim($_POST['note']); $object->ref_client = $_POST['ref_client']; - $object->ref_ext = $_POST['ref_ext']; + $object->ref_int = $_POST['ref_int']; $object->modelpdf = $_POST['model']; $object->fk_project = $_POST['projectid']; $object->cond_reglement_id = 0; @@ -634,7 +634,7 @@ if ($action == 'add' && $user->rights->facture->creer) $object->note_public = trim($_POST['note_public']); $object->note = trim($_POST['note']); $object->ref_client = $_POST['ref_client']; - $object->ref_ext = $_POST['ref_ext']; + $object->ref_int = $_POST['ref_int']; $object->modelpdf = $_POST['model']; // Source facture @@ -664,7 +664,7 @@ if ($action == 'add' && $user->rights->facture->creer) $object->note_public = trim($_POST['note_public']); $object->note = trim($_POST['note']); $object->ref_client = $_POST['ref_client']; - $object->ref_ext = $_POST['ref_ext']; + $object->ref_int = $_POST['ref_int']; $object->modelpdf = $_POST['model']; $object->fk_project = $_POST['projectid']; $object->cond_reglement_id = ($_POST['type'] == 3?1:$_POST['cond_reglement_id']); @@ -1442,7 +1442,7 @@ if ($action == 'create') $projectid = (!empty($objectsrc->fk_project)?$object->fk_project:''); $ref_client = (!empty($objectsrc->ref_client)?$object->ref_client:''); - $ref_ext = (!empty($objectsrc->ref_ext)?$object->ref_ext:''); + $ref_int = (!empty($objectsrc->ref_int)?$object->ref_int:''); $soc = $objectsrc->client; $cond_reglement_id = (!empty($objectsrc->cond_reglement_id)?$objectsrc->cond_reglement_id:(!empty($soc->cond_reglement_id)?$soc->cond_reglement_id:1)); @@ -1475,7 +1475,7 @@ if ($action == 'create') print '' ."\n"; print ''; print ''; - print ''; + print ''; print ''; print ''; diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 4c2c26a2603..8160540bafc 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -67,6 +67,7 @@ class Facture extends CommonObject var $ref; var $ref_client; var $ref_ext; + var $ref_int; //! 0=Standard invoice, 1=Replacement invoice, 2=Credit note invoice, 3=Deposit invoice, 4=Proforma invoice var $type; var $amount; @@ -221,7 +222,7 @@ class Facture extends CommonObject $sql.= ", datef"; $sql.= ", note"; $sql.= ", note_public"; - $sql.= ", ref_client, ref_ext"; + $sql.= ", ref_client, ref_int"; $sql.= ", fk_facture_source, fk_user_author, fk_projet"; $sql.= ", fk_cond_reglement, fk_mode_reglement, date_lim_reglement, model_pdf"; $sql.= ")"; @@ -238,7 +239,7 @@ class Facture extends CommonObject $sql.= ",".($this->note?"'".$this->db->escape($this->note)."'":"null"); $sql.= ",".($this->note_public?"'".$this->db->escape($this->note_public)."'":"null"); $sql.= ",".($this->ref_client?"'".$this->db->escape($this->ref_client)."'":"null"); - $sql.= ",".($this->ref_ext?"'".$this->db->escape($this->ref_ext)."'":"null"); + $sql.= ",".($this->ref_int?"'".$this->db->escape($this->ref_int)."'":"null"); $sql.= ",".($this->fk_facture_source?"'".$this->db->escape($this->fk_facture_source)."'":"null"); $sql.= ",".($user->id > 0 ? "'".$user->id."'":"null"); $sql.= ",".($this->fk_project?$this->fk_project:"null"); @@ -646,13 +647,13 @@ class Facture extends CommonObject * @param ref External reference of invoice * @return int >0 if OK, <0 if KO */ - function fetch($rowid, $ref='', $ref_ext='') + function fetch($rowid, $ref='', $ref_ext='', $ref_int='') { global $conf; - if (empty($rowid) && empty($ref) && empty($ref_ext)) return -1; + if (empty($rowid) && empty($ref) && empty($ref_ext) && empty($ref_int)) return -1; - $sql = 'SELECT f.rowid,f.facnumber,f.ref_client,f.type,f.fk_soc,f.amount,f.tva, f.localtax1, f.localtax2, f.total,f.total_ttc,f.remise_percent,f.remise_absolue,f.remise'; + $sql = 'SELECT f.rowid,f.facnumber,f.ref_client,f.ref_ext,f.ref_int,f.type,f.fk_soc,f.amount,f.tva, f.localtax1, f.localtax2, f.total,f.total_ttc,f.remise_percent,f.remise_absolue,f.remise'; $sql.= ', f.datef as df'; $sql.= ', f.date_lim_reglement as dlr'; $sql.= ', f.datec as datec'; @@ -672,6 +673,7 @@ class Facture extends CommonObject if ($rowid) $sql.= " AND f.rowid=".$rowid; if ($ref) $sql.= " AND f.facnumber='".$this->db->escape($ref)."'"; if ($ref_ext) $sql.= " AND f.ref_ext='".$this->db->escape($ref_ext)."'"; + if ($ref_int) $sql.= " AND f.ref_int='".$this->db->escape($ref_int)."'"; dol_syslog("Facture::Fetch sql=".$sql, LOG_DEBUG); $result = $this->db->query($sql); @@ -685,6 +687,7 @@ class Facture extends CommonObject $this->ref = $obj->facnumber; $this->ref_client = $obj->ref_client; $this->ref_ext = $obj->ref_ext; + $this->ref_int = $obj->ref_int; $this->type = $obj->type; $this->date = $this->db->jdate($obj->df); $this->date_creation = $this->db->jdate($obj->datec); diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index a32400b66cd..31b419215e1 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -548,44 +548,20 @@ class CommonObject } /** - * Load object from import key + * Load object from specific field * @param table Table element or element line + * @param field Field selected * @param key Import key * @return int <0 if KO, >0 if OK */ - function fetchObjectFromImportKey($table,$key) + function fetchObjectFrom($table,$field,$key) { global $conf; $result=false; $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX.$table; - $sql.= " WHERE import_key = '".$key."'"; - $sql.= " AND entity = ".$conf->entity; - $resql = $this->db->query($sql); - if ($resql) - { - $row = $this->db->fetch_row($resql); - $result = $this->fetch($row[0]); - } - - return $result; - } - - /** - * Load object from external reference - * @param table Table element or element line - * @param ref External reference - * @return int <0 if KO, >0 if OK - */ - function fetchObjectFromRefExt($table,$ref) - { - global $conf; - - $result=false; - - $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX.$table; - $sql.= " WHERE ref_ext = '".$ref."'"; + $sql.= " WHERE ".$field." = '".$key."'"; $sql.= " AND entity = ".$conf->entity; $resql = $this->db->query($sql); if ($resql) diff --git a/htdocs/install/mysql/migration/3.0.0-3.1.0.sql b/htdocs/install/mysql/migration/3.0.0-3.1.0.sql index c0f5aacf704..e228cf2296e 100755 --- a/htdocs/install/mysql/migration/3.0.0-3.1.0.sql +++ b/htdocs/install/mysql/migration/3.0.0-3.1.0.sql @@ -114,6 +114,10 @@ ALTER TABLE llx_usergroup_user ADD UNIQUE INDEX uk_usergroup_entity (entity,fk_u ALTER TABLE llx_usergroup_user ADD CONSTRAINT fk_usergroup_user_fk_user FOREIGN KEY (fk_user) REFERENCES llx_user (rowid); ALTER TABLE llx_usergroup_user ADD CONSTRAINT fk_usergroup_user_fk_usergroup FOREIGN KEY (fk_usergroup) REFERENCES llx_usergroup (rowid); +ALTER TABLE llx_commande ADD COLUMN ref_int varchar(30) AFTER ref_ext; +ALTER TABLE llx_facture ADD COLUMN ref_int varchar(30) AFTER ref_ext; +ALTER TABLE llx_societe ADD COLUMN ref_int varchar(60) AFTER ref_ext; + --Add Chile data (id pays=67) -- Regions Chile INSERT INTO llx_c_regions (rowid, code_region, fk_pays, cheflieu, tncc, nom, active) VALUES (6701, 6701, 67, NULL, NULL, 'Tarapacá', 1); diff --git a/htdocs/install/mysql/tables/llx_commande.sql b/htdocs/install/mysql/tables/llx_commande.sql index 9e021d79abf..9e105cb7966 100644 --- a/htdocs/install/mysql/tables/llx_commande.sql +++ b/htdocs/install/mysql/tables/llx_commande.sql @@ -31,6 +31,7 @@ create table llx_commande entity integer DEFAULT 1 NOT NULL, -- multi company id ref_ext varchar(30), -- reference into an external system (not used by dolibarr) + ref_int varchar(30), -- reference into an internal system (used by dolibarr) ref_client varchar(30), -- reference for customer date_creation datetime, -- date de creation diff --git a/htdocs/install/mysql/tables/llx_facture.sql b/htdocs/install/mysql/tables/llx_facture.sql index 8c221cb4084..1f528841e31 100644 --- a/htdocs/install/mysql/tables/llx_facture.sql +++ b/htdocs/install/mysql/tables/llx_facture.sql @@ -30,6 +30,7 @@ create table llx_facture entity integer DEFAULT 1 NOT NULL, -- multi company id ref_ext varchar(30), -- reference into an external system (not used by dolibarr) + ref_int varchar(30), -- reference into an internal system (used by dolibarr) ref_client varchar(30), -- reference for customer type smallint DEFAULT 0 NOT NULL, -- type of invoice diff --git a/htdocs/install/mysql/tables/llx_societe.sql b/htdocs/install/mysql/tables/llx_societe.sql index cbe78a6708b..d9f8294e102 100644 --- a/htdocs/install/mysql/tables/llx_societe.sql +++ b/htdocs/install/mysql/tables/llx_societe.sql @@ -35,7 +35,8 @@ create table llx_societe nom varchar(60), -- company reference name entity integer DEFAULT 1 NOT NULL, -- multi company id - ref_ext varchar(60), -- reference into an external system (not used by dolibarr) + ref_ext varchar(60), -- reference into an external system (not used by dolibarr) + ref_int varchar(60), -- reference into an internal system (used by dolibarr) code_client varchar(15), -- code client code_fournisseur varchar(15), -- code founisseur diff --git a/htdocs/paypal/ajaxtransaction.php b/htdocs/paypal/ajaxtransaction.php index fe5c20a21f9..49ee5c54b65 100644 --- a/htdocs/paypal/ajaxtransaction.php +++ b/htdocs/paypal/ajaxtransaction.php @@ -68,7 +68,7 @@ if (isset($_GET['action']) && ! empty($_GET['action']) && isset($_GET['transacti $return_arr = array(); // Create customer if not exists - $ret = $soc->fetchObjectFromRefExt($soc->table_element,$_SESSION[$_GET['transaction_id']]['PAYERID']); + $ret = $soc->fetchObjectFrom($soc->table_element,'ref_int',$_SESSION[$_GET['transaction_id']]['PAYERID']); if ($ret < 0) { // Load object modCodeTiers @@ -82,7 +82,7 @@ if (isset($_GET['action']) && ! empty($_GET['action']) && isset($_GET['transacti $modCodeClient = new $module; // Create customer and return rowid - $soc->ref_ext = $_SESSION[$_GET['transaction_id']]['PAYERID']; + $soc->ref_int = $_SESSION[$_GET['transaction_id']]['PAYERID']; $soc->name = empty($conf->global->MAIN_FIRSTNAME_NAME_POSITION)?trim($_SESSION[$_GET['transaction_id']]['FIRSTNAME'].' '.$_SESSION[$_GET['transaction_id']]['LASTNAME']):trim($_SESSION[$_GET['transaction_id']]['LASTNAME'].' '.$_SESSION[$_GET['transaction_id']]['FIRSTNAME']); $soc->nom_particulier = $_SESSION[$_GET['transaction_id']]['LASTNAME']; $soc->prenom = $_SESSION[$_GET['transaction_id']]['FIRSTNAME']; @@ -159,7 +159,7 @@ if (isset($_GET['action']) && ! empty($_GET['action']) && isset($_GET['transacti $object->fetch_thirdparty(); $object->date = dol_now(); - $object->ref_ext = $_SESSION[$_GET['transaction_id']]['TRANSACTIONID']; + $object->ref_int = $_SESSION[$_GET['transaction_id']]['TRANSACTIONID']; $shipamount = ($_SESSION[$_GET['transaction_id']]['SHIPPINGAMT']?$_SESSION[$_GET['transaction_id']]['SHIPPINGAMT']:$_SESSION[$_GET['transaction_id']]['SHIPAMOUNT']); $object_id = $object->create($user); @@ -238,6 +238,18 @@ if (isset($_GET['action']) && ! empty($_GET['action']) && isset($_GET['transacti $return_arr['error'].= $langs->trans('ErrorUndefinedProductForShippingCost').'
'; } } + + // Add contact customer + if ($contact->id > 0) + { + $result=$object->add_contact($contact->id,'CUSTOMER','external'); + if ($result < 0) + { + $error++; + $langs->load("errors"); + $return_arr['error'].= $langs->trans('ErrorToAddContactCustomer').'
'; + } + } } else { @@ -279,7 +291,7 @@ if (isset($_GET['action']) && ! empty($_GET['action']) && isset($_GET['transacti if (! empty($objects)) $return_arr['element_created'] = true; $soc = new Societe($db); - $ret = $soc->fetchObjectFromRefExt($soc->table_element, $_SESSION[$_GET['transaction_id']]['PAYERID']); + $ret = $soc->fetchObjectFrom($soc->table_element, 'ref_int', $_SESSION[$_GET['transaction_id']]['PAYERID']); $var=true; diff --git a/htdocs/paypal/lib/paypal.lib.php b/htdocs/paypal/lib/paypal.lib.php index a1f1cac097e..4a69acc90ea 100755 --- a/htdocs/paypal/lib/paypal.lib.php +++ b/htdocs/paypal/lib/paypal.lib.php @@ -173,7 +173,7 @@ function getLinkedObjects($transactionID) $classname = ucfirst($subelement); $object = new $classname($db); - $res = $object->fetchObjectFromRefExt($object->table_element, $transactionID); + $res = $object->fetchObjectFrom($object->table_element, 'ref_int', $transactionID); if ($res > 0) $objectArray[$element] = $object; } diff --git a/htdocs/paypal/transaction.php b/htdocs/paypal/transaction.php index 6fc865d9ee2..cef7f1878ec 100644 --- a/htdocs/paypal/transaction.php +++ b/htdocs/paypal/transaction.php @@ -174,7 +174,7 @@ if (empty($conf->global->PAYPAL_API_USER) || empty($conf->global->PAYPAL_API_PAS } else { $.jnotify("trans('PleaseBePatient'); ?>", 500); $( "div #paypal-details" ).dialog( "close" ); - location.href=value; + //location.href=value; } }); }); diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index 259978ecf21..d23b7c936ec 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -129,7 +129,7 @@ class Societe extends CommonObject var $canvas; - var $ref_ext; + var $ref_int; var $import_key; var $logo; @@ -202,12 +202,12 @@ class Societe extends CommonObject if ($result >= 0) { - $sql = "INSERT INTO ".MAIN_DB_PREFIX."societe (nom, entity, datec, datea, fk_user_creat, canvas, status, ref_ext)"; + $sql = "INSERT INTO ".MAIN_DB_PREFIX."societe (nom, entity, datec, datea, fk_user_creat, canvas, status, ref_int)"; $sql.= " VALUES ('".$this->db->escape($this->name)."', ".$conf->entity.", '".$this->db->idate($now)."', '".$this->db->idate($now)."'"; $sql.= ", ".($user->id > 0 ? "'".$user->id."'":"null"); $sql.= ", ".($this->canvas ? "'".$this->canvas."'":"null"); $sql.= ", ".$this->status; - $sql.= ", ".($this->ref_ext ? "'".$this->ref_ext."'":"null"); + $sql.= ", ".($this->ref_int ? "'".$this->ref_int."'":"null"); $sql.= ")"; dol_syslog("Societe::create sql=".$sql); @@ -557,20 +557,21 @@ class Societe extends CommonObject * @param rowid Id of third party to load * @param ref Reference of third party, name (Warning, this can return several records) * @param ref_ext External reference of third party (Warning, this information is a free field not provided by Dolibarr) + * @param ref_int Internal reference of third party * @param idprof1 Prof id 1 of third party (Warning, this can return several records) * @param idprof2 Prof id 2 of third party (Warning, this can return several records) * @param idprof3 Prof id 3 of third party (Warning, this can return several records) * @param idprof4 Prof id 4 of third party (Warning, this can return several records) * @return int >0 if OK, <0 if KO or if two records found for same ref or idprof. */ - function fetch($rowid, $ref='', $ref_ext='', $idprof1='',$idprof2='',$idprof3='',$idprof4='') + function fetch($rowid, $ref='', $ref_ext='', $ref_int='', $idprof1='',$idprof2='',$idprof3='',$idprof4='') { global $langs; global $conf; - if (empty($rowid) && empty($ref) && empty($ref_ext)) return -1; + if (empty($rowid) && empty($ref) && empty($ref_ext) && empty($ref_int)) return -1; - $sql = 'SELECT s.rowid, s.nom as name, s.entity, s.ref_ext, s.address, s.datec as datec, s.prefix_comm'; + $sql = 'SELECT s.rowid, s.nom as name, s.entity, s.ref_ext, s.ref_int, s.address, s.datec as datec, s.prefix_comm'; $sql .= ', s.price_level'; $sql .= ', s.tms as date_update'; $sql .= ', s.tel, s.fax, s.email, s.url, s.cp as zip, s.ville as town, s.note, s.client, s.fournisseur'; @@ -600,6 +601,7 @@ class Societe extends CommonObject if ($rowid) $sql .= ' WHERE s.rowid = '.$rowid; if ($ref) $sql .= " WHERE s.nom = '".$this->db->escape($ref)."' AND s.entity = ".$conf->entity; if ($ref_ext) $sql .= " WHERE s.ref_ext = '".$this->db->escape($ref_ext)."' AND s.entity = ".$conf->entity; + if ($ref_int) $sql .= " WHERE s.ref_int = '".$this->db->escape($ref_int)."' AND s.entity = ".$conf->entity; if ($idprof1) $sql .= " WHERE s.siren = '".$this->db->escape($siren)."' AND s.entity = ".$conf->entity; if ($idprof2) $sql .= " WHERE s.siret = '".$this->db->escape($siret)."' AND s.entity = ".$conf->entity; if ($idprof3) $sql .= " WHERE s.ape = '".$this->db->escape($ape)."' AND s.entity = ".$conf->entity; @@ -627,6 +629,7 @@ class Societe extends CommonObject $this->name = $obj->name; $this->nom = $obj->name; // TODO obsolete $this->ref_ext = $obj->ref_ext; + $this->ref_int = $obj->ref_int; $this->datec = $this->db->jdate($obj->datec); $this->date_update = $this->db->jdate($obj->date_update);