|
@@ -2,9 +2,445 @@
|
|
|
|
|
|
//var_dump($_GET); var_dump($_POST); var_dump($_FILES);
|
|
|
|
|
|
+
|
|
|
+class csv_file
|
|
|
+{
|
|
|
+ const FOLDER = '../data/facebook_leads';
|
|
|
+
|
|
|
+ const FIELDS = [
|
|
|
+ '23851183027400742' => [
|
|
|
+ 'id',
|
|
|
+ 'created_time',
|
|
|
+ 'ad_id',
|
|
|
+ 'ad_name',
|
|
|
+ 'adset_id',
|
|
|
+ 'adset_name',
|
|
|
+ 'campaign_id',
|
|
|
+ 'campaign_name',
|
|
|
+ 'form_id',
|
|
|
+ 'form_name',
|
|
|
+ 'is_organic',
|
|
|
+ 'platform',
|
|
|
+ 'dimensions_de_votre_piscine_?',
|
|
|
+ 'forme_de_votre_piscine_?',
|
|
|
+ 'présence_d\'un_escalier_?',
|
|
|
+ 'votre_traitement_d\'eau_?',
|
|
|
+ 'quel_type_de_volet_vous_intéresse_?',
|
|
|
+ 'nom_de_famille',
|
|
|
+ 'prénom',
|
|
|
+ 'numéro_de_téléphone',
|
|
|
+ 'adresse',
|
|
|
+ 'ville',
|
|
|
+ 'code_postal',
|
|
|
+ 'e-mail',
|
|
|
+ ],
|
|
|
+ ];
|
|
|
+
|
|
|
+ Const PROPAL_ORIGIN = 'SRC_FB_FORM';
|
|
|
+ protected static $fk_origin;
|
|
|
+
|
|
|
+ static function __init()
|
|
|
+ {
|
|
|
+ $sql = 'SELECT i.rowid
|
|
|
+ FROM `'.DB_D_PREFIX.'c_input_reason` i
|
|
|
+ WHERE i.`code` = "'.static::PROPAL_ORIGIN.'"
|
|
|
+ AND i.active=1';
|
|
|
+ //echo $sql;
|
|
|
+ $q = DB::d_select($sql);
|
|
|
+ if ($q->num_rows)
|
|
|
+ list(static::$fk_origin) = $q->fetch_row();
|
|
|
+ }
|
|
|
+
|
|
|
+ static function file_read($filename)
|
|
|
+ {
|
|
|
+ $lines = [];
|
|
|
+
|
|
|
+ $file = fopen($filename, 'r');
|
|
|
+ while (!feof($file) ) {
|
|
|
+ $lines[] = fgetcsv($file, NULL, ';');
|
|
|
+ }
|
|
|
+ fclose($file);
|
|
|
+
|
|
|
+ return $lines;
|
|
|
+ }
|
|
|
+
|
|
|
+ static function file_import($filename)
|
|
|
+ {
|
|
|
+ $newfilename = static::FOLDER.'/'.time().'.csv';
|
|
|
+ move_uploaded_file($filename, $newfilename);
|
|
|
+ var_dump($newfilename);
|
|
|
+
|
|
|
+ $lines = static::file_read($newfilename);
|
|
|
+ if (empty($lines)) {
|
|
|
+ echo '<p>Fichier vide</p>';
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ $cols = array_shift($lines);
|
|
|
+ var_dump($cols);
|
|
|
+ if (empty($lines)) {
|
|
|
+ echo '<p>Tableau vide</p>';
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //var_dump($lines);
|
|
|
+
|
|
|
+ $adset_id = $lines[0][4];
|
|
|
+ if (empty(static::FIELDS[$adset_id])) {
|
|
|
+ echo '<p>Paramétrage inconnu</p>';
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($cols !== static::FIELDS[$adset_id]) {
|
|
|
+ echo '<p>Colonnes non conformes</p>';
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ foreach($lines as $line) {
|
|
|
+ static::line_import($line);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ static function line_import($line)
|
|
|
+ {
|
|
|
+ //var_dump($line);
|
|
|
+ if (empty($line)) {
|
|
|
+ echo '<p>Ligne vide</p>';
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ $adset_id = $line[4];
|
|
|
+
|
|
|
+ $row = [];
|
|
|
+ foreach(static::FIELDS[$adset_id] as $i=>$name) {
|
|
|
+ $row[$name] = $line[$i];
|
|
|
+ }
|
|
|
+
|
|
|
+ // Recherche import déjà effectué
|
|
|
+
|
|
|
+ $sql = 'SELECT 1
|
|
|
+ FROM '.DB_D_PREFIX.'propal_extrafields p2
|
|
|
+ WHERE p2.fk_origin_id="'.$row['id'].'"';
|
|
|
+ $q = DB::D_select($sql);
|
|
|
+ if($q->num_rows) {
|
|
|
+ echo '<p>Déjà importé : ID '.$row['id'].'</p>';
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // Recherche client déjà présent
|
|
|
+
|
|
|
+ $sql = 'SELECT c.*
|
|
|
+ FROM '.DB_D_PREFIX.'societe c
|
|
|
+ WHERE c.email LIKE "%'.$row['e-mail'].'%"
|
|
|
+ LIMIT 1';
|
|
|
+ $q = DB::D_select($sql);
|
|
|
+ if($societe=$q->fetch_assoc())
|
|
|
+ var_dump($societe);
|
|
|
+
|
|
|
+ // Recherche adresse déjà présente
|
|
|
+
|
|
|
+ $sql = 'SELECT c.*
|
|
|
+ FROM '.DB_D_PREFIX.'socpeople c
|
|
|
+ WHERE c.email LIKE "%'.$row['e-mail'].'%"
|
|
|
+ LIMIT 1';
|
|
|
+ $q = DB::D_select($sql);
|
|
|
+ if($socpeople=$q->fetch_assoc()) {
|
|
|
+ var_dump($socpeople);
|
|
|
+ if (empty($societe)) {
|
|
|
+ $societe = ['rowid'=>$socpeople['fk_soc']];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // Création Client
|
|
|
+
|
|
|
+ $ts = date('Y-m-d H:i:s');
|
|
|
+ $date = substr($ts, 0, 10);
|
|
|
+
|
|
|
+ if (empty($societe)) {
|
|
|
+ if (!empty($row['pays']) && is_string($row['pays'])) {
|
|
|
+ $sql = 'SELECT c.iso_code
|
|
|
+ FROM `'.DB_P_PREFIX.'country` c
|
|
|
+ INNER JOIN `'.DB_P_PREFIX.'country_lang` cl ON cl.id_country=c.id_country
|
|
|
+ WHERE cl.`name` LIKE "'.DB::string_escape($row['pays']).'"';
|
|
|
+ $q = DB::p_select($sql);
|
|
|
+ if ($q->num_rows) {
|
|
|
+ list($code_pays) = $q->fetch_row();
|
|
|
+ $sql = 'SELECT rowid
|
|
|
+ FROM `'.DB_D_PREFIX.'c_country` c
|
|
|
+ WHERE c.`code` LIKE "'.DB::string_escape($code_pays).'"';
|
|
|
+ $q = DB::d_select($sql);
|
|
|
+ if ($q->num_rows)
|
|
|
+ list($fk_pays) = $q->fetch_row();
|
|
|
+ else
|
|
|
+ $fk_pays = 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ $fk_pays = 1;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ $fk_pays = 1;
|
|
|
+ }
|
|
|
+ $societe = [
|
|
|
+ //'rowid' => NULL,
|
|
|
+ 'nom' => $row['nom_de_famille'].' '.$row['prénom'],
|
|
|
+ 'name_alias' => NULL,
|
|
|
+ 'entity' => 1,
|
|
|
+ 'ref_ext' => NULL,
|
|
|
+ 'ref_int' => NULL,
|
|
|
+ 'statut' => 0,
|
|
|
+ 'parent' => NULL,
|
|
|
+ 'status' => 1,
|
|
|
+ 'code_client' => NULL,
|
|
|
+ 'code_fournisseur' => NULL,
|
|
|
+ 'code_compta' => NULL,
|
|
|
+ 'code_compta_fournisseur' => NULL,
|
|
|
+ 'address' => $row['adresse'],
|
|
|
+ 'zip' => $row['code_postal'],
|
|
|
+ 'town' => $row['ville'],
|
|
|
+ 'fk_departement' => NULL,
|
|
|
+ 'fk_pays' => $fk_pays,
|
|
|
+ 'fk_account' => NULL,
|
|
|
+ 'phone' => $row['numéro_de_téléphone'],
|
|
|
+ 'fax' => NULL,
|
|
|
+ 'url' => NULL,
|
|
|
+ 'email' => $row['e-mail'],
|
|
|
+ 'socialnetworks' => NULL,
|
|
|
+ 'skype' => NULL,
|
|
|
+ 'twitter' => NULL,
|
|
|
+ 'facebook' => NULL,
|
|
|
+ 'linkedin' => NULL,
|
|
|
+ 'instagram' => NULL,
|
|
|
+ 'snapchat' => NULL,
|
|
|
+ 'googleplus' => NULL,
|
|
|
+ 'youtube' => NULL,
|
|
|
+ 'whatsapp' => NULL,
|
|
|
+ 'fk_effectif' => NULL,
|
|
|
+ 'fk_typent' => 0,
|
|
|
+ 'fk_forme_juridique' => NULL,
|
|
|
+ 'fk_currency' => NULL,
|
|
|
+ 'siren' => '',
|
|
|
+ 'siret' => NULL,
|
|
|
+ 'ape' => NULL,
|
|
|
+ 'idprof4' => '',
|
|
|
+ 'idprof5' => '',
|
|
|
+ 'idprof6' => '',
|
|
|
+ 'tva_intra' => '',
|
|
|
+ 'capital' => NULL,
|
|
|
+ 'fk_stcomm' => 0,
|
|
|
+ 'note_private' => NULL,
|
|
|
+ 'note_public' => NULL,
|
|
|
+ 'model_pdf' => NULL,
|
|
|
+ 'prefix_comm' => NULL,
|
|
|
+ 'client' => 1,
|
|
|
+ 'fournisseur' => 0,
|
|
|
+ 'supplier_account' => NULL,
|
|
|
+ 'fk_prospectlevel' => '',
|
|
|
+ 'fk_incoterms' => 0,
|
|
|
+ 'location_incoterms' => NULL,
|
|
|
+ 'customer_bad' => 0,
|
|
|
+ 'customer_rate' => 0,
|
|
|
+ 'supplier_rate' => 0,
|
|
|
+ 'remise_client' => 0,
|
|
|
+ 'remise_supplier' => 0,
|
|
|
+ 'mode_reglement' => NULL,
|
|
|
+ 'cond_reglement' => NULL,
|
|
|
+ 'mode_reglement_supplier' => NULL,
|
|
|
+ 'cond_reglement_supplier' => NULL,
|
|
|
+ 'fk_shipping_method' => NULL,
|
|
|
+ 'tva_assuj' => 1,
|
|
|
+ 'localtax1_assuj' => NULL,
|
|
|
+ 'localtax1_value' => 0,
|
|
|
+ 'localtax2_assuj' => NULL,
|
|
|
+ 'localtax2_value' => 0,
|
|
|
+ 'barcode' => NULL,
|
|
|
+ 'fk_barcode_type' => 0,
|
|
|
+ 'price_level' => NULL,
|
|
|
+ 'outstanding_limit' => NULL,
|
|
|
+ 'order_min_amount' => NULL,
|
|
|
+ 'supplier_order_min_amount' => NULL,
|
|
|
+ 'default_lang' => NULL,
|
|
|
+ 'logo' => NULL,
|
|
|
+ 'logo_squarred' => NULL,
|
|
|
+ 'canvas' => NULL,
|
|
|
+ 'webservices_url' => NULL,
|
|
|
+ 'webservices_key' => NULL,
|
|
|
+ 'tms' => $ts,
|
|
|
+ 'datec' => $ts,
|
|
|
+ 'fk_user_creat' => sync::D_K_USER,
|
|
|
+ 'fk_user_modif' => sync::D_K_USER,
|
|
|
+ 'fk_multicurrency' => 0,
|
|
|
+ 'multicurrency_code' => '',
|
|
|
+ 'import_key' => NULL,
|
|
|
+ 'transport_mode' => NULL,
|
|
|
+ 'transport_mode_supplier' => NULL,
|
|
|
+ 'fk_warehouse' => NULL,
|
|
|
+ 'accountancy_code_sell' => NULL,
|
|
|
+ 'accountancy_code_buy' => NULL,
|
|
|
+ ];
|
|
|
+ $societe_extrafields = [
|
|
|
+ 'p_lastname' => $row['nom_de_famille'],
|
|
|
+ 'p_firstname' => $row['prénom'],
|
|
|
+ 'p_company' => NULL,
|
|
|
+ ];
|
|
|
+ var_dump($societe);
|
|
|
+ if ($id = DB::d_insert_row('societe', $societe)) {
|
|
|
+ $societe['rowid'] = $id;
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ /*
|
|
|
+ 'dimensions_de_votre_piscine_?' => string '9x4,5' (length=5)
|
|
|
+ 'forme_de_votre_piscine_?' => string 'rectangle' (length=9)
|
|
|
+ 'présence_d'un_escalier_?' => string 'oui,_situé_sur_la_largeur_du_bassin' (length=36)
|
|
|
+ 'votre_traitement_d'eau_?' => string 'electrolyseur_au_sel' (length=20)
|
|
|
+ 'quel_type_de_volet_vous_intéresse_?' => string 'hors-sol' (length=8)
|
|
|
+ */
|
|
|
+
|
|
|
+ $ref_client = 'Volet Piscine';
|
|
|
+ $demande_fields = [
|
|
|
+ 'dimensions_de_votre_piscine_?',
|
|
|
+ 'forme_de_votre_piscine_?',
|
|
|
+ 'présence_d\'un_escalier_?',
|
|
|
+ 'votre_traitement_d\'eau_?',
|
|
|
+ 'quel_type_de_volet_vous_intéresse_?',
|
|
|
+ ];
|
|
|
+ $demande = '';
|
|
|
+ foreach ($demande_fields as $f)
|
|
|
+ $demande .= $f.' : '.$row[$f]."<br />\r\n";
|
|
|
+
|
|
|
+ $propal = [
|
|
|
+ //'rowid' => NULL,
|
|
|
+ 'ref' => '(PROV)',
|
|
|
+ 'entity' => 1,
|
|
|
+ 'ref_ext' => NULL,
|
|
|
+ 'ref_int' => NULL,
|
|
|
+ 'ref_client' => $ref_client,
|
|
|
+ 'fk_soc' => $societe['rowid'],
|
|
|
+ 'fk_projet' => NULL,
|
|
|
+ 'tms' => $ts,
|
|
|
+ 'datec' => $ts,
|
|
|
+ 'datep' => $date,
|
|
|
+ 'fin_validite' => NULL,
|
|
|
+ 'date_valid' => NULL,
|
|
|
+ 'date_signature' => NULL,
|
|
|
+ 'date_cloture' => NULL,
|
|
|
+ 'fk_user_author' => sync::D_K_USER,
|
|
|
+ 'fk_user_modif' => NULL,
|
|
|
+ 'fk_user_valid' => NULL,
|
|
|
+ 'fk_user_signature' => NULL,
|
|
|
+ 'fk_user_cloture' => NULL,
|
|
|
+ 'fk_statut' => 0,
|
|
|
+ 'price' => 0,
|
|
|
+ 'remise_percent' => NULL,
|
|
|
+ 'remise_absolue' => NULL,
|
|
|
+ 'remise' => 0,
|
|
|
+ 'total_ht' => 0,
|
|
|
+ 'total_tva' => 0,
|
|
|
+ 'localtax1' => 0,
|
|
|
+ 'localtax2' => 0,
|
|
|
+ 'total_ttc' => 0,
|
|
|
+ 'fk_account' => NULL,
|
|
|
+ 'fk_currency' => NULL,
|
|
|
+ 'fk_cond_reglement' => NULL,
|
|
|
+ 'fk_mode_reglement' => NULL,
|
|
|
+ 'note_private' => NULL,
|
|
|
+ 'note_public' => '',
|
|
|
+ 'model_pdf' => 'azur',
|
|
|
+ 'last_main_doc' => NULL,
|
|
|
+ 'date_livraison' => NULL,
|
|
|
+ 'fk_shipping_method' => NULL,
|
|
|
+ 'fk_warehouse' => NULL,
|
|
|
+ 'fk_availability' => 0,
|
|
|
+ 'fk_input_reason' => static::$fk_origin,
|
|
|
+ 'fk_incoterms' => 0,
|
|
|
+ 'location_incoterms' => '',
|
|
|
+ 'import_key' => NULL,
|
|
|
+ 'extraparams' => NULL,
|
|
|
+ 'fk_delivery_address' => NULL,
|
|
|
+ 'fk_multicurrency' => 0,
|
|
|
+ 'multicurrency_code' => 'EUR',
|
|
|
+ 'multicurrency_tx' => 1,
|
|
|
+ 'multicurrency_total_ht' => 0,
|
|
|
+ 'multicurrency_total_tva' => 0,
|
|
|
+ 'multicurrency_total_ttc' => 0,
|
|
|
+ ];
|
|
|
+ $propal_extrafields = [
|
|
|
+ //'rowid' => NULL//
|
|
|
+ 'tms' => $ts,
|
|
|
+ 'fk_object' => NULL,
|
|
|
+ 'fk_origin_id' => $row['id'],
|
|
|
+ ];
|
|
|
+ var_dump($propal);
|
|
|
+ $propal_line = [
|
|
|
+ //'rowid' => NULL,
|
|
|
+ 'fk_propal' => NULL,
|
|
|
+ 'fk_parent_line' => NULL,
|
|
|
+ 'fk_product' => NULL,
|
|
|
+ 'label' => 'Votre demande',
|
|
|
+ 'description' => $demande,
|
|
|
+ 'fk_remise_except' => NULL,
|
|
|
+ 'vat_src_code' => '',
|
|
|
+ 'tva_tx' => 0,
|
|
|
+ 'localtax1_tx' => 0,
|
|
|
+ 'localtax1_type' => 0,
|
|
|
+ 'localtax2_tx' => 0,
|
|
|
+ 'localtax2_type' => 0,
|
|
|
+ 'qty' => 0,
|
|
|
+ 'remise_percent' => 0,
|
|
|
+ 'remise' => 0,
|
|
|
+ 'price' => NULL,
|
|
|
+ 'subprice' => 0,
|
|
|
+ 'total_ht' => 0,
|
|
|
+ 'total_tva' => 0,
|
|
|
+ 'total_localtax1' => 0,
|
|
|
+ 'total_localtax2' => 0,
|
|
|
+ 'total_ttc' => 0,
|
|
|
+ 'product_type' => 9,
|
|
|
+ 'date_start' => NULL,
|
|
|
+ 'date_end' => NULL,
|
|
|
+ 'info_bits' => 0,
|
|
|
+ 'buy_price_ht' => 0,
|
|
|
+ 'fk_product_fournisseur_price' => NULL,
|
|
|
+ 'special_code' => 1790,
|
|
|
+ 'rang' => 1,
|
|
|
+ 'fk_unit' => NULL,
|
|
|
+ 'fk_multicurrency' => NULL,
|
|
|
+ 'multicurrency_code' => 'EUR',
|
|
|
+ 'multicurrency_subprice' => 0,
|
|
|
+ 'multicurrency_total_ht' => 0,
|
|
|
+ 'multicurrency_total_tva' => 0,
|
|
|
+ 'multicurrency_total_ttc' => 0,
|
|
|
+ ];
|
|
|
+ var_dump($propal_line);
|
|
|
+
|
|
|
+ if ($id = DB::d_insert_row('propal', $propal)) {
|
|
|
+ $propal['rowid'] = $id;
|
|
|
+ $propal['ref'] = '(PROV'.$id.')';
|
|
|
+ DB::d_update_row('propal', ['ref' => '(PROV'.$id.')'], ['rowid'=>$id]);
|
|
|
+
|
|
|
+ $propal_line['fk_propal'] = $id;
|
|
|
+ DB::d_insert_row('propaldet', $propal_line);
|
|
|
+
|
|
|
+ $propal_extrafields['fk_object'] = $id;
|
|
|
+ DB::d_insert_row('propal_extrafields', $propal_extrafields);
|
|
|
+
|
|
|
+ // Fichiers joint
|
|
|
+ if (!empty($row['fileupload']) && file_exists(P_FOLDER_ROOT.'/upload/'.$row['fileupload'])) {
|
|
|
+ if (!file_exists(D_FOLDER_ROOT.'/documents/propale/'.$propal['ref'])) {
|
|
|
+ mkdir(D_FOLDER_ROOT.'/documents/propale/'.$propal['ref'], 0777);
|
|
|
+ chmod(D_FOLDER_ROOT.'/documents/propale/'.$propal['ref'], 0777);
|
|
|
+ }
|
|
|
+ copy(P_FOLDER_ROOT.'/upload/'.$row['fileupload'], D_FOLDER_ROOT.'/documents/propale/'.$propal['ref'].'/'.$propal['ref'].'-'.$row['fileupload']);
|
|
|
+ chmod(D_FOLDER_ROOT.'/documents/propale/'.$propal['ref'].'/'.$propal['ref'].'-'.$row['fileupload'], 0666);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ var_dump($row);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+csv_file::__init();
|
|
|
+
|
|
|
if (isset($_GET['file_upload']) && !empty($_FILES['facebook_file'])) {
|
|
|
- $file = $_FILES['facebook_file'];
|
|
|
- var_dump($file);
|
|
|
+ csv_file::file_import($_FILES['facebook_file']['tmp_name']);
|
|
|
}
|
|
|
|
|
|
?>
|