From 0b3aebeac087bcb23ea19eae5c096fc8cf7604d5 Mon Sep 17 00:00:00 2001 From: Emmanuel Haguet Date: Wed, 21 Jan 2015 15:06:32 +0100 Subject: [PATCH] =?UTF-8?q?renommage=20data.csv,=20User=20dolibarr=20et=20?= =?UTF-8?q?2=C3=A8me=20script?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...{data.csv => fournisseurs_et_produits.csv} | 0 scripts/pixium/import_fournisseur.php | 7 +- scripts/pixium/import_produit.php | 120 ++++++++++++++++++ 3 files changed, 124 insertions(+), 3 deletions(-) rename scripts/pixium/{data.csv => fournisseurs_et_produits.csv} (100%) create mode 100644 scripts/pixium/import_produit.php diff --git a/scripts/pixium/data.csv b/scripts/pixium/fournisseurs_et_produits.csv similarity index 100% rename from scripts/pixium/data.csv rename to scripts/pixium/fournisseurs_et_produits.csv diff --git a/scripts/pixium/import_fournisseur.php b/scripts/pixium/import_fournisseur.php index 2e938bec344..c0203665176 100644 --- a/scripts/pixium/import_fournisseur.php +++ b/scripts/pixium/import_fournisseur.php @@ -1,11 +1,12 @@ */ - -const CSV_FILENAME = 'data.csv'; +const CSV_FILENAME = "fournisseurs_et_produit.csv"; const CSV_SEPARATOR = ','; const NB_MIN_COLONNE = 5; +const USERNAME = 'dolibarr'; $path=dirname(__FILE__).'/'; @@ -15,7 +16,6 @@ require_once (DOL_DOCUMENT_ROOT."/core/lib/company.lib.php"); $langs->load('main'); function getCountryId($country) { - $tab = array( 'texas' => 'United States', 'USA' => 'United States', @@ -66,6 +66,7 @@ function import($data) { } $user = new User($db); + $user->fetch('', USERNAME); $address = ucfirst($data[$colonne -6]); $zip = $data[$colonne -5]; diff --git a/scripts/pixium/import_produit.php b/scripts/pixium/import_produit.php new file mode 100644 index 00000000000..286f82fbcf3 --- /dev/null +++ b/scripts/pixium/import_produit.php @@ -0,0 +1,120 @@ + + */ +const CSV_FILENAME = "fournisseurs_et_produit.csv"; +const CSV_SEPARATOR = ','; +const NB_MIN_COLONNE = 5; +const USERNAME = 'dolibarr'; + +$path=dirname(__FILE__).'/'; + +require($path."../../htdocs/master.inc.php"); +require($path."../../htdocs/product/class/product.class.php"); +require_once (DOL_DOCUMENT_ROOT."/core/lib/company.lib.php"); + +$langs->load('main'); + +function getRefOfProduct($name) { + global $db; + $resql = $db->query("SELECT * + FROM ".MAIN_DB_PREFIX."product + WHERE ref LIKE '".$name."_%' + ORDER BY ref desc"); + $obj = $db->fetch_object($resql); + return $name . '_' . ($obj) ? (substr(strstr($obj->ref, '_'), 1) +1) : 0; +} + +/** + * multi explode + * @param array $delimiters + * @param string $string + * @return unknown + */ +function multiexplode($delimiters, $string) { + $ready = str_replace($delimiters, $delimiters[0], $string); + $launch = explode($delimiters[0], $ready); + return $launch; +} + +function constructRef($libelle_produit) { + $ref = ''; + $i = 0; + $parts_ref = multiexplode(array(' ', '-'), $libelle_produit); + foreach ($parts_ref as $part_ref) { + if ($i < 3) { + $ref .= substr(preg_replace('/[^a-za-zA-Z]/', '', $part_ref), 0, 2); + } + $i++; + } + return strtoupper($ref); +} + +function import($data) { + global $db; + + $colonne = count($data); + if ($colonne <= NB_MIN_COLONNE) { // security + exit; + } + $name = ucfirst($data[1]); + if (empty($name)) { + return; + } + + $libelle_produit = $data[2]; + + $ref = getRefOfProduct(constructRef($libelle_produit)); + + /*echo " + $name + $libelle_produit + $ref + ";*/ + + $product = new Product($db); + $product->ref = $ref; + $product->libelle = $name; + + //Important : tosell, tobuy + $product->status = 0; + $product->status_buy = 1; + + $user = new User($db); + $user->fetch('', USERNAME); + $returnvalue = $product->create($user); + if ($returnvalue >= 0) { + echo 'OK '; + } else { + //TODO : Meilleur gestion des messages d'erreur + echo 'KO '; + } +} + +//$csv = array_map('str_getcsv', file(CSV_FILENAME)); + +/*echo ""; +echo " + + + + ";*/ + +$row = 1; +if (($handle = fopen($path . CSV_FILENAME, "r")) !== FALSE) { + while (($data = fgetcsv($handle, 1000, CSV_SEPARATOR)) !== FALSE) { + $num = count($data); + //echo "

$num champs à la ligne $row:

\n"; + if ($row != 1 && $row != 2) { + import($data); + } + $row++; + for ($c=0; $c < $num; $c++) { + //echo $data[$c] . "
\n"; + } + } + fclose($handle); +} + +/* echo "
namelibelle_produitref
"; */