Initial commit

This commit is contained in:
2019-04-25 00:15:47 +08:00
commit 2ede786157
9 changed files with 819 additions and 0 deletions

View File

@@ -0,0 +1,184 @@
<?php
class ControllerExtensionModuleDreamkas extends Controller {
private $error = array();
public function index() {
$this->load->language('extension/module/dreamkas');
$this->document->setTitle($this->language->get('heading_title'));
$this->load->model('setting/setting');
if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
$this->model_setting_setting->editSetting('dreamkas', $this->request->post);
$this->session->data['success'] = $this->language->get('text_success');
//$this->response->redirect($this->url->link('extension/extension', 'user_token=' . $this->session->data['user_token'], 'SSL'));
$this->response->redirect($this->url->link('extension/module/dreamkas', 'user_token=' . $this->session->data['user_token'], 'SSL'));
}
$data['heading_title'] = $this->language->get('heading_title');
$data['text_edit'] = $this->language->get('text_edit');
$data['text_enabled'] = $this->language->get('text_enabled');
$data['text_disabled'] = $this->language->get('text_disabled');
$data['entry_status'] = $this->language->get('entry_status');
$data['entry_access_token'] = $this->language->get('entry_access_token');
$data['entry_device_id'] = $this->language->get('entry_device_id');
$data['entry_tax_mode'] = $this->language->get('entry_tax_mode');
$data['entry_tax_type'] = $this->language->get('entry_tax_type');
$data['entry_payments_ids'] = $this->language->get('entry_payments_ids');
$data['entry_paid_order'] = $this->language->get('entry_paid_order');
$data['text_tax_default'] = $this->language->get('text_tax_default');
$data['text_tax_simple'] = $this->language->get('text_tax_simple');
$data['text_tax_simple_wo'] = $this->language->get('text_tax_simple_wo');
$data['text_tax_envd'] = $this->language->get('text_tax_envd');
$data['text_tax_agricult'] = $this->language->get('text_tax_agricult');
$data['text_tax_patent'] = $this->language->get('text_tax_patent');
$data['text_tax_nds_no_tax'] = $this->language->get('text_tax_nds_no_tax');
$data['text_tax_nds_0'] = $this->language->get('text_tax_nds_0');
$data['text_tax_nds_10'] = $this->language->get('text_tax_nds_10');
$data['text_tax_nds_18'] = $this->language->get('text_tax_nds_18');
$data['text_tax_nds_10_calculated'] = $this->language->get('text_tax_nds_10_calculated');
$data['text_tax_nds_18_calculated'] = $this->language->get('text_tax_nds_18_calculated');
$data['button_save'] = $this->language->get('button_save');
$data['button_cancel'] = $this->language->get('button_cancel');
if (isset($this->error['warning'])) {
$data['error_warning'] = $this->error['warning'];
} else {
$data['error_warning'] = '';
}
if (isset($this->error['access_token'])) {
$data['error_access_token'] = $this->error['access_token'];
} else {
$data['error_access_token'] = '';
}
if (isset($this->error['device_id'])) {
$data['error_device_id'] = $this->error['device_id'];
} else {
$data['error_device_id'] = '';
}
$data['breadcrumbs'] = array();
$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_home'),
'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true)
);
$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_extension'),
'href' => $this->url->link('extension/extension', 'user_token=' . $this->session->data['user_token'] . '&type=module', true)
);
$data['breadcrumbs'][] = array(
'text' => $this->language->get('heading_title'),
'href' => $this->url->link('extension/module/dreamkas', 'user_token=' . $this->session->data['user_token'], true)
);
$data['action'] = $this->url->link('extension/module/dreamkas', 'user_token=' . $this->session->data['user_token'], true);
$data['cancel'] = $this->url->link('extension/extension', 'user_token=' . $this->session->data['user_token'] . '&type=module', true);
if (isset($this->request->get['module_id']) && ($this->request->server['REQUEST_METHOD'] != 'POST')) {
$module_info = $this->model_extension_module->getModule($this->request->get['module_id']);
}
if (isset($this->request->post['dreamkas_access_token'])) {
$data['access_token'] = $this->request->post['dreamkas_access_token'];
} else {
$data['access_token'] = $this->config->get('dreamkas_access_token');
}
if (isset($this->request->post['dreamkas_device_id'])) {
$data['device_id'] = $this->request->post['dreamkas_device_id'];
} else {
$data['device_id'] = $this->config->get('dreamkas_device_id');
}
if (isset($this->request->post['dreamkas_tax_mode'])) {
$data['tax_mode'] = $this->request->post['dreamkas_tax_mode'];
} else {
$data['tax_mode'] = $this->config->get('dreamkas_tax_mode');
}
if (isset($this->request->post['dreamkas_tax_type'])) {
$data['tax_type'] = $this->request->post['dreamkas_tax_type'];
} else {
$data['tax_type'] = $this->config->get('dreamkas_tax_type');
}
if (isset($this->request->post['dreamkas_payments_ids'])) {
$data['payments_ids'] = $this->request->post['dreamkas_payments_ids'];
} else {
$data['payments_ids'] = $this->config->get('dreamkas_payments_ids');
}
if (isset($this->request->post['dreamkas_paid_order'])) {
$data['paid_order'] = $this->request->post['dreamkas_paid_order'];
} else {
$data['paid_order'] = $this->config->get('dreamkas_paid_order');
}
if (!isset($data['payments_ids'])) {
$data['payments_ids'] = array();
}
$this->load->model('localisation/order_status');
$data['order_statuses'] = $this->model_localisation_order_status->getOrderStatuses();
//Get payments
$this->load->model('setting/extension');
$paymenttypes = $this->model_setting_extension->getInstalled('payment');
foreach ($paymenttypes as $type) {
$this->load->language('extension/payment/' . $type, 'extension');
$data['paymenttypes'][] = array(
'code' => $type,
'name' => $this->language->get('extension')->get('heading_title'),
);
}
if (isset($this->request->post['dreamkas_status'])) {
$data['status'] = $this->request->post['dreamkas_status'];
} else {
$data['status'] = $this->config->get('dreamkas_status');
}
$data['header'] = $this->load->controller('common/header');
$data['column_left'] = $this->load->controller('common/column_left');
$data['footer'] = $this->load->controller('common/footer');
$this->response->setOutput($this->load->view('extension/module/dreamkas', $data));
}
protected function validate() {
if (!$this->user->hasPermission('modify', 'extension/module/dreamkas')) {
$this->error['warning'] = $this->language->get('error_permission');
}
if (!$this->request->post['dreamkas_access_token']) {
$this->error['error_access_token'] = $this->language->get('error_access_token');
}
if (!$this->request->post['dreamkas_device_id']) {
$this->error['error_device_id'] = $this->language->get('error_device_id');
}
if (!isset($this->request->post['dreamkas_payments_ids'])) {
//$this->error['error_payments_ids'] = $this->language->get('error_payments_ids');
}
return !$this->error;
}
public function install() {
$this->load->model('setting/event');
$this->model_setting_event->addEvent('dreamkas', 'catalog/model/checkout/order/addOrderHistory/after', 'extension/module/dreamkas');
$this->db->query("
CREATE TABLE IF NOT EXISTS `" . DB_PREFIX . "dreamkas` (
`order_id` int(11) NOT NULL,
`dk_id` VARCHAR(30) NOT NULL,
`dk_date` VARCHAR(30) NOT NULL,
`dk_status` VARCHAR(30) NOT NULL,
PRIMARY KEY (`order_id`)
) ENGINE=MyISAM DEFAULT COLLATE=utf8_general_ci
");
$this->db->query("ALTER TABLE `" . DB_PREFIX . "product` ADD `dk_tax_type` VARCHAR(50) NOT NULL DEFAULT ''");
}
public function uninstall() {
$this->load->model('setting/event');
$this->db->query("ALTER TABLE `" . DB_PREFIX . "product` DROP `dk_tax_type`;");
$this->model_setting_event->deleteEvent('dreamkas');
}
}

View File

@@ -0,0 +1,38 @@
<?php
// Heading
$_['heading_title'] = 'Дримкас';
// Text
$_['text_extension'] = 'Расширения';
$_['text_success'] = 'Настройки успешно изменены!';
$_['text_edit'] = 'Настройки модуля';
// Entry
$_['entry_dk_status'] = 'Дримкас статус';
$_['entry_status'] = 'Статус';
$_['entry_access_token'] = 'Токен доступа';
$_['entry_device_id'] = 'Идентификатор устройства, которое будет использовано для фискализации';
$_['entry_tax_mode'] = 'Система налогообложения (если устройство зарегистрировано для работы с несколькими СНО)';
$_['entry_tax_type'] = 'Тип НДС (если не указан, то будет взят из настроек устройства)';
$_['entry_payments_ids'] = 'Список способов оплаты, обработка платежей которых, будет передаваться для фискализации';
$_['entry_paid_order'] = 'Статус оплаченного ордера';
$_['text_tax_default'] = 'Общая';
$_['text_tax_simple'] = 'Упрощенная доход';
$_['text_tax_simple_wo'] = 'Упрощенная доход минус расход';
$_['text_tax_envd'] = 'Единый налог на вмененный доход';
$_['text_tax_agricult'] = 'Единый сельскохозяйственный налог';
$_['text_tax_patent'] = 'Патентная система налогообложения';
$_['text_tax_nds_no_tax'] = 'Без НДС';
$_['text_tax_nds_0'] = 'НДС 0';
$_['text_tax_nds_10'] = 'НДС 10';
$_['text_tax_nds_18'] = 'НДС 18';
$_['text_tax_nds_10_calculated'] = 'НДС 10/110';
$_['text_tax_nds_18_calculated'] = 'НДС 18/118';
// Error
$_['error_device_id'] = 'Введите ID кассы.';
$_['error_access_token'] = 'Необходим токен доступа.';
$_['error_permission'] = 'У Вас нет прав для управления данным модулем!';
$_['error_code'] = 'Необходим код';

View File

@@ -0,0 +1,127 @@
<?php echo $header; ?><?php echo $column_left; ?>
<div id="content">
<div class="page-header">
<div class="container-fluid">
<div class="pull-right">
<button type="submit" form="form-special" data-toggle="tooltip" title="<?php echo $button_save; ?>" class="btn btn-primary"><i class="fa fa-save"></i></button>
<a href="<?php echo $cancel; ?>" data-toggle="tooltip" title="<?php echo $button_cancel; ?>" class="btn btn-default"><i class="fa fa-reply"></i></a></div>
<h1><?php echo $heading_title; ?></h1>
<ul class="breadcrumb">
<?php foreach ($breadcrumbs as $breadcrumb) { ?>
<li><a href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a></li>
<?php } ?>
</ul>
</div>
</div>
<div class="container-fluid">
<?php if ($error_warning) { ?>
<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> <?php echo $error_warning; ?>
<button type="button" class="close" data-dismiss="alert">&times;</button>
</div>
<?php } ?>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title"><i class="fa fa-pencil"></i> <?php echo $text_edit; ?></h3>
</div>
<div class="panel-body">
<form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form-special" class="form-horizontal">
<div class="form-group required">
<label class="col-sm-2 control-label" for="input-name"><?php echo $entry_access_token; ?></label>
<div class="col-sm-10">
<input type="text" name="dreamkas_access_token" value="<?php echo $access_token; ?>" placeholder="<?php echo $entry_access_token; ?>" id="input-name" class="form-control" />
<?php if ($error_access_token) { ?>
<div class="text-danger"><?php echo $error_access_token; ?></div>
<?php } ?>
</div>
</div>
<div class="form-group required">
<label class="col-sm-2 control-label" for="input-limit"><?php echo $entry_device_id; ?></label>
<div class="col-sm-10">
<input type="text" name="dreamkas_device_id" value="<?php echo $device_id; ?>" placeholder="<?php echo $entry_device_id; ?>" id="input-device_id" class="form-control" />
</div>
</div>
<div class="form-group required">
<label class="col-sm-2 control-label" for="input-width"><?php echo $entry_tax_mode; ?></label>
<div class="col-sm-10">
<select name="dreamkas_tax_mode" id="input-tax_mode" class="form-control">
<option value="DEFAULT" <?php if ($tax_mode=='DEFAULT') echo "selected=\"selected\"";?>><?php echo $text_tax_default; ?></option>
<option value="SIMPLE" <?php if ($tax_mode=='SIMPLE') echo "selected=\"selected\"";?>><?php echo $text_tax_simple; ?></option>
<option value="SIMPLE_WO" <?php if ($tax_mode=='SIMPLE_WO') echo "selected=\"selected\"";?>><?php echo $text_tax_simple_wo; ?></option>
<option value="ENVD" <?php if ($tax_mode=='ENVD') echo "selected=\"selected\"";?>><?php echo $text_tax_envd; ?></option>
<option value="AGRICULT" <?php if ($tax_mode=='AGRICULT') echo "selected=\"selected\"";?>><?php echo $text_tax_agricult; ?></option>
<option value="PATENT" <?php if ($tax_mode=='PATENT') echo "selected=\"selected\"";?>><?php echo $text_tax_patent; ?></option>
</select>
</div>
</div>
<div class="form-group required">
<label class="col-sm-2 control-label" for="input-width"><?php echo $entry_tax_type; ?></label>
<div class="col-sm-10">
<select name="dreamkas_tax_type" id="input-tax_type" class="form-control">
<option value="NDS_NO_TAX" <?php if ($tax_type=='NDS_NO_TAX') echo "selected=\"selected\"";?>><?php echo $text_tax_nds_no_tax; ?></option>
<option value="NDS_0" <?php if ($tax_type=='NDS_0') echo "selected=\"selected\"";?>><?php echo $text_tax_nds_0; ?></option>
<option value="NDS_10" <?php if ($tax_type=='NDS_10') echo "selected=\"selected\"";?>><?php echo $text_tax_nds_10; ?></option>
<option value="NDS_18" <?php if ($tax_type=='NDS_18') echo "selected=\"selected\"";?>><?php echo $text_tax_nds_18; ?></option>
<option value="NDS_10_CALCULATED" <?php if ($tax_type=='NDS_10_CALCULATED') echo "selected=\"selected\"";?>><?php echo $text_tax_nds_10_calculated; ?></option>
<option value="NDS_18_CALCULATED" <?php if ($tax_type=='NDS_18_CALCULATED') echo "selected=\"selected\"";?>><?php echo $text_tax_nds_18_calculated; ?></option>
</select>
</div>
</div>
<div class="form-group required">
<label class="col-sm-2 control-label" for="input-paid_order"><?php echo $entry_paid_order; ?></label>
<div class="col-sm-10">
<select name="dreamkas_paid_order" id="input-paid_order" class="form-control">
<?php $arr = get_defined_vars();
foreach ($arr["order_statuses"] as $value)
{ ?>
<option value=<?php echo $value['order_status_id']; ?>
<?php if ($paid_order==$value['order_status_id'])
echo "selected=\"selected\"";?>
><?php echo $value['name']; ?></option>
<?php } ?>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" for="input-process-status"><?php echo $entry_payments_ids;?></label>
<div class="col-sm-8">
<div class="well well-sm" style="height: 150px; overflow: auto;">
<?php foreach ($extensions as $paymenttype) { ?>
<div class="checkbox">
<label>
<?php if (in_array($paymenttype['code'], $payments_ids)) { ?>
<input type="checkbox" name="dreamkas_payments_ids[]" value="<?php echo $paymenttype['code']; ?>" checked="checked" />
<?php echo $paymenttype['name']; ?>
<?php } else { ?>
<input type="checkbox" name="dreamkas_payments_ids[]" value="<?php echo $paymenttype['code']; ?>" />
<?php echo $paymenttype['name']; ?>
<?php } ?>
</label>
</div>
<?php } ?>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label" for="input-status"><?php echo $entry_status; ?></label>
<div class="col-sm-10">
<select name="dreamkas_status" id="input-status" class="form-control">
<?php if ($status) { ?>
<option value="1" selected="selected"><?php echo $text_enabled; ?></option>
<option value="0"><?php echo $text_disabled; ?></option>
<?php } else { ?>
<option value="1"><?php echo $text_enabled; ?></option>
<option value="0" selected="selected"><?php echo $text_disabled; ?></option>
<?php } ?>
</select>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<?php echo $footer; ?>

View File

@@ -0,0 +1,120 @@
{{ header }}
{{ column_left }}
<div id="content">
<div class="page-header">
<div class="container-fluid">
<div class="pull-right">
<button type="submit" form="form-special" data-toggle="tooltip" title="{{ button_save }}" class="btn btn-primary"><i class="fa fa-save"></i></button>
<a href="{{ cancel }}" data-toggle="tooltip" title="{{ button_cancel }}" class="btn btn-default"><i class="fa fa-reply"></i></a></div>
<h1>{{ heading_title }}</h1>
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
</div>
</div>
<div class="container-fluid">
{% if error_warning %}
<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> {{ error_warning }}
<button type="button" class="close" data-dismiss="alert">&times;</button>
</div>
{% endif %}
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title"><i class="fa fa-pencil"></i> {{ text_edit }}</h3>
</div>
<div class="panel-body">
<form action="{{ action }}" method="post" enctype="multipart/form-data" id="form-special" class="form-horizontal">
<div class="form-group required">
<label class="col-sm-2 control-label" for="input-name">{{ entry_access_token }}</label>
<div class="col-sm-10">
<input type="text" name="dreamkas_access_token" value="{{ access_token }}" placeholder="{{ entry_access_token }}" id="input-name" class="form-control" />
{% if error_access_token %}
<div class="text-danger">{{ error_access_token }}</div>
{% endif %}
</div>
</div>
<div class="form-group required">
<label class="col-sm-2 control-label" for="input-limit">{{ entry_device_id }}</label>
<div class="col-sm-10">
<input type="text" name="dreamkas_device_id" value="{{ device_id }}" placeholder="{{ entry_device_id }}" id="input-device_id" class="form-control" />
</div>
</div>
<div class="form-group required">
<label class="col-sm-2 control-label" for="input-width">{{ entry_tax_mode }}</label>
<div class="col-sm-10">
<select name="dreamkas_tax_mode" id="input-tax_mode" class="form-control">
<option value="DEFAULT" {% if tax_mode == 'DEFAULT' %} selected='selected' {% endif %}>{{ text_tax_default }}</option>
<option value="SIMPLE" {% if tax_mode == 'SIMPLE' %} selected='selected' {% endif %}>{{ text_tax_simple }}</option>
<option value="SIMPLE_WO" {% if tax_mode == 'SIMPLE_WO' %} selected='selected' {% endif %}>{{ text_tax_simple_wo }}</option>
<option value="ENVD" {% if tax_mode == 'ENVD' %} selected='selected' {% endif %}>{{ text_tax_envd }}</option>
<option value="AGRICULT" {% if tax_mode == 'AGRICULT' %} selected='selected' {% endif %}>{{ text_tax_agricult }}</option>
<option value="PATENT" {% if tax_mode == 'PATENT' %} selected='selected' {% endif %}>{{ text_tax_patent }}</option>
</select>
</div>
</div>
<div class="form-group required">
<label class="col-sm-2 control-label" for="input-width">{{ entry_tax_type }}</label>
<div class="col-sm-10">
<select name="dreamkas_tax_type" id="input-tax_type" class="form-control">
<option value="NDS_NO_TAX" {% if tax_type == 'NDS_NO_TAX' %} selected='selected' {% endif %}>{{ text_tax_nds_no_tax }}</option>
<option value="NDS_0" {% if tax_type == 'NDS_0' %} selected='selected' {% endif %}>{{ text_tax_nds_0 }}</option>
<option value="NDS_10" {% if tax_type == 'NDS_10' %} selected='selected' {% endif %}>{{ text_tax_nds_10 }}</option>
<option value="NDS_18" {% if tax_type == 'NDS_18' %} selected='selected' {% endif %}>{{ text_tax_nds_18 }}</option>
<option value="NDS_10_CALCULATED" {% if tax_type == 'NDS_10_CALCULATED' %} selected='selected' {% endif %}>{{ text_tax_nds_10_calculated }}</option>
<option value="NDS_18_CALCULATED" {% if tax_type == 'NDS_18_CALCULATED' %} selected='selected' {% endif %}>{{ text_tax_nds_18_calculated }}</option>
</select>
</div>
</div>
<div class="form-group required">
<label class="col-sm-2 control-label" for="input-paid_order">{{ entry_paid_order }}</label>
<div class="col-sm-10">
<select name="dreamkas_paid_order" id="input-paid_order" class="form-control">
{% for status in order_statuses %}
<option value='{{ status.order_status_id }}' {% if paid_order == status.order_status_id %} selected='selected' {% endif %}>{{ status.name }}</option>
{% endfor %}
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" for="input-process-status">{{ entry_payments_ids }}</label>
<div class="col-sm-8">
<div class="well well-sm" style="height: 150px; overflow: auto;">
{% for type in paymenttypes %}
<div class="checkbox">
<label>
<input type="checkbox" name="dreamkas_payments_ids[]" value="{{ type.code }}" {% if type.code in payments_ids %} checked="checked" {% endif %}/>{{ type.name }} ({{ type.code }})
</label>
</div>
{% endfor %}
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label" for="input-status">{{ entry_status }}</label>
<div class="col-sm-10">
<select name="dreamkas_status" id="input-status" class="form-control">
{% if status %}
<option value="1" selected="selected">{{ text_enabled }}</option>
<option value="0">{{ text_disabled }}</option>
{% else %}
<option value="1">{{ text_enabled }}</option>
<option value="0" selected="selected">{{ text_disabled }}</option>
{% endif %}
</select>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
{{ footer }}