roykin/erp/erp_add_customer.php
2016-07-04 11:57:59 +02:00

181 lines
7.1 KiB
PHP

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Vendors
require_once 'ripcord/ripcord.php';
require '../config/config.inc.php';
require 'ErpTools.php';
require 'config.php';
if (empty($_GET['token']) || $_GET['token'] !== ERP_SCRIPT_TOKEN) {
die;
}
// date de diff pour la création de client
$date_since_import = new DateTime();
$date_since_import->modify('-6 month');
// Get All Customers with email and is company
$models = ripcord::client("$url/xmlrpc/2/object");
$ids_customer = $models->execute_kw($db, $uid, $password,
'res.partner', 'search', array(
array(
array('email', '!=', ''),
array('is_company', '=', true),
array('customer', '=', true),
array('create_date', '>=', $date_since_import->format('Y-m-d H:i:s')),
)
)
);
foreach ($ids_customer as $id_customer) {
// get info company
$record = $models->execute_kw($db, $uid, $password,
'res.partner', 'read', array($id_customer));
$other_addresses = $models->execute_kw($db, $uid, $password,
'res.partner', 'read', array($record['child_ids']));
$tags = $models->execute_kw($db, $uid, $password,
'res.partner.category', 'read', array($record['category_id']));
$group_to_add_to_customer = array();
foreach ($tags as $key => $tag) {
if (!Group::getByName($tag['name'], 1)) {
$group = new Group();
$group->name = array(1 => $tag['name']);
$group->reduction = 0;
$group->price_display_method = PS_TAX_EXC;
$group->save();
} else {
$group = Group::getByName($tag['name'], 1);
}
$group_to_add_to_customer[] = $group->id;
}
// check mail validity
if(empty($record['email'])) {
continue;
}
// multiple email / explode
$email = $record['email'];
if(!Validate::isEmail($email)) {
$emails = explode(';', $record['email']);
$email = trim($emails[0]);
if(!Validate::isEmail($email)) {
ErpTools::logError($record, 'add_customer_email');
continue;
}
}
// check if user not exist and email not register
if (!ErpTools::alreadyExists($record['id'])
&& !Customer::getCustomersByEmail($email)) {
$lastname = utf8_decode(substr((isset($record['display_name']) ? $record['display_name'] : $record['name'] ) , 0, 32));
$firstname = utf8_decode(substr((isset($record['display_name']) ? $record['display_name'] : $record['name'] ) , 0, 32));
$record['phone'] = ($record['phone']) ? $record['phone'] : '0000000000';
// if contact check name else lastname firstname is company info
// if (!empty($record['child_ids'])) {
// $contact = $models->execute_kw($db, $uid, $password,
// 'res.partner', 'read', array($record['child_ids'][0]));
// $lastname = utf8_encode($contact['name']);
// $firstname = utf8_encode($contact['name']);
// } else {
// $lastname = utf8_decode(substr((isset($record['display_name']) ? $record['display_name'] : $record['name'] ) , 0, 32));
// $firstname = utf8_decode(substr((isset($record['display_name']) ? $record['display_name'] : $record['name'] ) , 0, 32));
// }
if (!ErpTools::validateRecordCustomer($record)) {
ErpTools::logError($record, 'add_customer_validate');
continue;
}
$pass_customer = Tools::passwdGen(12);
// if ($record['id'] == 4229) {
// p($other_addresses);
// } else {
// continue;
// }
try {
// add Customer
$customer = new Customer();
$customer->lastname = $lastname;
$customer->firstname = $firstname;
$customer->active = (int) $record['active'];
$customer->email = $email;
$customer->passwd = Tools::encrypt($pass_customer);
$customer->company = (isset($record['display_name']) ? $record['display_name'] : $record['name'] );
$customer->id_erp = $record['id'];
$customer->representant = (isset($record['user_id'][1]) ? $record['user_id'][1] : '' );
// If customer add with success create Address
if ($customer->add()) {
$customer->addGroups($group_to_add_to_customer);
$address = new Address();
$address->id_customer = $customer->id;
$address->alias = 'Adresse Livraison';
$address->lastname = $lastname;
$address->firstname = $firstname;
$address->address1 = utf8_encode($record['street']);
$address->address2 = utf8_encode($record['street2']);
$address->city = utf8_encode($record['city']);
$address->postcode = $record['zip'];
$address->company = $record['display_name'];
$address->phone = (int) str_replace(' ', '', $record['phone']);
$address->id_country = ErpTools::getCountryIdForPresta($record['country_id'][0]);
$address->is_erp = 1;
$address->id_erp = $record['id'];
$address->add();
foreach ($other_addresses as $key => $other_address) {
$other_address['phone'] = ($other_address['phone']) ? $other_address['phone'] : $record['phone'];
$address = new Address();
$address->id_customer = $customer->id;
$address->alias = $other_address['name'];
$address->lastname = $lastname;
$address->firstname = $firstname;
$address->address1 = utf8_encode($other_address['street']);
$address->address2 = utf8_encode($other_address['street2']);
$address->city = utf8_encode($other_address['city']);
$address->postcode = $other_address['zip'];
$address->company = $other_address['display_name'];
$address->phone = (int) str_replace(' ', '', $other_address['phone']);
$address->id_country = ErpTools::getCountryIdForPresta($other_address['country_id'][0]);
$address->is_erp = 1;
$address->id_erp = $other_address['id'];
$address->add();
}
// Mail::Send(
// 1,
// 'account',
// Mail::l('Welcome!'),
// array(
// '{firstname}' => $customer->firstname,
// '{lastname}' => $customer->lastname,
// '{email}' => $customer->email,
// '{passwd}' => $password
// ),
// //$customer->email,
// 'thibault@antadis.com',
// $customer->firstname.' '.$customer->lastname
// );
}
} catch (Exception $exception) {
$msg = $exception->getMessage();
ErpTools::logError($record, 'add_customer');
}
}
}