feat(order): order default status and customer group

This commit is contained in:
Nikita Kiselev
2025-08-03 10:20:14 +03:00
parent 2752ec3dd1
commit 14d42c6ecb
4 changed files with 46 additions and 13 deletions

View File

@@ -13,6 +13,8 @@
* @property ModelToolImage $model_tool_image
* @property ModelCatalogProduct $model_catalog_product
* @property User $user
* @property ModelCustomerCustomerGroup $model_customer_customer_group
* @property ModelLocalisationOrderStatus $model_localisation_order_status
*/
class ControllerExtensionModuleTgshop extends Controller
{
@@ -97,7 +99,7 @@ class ControllerExtensionModuleTgshop extends Controller
true
);
$data['settings'] = static::getSettingsConfig();
$data['settings'] = $this->getSettingsConfig();
foreach ($data['settings'] as $configs) {
foreach ($configs as $key => $config) {
@@ -165,7 +167,7 @@ class ControllerExtensionModuleTgshop extends Controller
$this->error['error_warning'] = $this->language->get('error_permission');
}
foreach (static::getSettingsConfig() as $configs) {
foreach ($this->getSettingsConfig() as $configs) {
foreach ($configs as $key => $config) {
if (($config['required'] ?? false) === true && ! $this->request->post[$key]) {
$this->error["error_$key"] = 'Поле "' . $this->language->get(
@@ -245,10 +247,12 @@ class ControllerExtensionModuleTgshop extends Controller
'module_tgshop_theme_dark' => 'dark',
'module_tgshop_mainpage_products' => 'most_viewed',
'module_tgshop_featured_products' => [],
'module_tgshop_order_customer_group_id' => 1,
'module_tgshop_order_default_status_id' => 1,
];
}
private static function getSettingsConfig(): array
private function getSettingsConfig(): array
{
return [
'general' => [
@@ -351,8 +355,43 @@ class ControllerExtensionModuleTgshop extends Controller
],
'orders' => [
'module_tgshop_order_customer_group_id' => [
'type' => 'select',
'options' => $this->getCustomerGroups(),
'help' => 'Группа покупателей, которая будет назначена для заказов, оформленных через Telegram-магазин.',
],
'module_tgshop_order_default_status_id' => [
'type' => 'select',
'options' => $this->getOrderStatuses(),
'help' => 'Статус, с которым будут создаваться заказы через Telegram по умолчанию.',
],
],
];
}
private function getCustomerGroups(): array
{
$this->load->model('customer/customer_group');
$map = [];
foreach ($this->model_customer_customer_group->getCustomerGroups() as $customer_group) {
$map[(int)$customer_group['customer_group_id']] = $customer_group['name'];
}
return $map;
}
private function getOrderStatuses()
{
$this->load->model('localisation/order_status');
$statuses = $this->model_localisation_order_status->getOrderStatuses();
$map = [];
foreach ($statuses as $item) {
$map[(int)$item['order_status_id']] = $item['name'];
}
return $map;
}
}

View File

@@ -24,6 +24,8 @@ $_['lbl_module_tgshop_theme_light'] = 'Светлая тема';
$_['lbl_module_tgshop_theme_dark'] = 'Тёмная тема';
$_['lbl_module_tgshop_mainpage_products'] = 'Товары на главной';
$_['lbl_module_tgshop_featured_products'] = 'Избранные товары';
$_['lbl_module_tgshop_order_customer_group_id'] = 'Группа покупателей';
$_['lbl_module_tgshop_order_default_status_id'] = 'Статус заказов';
// Entry
$_['entry_status'] = 'Статус';

View File

@@ -35,14 +35,6 @@
<form action="{{ action }}" method="post" enctype="multipart/form-data" id="form-module"
class="form-horizontal">
<pre>
* Проверка request от телеграм
4. Выбор товаров, которые будут отображаться на главной странице
1. Шаблон для уведомлений покупателя о заказе
2. Требовать ввод email/phone
3. Группа покупателей для заказов от ТГ
</pre>
<ul class="nav nav-tabs">
{% for tabKey, tabItems in settings %}
<li{% if tabKey == 'general' %} class="active" {% endif %}>

View File

@@ -31,13 +31,13 @@ class Controllerextensiontgshophandle extends Controller
'oc_config_tax' => $this->config->get('config_tax'),
'oc_default_currency' => $this->config->get('config_currency'),
// ID группы покупателей, которая будет использоаваться в заказах через Телеграм.
'oc_customer_group_id' => $this->config->get('config_customer_group_id'),
'oc_customer_group_id' => $this->config->get('module_tgshop_order_customer_group_id'),
// ID магазина, для которого будут создаваться заказы из Телеграм
'oc_store_id' => 0,
// Название магазина, для которого будут создаваться заказы из Телеграм
'oc_store_name' => $this->config->get('config_name'),
// ID статуса, с которым будут создаваться заказы через Телеграм по умолчанию.
'oc_order_status_id' => 1,
'oc_order_status_id' => (int) $this->config->get('module_tgshop_order_default_status_id'),
'timezone' => $this->config->get('config_timezone', 'UTC'),
'language_id' => (int) $this->config->get('config_language_id'),
'shop_base_url' => HTTPS_SERVER,