Works on paypal module

This commit is contained in:
Regis Houssin 2011-05-17 18:28:54 +00:00
parent e570201c85
commit 1dca5104e2
3 changed files with 122 additions and 6 deletions

View File

@ -547,6 +547,55 @@ class CommonObject
$this->$object->fetch($this->origin_id);
}
/**
* Load object from import key
* @param table Table element or element line
* @param key Import key
* @return int <0 if KO, >0 if OK
*/
function fetchObjectFromImportKey($table,$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.= " AND entity = ".$conf->entity;
$resql = $this->db->query($sql);
if ($resql)
{
$row = $this->db->fetch_row($resql);
$result = $this->fetch($row[0]);
}
return $result;
}
/**
* \brief Load properties id_previous and id_next

View File

@ -30,7 +30,8 @@ if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1');
if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK','1');
require('../main.inc.php');
include_once(DOL_DOCUMENT_ROOT."/societe/class/societe.class.php");
require_once(DOL_DOCUMENT_ROOT."/societe/class/societe.class.php");
require_once(DOL_DOCUMENT_ROOT."/contact/class/contact.class.php");
require_once(DOL_DOCUMENT_ROOT.'/paypal/lib/paypal.lib.php');
require_once(DOL_DOCUMENT_ROOT."/paypal/lib/paypalfunctions.lib.php");
@ -61,18 +62,82 @@ if (isset($_GET['action']) && ! empty($_GET['action']) && ( (isset($_GET['elemen
if ($_GET['action'] == 'create')
{
$soc = new Societe($db);
$socid = $soc->fetchObjectFromImportKey($soc->table_element,$object['PAYERID']);
if ($socid < 0)
$ret = $soc->fetchObjectFromRefExt($soc->table_element,$_SESSION[$_GET['transaction_id']]['PAYERID']);
if ($ret < 0)
{
// Load object modCodeTiers
$module=$conf->global->SOCIETE_CODECLIENT_ADDON;
if (! $module) dolibarr_error('',$langs->trans("ErrorModuleThirdPartyCodeInCompanyModuleNotDefined"));
if (substr($module, 0, 15) == 'mod_codeclient_' && substr($module, -3) == 'php')
{
$module = substr($module, 0, dol_strlen($module)-4);
}
require_once(DOL_DOCUMENT_ROOT ."/includes/modules/societe/".$module.".php");
$modCodeClient = new $module;
// Create customer and return rowid
$soc->ref_ext = $_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'];
$soc->address = $_SESSION[$_GET['transaction_id']]['SHIPTOSTREET'];
$soc->zip = $_SESSION[$_GET['transaction_id']]['SHIPTOZIP'];
$soc->town = $_SESSION[$_GET['transaction_id']]['SHIPTOCITY'];
//$soc->pays_id = $_POST["pays_id"];
$soc->email = $_SESSION[$_GET['transaction_id']]['EMAIL'];
$soc->code_client = ($modCodeClient->code_auto ? $modCodeClient->getNextValue($soc,0):'');
$soc->tva_assuj = 1;
$soc->client = 1;
$soc->particulier = 1;
$db->begin();
$result = $soc->create($user);
if ($result >= 0)
{
if ($soc->particulier)
{
$contact=new Contact($db);
$contact->civilite_id = $soc->civilite_id;
$contact->name=$soc->nom_particulier;
$contact->firstname=$soc->prenom;
$contact->address=$soc->address;
$contact->zip=$soc->zip;
$contact->cp=$soc->cp;
$contact->town=$soc->town;
$contact->ville=$soc->ville;
$contact->fk_pays=$soc->fk_pays;
$contact->socid=$soc->id;
$contact->status=1;
$contact->email=$soc->email;
$contact->priv=0;
$result=$contact->create($user);
}
}
if ($result >= 0)
{
$db->commit();
}
else
{
$db->rollback();
$langs->load("errors");
echo $langs->trans($contact->error);
echo $langs->trans($soc->error);
}
}
echo 'socid='.$soc->id;
// Create element (order or bill)
/*
foreach ($_SESSION[$_GET['transaction_id']] as $key => $value)
{
echo $key.': '.$value.'<br />';
}
*/
}
else if ($_GET['action'] == 'showdetails')

View File

@ -128,7 +128,8 @@ class Societe extends CommonObject
var $default_lang;
var $canvas;
var $ref_ext;
var $import_key;
var $logo;
@ -201,11 +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)";
$sql = "INSERT INTO ".MAIN_DB_PREFIX."societe (nom, entity, datec, datea, fk_user_creat, canvas, status, ref_ext)";
$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.= ")";
dol_syslog("Societe::create sql=".$sql);