diff --git a/htdocs/oscommerce_ws/clients/fiche.php b/htdocs/oscommerce_ws/clients/fiche.php
index 51702d3934d..2bbfe8be286 100644
--- a/htdocs/oscommerce_ws/clients/fiche.php
+++ b/htdocs/oscommerce_ws/clients/fiche.php
@@ -29,7 +29,7 @@ if ($action == '' && !$cancel) {
if ($_GET['custid'])
{
- $osc_cust = new Osc_customer($_GET['custid']);
+ $osc_cust = new Osc_customer($db, $_GET['custid']);
$result = $osc_cust->fetch($_GET['custid']);
if ( !$result)
@@ -75,9 +75,9 @@ if ($action == '' && !$cancel) {
*/
if (($_GET["action"] == 'import' ) && ( $_GET["custid"] != '' ) && $user->rights->produit->creer)
{
- $osc_cust = new Osc_customer();
+ $osc_cust = new Osc_customer($db, $_GET['custid']);
$result = $osc_cust->fetch($_GET['custid']);
-
+
if ( !$result )
{
$societe = new Societe($db);
@@ -109,7 +109,10 @@ if ($action == '' && !$cancel) {
if ($id == 0)
{
- print '
création réussie nouveau client/prospect '.$id.' nom : '.$societe->nom.'';
+ print '
création réussie nouveau client/prospect '.$societe->id.' nom : '.$societe->nom.'';
+ $res = $osc_cust->transcode($osc_cust->osc_custid,$societe->id);
+print '
transcode '.$res.' | '.$societe->id.' osc : '.$osc_cust->osc_custid.'';
+
}
else
{
@@ -134,9 +137,8 @@ if ($action == '' && !$cancel) {
{
$res = $societe->update($idp, $user);
if ($res < 0) print '
Erreur update '.$idp.'';
- $res = $osc_cust->transcode($osc_cust->custid,$idp);
+ $res = $osc_cust->transcode($osc_cust->custid,$idp );
if ($res < 0) print '
Erreur update '.$idp.'';
-
}
else print '
update impossible $id : '.$idp.' ';
}
diff --git a/htdocs/oscommerce_ws/clients/osc_customer.class.php b/htdocs/oscommerce_ws/clients/osc_customer.class.php
index d41dca469c6..8d93560a4be 100644
--- a/htdocs/oscommerce_ws/clients/osc_customer.class.php
+++ b/htdocs/oscommerce_ws/clients/osc_customer.class.php
@@ -32,6 +32,7 @@
\brief Classe permettant la gestion des clients/prospects issus d'une base OSC
*/
+
class Osc_customer
{
var $db;
@@ -56,13 +57,16 @@ class Osc_customer
* \brief Constructeur de la classe
* \param id Id client (0 par defaut)
*/
- function Osc_customer($id=0) {
+ function Osc_customer($DB, $id=0) {
global $langs;
-
+ global $conf;
+
$this->osc_custid = $id ;
/* les initialisations nécessaires */
+ $this->db = $DB;
+
}
@@ -133,27 +137,27 @@ class Osc_customer
* \param socidp champ société.idp
* \return int <0 si ko, >0 si ok
*/
- function transcode($oscid, $socidp)
+ function transcode($oscid, $socidp )
{
- global $conf;
+
+ print "entree transcode
";
/* suppression et insertion */
- $sql = "DELETE FROM ".MAIN_DB_PREFIX." osc_customer WHERE osc_custid = ".$oscid;
- $this->$db = $DB;
+ $sql = "DELETE FROM ".MAIN_DB_PREFIX."osc_customer WHERE osc_custid = ".$oscid.";";
$result=$this->db->query($sql);
if ($result)
{
- print "suppression ok ".$result;
+ print "suppression ok ".$sql." * ".$result;
}
else
{
- print "suppression rate ".$result;
+ print "suppression rate ".$sql." * ".$result;
dolibarr_syslog("osc_customer::transcode echec suppression");
// $this->db->rollback();
// return -1;
}
- $sql = "INSERT INTO ".MAIN_DB_PREFIX." osc_customer VALUES (".$oscid." , CURDATE() , ".$socidp.")";
- $this->$db = $DB;
+ $sql = "INSERT INTO ".MAIN_DB_PREFIX."osc_customer VALUES (".$oscid." , now() , ".$socidp.") ;";
+
$result=$this->db->query($sql);
if ($result)
{
@@ -168,6 +172,16 @@ class Osc_customer
}
return 0;
}
+// converti le client osc en client dolibarr
+
+ function get_clientid($osc_client)
+ {
+ $sql = "SELECT doli_socidp FROM ".MAIN_DB_PREFIX."osc_customer WHERE osc_custid = ".$osc_client.";";
+ $result=$this->db->query($sql);
+ $row = $this->db->fetch_row($resql);
+// test d'erreurs
+ return $row[0];
+ }
}
diff --git a/htdocs/oscommerce_ws/commandes/fiche.php b/htdocs/oscommerce_ws/commandes/fiche.php
index 9def4e3a84f..0589d3ef63a 100644
--- a/htdocs/oscommerce_ws/commandes/fiche.php
+++ b/htdocs/oscommerce_ws/commandes/fiche.php
@@ -22,6 +22,7 @@
require("./pre.inc.php");
require_once(DOL_DOCUMENT_ROOT."/commande/commande.class.php");
require_once("../includes/configure.php");
+require_once("../clients/osc_customer.class.php");
llxHeader();
@@ -29,7 +30,7 @@ if ($action == '' && !$cancel) {
if ($_GET["orderid"])
{
- $osc_order = new Osc_order($_GET["orderid"]);
+ $osc_order = new Osc_order($db, $_GET["orderid"]);
$result = $osc_order->fetch($_GET["orderid"]);
if ( !$result)
@@ -70,46 +71,23 @@ if ($action == '' && !$cancel) {
print "Error";
}
}
-/* action Import création de l'objet product de dolibarr
+/* action Import création de l'objet commande de dolibarr
*
*/
if (($_GET["action"] == 'import' ) && ( $_GET["orderid"] != '' ) && $user->rights->commande->creer)
{
- $osc_order = new osc_order();
+ $osc_order = new osc_order($db);
$result = $osc_order->fetch($_GET["orderid"]);
- print '
on passe 1';
if ( !$result )
{
- $commande = new Commande($db);
- if ($_error == 1)
- {
- print '
erreur 1';
- exit;
- }
- print '
on passe 2';
- /* initialisation */
- $societe->nom = $osc_order->osc_ordersoc.' '.$osc_order->osc_orderlastname;
- $societe->adresse = $osc_order->osc_cutstreet;
- $societe->cp = $osc_order->osc_orderpostcode;
- $societe->ville = $osc_order->osc_ordercity;
- $societe->departement_id = 0;
- $societe->pays_code = $osc_order->osc_ordercodecountry;
- $societe->tel = $osc_order->osc_ordertel;
- $societe->fax = $osc_order->osc_orderfax;
- $societe->email = $osc_order->osc_ordermail;
- /* on force */
- $societe->url = '';
- $societe->siren = '';
- $societe->siret = '';
- $societe->ape = '';
- $societe->client = 1; // mettre 0 si prospect
- }
- print '
on passe 3';
- $id = $societe->create($user);
+ $commande = $osc_order->osc2dolibarr($_GET["orderid"]);
+ print_r($commande);
+ }
+ $id = $commande->create($user);
if ($id > 0)
{
- print '
création réussie nouveau client/prospect '.$id.' nom : '.$societe->nom.'';
+ print '
création réussie nouvelle commande '.$id;
if ($id > 0) exit;
}
else
diff --git a/htdocs/oscommerce_ws/commandes/osc_order.class.php b/htdocs/oscommerce_ws/commandes/osc_order.class.php
index 761b1c8b5cf..66f127b19d1 100644
--- a/htdocs/oscommerce_ws/commandes/osc_order.class.php
+++ b/htdocs/oscommerce_ws/commandes/osc_order.class.php
@@ -27,6 +27,11 @@
*/
+require("../clients/osc_customer.class.php");
+require_once(DOL_DOCUMENT_ROOT."/commande/commande.class.php");
+
+
+
/**
\class Osc_order
\brief Classe permettant la gestion des commandes issues d'une base OSC
@@ -34,6 +39,8 @@
class Osc_order
{
+ var $db;
+
var $osc_orderid;
var $osc_custid; //identifant du client osc
var $osc_custname;
@@ -41,18 +48,20 @@ class Osc_order
var $osc_ordertotal;
var $osc_orderpaymet;
+ var $osc_lines = array();
+
var $error;
/**
* \brief Constructeur de la classe
* \param id Id client (0 par defaut)
*/
- function Osc_order($id=0) {
+ function Osc_order($DB, $id=0) {
global $langs;
$this->osc_orderid = $id ;
-
+ $this->db = $DB;
/* les initialisations nécessaires */
}
@@ -102,6 +111,17 @@ class Osc_order
$this->osc_orderdate = $obj[0][date_purchased];
$this->osc_ordertotal = $obj[0][value];
$this->osc_orderpaymet = $obj[0][payment_method];
+
+
+ for ($i=1;$iosc_lines[$i-1][products_id] = $obj[$i][products_id];
+ $this->osc_lines[$i-1][products_name] = $obj[$i][products_name];
+ $this->osc_lines[$i-1][products_price] = $obj[$i][products_price];
+ $this->osc_lines[$i-1][final_price] = $obj[$i][final_price];
+ $this->osc_lines[$i-1][products_tax] = $obj[$i][products_tax];
+ $this->osc_lines[$i-1][quantity] = $obj[$i][quantity];
+ }
}
else {
$this->error = 'Erreur '.$err ;
@@ -109,6 +129,46 @@ class Osc_order
}
return 0;
}
+
+// renvoie un objet commande dolibarr
+ function osc2dolibarr($osc_orderid)
+ {
+ $result = $this->fetch($osc_orderid);
+ if ( !$result )
+ {
+ $commande = new Commande($this->db);
+ if ($_error == 1)
+ {
+ print '
erreur 1';
+ exit;
+ }
+ /* initialisation */
+ $oscclient = new Osc_Customer($this->db);
+ $clientid = $oscclient->get_clientid($this->osc_custid);
+
+ $commande->socidp = $clientid;
+ $commande->ref = $this->osc_orderid;
+ $commande->date = $this->orderdate;
+ /* on force */
+ $commande->statut = 0; //à voir
+ $commande->source = 0; // à vérifier
+
+ //les lignes
+ print "
nombre : " . count($this->osc_lines);
+ for ($i = 0; $i < sizeof($this->osc_lines);$i++) {
+ $commande->lines[$i]->libelle = $this->osc_lines[$i][products_id];
+ $commande->lines[$i]->desc = $this->osc_lines[$i][products_name];
+ $commande->lines[$i]->price = $this->osc_lines[$i][products_price];
+ $commande->lines[$i]->qty = $this->osc_lines[$i][quantity];
+ $commande->lines[$i]->tva_tx = $this->osc_lines[$i][products_tax];
+// $commande->lines[$i]->fk_product;
+ $commande->lines[$i]->remise_percent = 0; // à calculer avec le finalprice
+ }
+
+ return $commande;
+ }
+
+ }
}