-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 2ede786
Showing
9 changed files
with
819 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
# Модуль интеграции Dreamkas для OpenCart 3.* | ||
|
||
## Содержимое репозитория | ||
|
||
* `./dreamkas-opencart3.ocmod/` - директория с исходным кодом модуля | ||
* `./dreamkas-opencart3.ocmod.ocmod.zip` - модуль, готовый к установке | ||
* `./dreamkas-f opencart.ocmod.zip` - исходный модуль для OpenCart 2.3, на котором основан данный | ||
|
||
## Описание | ||
|
||
Модуль устанавливается на OpenCart 3.0.2.0, настройки сохраняются, читаются. | ||
Судя по отзывам ([1](http://blog.anthonyaxenov.ru/2018/05/09/%d0%bc%d0%be%d0%b4%d1%83%d0%bb%d1%8c-%d0%b8%d0%bd%d1%82%d0%b5%d0%b3%d1%80%d0%b0%d1%86%d0%b8%d0%b8-dreamkas-%d0%b4%d0%bb%d1%8f-opencart-3-0-2-0/#comment-103) [2](https://help.dreamkas.ru/hc/ru/articles/115005504689-%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82%D1%8C-%D0%BA%D0%B0%D1%81%D1%81%D1%83-%D0%BA-OpenCart)), модуль рабочий, за исключением одного момента: не отображаются статусы фискализации, но сама фискализация работает. | ||
|
||
У меня лично нет возможности проверить насколько качественно работает этот модуль: для этого нужны реальные заказы и покупки. | ||
Проект, в рамках которого я работал над этим модулем, я больше не поддерживаю. | ||
|
||
Вся основная логика модуля прописана здесь: | ||
|
||
```upload/catalog/controller/extension/module/dreamkas.php``` | ||
|
||
Этот файл я не трогал. | ||
Я лишь восстановил возможность установить, удалить и настроить модуль. | ||
|
||
## Краткая информация | ||
|
||
Основано на модуле *[dreamkas-f opencart.ocmod.zip](https://help.dreamkas.ru/hc/ru/article_attachments/115010763145/dreamkas-f_opencart.ocmod.zip)*. | ||
|
||
Этот архив включен в репозиторий - для истории. | ||
Может кому-нибудь даже будет интересно увидеть в diff-ах точные правки, но ниже я опишу вкратце лишь основные: | ||
|
||
1. Шаблон (`upload/admin/view/template/extension/module/dreamkas.twig`): | ||
1. переписан с языка php на язык шаблонизатора Twig | ||
2. изменено расширение с .tpl на .twig | ||
2. Страница настроек: | ||
1. удалены большие куски закомментированного и нерабочего (?) кода | ||
2. исправлено получение списка установленных платёжных систем | ||
3. форматирование кода (`upload/admin/controller/extension/module/dreamkas.php`) | ||
3. Мелкое форматирование и исправление ссылки на сайт разработчика (`install.xml`) | ||
|
||
## Полезные ссылки | ||
|
||
1. История появления модуля: [читать в блоге](http://blog.anthonyaxenov.ru/2018/05/09/модуль-интеграции-dreamkas-для-opencart-3-0-2-0) | ||
2. Открытая документация к Dreamkas API: [kabinet.docs.apiary.io](http://kabinet.docs.apiary.io) | ||
3. [Как подключить интернет-магазин к кассе через Кабинет?](https://help.dreamkas.ru/hc/ru/articles/115005007709) | ||
4. [Подключить кассу к OpenCart](https://help.dreamkas.ru/hc/ru/articles/115005504689-%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82%D1%8C-%D0%BA%D0%B0%D1%81%D1%81%D1%83-%D0%BA-OpenCart) | ||
5. Групповой чат для разработчиков в Telegram: [@apidreamkas](https://t.me/apidreamkas) (если ссылка не работает — ищи через в TG поиск) | ||
|
||
## Лицензия | ||
|
||
Весь исходный код, находящийся в этом репозитории, распространяется по [лицензии WTFPL v2](http://www.wtfpl.net/txt/copying/). | ||
|
||
Причина - отсутствие какой-либо лицензии на исходный модуль `./dreamkas-f opencart.ocmod.zip` и безразличие к моим доработкам. | ||
|
||
## Поддержка | ||
|
||
Отсутствует и не появится. | ||
|
||
Любые манипуляции с модулем - НА ВАШ СТРАХ И РИСК. | ||
|
||
Я НЕ ДАЮ НИКАКИХ ГАРАНТИЙ ЕГО РАБОТОСПОСОБНОСТИ. |
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,170 @@ | ||
<?xml version="1.0" encoding="UTF-8" ?> | ||
<modification> | ||
<name>Dreamkas 2.3.x</name> | ||
<code>Dreamkas 2.3.x</code> | ||
<version>1.00</version> | ||
<author>Alt-team</author> | ||
<link>https://www.alt-team.ru/</link> | ||
<!--file path="catalog/controller/checkout/success.php"> | ||
<operation> | ||
<search><![CDATA[public function index() {]]></search> | ||
<add position="after"> | ||
<![CDATA[ | ||
if (isset($this->session->data['order_id'])) { | ||
$this->load->controller('extension/module/dreamkas/fiscalize',$this->session->data['order_id']); | ||
} | ||
]]> | ||
</add> | ||
</operation> | ||
</file--> | ||
<file path="admin/view/template/catalog/product_form.tpl"> | ||
<operation> | ||
<search><![CDATA[ | ||
<label class="col-sm-2 control-label" for="input-price"><?php echo $entry_price; ?></label> | ||
]]></search> | ||
<add position="after" offset="4"><![CDATA[ | ||
<div class="form-group"> | ||
<label class="col-sm-2 control-label" for="input-width">НДС товара при фискализации</label> | ||
<div class="col-sm-10"> | ||
<select name="dk_tax_type" id="input-dk_tax_type" class="form-control"> | ||
<option value="0" <?php if (empty($dk_tax_type)) echo "selected=\"selected\"";?>>Выберите НДС</option> | ||
<option value="NDS_NO_TAX" <?php if ($dk_tax_type=='NDS_NO_TAX') echo "selected=\"selected\"";?>>Без НДС</option> | ||
<option value="NDS_0" <?php if ($dk_tax_type=='NDS_0') echo "selected=\"selected\"";?>>НДС 0</option> | ||
<option value="NDS_10" <?php if ($dk_tax_type=='NDS_10') echo "selected=\"selected\"";?>>НДС 10</option> | ||
<option value="NDS_18" <?php if ($dk_tax_type=='NDS_18') echo "selected=\"selected\"";?>>НДС 18</option> | ||
<option value="NDS_10_CALCULATED" <?php if ($dk_tax_type=='NDS_10_CALCULATED') echo "selected=\"selected\"";?>>НДС 10/110</option> | ||
<option value="NDS_18_CALCULATED" <?php if ($dk_tax_type=='NDS_18_CALCULATED') echo "selected=\"selected\"";?>>НДС 18/118</option> | ||
</select> | ||
</div> | ||
</div> | ||
]]></add> | ||
</operation> | ||
</file> | ||
<file path="admin/model/catalog/product.php"> | ||
<operation> | ||
<search><![CDATA[ | ||
$this->db->query("DELETE FROM " . DB_PREFIX . "product_description WHERE product_id = '" . (int)$product_id . "'"); | ||
]]></search> | ||
<add position="before"><![CDATA[ | ||
if (isset($data['dk_tax_type'])) { | ||
$this->db->query("UPDATE " . DB_PREFIX . "product SET dk_tax_type = '" . $this->db->escape($data['dk_tax_type']) . "' WHERE product_id = '" . (int)$product_id . "'"); | ||
} | ||
]]></add> | ||
</operation> | ||
</file> | ||
<file path="admin/controller/catalog/product.php"> | ||
<operation> | ||
<search><![CDATA[ | ||
$this->load->model('catalog/recurring'); | ||
]]></search> | ||
<add position="before"><![CDATA[ | ||
if (isset($this->request->post['dk_tax_type'])) { | ||
$data['dk_tax_type'] = $this->request->post['dk_tax_type']; | ||
} elseif (!empty($product_info['dk_tax_type'])) { | ||
$data['dk_tax_type'] = $product_info['dk_tax_type']; | ||
} else { | ||
$data['dk_tax_type'] = ''; | ||
} | ||
]]></add> | ||
</operation> | ||
</file> | ||
<file path="admin/view/template/sale/order_list.tpl"> | ||
<operation> | ||
<search><![CDATA[ | ||
<td class="text-right"><?php echo $column_action; ?></td> | ||
]]></search> | ||
<add position="before"><![CDATA[ | ||
<td class="text-left">Статус фискализации</td> | ||
]]></add> | ||
</operation> | ||
<operation> | ||
<search><![CDATA[ | ||
<td class="text-left"><?php echo $order['date_modified']; ?></td> | ||
]]></search> | ||
<add position="after"><![CDATA[ | ||
<td class="text-left"><?php echo $order['dk_status']; ?></td> | ||
]]></add> | ||
</operation> | ||
</file> | ||
<file path="admin/view/template/sale/order_info.tpl"> | ||
<operation> | ||
<search><![CDATA[ | ||
<td><?php echo $text_affiliate; ?> | ||
]]></search> | ||
<add position="before"><![CDATA[ | ||
<td><?php echo $entry_dk_status; ?></td> | ||
<td class="text-right"><?php if ($dk_status) { ?><?php echo $dk_status; ?><?php } ?></td> | ||
<td class="text-center"></td> | ||
</tr> | ||
<tr> | ||
]]></add> | ||
</operation> | ||
</file> | ||
<file path="admin/controller/sale/order.php"> | ||
<operation> | ||
<search><![CDATA[ | ||
$results = $this->model_sale_order->getOrders($filter_data); | ||
]]></search> | ||
<add position="after" offset="2"><![CDATA[ | ||
$dkquery = $this->db->query("SELECT dk_status FROM " . DB_PREFIX . "dreamkas WHERE order_id = '" . (int)$result['order_id']. "'"); | ||
]]></add> | ||
</operation> | ||
<operation> | ||
<search><![CDATA['shipping_code' => $result['shipping_code'],]]></search> | ||
<add position="before"><![CDATA[ | ||
'dk_status' => !empty($dkquery->row['dk_status'])?$dkquery->row['dk_status']:'', | ||
]]></add> | ||
</operation> | ||
<operation> | ||
<search><![CDATA[$data['tab_additional'] = $this->language->get('tab_additional');]]></search> | ||
<add position="before"><![CDATA[ | ||
$query = $this->db->query("SELECT order_status_id FROM `" . DB_PREFIX . "order` o WHERE o.order_id = '" . (int)$order_id . "'"); | ||
$status = $query->row['order_status_id']; | ||
$query = $this->db->query("SELECT payment_code FROM `" . DB_PREFIX . "order` o WHERE o.order_id = '" . (int)$order_id . "'"); | ||
$payment_code = $query->row['payment_code']; | ||
if ($status == $this->config->get('dreamkas_paid_order') && in_array($payment_code, $this->config->get('dreamkas_payments_ids'))) { | ||
$query = $this->db->query("SELECT dk_id FROM " . DB_PREFIX . "dreamkas WHERE order_id = '" . (int)$order_id. "'"); | ||
if(!empty($query->row['dk_id'])) { | ||
$dk_id = $query->row['dk_id']; | ||
$ch = curl_init(); | ||
$access_token = $this->config->get('dreamkas_access_token'); | ||
curl_setopt($ch, CURLOPT_HTTPHEADER, array( | ||
"Content-Type: application/json", | ||
"Authorization: Bearer $access_token" | ||
)); | ||
curl_setopt($ch, CURLOPT_URL, "https://kabinet.dreamkas.ru/api/operations/".$dk_id); | ||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); | ||
curl_setopt($ch, CURLOPT_HEADER, FALSE); | ||
$response = curl_exec($ch); | ||
curl_close($ch); | ||
$response = json_decode($response, true); | ||
if((substr($response['status'], 0, 1)==4)) { | ||
$this->log->write('Dreamkas debug: ' . json_encode($response)); | ||
} elseif(!empty($response['data']['error'])) { | ||
$this->log->write('Dreamkas debug: ' . json_encode($response['data']['error'])); | ||
} else { | ||
$dk_date = empty($response['createdAt'])?$response['completedAt']:$response['createdAt']; | ||
$this->db->query("UPDATE `" . DB_PREFIX . "dreamkas` SET `order_id` = '" . (int)$order_id . "', `dk_id` = '".$response['id']."', `dk_date` ='".$dk_date."', `dk_status` = '" .$response['status']. "' WHERE order_id = '" . (int)$order_id. "'"); | ||
} | ||
} | ||
} | ||
$query = $this->db->query("SELECT dk_status FROM " . DB_PREFIX . "dreamkas WHERE order_id = '" . (int)$order_id. "'"); | ||
if(!empty($query->row['dk_status'])) { | ||
$data['dk_status'] = $query->row['dk_status']; | ||
} else { | ||
$data['dk_status']=''; | ||
} | ||
$this->load->language('extension/module/dreamkas'); | ||
$data['entry_dk_status'] = $this->language->get('entry_dk_status'); | ||
]]></add> | ||
</operation> | ||
</file> | ||
</modification> |
Oops, something went wrong.