Added option for sending and receiving order number

This commit is contained in:
gleemand 2021-07-30 14:30:51 +03:00 committed by GitHub
parent 9c22f2c855
commit 2cb8804137
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 368 additions and 17 deletions

View File

@ -1,2 +0,0 @@
# Configuration

View File

@ -0,0 +1,21 @@
# Connection
## Order number
Данные опции позволяют передавать номер заказа при синхронизации заказов между PrestaShop и Simla.com.
### Опция "Send order number to Simla.com"
| Статус | Номер заказа в PrestaShop | Номер заказа в Simla.com |
|-------------|-----------------------------|----------------------------------------------------------------|
| Включена | `reference` | `reference` |
| Выключена | `reference` | Cоответствует шаблону в CRM для заказа, созданного через API |
### Опция "Receive order number from Simla.com"
| Статус | Номер заказа в Simla.com | Номер заказа в PrestaShop |
|-------------|-------------------------------|--------------------------------------------------------------|
| Включена | Cоответствует шаблону в CRM | Cоответствует шаблону в CRM |
| Выключена | Cоответствует шаблону в CRM | `reference` |
Вернуть логику передачи внешнего ID заказа в Simla.com можно путём указания в настройках CRM в поле "Шаблон генерации номера заказа из API" значения `{external_id}`.

View File

@ -0,0 +1,3 @@
# Configuration
1. [Connection](Connection.md)

View File

@ -1,6 +1,6 @@
# Setup
1. [Installation](Installation.md)
2. [Configuration](Configuration.md)
2. [Configuration](./Configuration/README.md)
3. [Upgrade](Upgrade.md)

View File

@ -187,6 +187,8 @@ class RetailcrmHistory
$lastSync = Configuration::get('RETAILCRM_LAST_ORDERS_SYNC');
$lastDate = Configuration::get('RETAILCRM_LAST_SYNC');
$references = new RetailcrmReferences(self::$api);
$receiveOrderNumber = (bool)(Configuration::get(RetailCRM::ENABLE_ORDER_NUMBER_RECEIVING));
$sendOrderNumber = (bool)(Configuration::get(RetailCRM::ENABLE_ORDER_NUMBER_SENDING));
if ($lastSync === false && $lastDate === false) {
$filter = array(
@ -204,6 +206,7 @@ class RetailcrmHistory
}
$orderFix = array();
$updateOrderIds = array();
$newItemsIdsByOrderId = array();
$historyChanges = array();
@ -489,13 +492,14 @@ class RetailcrmHistory
$newOrder = new Order();
$newOrder->id_shop = Context::getContext()->shop->id;
$newOrder->id_shop_group = intval(Context::getContext()->shop->id_shop_group);
$newOrder->reference = $newOrder->generateReference();
$newOrder->id_address_delivery = isset($addressDelivery->id) ? (int)$addressDelivery->id : 0;
$newOrder->id_address_invoice = isset($addressInvoice->id) ? (int)$addressInvoice->id : 0;
$newOrder->id_cart = (int)$cart->id;
$newOrder->id_currency = $default_currency;
$newOrder->id_lang = self::$default_lang;
$newOrder->id_customer = (int)$customer->id;
$orderNumber = $receiveOrderNumber ? $order['number'] : $newOrder->generateReference();
$newOrder->reference = $orderNumber;
if (isset($deliveryType)) {
$newOrder->id_carrier = (int)$deliveryType;
@ -712,15 +716,13 @@ class RetailcrmHistory
// update order items ids in crm
$newItemsIdsByOrderId[$newOrder->id] = $newItemsIds;
//TODO
// Also update orders numbers after creating them in PrestaShop.
// Current logic will result in autogenerated order numbers in retailCRM if
// order was placed via retailCRM interface.
// $upOrder = array(
// 'externalId' => $newOrder->id,
// 'number' => $newOrder->reference
// );
// self::$api->ordersEdit($upOrder);
// collect orders id and reference if option sendOrderNumber enabled
if ($sendOrderNumber) {
array_push($updateOrderIds, array(
'externalId' => $newOrder->id,
'number' => $newOrder->reference,
));
}
} else {
@ -1103,6 +1105,20 @@ class RetailcrmHistory
}
}
}
// update order number in PS if receiveOrderNumber option (CRM->PS) enabled
if (isset($order['number']) && $receiveOrderNumber) {
$orderToUpdate->reference = $order['number'];
$orderToUpdate->update();
}
// collect orders id and reference if option sendOrderNumber enabled
if ($sendOrderNumber) {
array_push($updateOrderIds, array(
'externalId' => $orderToUpdate->id,
'number' => $orderToUpdate->reference,
));
}
}
}
@ -1110,6 +1126,13 @@ class RetailcrmHistory
if (!empty($orderFix)) {
self::$api->ordersFixExternalIds($orderFix);
}
// update orders number in CRM
if (!empty($updateOrderIds)) {
foreach ($updateOrderIds as $upOrder) {
self::$api->ordersEdit($upOrder);
}
}
// update order items ids in crm
if (!empty($newItemsIdsByOrderId)) {

View File

@ -828,6 +828,8 @@ class RetailcrmOrderBuilder
$delivery = json_decode(Configuration::get(RetailCRM::DELIVERY), true);
$payment = json_decode(Configuration::get(RetailCRM::PAYMENT), true);
$status = json_decode(Configuration::get(RetailCRM::STATUS), true);
$sendOrderNumber = (bool)(Configuration::get(RetailCRM::ENABLE_ORDER_NUMBER_SENDING));
$orderNumber = $sendOrderNumber ? $order->reference : null;
if (Module::getInstanceByName('advancedcheckout') === false) {
$paymentType = $order->module;
@ -861,7 +863,7 @@ class RetailcrmOrderBuilder
$crmOrder = array_filter(array(
'externalId' => $order->id,
'number' => $order->id,
'number' => $orderNumber,
'createdAt' => RetailcrmTools::verifyDate($order->date_add, 'Y-m-d H:i:s')
? $order->date_add : date('Y-m-d H:i:s'),
'status' => $order_status,

View File

@ -54,6 +54,7 @@
<field id="contragent.bank_account" group="customerContragent">bankAccount</field>
<field id="id" group="order">id</field>
<field id="number" group="order">number</field>
<field id="created_at" group="order">createdAt</field>
<field id="order_type" group="order">orderType</field>
<field id="order_method" group="order">orderMethod</field>

View File

@ -73,6 +73,8 @@ class RetailCRM extends Module
const ENABLE_CORPORATE_CLIENTS = 'RETAILCRM_ENABLE_CORPORATE_CLIENTS';
const ENABLE_HISTORY_UPLOADS = 'RETAILCRM_ENABLE_HISTORY_UPLOADS';
const ENABLE_BALANCES_RECEIVING = 'RETAILCRM_ENABLE_BALANCES_RECEIVING';
const ENABLE_ORDER_NUMBER_SENDING = 'RETAILCRM_ENABLE_ORDER_NUMBER_SENDING';
const ENABLE_ORDER_NUMBER_RECEIVING = 'RETAILCRM_ENABLE_ORDER_NUMBER_RECEIVING';
const ENABLE_DEBUG_MODE = 'RETAILCRM_ENABLE_DEBUG_MODE';
const LATEST_API_VERSION = '5';
@ -241,6 +243,8 @@ class RetailCRM extends Module
Configuration::deleteByName(static::ENABLE_CORPORATE_CLIENTS) &&
Configuration::deleteByName(static::ENABLE_HISTORY_UPLOADS) &&
Configuration::deleteByName(static::ENABLE_BALANCES_RECEIVING) &&
Configuration::deleteByName(static::ENABLE_ORDER_NUMBER_SENDING) &&
Configuration::deleteByName(static::ENABLE_ORDER_NUMBER_RECEIVING) &&
Configuration::deleteByName(static::ENABLE_DEBUG_MODE) &&
Configuration::deleteByName('RETAILCRM_LAST_SYNC') &&
Configuration::deleteByName('RETAILCRM_LAST_ORDERS_SYNC') &&
@ -334,6 +338,7 @@ class RetailCRM extends Module
$apiUrl = Configuration::get(static::API_URL);
$apiKey = Configuration::get(static::API_KEY);
$receiveOrderNumber = (bool)(Configuration::get(RetailCRM::ENABLE_ORDER_NUMBER_RECEIVING));
$isSuccessful = true;
if (!empty($apiUrl) && !empty($apiKey)) {
@ -376,6 +381,12 @@ class RetailCRM extends Module
if (empty($existingOrder)) {
$response = $this->api->ordersCreate($crmOrder);
if ($response->isSuccessful() && $receiveOrderNumber) {
$crmOrder = $response->order;
$object->reference = $crmOrder['number'];
$object->update();
}
} else {
$response = $this->api->ordersEdit($crmOrder);
}
@ -781,6 +792,7 @@ class RetailCRM extends Module
public function hookActionOrderStatusPostUpdate($params)
{
$status = json_decode(Configuration::get(static::STATUS), true);
$receiveOrderNumber = (bool)(Configuration::get(RetailCRM::ENABLE_ORDER_NUMBER_RECEIVING));
if (isset($params['orderStatus'])) {
$cmsOrder = $params['order'];
@ -819,7 +831,13 @@ class RetailCRM extends Module
$this->api->ordersPaymentCreate($payment);
}
} else {
$this->api->ordersCreate($order);
$response = $this->api->ordersCreate($order);
if ($response->isSuccessful() && $receiveOrderNumber) {
$crmOrder = $response->order;
$cmsOrder->reference = $crmOrder['number'];
$cmsOrder->update();
}
}
return true;
@ -954,6 +972,8 @@ class RetailCRM extends Module
'enableCorporate' => (Tools::getValue(static::ENABLE_CORPORATE_CLIENTS) !== false),
'enableHistoryUploads' => (Tools::getValue(static::ENABLE_HISTORY_UPLOADS) !== false),
'enableBalancesReceiving' => (Tools::getValue(static::ENABLE_BALANCES_RECEIVING) !== false),
'enableOrderNumberSending' => (Tools::getValue(static::ENABLE_ORDER_NUMBER_SENDING) !== false),
'enableOrderNumberReceiving' => (Tools::getValue(static::ENABLE_ORDER_NUMBER_RECEIVING) !== false),
'debugMode' => (Tools::getValue(static::ENABLE_DEBUG_MODE) !== false),
'collectorActive' => (Tools::getValue(static::COLLECTOR_ACTIVE) !== false),
'collectorKey' => (string)(Tools::getValue(static::COLLECTOR_KEY)),
@ -977,6 +997,8 @@ class RetailCRM extends Module
Configuration::updateValue(static::ENABLE_CORPORATE_CLIENTS, $settings['enableCorporate']);
Configuration::updateValue(static::ENABLE_HISTORY_UPLOADS, $settings['enableHistoryUploads']);
Configuration::updateValue(static::ENABLE_BALANCES_RECEIVING, $settings['enableBalancesReceiving']);
Configuration::updateValue(static::ENABLE_ORDER_NUMBER_SENDING, $settings['enableOrderNumberSending']);
Configuration::updateValue(static::ENABLE_ORDER_NUMBER_RECEIVING, $settings['enableOrderNumberReceiving']);
Configuration::updateValue(static::COLLECTOR_ACTIVE, $settings['collectorActive']);
Configuration::updateValue(static::COLLECTOR_KEY, $settings['collectorKey']);
Configuration::updateValue(static::SYNC_CARTS_ACTIVE, $settings['synchronizeCartsActive']);
@ -1360,6 +1382,8 @@ class RetailCRM extends Module
'enableCorporate' => (bool)(Configuration::get(static::ENABLE_CORPORATE_CLIENTS)),
'enableHistoryUploads' => (bool)(Configuration::get(static::ENABLE_HISTORY_UPLOADS)),
'enableBalancesReceiving' => (bool)(Configuration::get(static::ENABLE_BALANCES_RECEIVING)),
'enableOrderNumberSending' => (bool)(Configuration::get(static::ENABLE_ORDER_NUMBER_SENDING)),
'enableOrderNumberReceiving' => (bool)(Configuration::get(static::ENABLE_ORDER_NUMBER_RECEIVING)),
'debugMode' => (bool)(Configuration::get(static::ENABLE_DEBUG_MODE)),
);
}
@ -1392,6 +1416,8 @@ class RetailCRM extends Module
'enableCorporateName' => static::ENABLE_CORPORATE_CLIENTS,
'enableHistoryUploadsName' => static::ENABLE_HISTORY_UPLOADS,
'enableBalancesReceivingName' => static::ENABLE_BALANCES_RECEIVING,
'enableOrderNumberSendingName' => static::ENABLE_ORDER_NUMBER_SENDING,
'enableOrderNumberReceivingName' => static::ENABLE_ORDER_NUMBER_RECEIVING,
'debugModeName' => static::ENABLE_DEBUG_MODE,
'jobsNames' => static::JOBS_NAMES
);

View File

@ -152,3 +152,62 @@ $_MODULE['<{retailcrm}prestashop>index_95428f32e5c696cf71baccb776bc5c15'] = 'Tra
$_MODULE['<{retailcrm}prestashop>index_e7f9e382dc50889098cbe56f2554c77b'] = 'Tarjeta bancaria';
$_MODULE['<{retailcrm}prestashop>index_7088f1d1d9c91d8b75e9882ffd78540c'] = 'Datos de contacto';
$_MODULE['<{retailcrm}prestashop>index_50f158e2507321f1a5b6f8fb9e350818'] = 'Escríbenos en caso de preguntas o dudas';
$_MODULE['<{retailcrm}prestashop>settings_c2cc7082a89c1ad6631a2f66af5f00c0'] = 'Conexión';
$_MODULE['<{retailcrm}prestashop>settings_065ab3a28ca4f16f55f103adc7d0226f'] = 'Los métodos del envío';
$_MODULE['<{retailcrm}prestashop>settings_33af8066d3c83110d4bd897f687cedd2'] = 'Los estados de pedidos';
$_MODULE['<{retailcrm}prestashop>settings_bab959acc06bb03897b294fbb892be6b'] = 'Los métodos de pago';
$_MODULE['<{retailcrm}prestashop>settings_7a1920d61156abc05a60135aefe8bc67'] = 'Por defecto';
$_MODULE['<{retailcrm}prestashop>settings_20cacc01d0de8bc6e9c9846f477e886b'] = 'Subir pedidos';
$_MODULE['<{retailcrm}prestashop>settings_6bcde6286f8d1b76063ee52104a240cf'] = 'Carritos abandonados';
$_MODULE['<{retailcrm}prestashop>settings_52a13123e134b8b72b6299bc14a36aad'] = 'Daemon Collector';
$_MODULE['<{retailcrm}prestashop>settings_71098155ccc0a0d6e0b501fbee37e7a9'] = 'LiveChat';
$_MODULE['<{retailcrm}prestashop>settings_9b6545e4cea9b4ad4979d41bb9170e2b'] = 'Avanzado';
$_MODULE['<{retailcrm}prestashop>settings_061b368c43f85d3fe2c7ccc842883a40'] = 'La configuración de la conexión';
$_MODULE['<{retailcrm}prestashop>settings_22a65bd0ef1919aa4e6dee849a7a2925'] = 'Simla.com URL';
$_MODULE['<{retailcrm}prestashop>settings_656a6828d7ef1bb791e42087c4b5ee6e'] = 'API key';
$_MODULE['<{retailcrm}prestashop>settings_8ffa3281a35a0d80fef2cac0fa680523'] = 'Habilitar la carga del historial';
$_MODULE['<{retailcrm}prestashop>settings_65dd9f6e8bf4eaf54c3dc96f011dade1'] = 'Recibir las existencias del Simla.com';
$_MODULE['<{retailcrm}prestashop>settings_4049d979b8e6b7d78194e96c3208a5a5'] = 'Número de orden';
$_MODULE['<{retailcrm}prestashop>settings_c95783013e3707fd4f0fd316133fdd1f'] = 'Envíe el número de pedido a Simla.com';
$_MODULE['<{retailcrm}prestashop>settings_4b60f9716ab3c3fb83260caafd46c55d'] = 'Reciba el número de pedido de Simla.com';
$_MODULE['<{retailcrm}prestashop>settings_6b49e7ceb026c3d16264e01b9b919ce3'] = 'Clientes corporativos';
$_MODULE['<{retailcrm}prestashop>settings_f8d7c52aa84f358caedb96fda86809da'] = 'Permitir el soporte a clientes corporativos';
$_MODULE['<{retailcrm}prestashop>settings_6c3c1845e109a9ef67378effea0c0503'] = 'Activar solo si está habilitada la opción \"Clientes corporativos\" en Simla.com';
$_MODULE['<{retailcrm}prestashop>settings_917afe348e09163269225a89a825e634'] = 'Sincronización de carritos de compradores';
$_MODULE['<{retailcrm}prestashop>settings_d8e002d770b6f98af7b7ae9a0e5acfe9'] = 'Crear pedidos para carritos abandonados de compradores';
$_MODULE['<{retailcrm}prestashop>settings_35b5a9139a54caeb925556ceb2c38086'] = 'Estado del pedido para carritos abandonados de compradores';
$_MODULE['<{retailcrm}prestashop>settings_9b9cf9f8778f69b4c6cf37e66f886be8'] = 'Elige el estado';
$_MODULE['<{retailcrm}prestashop>settings_a0d135501a738c3c98de385dc28cda61'] = 'Cargar carritos abandonados';
$_MODULE['<{retailcrm}prestashop>settings_27096e1243f98e1b3300f57ff1c76456'] = 'Elige la demora';
$_MODULE['<{retailcrm}prestashop>settings_4e537de8dd108eafec4c37603c8ab7fb'] = 'Administrar tipos de entrega';
$_MODULE['<{retailcrm}prestashop>settings_5b385947acf10ac0c5521161ce96aaa7'] = 'Elige la entrega';
$_MODULE['<{retailcrm}prestashop>settings_c0fd6d31d096a5845f1d1abb4c132b7d'] = 'Administrar estados de pedidos';
$_MODULE['<{retailcrm}prestashop>settings_dd53d9b3603b3279b25c74f6f3f189a4'] = 'Administrar tipos de pago';
$_MODULE['<{retailcrm}prestashop>settings_7dcc1208fa03381346955c6732d9ea85'] = 'Elige el tipo';
$_MODULE['<{retailcrm}prestashop>settings_6f1f9a3e435963417d08849fbef139c1'] = 'Ingrese los ID de los pedidos para cargar en Simla.com, divididos por una coma. También puede especificar rangos, como \"1-10\". Se permite subir hasta 10 pedidos a la vez.';
$_MODULE['<{retailcrm}prestashop>settings_acfa058ec9e6e4745eddc0cae3f0f881'] = 'Identificador del pedido';
$_MODULE['<{retailcrm}prestashop>settings_91412465ea9169dfd901dd5e7c96dd99'] = 'Subir';
$_MODULE['<{retailcrm}prestashop>settings_f4af7f6987dfee28741ce77ff2d09d46'] = 'Exportar pedidos y clientes';
$_MODULE['<{retailcrm}prestashop>settings_418faff1c9df0d297ff586ac3230be97'] = 'Puede exportar todos los pedidos y clientes de CMS a Simla.com presionando el botón \"Exportar\". Este proceso puede llevar mucho tiempo y es necesario que mantenga la pestaña abierta hasta que termine.';
$_MODULE['<{retailcrm}prestashop>settings_7442e29d7d53e549b78d93c46b8cdcfc'] = 'Pedidos';
$_MODULE['<{retailcrm}prestashop>settings_e6d0e1c8fc6a4fcf47869df87e04cd88'] = 'Clientes';
$_MODULE['<{retailcrm}prestashop>settings_f8f36c02fa6f370808135c66cfc788aa'] = 'Clientes sin pedidos';
$_MODULE['<{retailcrm}prestashop>settings_0095a9fa74d1713e43e370a7d7846224'] = 'Exportar';
$_MODULE['<{retailcrm}prestashop>settings_4d3d769b812b6faa6b76e1a8abaece2d'] = 'Active';
$_MODULE['<{retailcrm}prestashop>settings_f75d8fa5c89351544d372cf90528ccf2'] = 'Clave de la página web';
$_MODULE['<{retailcrm}prestashop>settings_c9cc8cce247e49bae79f15173ce97354'] = 'Guardar';
$_MODULE['<{retailcrm}prestashop>settings_4f18e3f1c9941a6ec5a38bc716c521b4'] = 'Código que necesita insertar en la web';
$_MODULE['<{retailcrm}prestashop>settings_ec3028a12402ab7f43962a6f3a667b6e'] = 'Modo de depuración';
$_MODULE['<{retailcrm}prestashop>settings_9082f68bc90113d8950e4ed7fe8fa0a4'] = 'Administrador de tareas';
$_MODULE['<{retailcrm}prestashop>settings_9194de58ce560c095f02cefc1c1c61e6'] = 'Nombre de la tarea';
$_MODULE['<{retailcrm}prestashop>settings_05a3a24340b7b9cc8d4e08f0ef4f4dd9'] = 'Última ejecución';
$_MODULE['<{retailcrm}prestashop>settings_ec53a8c4f07baed5d8825072c89799be'] = 'Estado';
$_MODULE['<{retailcrm}prestashop>settings_0be8406951cdfda82f00f79328cf4efc'] = 'Comentario';
$_MODULE['<{retailcrm}prestashop>settings_fe5b6cd4d7a31615bbec8d1505089d87'] = 'StackTrace';
$_MODULE['<{retailcrm}prestashop>settings_b2d37ae1cedf42ff874289b721860af2'] = 'Registros';
$_MODULE['<{retailcrm}prestashop>settings_34082694d21dbdcfc31e6e32d9fb2b9f'] = 'Nombre del archivo';
$_MODULE['<{retailcrm}prestashop>settings_a4b7f1864cfdb47cd05b54eb10337506'] = 'Fecha de modificación';
$_MODULE['<{retailcrm}prestashop>settings_6f6cb72d544962fa333e2e34ce64f719'] = 'Tamaño';
$_MODULE['<{retailcrm}prestashop>settings_06df33001c1d7187fdd81ea1f5b277aa'] = 'Comportamiento';
$_MODULE['<{retailcrm}prestashop>settings_801ab24683a4a8c433c6eb40c48bcd9d'] = 'Descargar';
$_MODULE['<{retailcrm}prestashop>settings_61b0ada67b7f40bf3d40dcc88ae4f3e6'] = 'Descargar todo';

View File

@ -152,3 +152,62 @@ $_MODULE['<{retailcrm}prestashop>index_95428f32e5c696cf71baccb776bc5c15'] = 'Б
$_MODULE['<{retailcrm}prestashop>index_e7f9e382dc50889098cbe56f2554c77b'] = 'Кредитной картой';
$_MODULE['<{retailcrm}prestashop>index_7088f1d1d9c91d8b75e9882ffd78540c'] = 'Наши контакты';
$_MODULE['<{retailcrm}prestashop>index_50f158e2507321f1a5b6f8fb9e350818'] = 'Пишите нам если у Вас есть вопросы';
$_MODULE['<{retailcrm}prestashop>settings_c2cc7082a89c1ad6631a2f66af5f00c0'] = 'Соединение';
$_MODULE['<{retailcrm}prestashop>settings_065ab3a28ca4f16f55f103adc7d0226f'] = 'Способы доставки';
$_MODULE['<{retailcrm}prestashop>settings_33af8066d3c83110d4bd897f687cedd2'] = 'Статусы заказов';
$_MODULE['<{retailcrm}prestashop>settings_bab959acc06bb03897b294fbb892be6b'] = 'Способы оплаты';
$_MODULE['<{retailcrm}prestashop>settings_7a1920d61156abc05a60135aefe8bc67'] = 'По умолчанию';
$_MODULE['<{retailcrm}prestashop>settings_20cacc01d0de8bc6e9c9846f477e886b'] = 'Выгрузка заказов';
$_MODULE['<{retailcrm}prestashop>settings_6bcde6286f8d1b76063ee52104a240cf'] = 'Брошенные корзины';
$_MODULE['<{retailcrm}prestashop>settings_52a13123e134b8b72b6299bc14a36aad'] = 'Daemon Collector';
$_MODULE['<{retailcrm}prestashop>settings_71098155ccc0a0d6e0b501fbee37e7a9'] = 'Онлайн-консультант';
$_MODULE['<{retailcrm}prestashop>settings_9b6545e4cea9b4ad4979d41bb9170e2b'] = 'Дополнительно';
$_MODULE['<{retailcrm}prestashop>settings_061b368c43f85d3fe2c7ccc842883a40'] = 'Настройка соединения';
$_MODULE['<{retailcrm}prestashop>settings_22a65bd0ef1919aa4e6dee849a7a2925'] = 'URL адрес Simla.com';
$_MODULE['<{retailcrm}prestashop>settings_656a6828d7ef1bb791e42087c4b5ee6e'] = 'API-ключ';
$_MODULE['<{retailcrm}prestashop>settings_8ffa3281a35a0d80fef2cac0fa680523'] = 'Включить выгрузку истории';
$_MODULE['<{retailcrm}prestashop>settings_65dd9f6e8bf4eaf54c3dc96f011dade1'] = 'Получать остатки из Simla.com';
$_MODULE['<{retailcrm}prestashop>settings_4049d979b8e6b7d78194e96c3208a5a5'] = 'Номер заказа';
$_MODULE['<{retailcrm}prestashop>settings_c95783013e3707fd4f0fd316133fdd1f'] = 'Передавать номер заказа в Simla.com';
$_MODULE['<{retailcrm}prestashop>settings_4b60f9716ab3c3fb83260caafd46c55d'] = 'Получать номер заказа из Simla.com';
$_MODULE['<{retailcrm}prestashop>settings_6b49e7ceb026c3d16264e01b9b919ce3'] = 'Корпоративные клиенты';
$_MODULE['<{retailcrm}prestashop>settings_f8d7c52aa84f358caedb96fda86809da'] = 'Включить поддержку корпоративных клиентов';
$_MODULE['<{retailcrm}prestashop>settings_6c3c1845e109a9ef67378effea0c0503'] = 'Активировать только при включенной опции \"Корпоративные клиенты\" в Simla.com';
$_MODULE['<{retailcrm}prestashop>settings_917afe348e09163269225a89a825e634'] = 'Синхронизация корзин покупателей';
$_MODULE['<{retailcrm}prestashop>settings_d8e002d770b6f98af7b7ae9a0e5acfe9'] = 'Создавать заказы для брошенных корзин покупателей';
$_MODULE['<{retailcrm}prestashop>settings_35b5a9139a54caeb925556ceb2c38086'] = 'Статус заказа для брошенных корзин покупателей';
$_MODULE['<{retailcrm}prestashop>settings_9b9cf9f8778f69b4c6cf37e66f886be8'] = 'Выберите статус';
$_MODULE['<{retailcrm}prestashop>settings_a0d135501a738c3c98de385dc28cda61'] = 'Выгружать брошенные корзины';
$_MODULE['<{retailcrm}prestashop>settings_27096e1243f98e1b3300f57ff1c76456'] = 'Выберите задержку';
$_MODULE['<{retailcrm}prestashop>settings_4e537de8dd108eafec4c37603c8ab7fb'] = 'Управление типами доставки';
$_MODULE['<{retailcrm}prestashop>settings_5b385947acf10ac0c5521161ce96aaa7'] = 'Выберите доставку';
$_MODULE['<{retailcrm}prestashop>settings_c0fd6d31d096a5845f1d1abb4c132b7d'] = 'Управление статусами заказов';
$_MODULE['<{retailcrm}prestashop>settings_dd53d9b3603b3279b25c74f6f3f189a4'] = 'Управление типами оплаты';
$_MODULE['<{retailcrm}prestashop>settings_7dcc1208fa03381346955c6732d9ea85'] = 'Выберите тип';
$_MODULE['<{retailcrm}prestashop>settings_6f1f9a3e435963417d08849fbef139c1'] = 'Введите идентификаторы заказов для загрузки в Simla.com, разделив их запятыми. Вы также можете указать диапазоны, например \"1-10\". Одновременно можно загружать до 10 заказов.';
$_MODULE['<{retailcrm}prestashop>settings_acfa058ec9e6e4745eddc0cae3f0f881'] = 'ID заказов';
$_MODULE['<{retailcrm}prestashop>settings_91412465ea9169dfd901dd5e7c96dd99'] = 'Выгрузить';
$_MODULE['<{retailcrm}prestashop>settings_f4af7f6987dfee28741ce77ff2d09d46'] = 'Экспортировать заказы и клиентов';
$_MODULE['<{retailcrm}prestashop>settings_418faff1c9df0d297ff586ac3230be97'] = 'Вы можете экспортировать все заказы и клиентов из CMS в Simla.com, нажав кнопку «Экспорт». Этот процесс может занять много времени, и до его завершения необходимо держать вкладку открытой.';
$_MODULE['<{retailcrm}prestashop>settings_7442e29d7d53e549b78d93c46b8cdcfc'] = 'Заказы';
$_MODULE['<{retailcrm}prestashop>settings_e6d0e1c8fc6a4fcf47869df87e04cd88'] = 'Клиенты';
$_MODULE['<{retailcrm}prestashop>settings_f8f36c02fa6f370808135c66cfc788aa'] = 'Клиенты без заказов';
$_MODULE['<{retailcrm}prestashop>settings_0095a9fa74d1713e43e370a7d7846224'] = 'Экспортировать';
$_MODULE['<{retailcrm}prestashop>settings_4d3d769b812b6faa6b76e1a8abaece2d'] = 'Активно';
$_MODULE['<{retailcrm}prestashop>settings_f75d8fa5c89351544d372cf90528ccf2'] = 'Ключ сайта';
$_MODULE['<{retailcrm}prestashop>settings_c9cc8cce247e49bae79f15173ce97354'] = 'Сохранить';
$_MODULE['<{retailcrm}prestashop>settings_4f18e3f1c9941a6ec5a38bc716c521b4'] = 'Код для вставки на сайт';
$_MODULE['<{retailcrm}prestashop>settings_ec3028a12402ab7f43962a6f3a667b6e'] = 'Режим отладки';
$_MODULE['<{retailcrm}prestashop>settings_9082f68bc90113d8950e4ed7fe8fa0a4'] = 'Менеджер задач';
$_MODULE['<{retailcrm}prestashop>settings_9194de58ce560c095f02cefc1c1c61e6'] = 'Имя задачи';
$_MODULE['<{retailcrm}prestashop>settings_05a3a24340b7b9cc8d4e08f0ef4f4dd9'] = 'Последний запуск';
$_MODULE['<{retailcrm}prestashop>settings_ec53a8c4f07baed5d8825072c89799be'] = 'Статус';
$_MODULE['<{retailcrm}prestashop>settings_0be8406951cdfda82f00f79328cf4efc'] = 'Комментарий';
$_MODULE['<{retailcrm}prestashop>settings_fe5b6cd4d7a31615bbec8d1505089d87'] = 'StackTrace';
$_MODULE['<{retailcrm}prestashop>settings_b2d37ae1cedf42ff874289b721860af2'] = 'Лог-файлы';
$_MODULE['<{retailcrm}prestashop>settings_34082694d21dbdcfc31e6e32d9fb2b9f'] = 'Имя файла';
$_MODULE['<{retailcrm}prestashop>settings_a4b7f1864cfdb47cd05b54eb10337506'] = 'Дата изменения';
$_MODULE['<{retailcrm}prestashop>settings_6f6cb72d544962fa333e2e34ce64f719'] = 'Размер';
$_MODULE['<{retailcrm}prestashop>settings_06df33001c1d7187fdd81ea1f5b277aa'] = 'Действия';
$_MODULE['<{retailcrm}prestashop>settings_801ab24683a4a8c433c6eb40c48bcd9d'] = 'Скачать';
$_MODULE['<{retailcrm}prestashop>settings_61b0ada67b7f40bf3d40dcc88ae4f3e6'] = 'Скачать все';

View File

@ -91,6 +91,22 @@
<label for="receivebalances-active">{l s='Receive stocks from Simla.com' mod='retailcrm'}</label>
</div>
</div>
<div class="retail-form__title"
style="margin-top: 40px;">{l s='Order number' mod='retailcrm'}</div>
<div class="retail-form__row">
<div class="retail-form__checkbox">
<input type="checkbox" name="{$enableOrderNumberSendingName|escape:'htmlall':'UTF-8'}" value="{$enableOrderNumberSending|escape:'htmlall':'UTF-8'}" {if $enableOrderNumberSending}checked="checked"{/if} id="sendnumbers-active">
<label for="sendnumbers-active">{l s='Send order number to Simla.com' mod='retailcrm'}</label>
</div>
</div>
<div class="retail-form__row">
<div class="retail-form__checkbox">
<input type="checkbox" name="{$enableOrderNumberReceivingName|escape:'htmlall':'UTF-8'}" value="{$enableOrderNumberReceiving|escape:'htmlall':'UTF-8'}" {if $enableOrderNumberReceiving}checked="checked"{/if} id="receivenumbers-active">
<label for="receivenumbers-active">{l s='Receive order number from Simla.com' mod='retailcrm'}</label>
</div>
</div>
<div class="retail-form__title"
style="margin-top: 40px;">{l s='Corporate clients' mod='retailcrm'}</div>
<div class="retail-form__row">
<div class="retail-form__checkbox">
<input type="checkbox" name="{$enableCorporateName|escape:'htmlall':'UTF-8'}" value="{$enableCorporate|escape:'htmlall':'UTF-8'}" {if $enableCorporate}checked="checked"{/if} id="corpclients-active">

View File

@ -16,6 +16,24 @@ class RetailcrmOrderBuilderTest extends RetailcrmTestCase
$this->assertEquals(0, $resultItem['initialPrice']);
}
public function testBuildCrmOrder()
{
$order = new Order(1);
$order->reference = 'test_n';
$order->current_state = 0;
Configuration::updateValue('RETAILCRM_API_DELIVERY', '{"1":"test_delivery"}');
Configuration::updateValue('RETAILCRM_API_STATUS', '{"1":"test_status"}');
Configuration::updateValue(RetailCRM::ENABLE_ORDER_NUMBER_SENDING, false);
$crmOrder = RetailcrmOrderBuilder::buildCrmOrder($order);
$this->assertArrayNotHasKey('number', $crmOrder);
Configuration::updateValue(RetailCRM::ENABLE_ORDER_NUMBER_SENDING, true);
$crmOrder = RetailcrmOrderBuilder::buildCrmOrder($order);
$this->assertEquals($order->reference, $crmOrder['number']);
}
/**
* @return array
*/

View File

@ -35,6 +35,43 @@ class RetailCRMTest extends RetailcrmTestCase
);
}
public function testUploadOrders()
{
Configuration::updateValue(RetailCRM::API_URL, 'https://test.test');
Configuration::updateValue(RetailCRM::API_KEY, 'test_key');
$order = new Order(1);
$reference = $order->reference;
$updReference = 'test';
$this->apiMock->expects($this->any())->method('ordersGet')->willReturn(new RetailcrmApiResponse(
200,
json_encode(array(
'success' => true,
'order' => array(),
))
));
$this->apiMock->expects($this->any())->method('ordersCreate')->willReturn(new RetailcrmApiResponse(
200,
json_encode(array(
'success' => true,
'order' => array(
'number' => $updReference,
),
))
));
Configuration::updateValue(RetailCRM::ENABLE_ORDER_NUMBER_RECEIVING, false);
$this->retailcrmModule->uploadOrders([1]);
$firstUpdOrder = new Order(1);
$this->assertEquals($reference, $firstUpdOrder->reference);
Configuration::updateValue(RetailCRM::ENABLE_ORDER_NUMBER_RECEIVING, true);
$this->retailcrmModule->uploadOrders([1]);
$secondUpdOrder = new Order(1);
$this->assertEquals($updReference, $secondUpdOrder->reference);
}
public function testHookActionCustomerAccountAdd()
{
$newCustomer = new Customer(1);
@ -79,6 +116,8 @@ class RetailCRMTest extends RetailcrmTestCase
$cart->expects($this->any())->method('getProducts')->willReturn($this->getProducts());
$cart->expects($this->any())->method('getAddressCollection')->willReturn($this->getAddressCollection());
$status = new StdClass();
$reference = $order->reference;
$updReference = 'test';
if ($newOrder === false) {
$status->id = 11;
@ -98,7 +137,25 @@ class RetailCRMTest extends RetailcrmTestCase
);
}
$this->apiMock->expects($this->any())->method('ordersCreate')->willReturn(new RetailcrmApiResponse(
200,
json_encode(array(
'success' => true,
'order' => array(
'number' => $updReference,
),
))
));
Configuration::updateValue(RetailCRM::ENABLE_ORDER_NUMBER_RECEIVING, false);
$this->assertTrue($this->retailcrmModule->hookActionOrderStatusPostUpdate($params));
$this->assertEquals($reference, $order->reference);
Configuration::updateValue(RetailCRM::ENABLE_ORDER_NUMBER_RECEIVING, true);
$this->assertTrue($this->retailcrmModule->hookActionOrderStatusPostUpdate($params));
$this->assertEquals($updReference, $order->reference);
}
/**

View File

@ -29,8 +29,8 @@ class RetailcrmHistoryTest extends RetailcrmTestCase
$data = $catalog->getData();
$this->product = $data[1]->current();
Configuration::updateValue('RETAILCRM_API_DELIVERY_DEFAULT', 2);
Configuration::updateValue('RETAILCRM_API_PAYMENT_DEFAULT', 'bankwire');
Configuration::updateValue(RetailCRM::DELIVERY_DEFAULT, 2);
Configuration::updateValue(RetailCRM::PAYMENT_DEFAULT, 'bankwire');
$this->setConfig();
}
@ -84,6 +84,74 @@ class RetailcrmHistoryTest extends RetailcrmTestCase
$this->assertEquals(true, RetailcrmHistory::customersHistory());
}
public function testOrdersHistory()
{
RetailcrmHistory::$default_lang = (int)Configuration::get('PS_LANG_DEFAULT');
RetailcrmHistory::$api = $this->apiMock;
$order = new Order(1);
$reference = $order->reference;
$updReference = 'test';
$crmOrder = $this->getApiOrder();
$crmOrder['number'] = $updReference;
$checkArgs = array(
'externalId' => 1,
'number' => $reference,
);
$this->apiMock->expects($this->any())
->method('ordersHistory')
->willReturn(
new RetailcrmApiResponse(
'200',
json_encode(
$this->getHistoryExistOrder($crmOrder)
)
)
);
$this->apiMock->expects($this->any())
->method('ordersGet')
->willReturn(
new RetailcrmApiResponse(
'200',
json_encode(
array(
'order' => $crmOrder,
)
)
)
);
$this->apiMock->expects($this->once())
->method('ordersEdit')
->with($checkArgs)
->willReturn(
new RetailcrmApiResponse(
'200',
json_encode(
array(
'order' => array(),
)
)
)
);
Configuration::updateValue(RetailCRM::ENABLE_ORDER_NUMBER_RECEIVING, false);
Configuration::updateValue(RetailCRM::ENABLE_ORDER_NUMBER_SENDING, false);
RetailcrmHistory::ordersHistory();
$firstUpdOrder = new Order(1);
$this->assertEquals($reference, $firstUpdOrder->reference);
Configuration::updateValue(RetailCRM::ENABLE_ORDER_NUMBER_RECEIVING, true);
Configuration::updateValue(RetailCRM::ENABLE_ORDER_NUMBER_SENDING, true);
RetailcrmHistory::ordersHistory();
$secondUpdOrder = new Order(1);
$this->assertEquals($updReference, $secondUpdOrder->reference);
}
private function orderCreate($apiMock, $orderData)
{
RetailcrmHistory::$default_lang = (int)Configuration::get('PS_LANG_DEFAULT');