1
0
mirror of synced 2024-11-28 16:06:06 +03:00

regression, cron, icml

This commit is contained in:
Alex Lushpai 2015-02-17 18:09:35 +03:00
parent 26dcf45071
commit ba08ed414a
3 changed files with 162 additions and 126 deletions

View File

@ -30,7 +30,7 @@ class Retailcrm_Retailcrm_Model_Exchange
$this->_config = Mage::getStoreConfig('retailcrm', $order->getStoreId());
$statuses = array_flip(array_filter($this->_config['status']));
$paymentsStatuses = array_flip(array_filter($this->_config['paymentstatuses']));
$paymentsStatuses = array_flip(array_filter($this->_config['paymentstatus']));
$payments = array_filter($this->_config['payment']);
$shippings = array_filter($this->_config['shipping']);
@ -93,18 +93,132 @@ class Retailcrm_Retailcrm_Model_Exchange
);
try {
$this->_api->ordersCreate($preparedOrder);
$response = $this->_api->ordersCreate($preparedOrder);
if ($response->isSuccessful() && 201 === $response->getStatusCode()) {
Mage::log($response->id);
} else {
Mage::log(
sprintf(
"Order create error: [HTTP status %s] %s",
$response->getStatusCode(),
$response->getErrorMsg()
)
);
if (isset($response['errors'])) {
Mage::log(implode(' :: ', $response['errors']));
}
}
} catch (Retailcrm_Retailcrm_Model_Exception_CurlException $e) {
Mage::log($e->getMessage());
}
}
/**
* @param mixed $order
*
* @return bool
* @param $customer
* @return mixed
*/
public function orderEdit($order)
private function setCustomerId($customer)
{
$customerId = $this->searchCustomer($customer);
if (is_array($customerId) && !empty($customerId)) {
if ($customerId['success']) {
return $customerId['result'];
} else {
$this->fixCustomer($customerId['result'], $customer['externalId']);
return $customer['externalId'];
}
} else {
$this->createCustomer(
array(
'externalId' => $customer['externalId'],
'firstName' => $customer['firstName'],
'lastName' => isset($customer['lastName']) ? $customer['lastName'] : '',
'patronymic' => isset($customer['patronymic']) ? $customer['patronymic'] : '',
'phones' => isset($customer['phone']) ? array($customer['phone']) : array(),
)
);
return $customer['externalId'];
}
}
/**
* @param $data
* @return array|bool
*/
private function searchCustomer($data)
{
try {
$customers = $this->_api->customersList(
array(
'name' => isset($data['phone']) ? $data['phone'] : $data['name'],
'email' => $data['email']
),
1,
100
);
} catch (Retailcrm_Retailcrm_Model_Exception_CurlException $e) {
Mage::log($e->getMessage());
}
if ($customers->isSuccessful()) {
return (count($customers['customers']) > 0)
? $this->defineCustomer($customers['customers'])
: false
;
}
}
private function createCustomer($customer)
{
try {
$this->_api->customersCreate($customer);
} catch (Retailcrm_Retailcrm_Model_Exception_CurlException $e) {
Mage::log('RestApi::CustomersCreate::Curl: ' . $e->getMessage());
}
}
private function fixCustomer($id, $extId)
{
try {
$this->_api->customersFixExternalIds(
array(
array(
'id' => $id,
'externalId' => $extId
)
)
);
} catch (Retailcrm_Retailcrm_Model_Exception_CurlException $e) {
Mage::log('RestApi::CustomersFixExternalIds::Curl: ' . $e->getMessage());
}
}
private function defineCustomer($searchResult)
{
$result = '';
foreach ($searchResult as $customer) {
if (isset($customer['externalId']) && $customer['externalId'] != '') {
$result = $customer['externalId'];
break;
}
}
return ($result != '')
? array('success' => true, 'result' => $result)
: array('success' => false, 'result' => $searchResult[0]['id']);
}
/**
* @param $data
* @return bool
* @internal param mixed $order
*
*/
/*public function orderEdit($order)
{
$this->_config = Mage::getStoreConfig('retailcrm', $order->getStoreId());
@ -163,9 +277,9 @@ class Retailcrm_Retailcrm_Model_Exchange
} catch (Retailcrm_Retailcrm_Model_Exception_CurlException $e) {
Mage::log($e->getMessage());
}
}
}*/
public function processOrders($orders, $nocheck = false)
/*public function processOrders($orders, $nocheck = false)
{
if (!$nocheck) {
@ -211,9 +325,9 @@ class Retailcrm_Retailcrm_Model_Exchange
return false;
}
}
}
}*/
public function orderHistory()
/*public function orderHistory()
{
try {
$orders = $this->_api->ordersHistory(new DateTime($this->getDate($this->historyLog)));
@ -223,9 +337,13 @@ class Retailcrm_Retailcrm_Model_Exchange
Mage::log('RestApi::orderHistory::Curl: ' . $e->getMessage());
return false;
}
}
}*/
public function orderFixExternalIds($data)
/**
* @param $data
* @return bool
*/
/*public function orderFixExternalIds($data)
{
try {
$this->_api->ordersFixExternalIds($data);
@ -235,9 +353,13 @@ class Retailcrm_Retailcrm_Model_Exchange
}
return true;
}
}*/
public function customerFixExternalIds($data)
/**
* @param $data
* @return bool
*/
/*public function customerFixExternalIds($data)
{
try {
$this->_api->customersFixExternalIds($data);
@ -247,7 +369,7 @@ class Retailcrm_Retailcrm_Model_Exchange
}
return true;
}
}*/
/**
* Export References to CRM
@ -257,7 +379,7 @@ class Retailcrm_Retailcrm_Model_Exchange
* @param array $statuses statuses data
*
*/
public function processReference($deliveries = null, $payments = null, $statuses = null)
/*public function processReference($deliveries = null, $payments = null, $statuses = null)
{
if ($deliveries != null) {
$this->processDeliveries($deliveries);
@ -270,7 +392,7 @@ class Retailcrm_Retailcrm_Model_Exchange
if ($statuses != null) {
$this->processStatuses($statuses);
}
}
}*/
/**
* Export deliveries
@ -279,7 +401,7 @@ class Retailcrm_Retailcrm_Model_Exchange
*
* @return bool
*/
protected function processDeliveries($deliveries)
/*protected function processDeliveries($deliveries)
{
foreach ($deliveries as $delivery) {
try {
@ -291,7 +413,7 @@ class Retailcrm_Retailcrm_Model_Exchange
}
return true;
}
}*/
/**
* Export payments
@ -300,7 +422,7 @@ class Retailcrm_Retailcrm_Model_Exchange
*
* @return bool
*/
protected function processPayments($payments)
/*protected function processPayments($payments)
{
foreach ($payments as $payment) {
try {
@ -312,7 +434,7 @@ class Retailcrm_Retailcrm_Model_Exchange
}
return true;
}
}*/
/**
* Export statuses
@ -321,7 +443,7 @@ class Retailcrm_Retailcrm_Model_Exchange
*
* @return bool
*/
protected function processStatuses($statuses)
/*protected function processStatuses($statuses)
{
foreach ($statuses as $status) {
try {
@ -333,95 +455,5 @@ class Retailcrm_Retailcrm_Model_Exchange
}
return true;
}
private function setCustomerId($customer)
{
$customerId = $this->searchCustomer($customer);
if (is_array($customerId) && !empty($customerId)) {
if ($customerId['success']) {
return $customerId['result'];
} else {
$this->fixCustomer($customerId['result'], $customer['externalId']);
return $customer['externalId'];
}
} else {
$this->createCustomer(
array(
'externalId' => $customer['externalId'],
'firstName' => $customer['firstName'],
'lastName' => isset($customer['lastName']) ? $customer['lastName'] : '',
'patronymic' => isset($customer['patronymic']) ? $customer['patronymic'] : '',
'phones' => isset($customer['phone']) ? array($customer['phone']) : array(),
)
);
return $customer['externalId'];
}
}
private function searchCustomer($data)
{
try {
$customers = $this->api->customersList(
array(
'name' => isset($data['phone']) ? $data['phone'] : $data['name'],
'email' => $data['email']
),
1,
100
);
} catch (Retailcrm_Retailcrm_Model_Exception_CurlException $e) {
Mage::log($e->getMessage());
}
if ($customers->isSuccessful()) {
return (count($customers['customers']) > 0)
? $this->defineCustomer($customers['customers'])
: false
;
}
}
private function createCustomer($customer)
{
try {
$this->api->customersCreate($customer);
} catch (CurlException $e) {
$this->curlErrorHandler($e->getMessage(), 'CustomersCreate::Curl: ');
}
}
private function fixCustomer($id, $extId)
{
try {
$this->api->customersFixExternalIds(
array(
array(
'id' => $id,
'externalId' => $extId
)
)
);
} catch (CurlException $e) {
$this->curlErrorHandler($e->getMessage(), 'CustomersFixExternalIds::Curl: ');
}
}
private function defineCustomer($searchResult)
{
$result = '';
foreach ($searchResult as $customer) {
if (isset($customer['externalId']) && $customer['externalId'] != '') {
$result = $customer['externalId'];
break;
}
}
return ($result != '')
? array('success' => true, 'result' => $result)
: array('success' => false, 'result' => $searchResult[0]['id'])
;
}
}*/
}

View File

@ -117,8 +117,12 @@ class Retailcrm_Retailcrm_Model_Icml
$e->setAttribute('quantity', (int)$offer['quantity']);
}
foreach ($offer['categoryId'] as $categoryId) {
$e->appendChild($this->_dd->createElement('categoryId', $categoryId));
if (!empty($offer['categoryId'])) {
foreach ($offer['categoryId'] as $categoryId) {
$e->appendChild($this->_dd->createElement('categoryId', $categoryId));
}
} else {
$e->appendChild($this->_dd->createElement('categoryId', 1));
}
$e->appendChild($this->_dd->createElement('name'))->appendChild($this->_dd->createTextNode($offer['name']));

View File

@ -44,25 +44,25 @@
<retailcrm_retailcrm_model_observer>
<type>singleton</type>
<class>Retailcrm_Retailcrm_Model_Observer</class>
<method>orderSave</method>
<method>orderCreate</method>
</retailcrm_retailcrm_model_observer>
</observers>
</sales_order_place_after>
<sales_order_save_after>
<observers>
<retailcrm_retailcrm_model_observer>
<type>singleton</type>
<class>Retailcrm_Retailcrm_Model_Observer</class>
<method>orderUpdate</method>
</retailcrm_retailcrm_model_observer>
</observers>
</sales_order_save_after>
<!--<sales_order_save_after>-->
<!--<observers>-->
<!--<retailcrm_retailcrm_model_observer>-->
<!--<type>singleton</type>-->
<!--<class>Retailcrm_Retailcrm_Model_Observer</class>-->
<!--<method>orderUpdate</method>-->
<!--</retailcrm_retailcrm_model_observer>-->
<!--</observers>-->
<!--</sales_order_save_after>-->
</events>
</global>
<crontab>
<jobs>
<icml>
<schedule><cron_expr>* */6 * * *</cron_expr></schedule>
<schedule><cron_expr>* */4 * * *</cron_expr></schedule>
<run><model>retailcrm/observer::exportCatalog</model></run>
</icml>
</jobs>