├── .gitignore
├── OP_v1.5
├── readme.txt
└── upload
│ ├── admin
│ ├── controller
│ │ └── module
│ │ │ └── checkbox.php
│ ├── language
│ │ ├── english
│ │ │ └── module
│ │ │ │ └── checkbox.php
│ │ ├── russian
│ │ │ └── module
│ │ │ │ └── checkbox.php
│ │ └── ukrainian
│ │ │ └── module
│ │ │ └── checkbox.php
│ ├── model
│ │ └── extension
│ │ │ └── payment
│ │ │ └── checkbox.php
│ └── view
│ │ ├── javascript
│ │ └── checkbox
│ │ │ ├── bootstrap
│ │ │ ├── css
│ │ │ │ ├── bootstrap-theme.css
│ │ │ │ ├── bootstrap-theme.css.map
│ │ │ │ ├── bootstrap-theme.min.css
│ │ │ │ ├── bootstrap.css
│ │ │ │ ├── bootstrap.css.map
│ │ │ │ └── bootstrap.min.css
│ │ │ ├── fonts
│ │ │ │ ├── glyphicons-halflings-regular.eot
│ │ │ │ ├── glyphicons-halflings-regular.svg
│ │ │ │ ├── glyphicons-halflings-regular.ttf
│ │ │ │ ├── glyphicons-halflings-regular.woff
│ │ │ │ └── glyphicons-halflings-regular.woff2
│ │ │ └── js
│ │ │ │ ├── bootstrap.js
│ │ │ │ ├── bootstrap.min.js
│ │ │ │ └── npm.js
│ │ │ ├── font-awesome
│ │ │ ├── css
│ │ │ │ ├── font-awesome.css
│ │ │ │ └── font-awesome.min.css
│ │ │ ├── fonts
│ │ │ │ ├── FontAwesome.otf
│ │ │ │ ├── fontawesome-webfont.eot
│ │ │ │ ├── fontawesome-webfont.svg
│ │ │ │ ├── fontawesome-webfont.ttf
│ │ │ │ ├── fontawesome-webfont.woff
│ │ │ │ └── fontawesome-webfont.woff2
│ │ │ ├── less
│ │ │ │ ├── animated.less
│ │ │ │ ├── bordered-pulled.less
│ │ │ │ ├── core.less
│ │ │ │ ├── fixed-width.less
│ │ │ │ ├── font-awesome.less
│ │ │ │ ├── icons.less
│ │ │ │ ├── larger.less
│ │ │ │ ├── list.less
│ │ │ │ ├── mixins.less
│ │ │ │ ├── path.less
│ │ │ │ ├── rotated-flipped.less
│ │ │ │ ├── spinning.less
│ │ │ │ ├── stacked.less
│ │ │ │ └── variables.less
│ │ │ └── scss
│ │ │ │ ├── _animated.scss
│ │ │ │ ├── _bordered-pulled.scss
│ │ │ │ ├── _core.scss
│ │ │ │ ├── _fixed-width.scss
│ │ │ │ ├── _icons.scss
│ │ │ │ ├── _larger.scss
│ │ │ │ ├── _list.scss
│ │ │ │ ├── _mixins.scss
│ │ │ │ ├── _path.scss
│ │ │ │ ├── _rotated-flipped.scss
│ │ │ │ ├── _spinning.scss
│ │ │ │ ├── _stacked.scss
│ │ │ │ ├── _variables.scss
│ │ │ │ └── font-awesome.scss
│ │ │ └── jquery2
│ │ │ └── jquery-2.1.1.min.js
│ │ ├── stylesheet
│ │ └── checkbox
│ │ │ └── bootstrap.css
│ │ └── template
│ │ └── module
│ │ ├── checkbox.tpl
│ │ ├── checkbox_order_info.tpl
│ │ ├── checkbox_order_info_ajax.tpl
│ │ ├── checkbox_order_list.tpl
│ │ └── checkbox_order_list_ajax.tpl
│ └── vqmod
│ └── xml
│ └── checkbox.xml
├── OP_v2.1-2.3
├── admin
│ ├── controller
│ │ └── extension
│ │ │ └── module
│ │ │ └── checkbox.php
│ ├── language
│ │ ├── en-gb
│ │ │ └── extension
│ │ │ │ └── module
│ │ │ │ └── checkbox.php
│ │ ├── english
│ │ │ └── extension
│ │ │ │ └── module
│ │ │ │ └── checkbox.php
│ │ └── ru-ru
│ │ │ └── extension
│ │ │ └── module
│ │ │ └── checkbox.php
│ ├── model
│ │ └── extension
│ │ │ └── payment
│ │ │ └── checkbox.php
│ └── view
│ │ └── template
│ │ └── extension
│ │ └── module
│ │ ├── checkbox.tpl
│ │ ├── checkbox_order_info.tpl
│ │ ├── checkbox_order_info_ajax.tpl
│ │ ├── checkbox_order_list.tpl
│ │ └── checkbox_order_list_ajax.tpl
├── build
│ └── checkbox-OP2.1-2.3.ocmod.zip
└── system
│ └── checkbox.ocmod.xml
├── OP_v3.0
├── admin
│ ├── controller
│ │ └── extension
│ │ │ └── module
│ │ │ └── checkbox.php
│ ├── language
│ │ ├── en-gb
│ │ │ └── extension
│ │ │ │ └── module
│ │ │ │ └── checkbox.php
│ │ ├── english
│ │ │ └── extension
│ │ │ │ └── module
│ │ │ │ └── checkbox.php
│ │ └── ru-ru
│ │ │ └── extension
│ │ │ └── module
│ │ │ └── checkbox.php
│ ├── model
│ │ └── extension
│ │ │ └── payment
│ │ │ └── checkbox.php
│ └── view
│ │ └── template
│ │ └── extension
│ │ └── module
│ │ ├── checkbox.twig
│ │ ├── checkbox_order_info.twig
│ │ ├── checkbox_order_info_ajax.twig
│ │ ├── checkbox_order_list.twig
│ │ └── checkbox_order_list_ajax.twig
├── build
│ └── checkbox-OP3.0.ocmod.zip
└── system
│ └── checkbox.ocmod.xml
└── README.md
/.gitignore:
--------------------------------------------------------------------------------
1 | /.idea/
2 | /.idea/
3 |
--------------------------------------------------------------------------------
/OP_v1.5/readme.txt:
--------------------------------------------------------------------------------
1 | Встановлення
2 | =========
3 |
4 | 1. Розпакуйте архів із модулем та завантажте вміст папки upload на сайт
5 |
6 | 2. Встановіть модуль у меню Додатки \ Модулі
7 |
8 | 3. Встановіть права на перегляд модуля потрібним користувачам
9 |
10 | 4. Зайдіть в налаштування модуля, вкажіть потрібні параметри та збережіть налаштування
11 |
12 |
13 | Увага!!! Для роботи модуля потрібний vQmod!
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/controller/module/checkbox.php:
--------------------------------------------------------------------------------
1 | load->language('module/checkbox');
11 |
12 | $this->document->setTitle($this->language->get('heading_title'));
13 |
14 | $this->load->model('setting/setting');
15 |
16 | if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
17 | $this->model_setting_setting->editSetting('checkbox', $this->request->post);
18 |
19 | $this->session->data['success'] = $this->language->get('text_success');
20 |
21 | $this->redirect($this->url->link('extension/module', 'token=' . $this->session->data['token'], true));
22 | }
23 |
24 | $data['heading_title'] = $this->language->get('heading_title');
25 |
26 | $data['text_edit'] = $this->language->get('text_edit');
27 | $data['text_enabled'] = $this->language->get('text_enabled');
28 | $data['text_disabled'] = $this->language->get('text_disabled');
29 |
30 | $data['entry_rro_login'] = $this->language->get('entry_rro_login');
31 | $data['entry_rro_password'] = $this->language->get('entry_rro_password');
32 | $data['entry_rro_cashbox_key'] = $this->language->get('entry_rro_cashbox_key');
33 |
34 | $data['entry_rro_receipt_header'] = $this->language->get('entry_rro_receipt_header');
35 | $data['entry_rro_receipt_footer'] = $this->language->get('entry_rro_receipt_footer');
36 |
37 | $data['entry_status'] = $this->language->get('entry_status');
38 |
39 | $data['button_save'] = $this->language->get('button_save');
40 | $data['button_cancel'] = $this->language->get('button_cancel');
41 |
42 | if (isset($this->error['warning'])) {
43 | $data['error_warning'] = $this->error['warning'];
44 | } else {
45 | $data['error_warning'] = '';
46 | }
47 |
48 | $data['breadcrumbs'] = array();
49 |
50 | $data['breadcrumbs'][] = array(
51 | 'text' => $this->language->get('text_home'),
52 | 'href' => $this->url->link('common/home', 'token=' . $this->session->data['token'], true),
53 | 'separator' => false
54 | );
55 |
56 | $data['breadcrumbs'][] = array(
57 | 'text' => $this->language->get('text_module'),
58 | 'href' => $this->url->link('extension/module', 'token=' . $this->session->data['token'], true),
59 | 'separator' => ' :: '
60 | );
61 |
62 | $data['breadcrumbs'][] = array(
63 | 'text' => $this->language->get('heading_title'),
64 | 'href' => $this->url->link('module/checkbox', 'token=' . $this->session->data['token'], true),
65 | 'separator' => ' :: '
66 | );
67 |
68 |
69 | $data['action'] = $this->url->link('module/checkbox', 'token=' . $this->session->data['token'], true);
70 |
71 | $data['cancel'] = $this->url->link('extension/module', 'token=' . $this->session->data['token'], true);
72 |
73 | if (isset($this->request->post['checkbox_rro_login'])) {
74 | $data['checkbox_rro_login'] = $this->request->post['checkbox_rro_login'];
75 | } else {
76 | $data['checkbox_rro_login'] = $this->config->get('checkbox_rro_login');
77 | }
78 |
79 | if (isset($this->request->post['checkbox_rro_password'])) {
80 | $data['checkbox_rro_password'] = $this->request->post['checkbox_rro_password'];
81 | } else {
82 | $data['checkbox_rro_password'] = $this->config->get('checkbox_rro_password');
83 | }
84 |
85 | if (isset($this->request->post['checkbox_rro_cashbox_key'])) {
86 | $data['checkbox_rro_cashbox_key'] = $this->request->post['checkbox_rro_cashbox_key'];
87 | } else {
88 | $data['checkbox_rro_cashbox_key'] = $this->config->get('checkbox_rro_cashbox_key');
89 | }
90 |
91 | if (isset($this->request->post['checkbox_rro_is_dev'])) {
92 | $data['checkbox_rro_is_dev'] = $this->request->post['checkbox_rro_is_dev'];
93 | } else {
94 | $data['checkbox_rro_is_dev'] = $this->config->get('checkbox_rro_is_dev');
95 | }
96 |
97 | if (isset($this->request->post['checkbox_rro_receipt_header'])) {
98 | $data['checkbox_rro_receipt_header'] = $this->request->post['checkbox_rro_receipt_header'];
99 | } else {
100 | $data['checkbox_rro_receipt_header'] = $this->config->get('checkbox_rro_receipt_header');
101 | }
102 |
103 | if (isset($this->request->post['checkbox_rro_receipt_footer'])) {
104 | $data['checkbox_rro_receipt_footer'] = $this->request->post['checkbox_rro_receipt_footer'];
105 | } else {
106 | $data['checkbox_rro_receipt_footer'] = $this->config->get('checkbox_rro_receipt_footer');
107 | }
108 |
109 | if (isset($this->request->post['checkbox_status'])) {
110 | $data['checkbox_status'] = $this->request->post['checkbox_status'];
111 | } else {
112 | $data['checkbox_status'] = $this->config->get('checkbox_status');
113 | }
114 |
115 | $data['instruction'] = '1) для роботи з касою запустіть Checkbox підпис або HSM (DepositSign)';
116 |
117 | $this->data = $data;
118 | $this->template = 'module/checkbox.tpl';
119 | $this->children = array(
120 | 'common/header',
121 | 'common/footer'
122 | );
123 |
124 | $this->response->setOutput($this->render());
125 | }
126 |
127 |
128 | public function getViewInfo()
129 | {
130 | if (!$this->config->get('checkbox_status')) {
131 | return '';
132 | }
133 |
134 | if (isset($this->request->get['order_id'])) {
135 | $data['order_id'] = $this->request->get['order_id'];
136 | } else {
137 | $data['order_id'] = 0;
138 | }
139 |
140 | if (isset($this->request->get['token'])) {
141 | $data['token'] = $this->request->get['token'];
142 | } else {
143 | $data['token'] = 0;
144 | }
145 |
146 | $this->data = $data;
147 | $this->template = 'module/checkbox_order_info.tpl';
148 | return $this->render();
149 | }
150 |
151 | public function getViewList()
152 | {
153 |
154 | if (!$this->config->get('checkbox_status')) {
155 | return '';
156 | }
157 |
158 | if (isset($this->request->get['token'])) {
159 | $data['token'] = $this->request->get['token'];
160 | } else {
161 | $data['token'] = 0;
162 | }
163 |
164 | $this->data = $data;
165 | $this->template = 'module/checkbox_order_list.tpl';
166 | return $this->render();
167 | }
168 |
169 | public function createReceipt()
170 | {
171 |
172 | if (isset($this->request->get['order_id'])) {
173 | $order_id = $this->request->get['order_id'];
174 | } else {
175 | $order_id = 0;
176 | }
177 |
178 | if (isset($this->request->get['payment_type'])) {
179 | $payment_type = $this->request->get['payment_type'];
180 | } else {
181 | $payment_type = 'CASH';
182 | }
183 |
184 | if (isset($this->request->get['send_email'])) {
185 | $send_email = $this->request->get['send_email'];
186 | } else {
187 | $send_email = true;
188 | }
189 |
190 | if (isset($this->request->get['is_return'])) {
191 | $is_return = ($this->request->get['is_return'] > 0);
192 | } else {
193 | $is_return = false;
194 | }
195 |
196 | $this->load->model('sale/order');
197 | $this->load->model('extension/payment/checkbox');
198 |
199 | $order_info = $this->model_extension_payment_checkbox->getOrder($order_id);
200 |
201 |
202 | $email = $order_info['email'];
203 | //$cashier_name = $order_info['firstname'] . ' ' . $order_info['lastname'];
204 | $cashier_name =$order_info['store_name'];
205 | $departament = 'store';
206 |
207 |
208 | $params = array();
209 |
210 | $goods = array();
211 |
212 | $products = $this->model_sale_order->getOrderProducts($this->request->get['order_id']);
213 |
214 | $total = 0;
215 |
216 | foreach ($products as $product) {
217 |
218 | $price = (float)number_format((float)$product['price'], 2, '', '');
219 |
220 | $good = array(
221 | 'code' => $product['product_id'] . '-' . $product['name'],
222 | 'name' => $product['name'],
223 | 'price' => $price
224 | );
225 |
226 | $total += $price;
227 |
228 | $item = array(
229 | 'good' => $good,
230 | 'quantity' => (int)$product['quantity'] * 1000
231 | );
232 |
233 | if ($is_return) {
234 | $item['is_return'] = true;
235 | }
236 |
237 | $goods[] = $item;
238 | }
239 |
240 | $params['goods'] = $goods;
241 | $params['cashier_name'] = $cashier_name;
242 | $params['departament'] = $departament;
243 |
244 | if ($send_email) {
245 | $params['delivery'] = array('email' => $email);
246 | }
247 |
248 |
249 | $order_totals = $this->model_sale_order->getOrderTotals($this->request->get['order_id']);
250 |
251 | foreach ($order_totals as $order_total) {
252 |
253 | if ('total' == $order_total['code']) {
254 | $total = (float)number_format((float)$order_total['value'], 2, '', '');
255 | }
256 |
257 | if (in_array($order_total['code'], array('sub_total', 'total'))) {
258 | continue;
259 | }
260 |
261 | if ($order_total['value'] > 0) {
262 | $discount_type = 'EXTRA_CHARGE';
263 | } else {
264 | $discount_type = 'DISCOUNT';
265 | }
266 |
267 | $discount_price = abs((float)number_format((float)$order_total['value'], 2, '', ''));
268 |
269 | if ($discount_price > 0){
270 | $params['discounts'][] = array(
271 | 'type' => $discount_type,
272 | 'mode' => 'VALUE',
273 | 'value' => $discount_price,
274 | 'name' => strip_tags($order_total['title']),
275 | );
276 | }
277 | }
278 |
279 | $params['payments'][] = [
280 | 'type' => ( in_array($payment_type, array('CASH', 'CASHLESS', 'CARD'))) ? $payment_type : 'CASH',
281 | 'value' => $total
282 | ];
283 |
284 | if ($this->config->get('checkbox_rro_receipt_header')) {
285 | $params['header'] = $this->config->get('checkbox_rro_receipt_header');
286 | }
287 |
288 | if ($this->config->get('checkbox_rro_receipt_footer')) {
289 | $params['footer'] = $this->config->get('checkbox_rro_receipt_footer');
290 | }
291 |
292 | $receipt = $this->model_extension_payment_checkbox->create_receipt($params);
293 |
294 | $this->json['return_$params'] = $params;
295 | $this->json['return_$receipt'] = $receipt;
296 |
297 | if (isset($receipt['id'])) {
298 | if ($is_return) {
299 | $this->db->query("UPDATE " . DB_PREFIX . "order SET checkbox_return_receipt_id = '" . $this->db->escape($receipt['id']) . "' WHERE order_id = '" . (int)$order_id . "'");
300 | } else {
301 | $this->db->query("UPDATE " . DB_PREFIX . "order SET checkbox_receipt_id = '" . $this->db->escape($receipt['id']) . "' WHERE order_id = '" . (int)$order_id . "'");
302 | }
303 | }
304 |
305 | if (isset($receipt['message'])) {
306 | $this->json['error'] = '
' . print_r($receipt['message'], 1) . '
';
307 | }
308 |
309 |
310 | $this->response->addHeader('Content-Type: application/json');
311 | $this->response->setOutput(json_encode($this->json));
312 |
313 | }
314 |
315 | public function getReceiptHtml()
316 | {
317 |
318 | if (isset($this->request->get['receipt_id'])) {
319 | $receipt_id = $this->request->get['receipt_id'];
320 | } else {
321 | $receipt_id = '';
322 | }
323 |
324 | $this->load->model('extension/payment/checkbox');
325 |
326 | if ($receipt_id) {
327 | echo $this->model_extension_payment_checkbox->getReceiptHtml($receipt_id);
328 | }
329 | }
330 |
331 | public function orderInfo()
332 | {
333 |
334 | sleep(2);
335 |
336 | if (isset($this->request->get['order_id'])) {
337 | $order_id = $this->request->get['order_id'];
338 | } else {
339 | $order_id = 0;
340 | }
341 |
342 | if (isset($this->request->get['token'])) {
343 | $token = $this->request->get['token'];
344 | } else {
345 | $token = 0;
346 | }
347 |
348 | $data['token'] = $token;
349 | $data['order_id'] = $order_id;
350 |
351 | $this->load->model('extension/payment/checkbox');
352 |
353 | $order_info = $this->model_extension_payment_checkbox->getOrder($order_id);
354 |
355 |
356 | list($shift_id, $is_connected, $status) = $this->getShiftStatus();
357 |
358 | $data['link_html_receipt'] = $this->url->link('module/checkbox/getReceiptHtml', 'token=' . $token . '&receipt_id=' . $order_info['checkbox_receipt_id'], true);
359 | $data['link_html_receipt_return'] = $this->url->link('module/checkbox/getReceiptHtml', 'token=' . $token . '&receipt_id=' . $order_info['checkbox_return_receipt_id'], true);
360 |
361 | $data['status'] = $status;
362 |
363 | $data['checkbox_receipt_id'] = '';
364 | $data['checkbox_return_receipt_id'] = '';
365 |
366 | if ($order_info['checkbox_receipt_id']) {
367 | $receipt_info = $this->model_extension_payment_checkbox->getReceipt($order_info['checkbox_receipt_id']);
368 | if (isset($receipt_info['fiscal_code'])) {
369 | $data['checkbox_receipt_id'] = $receipt_info['fiscal_code'];
370 | }
371 | }
372 |
373 | if ($order_info['checkbox_return_receipt_id']) {
374 | $receipt_info = $this->model_extension_payment_checkbox->getReceipt($order_info['checkbox_return_receipt_id']);
375 | if (isset($receipt_info['fiscal_code'])) {
376 | $data['checkbox_return_receipt_id'] = $receipt_info['fiscal_code'];
377 | }
378 | }
379 |
380 | $this->data = $data;
381 | $this->template = 'module/checkbox_order_info_ajax.tpl';
382 | $this->response->setOutput($this->render());
383 |
384 | }
385 |
386 | public function getZReport()
387 | {
388 |
389 | $this->load->model('extension/payment/checkbox');
390 |
391 | $shifts = $this->model_extension_payment_checkbox->getShifts();
392 |
393 | $z_report_id = '';
394 |
395 | if (!empty($shifts['results'])) {
396 | foreach ($shifts['results'] as $shift) {
397 |
398 | if ($shift->z_report && $shift->z_report->is_z_report) {
399 | $z_report_id = $shift->z_report->id;
400 | break;
401 | }
402 | }
403 | }
404 |
405 | if ($z_report_id) {
406 |
407 | $html = $this->model_extension_payment_checkbox->getReportText($z_report_id);
408 |
409 | echo str_replace(PHP_EOL, '
', $html);
410 |
411 | } else {
412 | echo 'Звітів не знайдено';
413 | }
414 |
415 |
416 | }
417 |
418 | public function createCashierShift()
419 | {
420 |
421 | $this->load->model('extension/payment/checkbox');
422 |
423 | $shift = $this->model_extension_payment_checkbox->connect();
424 |
425 | if (isset($shift['message'])) {
426 | $this->json['error'] = '' . print_r($shift['message'], 1) . '
';
427 | }
428 |
429 | $this->response->addHeader('Content-Type: application/json');
430 | $this->response->setOutput(json_encode($this->json));
431 | }
432 |
433 | public function closeCashierShift()
434 | {
435 |
436 | $this->load->model('extension/payment/checkbox');
437 |
438 | $shift = $this->model_extension_payment_checkbox->disconnect();
439 |
440 | if (isset($shift['message'])) {
441 | $this->json['error'] = '' . print_r($shift['message'], 1) . '
';
442 | }
443 |
444 | $this->response->addHeader('Content-Type: application/json');
445 | $this->response->setOutput(json_encode($this->json));
446 | }
447 |
448 | public function createServiceReceipt()
449 | {
450 | if (isset($this->request->get['cash'])) {
451 | $cash = $this->request->get['cash'];
452 | } else {
453 | $cash = 0;
454 | }
455 |
456 | $cash_val = (int)((float)$this->request->get['cash'] * 100);
457 |
458 | $this->load->model('extension/payment/checkbox');
459 |
460 | $shift = $this->model_extension_payment_checkbox->createServiceReceipt($cash_val);
461 |
462 | if (isset($shift['message'])) {
463 | $this->json['error'] = '' . print_r($shift['message'], 1) . '
';
464 | }
465 |
466 | $this->response->addHeader('Content-Type: application/json');
467 | $this->response->setOutput(json_encode($this->json));
468 | }
469 |
470 | public function orderListContainer()
471 | {
472 | sleep(2);
473 |
474 | if (isset($this->request->get['token'])) {
475 | $token = $this->request->get['token'];
476 | } else {
477 | $token = 0;
478 | }
479 |
480 | list($shift_id, $is_connected, $status, $balance) = $this->getShiftStatus();
481 |
482 | $data['shift_id'] = $shift_id;
483 | $data['is_connected'] = $is_connected;
484 | $data['status'] = $status;
485 | $data['balance'] = $balance;
486 |
487 | $data['link_z_report'] = $this->url->link('module/checkbox/getZReport', 'token=' . $token, true);
488 |
489 | $this->data = $data;
490 | $this->template = 'module/checkbox_order_list_ajax.tpl';
491 | $this->response->setOutput($this->render());
492 | }
493 |
494 | private function getShiftStatus()
495 | {
496 |
497 | $status = 'CLOSED';
498 | $shift_id = '';
499 | $date = '';
500 | $is_connected = false;
501 | $balance = '';
502 |
503 | $this->load->model('extension/payment/checkbox');
504 |
505 | $shift = $this->model_extension_payment_checkbox->getCurrentCashierShift();
506 |
507 | if ($shift) {
508 | $shift_id = isset($shift['id']) ? $shift['id'] : '';
509 | $is_connected = isset($shift['status']) && ($shift['status'] == 'OPENED');
510 | $status = isset($shift['status']) ? $shift['status'] : $status;
511 |
512 | if (!empty($shift['opened_at'])) {
513 | $date = date('d.m.Y H:i', strtotime($shift['opened_at']));
514 | }
515 | if (!empty($shift['closed_at'])) {
516 | $date = date('d.m.Y H:i', strtotime($shift['closed_at']));
517 | }
518 |
519 | if(isset($shift['balance'])){
520 | $balance = number_format(substr($shift['balance']->balance, 0, -2), 0, '', ' ') . '.' . substr($shift['balance']->balance, -2);
521 | }
522 |
523 | }
524 |
525 | if (in_array($status, ['CLOSED', 'CLOSING'])) {
526 | $status = '' . $status . '';
527 | }
528 |
529 | if (in_array($status, ['OPEN', 'OPENING', 'CREATED'])) {
530 | $status = '' . $status . '';
531 | }
532 | if (in_array($status, ['OPENED'])) {
533 | $status = '' . $status . '';
534 | }
535 |
536 | $status = $status . '
' . $date;
537 |
538 |
539 | return array($shift_id, $is_connected, $status, $balance);
540 | }
541 |
542 | protected function validate()
543 | {
544 |
545 | if (!$this->user->hasPermission('modify', 'module/checkbox')) {
546 | $this->error['warning'] = $this->language->get('error_permission');
547 | }
548 |
549 | return !$this->error;
550 | }
551 |
552 | public function install()
553 | {
554 | $query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "order` LIMIT 1");
555 | if (!isset($query->row['checkbox_receipt_id'])) {
556 | $this->db->query("ALTER TABLE `" . DB_PREFIX . "order` ADD `checkbox_receipt_id` VARCHAR(64) NOT NULL");
557 | $this->db->query("ALTER TABLE `" . DB_PREFIX . "order` ADD `checkbox_return_receipt_id` VARCHAR(64) NOT NULL");
558 | }
559 | }
560 | }
561 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/language/english/module/checkbox.php:
--------------------------------------------------------------------------------
1 | login = $this->config->get('checkbox_rro_login');
21 | $this->password = $this->config->get('checkbox_rro_password');
22 | $this->cashbox_key = $this->config->get('checkbox_rro_cashbox_key');
23 | $this->is_dev = $this->config->get('checkbox_rro_is_dev');
24 | $this->getBearToken();
25 | }
26 |
27 |
28 | public function getBearToken()
29 | {
30 | $params = array('login' => $this->login, 'password' => $this->password);
31 | $response = $this->makePostRequest('/api/v1/cashier/signin', $params);
32 |
33 | $this->access_token = !empty($response['access_token']) ? $response['access_token'] : '';
34 | }
35 |
36 | public function connect()
37 | {
38 | $cashbox_key = $this->cashbox_key;
39 | $header_params = array('cashbox_key' => $cashbox_key);
40 | return $this->makePostRequest('/api/v1/shifts', array(), $header_params);
41 | }
42 |
43 | public function disconnect()
44 | {
45 | return $this->makePostRequest('/api/v1/shifts/close');
46 | }
47 |
48 | public function getShifts()
49 | {
50 | $url = '/api/v1/shifts?desc=true';
51 | return $this->makeGetRequest($url);
52 | }
53 |
54 | public function getCurrentCashierShift()
55 | {
56 | $url = '/api/v1/cashier/shift';
57 | return $this->makeGetRequest($url);
58 | }
59 |
60 | public function getCurrentCashboxInfo()
61 | {
62 | $url = '/api/v1/cash-registers/info';
63 | $header_params = array('cashbox_key' => $this->cashbox_key);
64 | return $this->makeGetRequest($url, array(), $header_params);
65 | }
66 |
67 | public function checkConnection($shift_id)
68 | {
69 | $url = '/api/v1/shifts/' . $shift_id;
70 | return $this->makeGetRequest($url);
71 | }
72 |
73 | public function getZReports()
74 | {
75 | $url = '/api/v1/reports/?is_z_report=true';
76 | return $this->makeGetRequest($url);
77 | }
78 |
79 | public function getReportText($report_id)
80 | {
81 | $url = '/api/v1/reports/' . $report_id . '/text/';
82 | return $this->makeGetRequest($url, array(), array(), true);
83 | }
84 |
85 | public function getReceiptHtml($receipt_id)
86 | {
87 | $url = '/api/v1/receipts/' . $receipt_id . '/html/';
88 | return $this->makeGetRequest($url, array(), array(), true);
89 | }
90 |
91 | public function getReceipt($receipt_id)
92 | {
93 | $url = '/api/v1/receipts/' . $receipt_id;
94 | return $this->makeGetRequest($url);
95 | }
96 |
97 | public function createServiceReceipt($cash)
98 | {
99 | $params = array(
100 | 'payment' => array(
101 | 'type' => 'CASH',
102 | 'value' => $cash,
103 | )
104 | );
105 | return $this->makePostRequest('/api/v1/receipts/service', $params);
106 | }
107 |
108 | public function create_receipt($params)
109 | {
110 | return $this->makePostRequest('/api/v1/receipts/sell', $params);
111 | }
112 |
113 |
114 | private function makePostRequest($route, $params = array(), $header_params = array())
115 | {
116 | $url_host = $this->is_dev ? 'https://dev-api.checkbox.in.ua' : 'https://api.checkbox.in.ua';
117 | $url = $url_host . $route;
118 |
119 | $header = array('Content-type' => 'application/json');
120 |
121 | if ($this->access_token) {
122 | $header = array_merge($header, array('Authorization: Bearer ' . trim($this->access_token)));
123 | }
124 |
125 | if (isset($header_params['cashbox_key'])) {
126 | $header = array_merge($header, array('X-License-Key: ' . $header_params['cashbox_key']));
127 | }
128 |
129 | $header = array_merge($header, array('X-Client-Name: shhygolvv_khm'));
130 | $header = array_merge($header, array('X-Client-Version: 1'));
131 |
132 | $curl = curl_init();
133 |
134 | curl_setopt_array($curl, array(
135 | CURLOPT_URL => $url,
136 | CURLOPT_RETURNTRANSFER => true,
137 | CURLOPT_SSL_VERIFYPEER => false,
138 | CURLOPT_ENCODING => "",
139 | CURLOPT_MAXREDIRS => 10,
140 | CURLOPT_TIMEOUT => 0,
141 | CURLOPT_FOLLOWLOCATION => true,
142 | CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
143 | CURLOPT_CUSTOMREQUEST => "POST",
144 | CURLOPT_POSTFIELDS => json_encode($params),
145 | CURLOPT_HTTPHEADER => $header,
146 | ));
147 |
148 | $response = curl_exec($curl);
149 |
150 | curl_close($curl);
151 |
152 | return isset($response) ? (array)json_decode($response) : array();
153 | }
154 |
155 | private function makeGetRequest($route, $params = array(), $header_params = array(), $echo = false)
156 | {
157 | $url_host = $this->is_dev ? 'https://dev-api.checkbox.in.ua' : 'https://api.checkbox.in.ua';
158 | $url = $url_host . $route;
159 |
160 | $header = array('Content-type' => 'application/json');
161 | if ($this->access_token) {
162 | $header = array_merge($header, array('Authorization: Bearer ' . trim($this->access_token)));
163 | }
164 |
165 | if (isset($header_params['cashbox_key'])) {
166 | $header = array_merge($header, array('X-License-Key: ' . $header_params['cashbox_key']));
167 | }
168 |
169 | $header = array_merge($header, array('X-Client-Name: shhygolvv_khm'));
170 | $header = array_merge($header, array('X-Client-Version: 1'));
171 |
172 | if ($params) {
173 | $params = http_build_query($params);
174 | } else {
175 | $params = '';
176 | }
177 |
178 | $curl = curl_init();
179 |
180 | curl_setopt_array($curl, array(
181 | CURLOPT_URL => $url,
182 | CURLOPT_RETURNTRANSFER => true,
183 | CURLOPT_SSL_VERIFYPEER => false,
184 | CURLOPT_ENCODING => "",
185 | CURLOPT_MAXREDIRS => 10,
186 | CURLOPT_TIMEOUT => 0,
187 | CURLOPT_FOLLOWLOCATION => true,
188 | CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
189 | CURLOPT_CUSTOMREQUEST => "GET",
190 | CURLOPT_HTTPHEADER => $header,
191 | ));
192 |
193 | $response = curl_exec($curl);
194 |
195 | curl_close($curl);
196 |
197 | if ($echo) {
198 | return $response;
199 | } else {
200 | return isset($response) ? (array)json_decode($response) : array();
201 | }
202 |
203 | }
204 |
205 |
206 | public function getOrder($order_id)
207 | {
208 | $order_query = $this->db->query("SELECT *, (SELECT CONCAT(c.firstname, ' ', c.lastname) FROM " . DB_PREFIX . "customer c WHERE c.customer_id = o.customer_id) AS customer, (SELECT os.name FROM " . DB_PREFIX . "order_status os WHERE os.order_status_id = o.order_status_id AND os.language_id = '" . (int)$this->config->get('config_language_id') . "') AS order_status FROM `" . DB_PREFIX . "order` o WHERE o.order_id = '" . (int)$order_id . "'");
209 |
210 | return $order_query->row;
211 | }
212 |
213 |
214 | }
215 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/bootstrap/css/bootstrap-theme.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap v3.3.5 (http://getbootstrap.com)
3 | * Copyright 2011-2015 Twitter, Inc.
4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 | */.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-danger.disabled,.btn-danger[disabled],.btn-default.disabled,.btn-default[disabled],.btn-info.disabled,.btn-info[disabled],.btn-primary.disabled,.btn-primary[disabled],.btn-success.disabled,.btn-success[disabled],.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-danger,fieldset[disabled] .btn-default,fieldset[disabled] .btn-info,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-warning{-webkit-box-shadow:none;box-shadow:none}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .badge{text-shadow:none}.btn.active,.btn:active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:focus,.btn-default:hover{background-color:#e0e0e0;background-position:0 -15px}.btn-default.active,.btn-default:active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:focus,.btn-primary:hover{background-color:#265a88;background-position:0 -15px}.btn-primary.active,.btn-primary:active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:focus,.btn-success:hover{background-color:#419641;background-position:0 -15px}.btn-success.active,.btn-success:active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:focus,.btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.btn-info.active,.btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:focus,.btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.btn-warning.active,.btn-warning:active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:focus,.btn-danger:hover{background-color:#c12e2a;background-position:0 -15px}.btn-danger.active,.btn-danger:active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#c12e2a;background-image:none}.img-thumbnail,.thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)}
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/bootstrap/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WebSystemsSolutions/opencart-rro-checkbox/748ed7047df978e0f4bd76d313f50b0725eab859/OP_v1.5/upload/admin/view/javascript/checkbox/bootstrap/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/bootstrap/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WebSystemsSolutions/opencart-rro-checkbox/748ed7047df978e0f4bd76d313f50b0725eab859/OP_v1.5/upload/admin/view/javascript/checkbox/bootstrap/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/bootstrap/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WebSystemsSolutions/opencart-rro-checkbox/748ed7047df978e0f4bd76d313f50b0725eab859/OP_v1.5/upload/admin/view/javascript/checkbox/bootstrap/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/bootstrap/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WebSystemsSolutions/opencart-rro-checkbox/748ed7047df978e0f4bd76d313f50b0725eab859/OP_v1.5/upload/admin/view/javascript/checkbox/bootstrap/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/bootstrap/js/npm.js:
--------------------------------------------------------------------------------
1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.
2 | require('../../js/transition.js')
3 | require('../../js/alert.js')
4 | require('../../js/button.js')
5 | require('../../js/carousel.js')
6 | require('../../js/collapse.js')
7 | require('../../js/dropdown.js')
8 | require('../../js/modal.js')
9 | require('../../js/tooltip.js')
10 | require('../../js/popover.js')
11 | require('../../js/scrollspy.js')
12 | require('../../js/tab.js')
13 | require('../../js/affix.js')
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/fonts/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WebSystemsSolutions/opencart-rro-checkbox/748ed7047df978e0f4bd76d313f50b0725eab859/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/fonts/FontAwesome.otf
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/fonts/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WebSystemsSolutions/opencart-rro-checkbox/748ed7047df978e0f4bd76d313f50b0725eab859/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/fonts/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WebSystemsSolutions/opencart-rro-checkbox/748ed7047df978e0f4bd76d313f50b0725eab859/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WebSystemsSolutions/opencart-rro-checkbox/748ed7047df978e0f4bd76d313f50b0725eab859/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/fonts/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WebSystemsSolutions/opencart-rro-checkbox/748ed7047df978e0f4bd76d313f50b0725eab859/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/fonts/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/less/animated.less:
--------------------------------------------------------------------------------
1 | // Animated Icons
2 | // --------------------------
3 |
4 | .@{fa-css-prefix}-spin {
5 | -webkit-animation: fa-spin 2s infinite linear;
6 | animation: fa-spin 2s infinite linear;
7 | }
8 |
9 | .@{fa-css-prefix}-pulse {
10 | -webkit-animation: fa-spin 1s infinite steps(8);
11 | animation: fa-spin 1s infinite steps(8);
12 | }
13 |
14 | @-webkit-keyframes fa-spin {
15 | 0% {
16 | -webkit-transform: rotate(0deg);
17 | transform: rotate(0deg);
18 | }
19 | 100% {
20 | -webkit-transform: rotate(359deg);
21 | transform: rotate(359deg);
22 | }
23 | }
24 |
25 | @keyframes fa-spin {
26 | 0% {
27 | -webkit-transform: rotate(0deg);
28 | transform: rotate(0deg);
29 | }
30 | 100% {
31 | -webkit-transform: rotate(359deg);
32 | transform: rotate(359deg);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/less/bordered-pulled.less:
--------------------------------------------------------------------------------
1 | // Bordered & Pulled
2 | // -------------------------
3 |
4 | .@{fa-css-prefix}-border {
5 | padding: .2em .25em .15em;
6 | border: solid .08em @fa-border-color;
7 | border-radius: .1em;
8 | }
9 |
10 | .@{fa-css-prefix}-pull-left { float: left; }
11 | .@{fa-css-prefix}-pull-right { float: right; }
12 |
13 | .@{fa-css-prefix} {
14 | &.@{fa-css-prefix}-pull-left { margin-right: .3em; }
15 | &.@{fa-css-prefix}-pull-right { margin-left: .3em; }
16 | }
17 |
18 | /* Deprecated as of 4.4.0 */
19 | .pull-right { float: right; }
20 | .pull-left { float: left; }
21 |
22 | .@{fa-css-prefix} {
23 | &.pull-left { margin-right: .3em; }
24 | &.pull-right { margin-left: .3em; }
25 | }
26 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/less/core.less:
--------------------------------------------------------------------------------
1 | // Base Class Definition
2 | // -------------------------
3 |
4 | .@{fa-css-prefix} {
5 | display: inline-block;
6 | font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration
7 | font-size: inherit; // can't have font-size inherit on line above, so need to override
8 | text-rendering: auto; // optimizelegibility throws things off #1094
9 | -webkit-font-smoothing: antialiased;
10 | -moz-osx-font-smoothing: grayscale;
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/less/fixed-width.less:
--------------------------------------------------------------------------------
1 | // Fixed Width Icons
2 | // -------------------------
3 | .@{fa-css-prefix}-fw {
4 | width: (18em / 14);
5 | text-align: center;
6 | }
7 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/less/font-awesome.less:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome 4.4.0 by @davegandy - http://fontawesome.io - @fontawesome
3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
4 | */
5 |
6 | @import "variables.less";
7 | @import "mixins.less";
8 | @import "path.less";
9 | @import "core.less";
10 | @import "larger.less";
11 | @import "fixed-width.less";
12 | @import "list.less";
13 | @import "bordered-pulled.less";
14 | @import "animated.less";
15 | @import "rotated-flipped.less";
16 | @import "stacked.less";
17 | @import "icons.less";
18 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/less/larger.less:
--------------------------------------------------------------------------------
1 | // Icon Sizes
2 | // -------------------------
3 |
4 | /* makes the font 33% larger relative to the icon container */
5 | .@{fa-css-prefix}-lg {
6 | font-size: (4em / 3);
7 | line-height: (3em / 4);
8 | vertical-align: -15%;
9 | }
10 | .@{fa-css-prefix}-2x { font-size: 2em; }
11 | .@{fa-css-prefix}-3x { font-size: 3em; }
12 | .@{fa-css-prefix}-4x { font-size: 4em; }
13 | .@{fa-css-prefix}-5x { font-size: 5em; }
14 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/less/list.less:
--------------------------------------------------------------------------------
1 | // List Icons
2 | // -------------------------
3 |
4 | .@{fa-css-prefix}-ul {
5 | padding-left: 0;
6 | margin-left: @fa-li-width;
7 | list-style-type: none;
8 | > li { position: relative; }
9 | }
10 | .@{fa-css-prefix}-li {
11 | position: absolute;
12 | left: -@fa-li-width;
13 | width: @fa-li-width;
14 | top: (2em / 14);
15 | text-align: center;
16 | &.@{fa-css-prefix}-lg {
17 | left: (-@fa-li-width + (4em / 14));
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/less/mixins.less:
--------------------------------------------------------------------------------
1 | // Mixins
2 | // --------------------------
3 |
4 | .fa-icon() {
5 | display: inline-block;
6 | font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration
7 | font-size: inherit; // can't have font-size inherit on line above, so need to override
8 | text-rendering: auto; // optimizelegibility throws things off #1094
9 | -webkit-font-smoothing: antialiased;
10 | -moz-osx-font-smoothing: grayscale;
11 |
12 | }
13 |
14 | .fa-icon-rotate(@degrees, @rotation) {
15 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation);
16 | -webkit-transform: rotate(@degrees);
17 | -ms-transform: rotate(@degrees);
18 | transform: rotate(@degrees);
19 | }
20 |
21 | .fa-icon-flip(@horiz, @vert, @rotation) {
22 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1);
23 | -webkit-transform: scale(@horiz, @vert);
24 | -ms-transform: scale(@horiz, @vert);
25 | transform: scale(@horiz, @vert);
26 | }
27 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/less/path.less:
--------------------------------------------------------------------------------
1 | /* FONT PATH
2 | * -------------------------- */
3 |
4 | @font-face {
5 | font-family: 'FontAwesome';
6 | src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}');
7 | src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'),
8 | url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'),
9 | url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'),
10 | url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'),
11 | url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg');
12 | // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
13 | font-weight: normal;
14 | font-style: normal;
15 | }
16 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/less/rotated-flipped.less:
--------------------------------------------------------------------------------
1 | // Rotated & Flipped Icons
2 | // -------------------------
3 |
4 | .@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); }
5 | .@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); }
6 | .@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); }
7 |
8 | .@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); }
9 | .@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); }
10 |
11 | // Hook for IE8-9
12 | // -------------------------
13 |
14 | :root .@{fa-css-prefix}-rotate-90,
15 | :root .@{fa-css-prefix}-rotate-180,
16 | :root .@{fa-css-prefix}-rotate-270,
17 | :root .@{fa-css-prefix}-flip-horizontal,
18 | :root .@{fa-css-prefix}-flip-vertical {
19 | filter: none;
20 | }
21 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/less/spinning.less:
--------------------------------------------------------------------------------
1 | // Spinning Icons
2 | // --------------------------
3 |
4 | .@{fa-css-prefix}-spin {
5 | -webkit-animation: fa-spin 2s infinite linear;
6 | animation: fa-spin 2s infinite linear;
7 | }
8 |
9 | @-webkit-keyframes fa-spin {
10 | 0% {
11 | -webkit-transform: rotate(0deg);
12 | transform: rotate(0deg);
13 | }
14 | 100% {
15 | -webkit-transform: rotate(359deg);
16 | transform: rotate(359deg);
17 | }
18 | }
19 |
20 | @keyframes fa-spin {
21 | 0% {
22 | -webkit-transform: rotate(0deg);
23 | transform: rotate(0deg);
24 | }
25 | 100% {
26 | -webkit-transform: rotate(359deg);
27 | transform: rotate(359deg);
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/less/stacked.less:
--------------------------------------------------------------------------------
1 | // Stacked Icons
2 | // -------------------------
3 |
4 | .@{fa-css-prefix}-stack {
5 | position: relative;
6 | display: inline-block;
7 | width: 2em;
8 | height: 2em;
9 | line-height: 2em;
10 | vertical-align: middle;
11 | }
12 | .@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x {
13 | position: absolute;
14 | left: 0;
15 | width: 100%;
16 | text-align: center;
17 | }
18 | .@{fa-css-prefix}-stack-1x { line-height: inherit; }
19 | .@{fa-css-prefix}-stack-2x { font-size: 2em; }
20 | .@{fa-css-prefix}-inverse { color: @fa-inverse; }
21 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/less/variables.less:
--------------------------------------------------------------------------------
1 | // Variables
2 | // --------------------------
3 |
4 | @fa-font-path: "../fonts";
5 | @fa-font-size-base: 14px;
6 | @fa-line-height-base: 1;
7 | //@fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.4.0/fonts"; // for referencing Bootstrap CDN font files directly
8 | @fa-css-prefix: fa;
9 | @fa-version: "4.4.0";
10 | @fa-border-color: #eee;
11 | @fa-inverse: #fff;
12 | @fa-li-width: (30em / 14);
13 |
14 | @fa-var-500px: "\f26e";
15 | @fa-var-adjust: "\f042";
16 | @fa-var-adn: "\f170";
17 | @fa-var-align-center: "\f037";
18 | @fa-var-align-justify: "\f039";
19 | @fa-var-align-left: "\f036";
20 | @fa-var-align-right: "\f038";
21 | @fa-var-amazon: "\f270";
22 | @fa-var-ambulance: "\f0f9";
23 | @fa-var-anchor: "\f13d";
24 | @fa-var-android: "\f17b";
25 | @fa-var-angellist: "\f209";
26 | @fa-var-angle-double-down: "\f103";
27 | @fa-var-angle-double-left: "\f100";
28 | @fa-var-angle-double-right: "\f101";
29 | @fa-var-angle-double-up: "\f102";
30 | @fa-var-angle-down: "\f107";
31 | @fa-var-angle-left: "\f104";
32 | @fa-var-angle-right: "\f105";
33 | @fa-var-angle-up: "\f106";
34 | @fa-var-apple: "\f179";
35 | @fa-var-archive: "\f187";
36 | @fa-var-area-chart: "\f1fe";
37 | @fa-var-arrow-circle-down: "\f0ab";
38 | @fa-var-arrow-circle-left: "\f0a8";
39 | @fa-var-arrow-circle-o-down: "\f01a";
40 | @fa-var-arrow-circle-o-left: "\f190";
41 | @fa-var-arrow-circle-o-right: "\f18e";
42 | @fa-var-arrow-circle-o-up: "\f01b";
43 | @fa-var-arrow-circle-right: "\f0a9";
44 | @fa-var-arrow-circle-up: "\f0aa";
45 | @fa-var-arrow-down: "\f063";
46 | @fa-var-arrow-left: "\f060";
47 | @fa-var-arrow-right: "\f061";
48 | @fa-var-arrow-up: "\f062";
49 | @fa-var-arrows: "\f047";
50 | @fa-var-arrows-alt: "\f0b2";
51 | @fa-var-arrows-h: "\f07e";
52 | @fa-var-arrows-v: "\f07d";
53 | @fa-var-asterisk: "\f069";
54 | @fa-var-at: "\f1fa";
55 | @fa-var-automobile: "\f1b9";
56 | @fa-var-backward: "\f04a";
57 | @fa-var-balance-scale: "\f24e";
58 | @fa-var-ban: "\f05e";
59 | @fa-var-bank: "\f19c";
60 | @fa-var-bar-chart: "\f080";
61 | @fa-var-bar-chart-o: "\f080";
62 | @fa-var-barcode: "\f02a";
63 | @fa-var-bars: "\f0c9";
64 | @fa-var-battery-0: "\f244";
65 | @fa-var-battery-1: "\f243";
66 | @fa-var-battery-2: "\f242";
67 | @fa-var-battery-3: "\f241";
68 | @fa-var-battery-4: "\f240";
69 | @fa-var-battery-empty: "\f244";
70 | @fa-var-battery-full: "\f240";
71 | @fa-var-battery-half: "\f242";
72 | @fa-var-battery-quarter: "\f243";
73 | @fa-var-battery-three-quarters: "\f241";
74 | @fa-var-bed: "\f236";
75 | @fa-var-beer: "\f0fc";
76 | @fa-var-behance: "\f1b4";
77 | @fa-var-behance-square: "\f1b5";
78 | @fa-var-bell: "\f0f3";
79 | @fa-var-bell-o: "\f0a2";
80 | @fa-var-bell-slash: "\f1f6";
81 | @fa-var-bell-slash-o: "\f1f7";
82 | @fa-var-bicycle: "\f206";
83 | @fa-var-binoculars: "\f1e5";
84 | @fa-var-birthday-cake: "\f1fd";
85 | @fa-var-bitbucket: "\f171";
86 | @fa-var-bitbucket-square: "\f172";
87 | @fa-var-bitcoin: "\f15a";
88 | @fa-var-black-tie: "\f27e";
89 | @fa-var-bold: "\f032";
90 | @fa-var-bolt: "\f0e7";
91 | @fa-var-bomb: "\f1e2";
92 | @fa-var-book: "\f02d";
93 | @fa-var-bookmark: "\f02e";
94 | @fa-var-bookmark-o: "\f097";
95 | @fa-var-briefcase: "\f0b1";
96 | @fa-var-btc: "\f15a";
97 | @fa-var-bug: "\f188";
98 | @fa-var-building: "\f1ad";
99 | @fa-var-building-o: "\f0f7";
100 | @fa-var-bullhorn: "\f0a1";
101 | @fa-var-bullseye: "\f140";
102 | @fa-var-bus: "\f207";
103 | @fa-var-buysellads: "\f20d";
104 | @fa-var-cab: "\f1ba";
105 | @fa-var-calculator: "\f1ec";
106 | @fa-var-calendar: "\f073";
107 | @fa-var-calendar-check-o: "\f274";
108 | @fa-var-calendar-minus-o: "\f272";
109 | @fa-var-calendar-o: "\f133";
110 | @fa-var-calendar-plus-o: "\f271";
111 | @fa-var-calendar-times-o: "\f273";
112 | @fa-var-camera: "\f030";
113 | @fa-var-camera-retro: "\f083";
114 | @fa-var-car: "\f1b9";
115 | @fa-var-caret-down: "\f0d7";
116 | @fa-var-caret-left: "\f0d9";
117 | @fa-var-caret-right: "\f0da";
118 | @fa-var-caret-square-o-down: "\f150";
119 | @fa-var-caret-square-o-left: "\f191";
120 | @fa-var-caret-square-o-right: "\f152";
121 | @fa-var-caret-square-o-up: "\f151";
122 | @fa-var-caret-up: "\f0d8";
123 | @fa-var-cart-arrow-down: "\f218";
124 | @fa-var-cart-plus: "\f217";
125 | @fa-var-cc: "\f20a";
126 | @fa-var-cc-amex: "\f1f3";
127 | @fa-var-cc-diners-club: "\f24c";
128 | @fa-var-cc-discover: "\f1f2";
129 | @fa-var-cc-jcb: "\f24b";
130 | @fa-var-cc-mastercard: "\f1f1";
131 | @fa-var-cc-paypal: "\f1f4";
132 | @fa-var-cc-stripe: "\f1f5";
133 | @fa-var-cc-visa: "\f1f0";
134 | @fa-var-certificate: "\f0a3";
135 | @fa-var-chain: "\f0c1";
136 | @fa-var-chain-broken: "\f127";
137 | @fa-var-check: "\f00c";
138 | @fa-var-check-circle: "\f058";
139 | @fa-var-check-circle-o: "\f05d";
140 | @fa-var-check-square: "\f14a";
141 | @fa-var-check-square-o: "\f046";
142 | @fa-var-chevron-circle-down: "\f13a";
143 | @fa-var-chevron-circle-left: "\f137";
144 | @fa-var-chevron-circle-right: "\f138";
145 | @fa-var-chevron-circle-up: "\f139";
146 | @fa-var-chevron-down: "\f078";
147 | @fa-var-chevron-left: "\f053";
148 | @fa-var-chevron-right: "\f054";
149 | @fa-var-chevron-up: "\f077";
150 | @fa-var-child: "\f1ae";
151 | @fa-var-chrome: "\f268";
152 | @fa-var-circle: "\f111";
153 | @fa-var-circle-o: "\f10c";
154 | @fa-var-circle-o-notch: "\f1ce";
155 | @fa-var-circle-thin: "\f1db";
156 | @fa-var-clipboard: "\f0ea";
157 | @fa-var-clock-o: "\f017";
158 | @fa-var-clone: "\f24d";
159 | @fa-var-close: "\f00d";
160 | @fa-var-cloud: "\f0c2";
161 | @fa-var-cloud-download: "\f0ed";
162 | @fa-var-cloud-upload: "\f0ee";
163 | @fa-var-cny: "\f157";
164 | @fa-var-code: "\f121";
165 | @fa-var-code-fork: "\f126";
166 | @fa-var-codepen: "\f1cb";
167 | @fa-var-coffee: "\f0f4";
168 | @fa-var-cog: "\f013";
169 | @fa-var-cogs: "\f085";
170 | @fa-var-columns: "\f0db";
171 | @fa-var-comment: "\f075";
172 | @fa-var-comment-o: "\f0e5";
173 | @fa-var-commenting: "\f27a";
174 | @fa-var-commenting-o: "\f27b";
175 | @fa-var-comments: "\f086";
176 | @fa-var-comments-o: "\f0e6";
177 | @fa-var-compass: "\f14e";
178 | @fa-var-compress: "\f066";
179 | @fa-var-connectdevelop: "\f20e";
180 | @fa-var-contao: "\f26d";
181 | @fa-var-copy: "\f0c5";
182 | @fa-var-copyright: "\f1f9";
183 | @fa-var-creative-commons: "\f25e";
184 | @fa-var-credit-card: "\f09d";
185 | @fa-var-crop: "\f125";
186 | @fa-var-crosshairs: "\f05b";
187 | @fa-var-css3: "\f13c";
188 | @fa-var-cube: "\f1b2";
189 | @fa-var-cubes: "\f1b3";
190 | @fa-var-cut: "\f0c4";
191 | @fa-var-cutlery: "\f0f5";
192 | @fa-var-dashboard: "\f0e4";
193 | @fa-var-dashcube: "\f210";
194 | @fa-var-database: "\f1c0";
195 | @fa-var-dedent: "\f03b";
196 | @fa-var-delicious: "\f1a5";
197 | @fa-var-desktop: "\f108";
198 | @fa-var-deviantart: "\f1bd";
199 | @fa-var-diamond: "\f219";
200 | @fa-var-digg: "\f1a6";
201 | @fa-var-dollar: "\f155";
202 | @fa-var-dot-circle-o: "\f192";
203 | @fa-var-download: "\f019";
204 | @fa-var-dribbble: "\f17d";
205 | @fa-var-dropbox: "\f16b";
206 | @fa-var-drupal: "\f1a9";
207 | @fa-var-edit: "\f044";
208 | @fa-var-eject: "\f052";
209 | @fa-var-ellipsis-h: "\f141";
210 | @fa-var-ellipsis-v: "\f142";
211 | @fa-var-empire: "\f1d1";
212 | @fa-var-envelope: "\f0e0";
213 | @fa-var-envelope-o: "\f003";
214 | @fa-var-envelope-square: "\f199";
215 | @fa-var-eraser: "\f12d";
216 | @fa-var-eur: "\f153";
217 | @fa-var-euro: "\f153";
218 | @fa-var-exchange: "\f0ec";
219 | @fa-var-exclamation: "\f12a";
220 | @fa-var-exclamation-circle: "\f06a";
221 | @fa-var-exclamation-triangle: "\f071";
222 | @fa-var-expand: "\f065";
223 | @fa-var-expeditedssl: "\f23e";
224 | @fa-var-external-link: "\f08e";
225 | @fa-var-external-link-square: "\f14c";
226 | @fa-var-eye: "\f06e";
227 | @fa-var-eye-slash: "\f070";
228 | @fa-var-eyedropper: "\f1fb";
229 | @fa-var-facebook: "\f09a";
230 | @fa-var-facebook-f: "\f09a";
231 | @fa-var-facebook-official: "\f230";
232 | @fa-var-facebook-square: "\f082";
233 | @fa-var-fast-backward: "\f049";
234 | @fa-var-fast-forward: "\f050";
235 | @fa-var-fax: "\f1ac";
236 | @fa-var-feed: "\f09e";
237 | @fa-var-female: "\f182";
238 | @fa-var-fighter-jet: "\f0fb";
239 | @fa-var-file: "\f15b";
240 | @fa-var-file-archive-o: "\f1c6";
241 | @fa-var-file-audio-o: "\f1c7";
242 | @fa-var-file-code-o: "\f1c9";
243 | @fa-var-file-excel-o: "\f1c3";
244 | @fa-var-file-image-o: "\f1c5";
245 | @fa-var-file-movie-o: "\f1c8";
246 | @fa-var-file-o: "\f016";
247 | @fa-var-file-pdf-o: "\f1c1";
248 | @fa-var-file-photo-o: "\f1c5";
249 | @fa-var-file-picture-o: "\f1c5";
250 | @fa-var-file-powerpoint-o: "\f1c4";
251 | @fa-var-file-sound-o: "\f1c7";
252 | @fa-var-file-text: "\f15c";
253 | @fa-var-file-text-o: "\f0f6";
254 | @fa-var-file-video-o: "\f1c8";
255 | @fa-var-file-word-o: "\f1c2";
256 | @fa-var-file-zip-o: "\f1c6";
257 | @fa-var-files-o: "\f0c5";
258 | @fa-var-film: "\f008";
259 | @fa-var-filter: "\f0b0";
260 | @fa-var-fire: "\f06d";
261 | @fa-var-fire-extinguisher: "\f134";
262 | @fa-var-firefox: "\f269";
263 | @fa-var-flag: "\f024";
264 | @fa-var-flag-checkered: "\f11e";
265 | @fa-var-flag-o: "\f11d";
266 | @fa-var-flash: "\f0e7";
267 | @fa-var-flask: "\f0c3";
268 | @fa-var-flickr: "\f16e";
269 | @fa-var-floppy-o: "\f0c7";
270 | @fa-var-folder: "\f07b";
271 | @fa-var-folder-o: "\f114";
272 | @fa-var-folder-open: "\f07c";
273 | @fa-var-folder-open-o: "\f115";
274 | @fa-var-font: "\f031";
275 | @fa-var-fonticons: "\f280";
276 | @fa-var-forumbee: "\f211";
277 | @fa-var-forward: "\f04e";
278 | @fa-var-foursquare: "\f180";
279 | @fa-var-frown-o: "\f119";
280 | @fa-var-futbol-o: "\f1e3";
281 | @fa-var-gamepad: "\f11b";
282 | @fa-var-gavel: "\f0e3";
283 | @fa-var-gbp: "\f154";
284 | @fa-var-ge: "\f1d1";
285 | @fa-var-gear: "\f013";
286 | @fa-var-gears: "\f085";
287 | @fa-var-genderless: "\f22d";
288 | @fa-var-get-pocket: "\f265";
289 | @fa-var-gg: "\f260";
290 | @fa-var-gg-circle: "\f261";
291 | @fa-var-gift: "\f06b";
292 | @fa-var-git: "\f1d3";
293 | @fa-var-git-square: "\f1d2";
294 | @fa-var-github: "\f09b";
295 | @fa-var-github-alt: "\f113";
296 | @fa-var-github-square: "\f092";
297 | @fa-var-gittip: "\f184";
298 | @fa-var-glass: "\f000";
299 | @fa-var-globe: "\f0ac";
300 | @fa-var-google: "\f1a0";
301 | @fa-var-google-plus: "\f0d5";
302 | @fa-var-google-plus-square: "\f0d4";
303 | @fa-var-google-wallet: "\f1ee";
304 | @fa-var-graduation-cap: "\f19d";
305 | @fa-var-gratipay: "\f184";
306 | @fa-var-group: "\f0c0";
307 | @fa-var-h-square: "\f0fd";
308 | @fa-var-hacker-news: "\f1d4";
309 | @fa-var-hand-grab-o: "\f255";
310 | @fa-var-hand-lizard-o: "\f258";
311 | @fa-var-hand-o-down: "\f0a7";
312 | @fa-var-hand-o-left: "\f0a5";
313 | @fa-var-hand-o-right: "\f0a4";
314 | @fa-var-hand-o-up: "\f0a6";
315 | @fa-var-hand-paper-o: "\f256";
316 | @fa-var-hand-peace-o: "\f25b";
317 | @fa-var-hand-pointer-o: "\f25a";
318 | @fa-var-hand-rock-o: "\f255";
319 | @fa-var-hand-scissors-o: "\f257";
320 | @fa-var-hand-spock-o: "\f259";
321 | @fa-var-hand-stop-o: "\f256";
322 | @fa-var-hdd-o: "\f0a0";
323 | @fa-var-header: "\f1dc";
324 | @fa-var-headphones: "\f025";
325 | @fa-var-heart: "\f004";
326 | @fa-var-heart-o: "\f08a";
327 | @fa-var-heartbeat: "\f21e";
328 | @fa-var-history: "\f1da";
329 | @fa-var-home: "\f015";
330 | @fa-var-hospital-o: "\f0f8";
331 | @fa-var-hotel: "\f236";
332 | @fa-var-hourglass: "\f254";
333 | @fa-var-hourglass-1: "\f251";
334 | @fa-var-hourglass-2: "\f252";
335 | @fa-var-hourglass-3: "\f253";
336 | @fa-var-hourglass-end: "\f253";
337 | @fa-var-hourglass-half: "\f252";
338 | @fa-var-hourglass-o: "\f250";
339 | @fa-var-hourglass-start: "\f251";
340 | @fa-var-houzz: "\f27c";
341 | @fa-var-html5: "\f13b";
342 | @fa-var-i-cursor: "\f246";
343 | @fa-var-ils: "\f20b";
344 | @fa-var-image: "\f03e";
345 | @fa-var-inbox: "\f01c";
346 | @fa-var-indent: "\f03c";
347 | @fa-var-industry: "\f275";
348 | @fa-var-info: "\f129";
349 | @fa-var-info-circle: "\f05a";
350 | @fa-var-inr: "\f156";
351 | @fa-var-instagram: "\f16d";
352 | @fa-var-institution: "\f19c";
353 | @fa-var-internet-explorer: "\f26b";
354 | @fa-var-intersex: "\f224";
355 | @fa-var-ioxhost: "\f208";
356 | @fa-var-italic: "\f033";
357 | @fa-var-joomla: "\f1aa";
358 | @fa-var-jpy: "\f157";
359 | @fa-var-jsfiddle: "\f1cc";
360 | @fa-var-key: "\f084";
361 | @fa-var-keyboard-o: "\f11c";
362 | @fa-var-krw: "\f159";
363 | @fa-var-language: "\f1ab";
364 | @fa-var-laptop: "\f109";
365 | @fa-var-lastfm: "\f202";
366 | @fa-var-lastfm-square: "\f203";
367 | @fa-var-leaf: "\f06c";
368 | @fa-var-leanpub: "\f212";
369 | @fa-var-legal: "\f0e3";
370 | @fa-var-lemon-o: "\f094";
371 | @fa-var-level-down: "\f149";
372 | @fa-var-level-up: "\f148";
373 | @fa-var-life-bouy: "\f1cd";
374 | @fa-var-life-buoy: "\f1cd";
375 | @fa-var-life-ring: "\f1cd";
376 | @fa-var-life-saver: "\f1cd";
377 | @fa-var-lightbulb-o: "\f0eb";
378 | @fa-var-line-chart: "\f201";
379 | @fa-var-link: "\f0c1";
380 | @fa-var-linkedin: "\f0e1";
381 | @fa-var-linkedin-square: "\f08c";
382 | @fa-var-linux: "\f17c";
383 | @fa-var-list: "\f03a";
384 | @fa-var-list-alt: "\f022";
385 | @fa-var-list-ol: "\f0cb";
386 | @fa-var-list-ul: "\f0ca";
387 | @fa-var-location-arrow: "\f124";
388 | @fa-var-lock: "\f023";
389 | @fa-var-long-arrow-down: "\f175";
390 | @fa-var-long-arrow-left: "\f177";
391 | @fa-var-long-arrow-right: "\f178";
392 | @fa-var-long-arrow-up: "\f176";
393 | @fa-var-magic: "\f0d0";
394 | @fa-var-magnet: "\f076";
395 | @fa-var-mail-forward: "\f064";
396 | @fa-var-mail-reply: "\f112";
397 | @fa-var-mail-reply-all: "\f122";
398 | @fa-var-male: "\f183";
399 | @fa-var-map: "\f279";
400 | @fa-var-map-marker: "\f041";
401 | @fa-var-map-o: "\f278";
402 | @fa-var-map-pin: "\f276";
403 | @fa-var-map-signs: "\f277";
404 | @fa-var-mars: "\f222";
405 | @fa-var-mars-double: "\f227";
406 | @fa-var-mars-stroke: "\f229";
407 | @fa-var-mars-stroke-h: "\f22b";
408 | @fa-var-mars-stroke-v: "\f22a";
409 | @fa-var-maxcdn: "\f136";
410 | @fa-var-meanpath: "\f20c";
411 | @fa-var-medium: "\f23a";
412 | @fa-var-medkit: "\f0fa";
413 | @fa-var-meh-o: "\f11a";
414 | @fa-var-mercury: "\f223";
415 | @fa-var-microphone: "\f130";
416 | @fa-var-microphone-slash: "\f131";
417 | @fa-var-minus: "\f068";
418 | @fa-var-minus-circle: "\f056";
419 | @fa-var-minus-square: "\f146";
420 | @fa-var-minus-square-o: "\f147";
421 | @fa-var-mobile: "\f10b";
422 | @fa-var-mobile-phone: "\f10b";
423 | @fa-var-money: "\f0d6";
424 | @fa-var-moon-o: "\f186";
425 | @fa-var-mortar-board: "\f19d";
426 | @fa-var-motorcycle: "\f21c";
427 | @fa-var-mouse-pointer: "\f245";
428 | @fa-var-music: "\f001";
429 | @fa-var-navicon: "\f0c9";
430 | @fa-var-neuter: "\f22c";
431 | @fa-var-newspaper-o: "\f1ea";
432 | @fa-var-object-group: "\f247";
433 | @fa-var-object-ungroup: "\f248";
434 | @fa-var-odnoklassniki: "\f263";
435 | @fa-var-odnoklassniki-square: "\f264";
436 | @fa-var-opencart: "\f23d";
437 | @fa-var-openid: "\f19b";
438 | @fa-var-opera: "\f26a";
439 | @fa-var-optin-monster: "\f23c";
440 | @fa-var-outdent: "\f03b";
441 | @fa-var-pagelines: "\f18c";
442 | @fa-var-paint-brush: "\f1fc";
443 | @fa-var-paper-plane: "\f1d8";
444 | @fa-var-paper-plane-o: "\f1d9";
445 | @fa-var-paperclip: "\f0c6";
446 | @fa-var-paragraph: "\f1dd";
447 | @fa-var-paste: "\f0ea";
448 | @fa-var-pause: "\f04c";
449 | @fa-var-paw: "\f1b0";
450 | @fa-var-paypal: "\f1ed";
451 | @fa-var-pencil: "\f040";
452 | @fa-var-pencil-square: "\f14b";
453 | @fa-var-pencil-square-o: "\f044";
454 | @fa-var-phone: "\f095";
455 | @fa-var-phone-square: "\f098";
456 | @fa-var-photo: "\f03e";
457 | @fa-var-picture-o: "\f03e";
458 | @fa-var-pie-chart: "\f200";
459 | @fa-var-pied-piper: "\f1a7";
460 | @fa-var-pied-piper-alt: "\f1a8";
461 | @fa-var-pinterest: "\f0d2";
462 | @fa-var-pinterest-p: "\f231";
463 | @fa-var-pinterest-square: "\f0d3";
464 | @fa-var-plane: "\f072";
465 | @fa-var-play: "\f04b";
466 | @fa-var-play-circle: "\f144";
467 | @fa-var-play-circle-o: "\f01d";
468 | @fa-var-plug: "\f1e6";
469 | @fa-var-plus: "\f067";
470 | @fa-var-plus-circle: "\f055";
471 | @fa-var-plus-square: "\f0fe";
472 | @fa-var-plus-square-o: "\f196";
473 | @fa-var-power-off: "\f011";
474 | @fa-var-print: "\f02f";
475 | @fa-var-puzzle-piece: "\f12e";
476 | @fa-var-qq: "\f1d6";
477 | @fa-var-qrcode: "\f029";
478 | @fa-var-question: "\f128";
479 | @fa-var-question-circle: "\f059";
480 | @fa-var-quote-left: "\f10d";
481 | @fa-var-quote-right: "\f10e";
482 | @fa-var-ra: "\f1d0";
483 | @fa-var-random: "\f074";
484 | @fa-var-rebel: "\f1d0";
485 | @fa-var-recycle: "\f1b8";
486 | @fa-var-reddit: "\f1a1";
487 | @fa-var-reddit-square: "\f1a2";
488 | @fa-var-refresh: "\f021";
489 | @fa-var-registered: "\f25d";
490 | @fa-var-remove: "\f00d";
491 | @fa-var-renren: "\f18b";
492 | @fa-var-reorder: "\f0c9";
493 | @fa-var-repeat: "\f01e";
494 | @fa-var-reply: "\f112";
495 | @fa-var-reply-all: "\f122";
496 | @fa-var-retweet: "\f079";
497 | @fa-var-rmb: "\f157";
498 | @fa-var-road: "\f018";
499 | @fa-var-rocket: "\f135";
500 | @fa-var-rotate-left: "\f0e2";
501 | @fa-var-rotate-right: "\f01e";
502 | @fa-var-rouble: "\f158";
503 | @fa-var-rss: "\f09e";
504 | @fa-var-rss-square: "\f143";
505 | @fa-var-rub: "\f158";
506 | @fa-var-ruble: "\f158";
507 | @fa-var-rupee: "\f156";
508 | @fa-var-safari: "\f267";
509 | @fa-var-save: "\f0c7";
510 | @fa-var-scissors: "\f0c4";
511 | @fa-var-search: "\f002";
512 | @fa-var-search-minus: "\f010";
513 | @fa-var-search-plus: "\f00e";
514 | @fa-var-sellsy: "\f213";
515 | @fa-var-send: "\f1d8";
516 | @fa-var-send-o: "\f1d9";
517 | @fa-var-server: "\f233";
518 | @fa-var-share: "\f064";
519 | @fa-var-share-alt: "\f1e0";
520 | @fa-var-share-alt-square: "\f1e1";
521 | @fa-var-share-square: "\f14d";
522 | @fa-var-share-square-o: "\f045";
523 | @fa-var-shekel: "\f20b";
524 | @fa-var-sheqel: "\f20b";
525 | @fa-var-shield: "\f132";
526 | @fa-var-ship: "\f21a";
527 | @fa-var-shirtsinbulk: "\f214";
528 | @fa-var-shopping-cart: "\f07a";
529 | @fa-var-sign-in: "\f090";
530 | @fa-var-sign-out: "\f08b";
531 | @fa-var-signal: "\f012";
532 | @fa-var-simplybuilt: "\f215";
533 | @fa-var-sitemap: "\f0e8";
534 | @fa-var-skyatlas: "\f216";
535 | @fa-var-skype: "\f17e";
536 | @fa-var-slack: "\f198";
537 | @fa-var-sliders: "\f1de";
538 | @fa-var-slideshare: "\f1e7";
539 | @fa-var-smile-o: "\f118";
540 | @fa-var-soccer-ball-o: "\f1e3";
541 | @fa-var-sort: "\f0dc";
542 | @fa-var-sort-alpha-asc: "\f15d";
543 | @fa-var-sort-alpha-desc: "\f15e";
544 | @fa-var-sort-amount-asc: "\f160";
545 | @fa-var-sort-amount-desc: "\f161";
546 | @fa-var-sort-asc: "\f0de";
547 | @fa-var-sort-desc: "\f0dd";
548 | @fa-var-sort-down: "\f0dd";
549 | @fa-var-sort-numeric-asc: "\f162";
550 | @fa-var-sort-numeric-desc: "\f163";
551 | @fa-var-sort-up: "\f0de";
552 | @fa-var-soundcloud: "\f1be";
553 | @fa-var-space-shuttle: "\f197";
554 | @fa-var-spinner: "\f110";
555 | @fa-var-spoon: "\f1b1";
556 | @fa-var-spotify: "\f1bc";
557 | @fa-var-square: "\f0c8";
558 | @fa-var-square-o: "\f096";
559 | @fa-var-stack-exchange: "\f18d";
560 | @fa-var-stack-overflow: "\f16c";
561 | @fa-var-star: "\f005";
562 | @fa-var-star-half: "\f089";
563 | @fa-var-star-half-empty: "\f123";
564 | @fa-var-star-half-full: "\f123";
565 | @fa-var-star-half-o: "\f123";
566 | @fa-var-star-o: "\f006";
567 | @fa-var-steam: "\f1b6";
568 | @fa-var-steam-square: "\f1b7";
569 | @fa-var-step-backward: "\f048";
570 | @fa-var-step-forward: "\f051";
571 | @fa-var-stethoscope: "\f0f1";
572 | @fa-var-sticky-note: "\f249";
573 | @fa-var-sticky-note-o: "\f24a";
574 | @fa-var-stop: "\f04d";
575 | @fa-var-street-view: "\f21d";
576 | @fa-var-strikethrough: "\f0cc";
577 | @fa-var-stumbleupon: "\f1a4";
578 | @fa-var-stumbleupon-circle: "\f1a3";
579 | @fa-var-subscript: "\f12c";
580 | @fa-var-subway: "\f239";
581 | @fa-var-suitcase: "\f0f2";
582 | @fa-var-sun-o: "\f185";
583 | @fa-var-superscript: "\f12b";
584 | @fa-var-support: "\f1cd";
585 | @fa-var-table: "\f0ce";
586 | @fa-var-tablet: "\f10a";
587 | @fa-var-tachometer: "\f0e4";
588 | @fa-var-tag: "\f02b";
589 | @fa-var-tags: "\f02c";
590 | @fa-var-tasks: "\f0ae";
591 | @fa-var-taxi: "\f1ba";
592 | @fa-var-television: "\f26c";
593 | @fa-var-tencent-weibo: "\f1d5";
594 | @fa-var-terminal: "\f120";
595 | @fa-var-text-height: "\f034";
596 | @fa-var-text-width: "\f035";
597 | @fa-var-th: "\f00a";
598 | @fa-var-th-large: "\f009";
599 | @fa-var-th-list: "\f00b";
600 | @fa-var-thumb-tack: "\f08d";
601 | @fa-var-thumbs-down: "\f165";
602 | @fa-var-thumbs-o-down: "\f088";
603 | @fa-var-thumbs-o-up: "\f087";
604 | @fa-var-thumbs-up: "\f164";
605 | @fa-var-ticket: "\f145";
606 | @fa-var-times: "\f00d";
607 | @fa-var-times-circle: "\f057";
608 | @fa-var-times-circle-o: "\f05c";
609 | @fa-var-tint: "\f043";
610 | @fa-var-toggle-down: "\f150";
611 | @fa-var-toggle-left: "\f191";
612 | @fa-var-toggle-off: "\f204";
613 | @fa-var-toggle-on: "\f205";
614 | @fa-var-toggle-right: "\f152";
615 | @fa-var-toggle-up: "\f151";
616 | @fa-var-trademark: "\f25c";
617 | @fa-var-train: "\f238";
618 | @fa-var-transgender: "\f224";
619 | @fa-var-transgender-alt: "\f225";
620 | @fa-var-trash: "\f1f8";
621 | @fa-var-trash-o: "\f014";
622 | @fa-var-tree: "\f1bb";
623 | @fa-var-trello: "\f181";
624 | @fa-var-tripadvisor: "\f262";
625 | @fa-var-trophy: "\f091";
626 | @fa-var-truck: "\f0d1";
627 | @fa-var-try: "\f195";
628 | @fa-var-tty: "\f1e4";
629 | @fa-var-tumblr: "\f173";
630 | @fa-var-tumblr-square: "\f174";
631 | @fa-var-turkish-lira: "\f195";
632 | @fa-var-tv: "\f26c";
633 | @fa-var-twitch: "\f1e8";
634 | @fa-var-twitter: "\f099";
635 | @fa-var-twitter-square: "\f081";
636 | @fa-var-umbrella: "\f0e9";
637 | @fa-var-underline: "\f0cd";
638 | @fa-var-undo: "\f0e2";
639 | @fa-var-university: "\f19c";
640 | @fa-var-unlink: "\f127";
641 | @fa-var-unlock: "\f09c";
642 | @fa-var-unlock-alt: "\f13e";
643 | @fa-var-unsorted: "\f0dc";
644 | @fa-var-upload: "\f093";
645 | @fa-var-usd: "\f155";
646 | @fa-var-user: "\f007";
647 | @fa-var-user-md: "\f0f0";
648 | @fa-var-user-plus: "\f234";
649 | @fa-var-user-secret: "\f21b";
650 | @fa-var-user-times: "\f235";
651 | @fa-var-users: "\f0c0";
652 | @fa-var-venus: "\f221";
653 | @fa-var-venus-double: "\f226";
654 | @fa-var-venus-mars: "\f228";
655 | @fa-var-viacoin: "\f237";
656 | @fa-var-video-camera: "\f03d";
657 | @fa-var-vimeo: "\f27d";
658 | @fa-var-vimeo-square: "\f194";
659 | @fa-var-vine: "\f1ca";
660 | @fa-var-vk: "\f189";
661 | @fa-var-volume-down: "\f027";
662 | @fa-var-volume-off: "\f026";
663 | @fa-var-volume-up: "\f028";
664 | @fa-var-warning: "\f071";
665 | @fa-var-wechat: "\f1d7";
666 | @fa-var-weibo: "\f18a";
667 | @fa-var-weixin: "\f1d7";
668 | @fa-var-whatsapp: "\f232";
669 | @fa-var-wheelchair: "\f193";
670 | @fa-var-wifi: "\f1eb";
671 | @fa-var-wikipedia-w: "\f266";
672 | @fa-var-windows: "\f17a";
673 | @fa-var-won: "\f159";
674 | @fa-var-wordpress: "\f19a";
675 | @fa-var-wrench: "\f0ad";
676 | @fa-var-xing: "\f168";
677 | @fa-var-xing-square: "\f169";
678 | @fa-var-y-combinator: "\f23b";
679 | @fa-var-y-combinator-square: "\f1d4";
680 | @fa-var-yahoo: "\f19e";
681 | @fa-var-yc: "\f23b";
682 | @fa-var-yc-square: "\f1d4";
683 | @fa-var-yelp: "\f1e9";
684 | @fa-var-yen: "\f157";
685 | @fa-var-youtube: "\f167";
686 | @fa-var-youtube-play: "\f16a";
687 | @fa-var-youtube-square: "\f166";
688 |
689 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/scss/_animated.scss:
--------------------------------------------------------------------------------
1 | // Spinning Icons
2 | // --------------------------
3 |
4 | .#{$fa-css-prefix}-spin {
5 | -webkit-animation: fa-spin 2s infinite linear;
6 | animation: fa-spin 2s infinite linear;
7 | }
8 |
9 | .#{$fa-css-prefix}-pulse {
10 | -webkit-animation: fa-spin 1s infinite steps(8);
11 | animation: fa-spin 1s infinite steps(8);
12 | }
13 |
14 | @-webkit-keyframes fa-spin {
15 | 0% {
16 | -webkit-transform: rotate(0deg);
17 | transform: rotate(0deg);
18 | }
19 | 100% {
20 | -webkit-transform: rotate(359deg);
21 | transform: rotate(359deg);
22 | }
23 | }
24 |
25 | @keyframes fa-spin {
26 | 0% {
27 | -webkit-transform: rotate(0deg);
28 | transform: rotate(0deg);
29 | }
30 | 100% {
31 | -webkit-transform: rotate(359deg);
32 | transform: rotate(359deg);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/scss/_bordered-pulled.scss:
--------------------------------------------------------------------------------
1 | // Bordered & Pulled
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix}-border {
5 | padding: .2em .25em .15em;
6 | border: solid .08em $fa-border-color;
7 | border-radius: .1em;
8 | }
9 |
10 | .#{$fa-css-prefix}-pull-left { float: left; }
11 | .#{$fa-css-prefix}-pull-right { float: right; }
12 |
13 | .#{$fa-css-prefix} {
14 | &.#{$fa-css-prefix}-pull-left { margin-right: .3em; }
15 | &.#{$fa-css-prefix}-pull-right { margin-left: .3em; }
16 | }
17 |
18 | /* Deprecated as of 4.4.0 */
19 | .pull-right { float: right; }
20 | .pull-left { float: left; }
21 |
22 | .#{$fa-css-prefix} {
23 | &.pull-left { margin-right: .3em; }
24 | &.pull-right { margin-left: .3em; }
25 | }
26 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/scss/_core.scss:
--------------------------------------------------------------------------------
1 | // Base Class Definition
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix} {
5 | display: inline-block;
6 | font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration
7 | font-size: inherit; // can't have font-size inherit on line above, so need to override
8 | text-rendering: auto; // optimizelegibility throws things off #1094
9 | -webkit-font-smoothing: antialiased;
10 | -moz-osx-font-smoothing: grayscale;
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/scss/_fixed-width.scss:
--------------------------------------------------------------------------------
1 | // Fixed Width Icons
2 | // -------------------------
3 | .#{$fa-css-prefix}-fw {
4 | width: (18em / 14);
5 | text-align: center;
6 | }
7 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/scss/_larger.scss:
--------------------------------------------------------------------------------
1 | // Icon Sizes
2 | // -------------------------
3 |
4 | /* makes the font 33% larger relative to the icon container */
5 | .#{$fa-css-prefix}-lg {
6 | font-size: (4em / 3);
7 | line-height: (3em / 4);
8 | vertical-align: -15%;
9 | }
10 | .#{$fa-css-prefix}-2x { font-size: 2em; }
11 | .#{$fa-css-prefix}-3x { font-size: 3em; }
12 | .#{$fa-css-prefix}-4x { font-size: 4em; }
13 | .#{$fa-css-prefix}-5x { font-size: 5em; }
14 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/scss/_list.scss:
--------------------------------------------------------------------------------
1 | // List Icons
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix}-ul {
5 | padding-left: 0;
6 | margin-left: $fa-li-width;
7 | list-style-type: none;
8 | > li { position: relative; }
9 | }
10 | .#{$fa-css-prefix}-li {
11 | position: absolute;
12 | left: -$fa-li-width;
13 | width: $fa-li-width;
14 | top: (2em / 14);
15 | text-align: center;
16 | &.#{$fa-css-prefix}-lg {
17 | left: -$fa-li-width + (4em / 14);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/scss/_mixins.scss:
--------------------------------------------------------------------------------
1 | // Mixins
2 | // --------------------------
3 |
4 | @mixin fa-icon() {
5 | display: inline-block;
6 | font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration
7 | font-size: inherit; // can't have font-size inherit on line above, so need to override
8 | text-rendering: auto; // optimizelegibility throws things off #1094
9 | -webkit-font-smoothing: antialiased;
10 | -moz-osx-font-smoothing: grayscale;
11 |
12 | }
13 |
14 | @mixin fa-icon-rotate($degrees, $rotation) {
15 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
16 | -webkit-transform: rotate($degrees);
17 | -ms-transform: rotate($degrees);
18 | transform: rotate($degrees);
19 | }
20 |
21 | @mixin fa-icon-flip($horiz, $vert, $rotation) {
22 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
23 | -webkit-transform: scale($horiz, $vert);
24 | -ms-transform: scale($horiz, $vert);
25 | transform: scale($horiz, $vert);
26 | }
27 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/scss/_path.scss:
--------------------------------------------------------------------------------
1 | /* FONT PATH
2 | * -------------------------- */
3 |
4 | @font-face {
5 | font-family: 'FontAwesome';
6 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}');
7 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'),
8 | url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'),
9 | url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'),
10 | url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'),
11 | url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg');
12 | // src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
13 | font-weight: normal;
14 | font-style: normal;
15 | }
16 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/scss/_rotated-flipped.scss:
--------------------------------------------------------------------------------
1 | // Rotated & Flipped Icons
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); }
5 | .#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); }
6 | .#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); }
7 |
8 | .#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); }
9 | .#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); }
10 |
11 | // Hook for IE8-9
12 | // -------------------------
13 |
14 | :root .#{$fa-css-prefix}-rotate-90,
15 | :root .#{$fa-css-prefix}-rotate-180,
16 | :root .#{$fa-css-prefix}-rotate-270,
17 | :root .#{$fa-css-prefix}-flip-horizontal,
18 | :root .#{$fa-css-prefix}-flip-vertical {
19 | filter: none;
20 | }
21 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/scss/_spinning.scss:
--------------------------------------------------------------------------------
1 | // Spinning Icons
2 | // --------------------------
3 |
4 | .#{$fa-css-prefix}-spin {
5 | -webkit-animation: fa-spin 2s infinite linear;
6 | animation: fa-spin 2s infinite linear;
7 | }
8 |
9 | @-webkit-keyframes fa-spin {
10 | 0% {
11 | -webkit-transform: rotate(0deg);
12 | transform: rotate(0deg);
13 | }
14 | 100% {
15 | -webkit-transform: rotate(359deg);
16 | transform: rotate(359deg);
17 | }
18 | }
19 |
20 | @keyframes fa-spin {
21 | 0% {
22 | -webkit-transform: rotate(0deg);
23 | transform: rotate(0deg);
24 | }
25 | 100% {
26 | -webkit-transform: rotate(359deg);
27 | transform: rotate(359deg);
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/scss/_stacked.scss:
--------------------------------------------------------------------------------
1 | // Stacked Icons
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix}-stack {
5 | position: relative;
6 | display: inline-block;
7 | width: 2em;
8 | height: 2em;
9 | line-height: 2em;
10 | vertical-align: middle;
11 | }
12 | .#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x {
13 | position: absolute;
14 | left: 0;
15 | width: 100%;
16 | text-align: center;
17 | }
18 | .#{$fa-css-prefix}-stack-1x { line-height: inherit; }
19 | .#{$fa-css-prefix}-stack-2x { font-size: 2em; }
20 | .#{$fa-css-prefix}-inverse { color: $fa-inverse; }
21 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/javascript/checkbox/font-awesome/scss/font-awesome.scss:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome 4.4.0 by @davegandy - http://fontawesome.io - @fontawesome
3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
4 | */
5 |
6 | @import "variables";
7 | @import "mixins";
8 | @import "path";
9 | @import "core";
10 | @import "larger";
11 | @import "fixed-width";
12 | @import "list";
13 | @import "bordered-pulled";
14 | @import "animated";
15 | @import "rotated-flipped";
16 | @import "stacked";
17 | @import "icons";
18 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/template/module/checkbox.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
9 |
10 |
11 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
121 |
122 |
123 |
124 |
125 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/template/module/checkbox_order_info.tpl:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
Checkbox PPO
14 |
15 |
21 |
22 |
87 |
116 |
117 |
118 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/template/module/checkbox_order_info_ajax.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
67 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/template/module/checkbox_order_list.tpl:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
100 |
129 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/admin/view/template/module/checkbox_order_list_ajax.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | Статус каси
11 | *для роботи з касою запустіть
12 | - Checkbox підпис або HSM (DepositSign)
13 | |
14 | = $status ?>
15 |
16 | |
17 |
18 |
19 | Відкрити / Закрити зміну |
20 |
21 |
22 |
25 |
26 |
29 |
30 | |
31 |
32 |
33 | Друкувати z-звіт *за останньою закритою зміною |
34 |
35 | Друкувати z-звіт
36 | |
37 |
38 |
39 | Службове внесення / винесення коштів *внесення зі знаком + *винесення зі знаком - |
40 |
41 | Баланс: = $balance ?>
42 |
43 |
44 |
45 |
46 |
47 |
48 | |
49 |
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/OP_v1.5/upload/vqmod/xml/checkbox.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Checkbox RRO
4 | web systems solutions
5 | checkbox_rro
6 | checkbox_rro
7 | 1.0
8 | https://web-systems.solutions/
9 |
10 |
11 |
12 |
13 |
14 | template = 'sale/order_list.tpl';
16 | ]]>
17 |
18 |
19 | data['checkbox_rro'] = $this->getChild('module/checkbox/getViewList', $this->data);
23 | ob_get_clean();
24 | // Checkbox . End
25 | ]]>
26 |
27 |
28 |
29 |
30 | template = 'sale/order_info.tpl';
32 | ]]>
33 |
34 |
35 | data['checkbox_rro'] = $this->getChild('module/checkbox/getViewInfo', $this->data);
39 | ob_get_clean();
40 | $this->data['checkbox_status'] = $this->config->get('checkbox_status');
41 | // Checkbox . End
42 | ]]>
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
52 | ]]>
53 |
54 |
55 |
57 |
58 | Checkbox PPO
59 |
60 |
61 | ]]>
62 |
63 |
64 |
65 |
66 |
67 |
69 | ]]>
70 |
71 |
72 |
74 |
75 |
76 |
77 |
78 |
79 |
80 | ]]>
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
90 | ]]>
91 |
92 |
93 |
95 |
96 |
97 | ]]>
98 |
99 |
100 |
101 |
102 |
103 |
--------------------------------------------------------------------------------
/OP_v2.1-2.3/admin/language/en-gb/extension/module/checkbox.php:
--------------------------------------------------------------------------------
1 | login = $this->config->get('checkbox_rro_login');
21 | $this->password = $this->config->get('checkbox_rro_password');
22 | $this->cashbox_key = $this->config->get('checkbox_rro_cashbox_key');
23 | $this->is_dev = $this->config->get('checkbox_rro_is_dev');
24 | $this->getBearToken();
25 | }
26 |
27 |
28 | public function getBearToken()
29 | {
30 | $params = ['login' => $this->login, 'password' => $this->password];
31 | $response = $this->makePostRequest('/api/v1/cashier/signin', $params);
32 |
33 | $this->access_token = $response['access_token'] ? $response['access_token'] : '';
34 | }
35 |
36 | public function connect()
37 | {
38 | $cashbox_key = $this->cashbox_key;
39 | $header_params = ['cashbox_key' => $cashbox_key];
40 | return $this->makePostRequest('/api/v1/shifts', [], $header_params);
41 | }
42 |
43 | public function disconnect()
44 | {
45 | return $this->makePostRequest('/api/v1/shifts/close');
46 | }
47 |
48 | public function getShifts()
49 | {
50 | $url = '/api/v1/shifts?desc=true';
51 | return $this->makeGetRequest($url);
52 | }
53 |
54 | public function getCurrentCashierShift()
55 | {
56 | $url = '/api/v1/cashier/shift';
57 | return $this->makeGetRequest($url);
58 | }
59 |
60 | public function getCurrentCashboxInfo()
61 | {
62 | $url = '/api/v1/cash-registers/info';
63 | $header_params = ['cashbox_key' => $this->cashbox_key];
64 | return $this->makeGetRequest($url, [], $header_params);
65 | }
66 |
67 | public function checkConnection($shift_id)
68 | {
69 | $url = '/api/v1/shifts/' . $shift_id;
70 | return $this->makeGetRequest($url);
71 | }
72 |
73 | public function getZReports()
74 | {
75 | $url = '/api/v1/reports/?is_z_report=true';
76 | return $this->makeGetRequest($url);
77 | }
78 |
79 | public function getReportText($report_id)
80 | {
81 | $url = '/api/v1/reports/' . $report_id . '/text/';
82 | return $this->makeGetRequest($url, [], [], true);
83 | }
84 |
85 | public function getReceiptHtml($receipt_id)
86 | {
87 | $url = '/api/v1/receipts/' . $receipt_id . '/html/';
88 | return $this->makeGetRequest($url, [], [], true);
89 | }
90 |
91 | public function getReceipt($receipt_id)
92 | {
93 | $url = '/api/v1/receipts/' . $receipt_id;
94 | return $this->makeGetRequest($url);
95 | }
96 |
97 | public function createServiceReceipt($cash)
98 | {
99 | $params = [
100 | 'payment' => [
101 | 'type' => 'CASH',
102 | 'value' => $cash,
103 | ]
104 | ];
105 | return $this->makePostRequest('/api/v1/receipts/service', $params);
106 | }
107 |
108 | public function create_receipt($params)
109 | {
110 | return $this->makePostRequest('/api/v1/receipts/sell', $params);
111 | }
112 |
113 |
114 | private function makePostRequest($route, $params = [], $header_params = [])
115 | {
116 | $url_host = $this->is_dev ? 'https://dev-api.checkbox.in.ua' : 'https://api.checkbox.in.ua';
117 | $url = $url_host . $route;
118 |
119 | $header = ['Content-type' => 'application/json'];
120 |
121 | if ($this->access_token) {
122 | $header = array_merge($header, ['Authorization: Bearer ' . trim($this->access_token)]);
123 | }
124 |
125 | if (isset($header_params['cashbox_key'])) {
126 | $header = array_merge($header, ['X-License-Key: ' . $header_params['cashbox_key']]);
127 | }
128 |
129 | $header = array_merge($header, ['X-Client-Name: shhygolvv_khm']);
130 | $header = array_merge($header, ['X-Client-Version: 1']);
131 |
132 | $curl = curl_init();
133 |
134 | curl_setopt_array($curl, array(
135 | CURLOPT_URL => $url,
136 | CURLOPT_RETURNTRANSFER => true,
137 | CURLOPT_SSL_VERIFYPEER => false,
138 | CURLOPT_ENCODING => "",
139 | CURLOPT_MAXREDIRS => 10,
140 | CURLOPT_TIMEOUT => 0,
141 | CURLOPT_FOLLOWLOCATION => true,
142 | CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
143 | CURLOPT_CUSTOMREQUEST => "POST",
144 | CURLOPT_POSTFIELDS => json_encode($params),
145 | CURLOPT_HTTPHEADER => $header,
146 | ));
147 |
148 | $response = curl_exec($curl);
149 |
150 | curl_close($curl);
151 |
152 | return isset($response) ? (array)json_decode($response) : [];
153 | }
154 |
155 | private function makeGetRequest($route, $params = [], $header_params = [], $echo = false)
156 | {
157 | $url_host = $this->is_dev ? 'https://dev-api.checkbox.in.ua' : 'https://api.checkbox.in.ua';
158 | $url = $url_host . $route;
159 |
160 | $header = ['Content-type' => 'application/json'];
161 | if ($this->access_token) {
162 | $header = array_merge($header, ['Authorization: Bearer ' . trim($this->access_token)]);
163 | }
164 |
165 | if (isset($header_params['cashbox_key'])) {
166 | $header = array_merge($header, ['X-License-Key: ' . $header_params['cashbox_key']]);
167 | }
168 |
169 | $header = array_merge($header, ['X-Client-Name: shhygolvv_khm']);
170 | $header = array_merge($header, ['X-Client-Version: 1']);
171 |
172 | if ($params) {
173 | $params = http_build_query($params);
174 | } else {
175 | $params = '';
176 | }
177 |
178 | $curl = curl_init();
179 |
180 | curl_setopt_array($curl, array(
181 | CURLOPT_URL => $url,
182 | CURLOPT_RETURNTRANSFER => true,
183 | CURLOPT_SSL_VERIFYPEER => false,
184 | CURLOPT_ENCODING => "",
185 | CURLOPT_MAXREDIRS => 10,
186 | CURLOPT_TIMEOUT => 0,
187 | CURLOPT_FOLLOWLOCATION => true,
188 | CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
189 | CURLOPT_CUSTOMREQUEST => "GET",
190 | CURLOPT_HTTPHEADER => $header,
191 | ));
192 |
193 | $response = curl_exec($curl);
194 |
195 | curl_close($curl);
196 |
197 | if ($echo) {
198 | return $response;
199 | } else {
200 | return isset($response) ? (array)json_decode($response) : [];
201 | }
202 |
203 | }
204 |
205 |
206 | public function getOrder($order_id)
207 | {
208 | $order_query = $this->db->query("SELECT *, (SELECT CONCAT(c.firstname, ' ', c.lastname) FROM " . DB_PREFIX . "customer c WHERE c.customer_id = o.customer_id) AS customer, (SELECT os.name FROM " . DB_PREFIX . "order_status os WHERE os.order_status_id = o.order_status_id AND os.language_id = '" . (int)$this->config->get('config_language_id') . "') AS order_status FROM `" . DB_PREFIX . "order` o WHERE o.order_id = '" . (int)$order_id . "'");
209 |
210 | return $order_query->row;
211 | }
212 |
213 |
214 | }
215 |
--------------------------------------------------------------------------------
/OP_v2.1-2.3/admin/view/template/extension/module/checkbox.tpl:
--------------------------------------------------------------------------------
1 | = $header; ?>= $column_left; ?>
2 |
3 |
18 |
19 |
20 |
= $error_warning; ?>
21 |
22 |
23 |
24 |
25 |
26 |
= $text_edit; ?>
27 |
28 |
113 |
114 |
115 |
116 | = $footer; ?>
117 |
--------------------------------------------------------------------------------
/OP_v2.1-2.3/admin/view/template/extension/module/checkbox_order_info.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
Checkbox PPO
5 |
6 |
12 |
13 |
78 |
107 |
108 |
109 |
--------------------------------------------------------------------------------
/OP_v2.1-2.3/admin/view/template/extension/module/checkbox_order_info_ajax.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
67 |
--------------------------------------------------------------------------------
/OP_v2.1-2.3/admin/view/template/extension/module/checkbox_order_list.tpl:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
91 |
120 |
--------------------------------------------------------------------------------
/OP_v2.1-2.3/admin/view/template/extension/module/checkbox_order_list_ajax.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | Статус каси
11 | *для роботи з касою запустіть
12 | - Checkbox підпис або HSM (DepositSign)
13 | |
14 | = $status ?>
15 |
16 | |
17 |
18 |
19 | Відкрити / Закрити зміну |
20 |
21 |
22 |
25 |
26 |
29 |
30 | |
31 |
32 |
33 | Друкувати z-звіт *за останньою закритою зміною |
34 |
35 | Друкувати z-звіт
36 | |
37 |
38 |
39 | Службове внесення / винесення коштів *внесення зі знаком + *винесення зі знаком - |
40 |
41 | Баланс: = $balance ?>
42 |
43 |
44 |
45 |
46 |
47 |
48 | |
49 |
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/OP_v2.1-2.3/build/checkbox-OP2.1-2.3.ocmod.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WebSystemsSolutions/opencart-rro-checkbox/748ed7047df978e0f4bd76d313f50b0725eab859/OP_v2.1-2.3/build/checkbox-OP2.1-2.3.ocmod.zip
--------------------------------------------------------------------------------
/OP_v2.1-2.3/system/checkbox.ocmod.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Checkbox RRO
4 | web systems solutions
5 | checkbox_rro
6 | 1.0
7 | https://web-systems.solutions/
8 |
9 |
10 | response->setOutput($this->load->view('sale/order_list', $data));]]>
11 | load->controller('extension/module/checkbox/getViewList');
13 | ]]>
14 |
15 |
16 | response->setOutput($this->load->view('sale/order_info', $data));]]>
17 | load->controller('extension/module/checkbox/getViewInfo');
19 | ]]>
20 |
21 |
22 |
23 |
24 | response->setOutput($this->load->view('sale/order_list.tpl', $data));]]>
25 | load->controller('extension/module/checkbox/getViewList');
27 | ]]>
28 |
29 |
30 | response->setOutput($this->load->view('sale/order_info.tpl', $data));]]>
31 | load->controller('extension/module/checkbox/getViewInfo');
33 | ]]>
34 |
35 |
36 |
37 |
38 |
39 | ]]>
40 |
42 | ]]>
43 |
44 |
45 |
46 |
47 | ]]>
48 |
50 | ]]>
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/OP_v3.0/admin/controller/extension/module/checkbox.php:
--------------------------------------------------------------------------------
1 | load->language('extension/module/checkbox');
11 |
12 | $this->document->setTitle($this->language->get('heading_title'));
13 |
14 | $this->load->model('setting/setting');
15 |
16 | if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
17 | $this->model_setting_setting->editSetting('module_checkbox', $this->request->post);
18 |
19 | $this->session->data['success'] = $this->language->get('text_success');
20 |
21 | $this->response->redirect($this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=module', true));
22 |
23 | }
24 |
25 | $data['heading_title'] = $this->language->get('heading_title');
26 |
27 | $data['text_edit'] = $this->language->get('text_edit');
28 | $data['text_enabled'] = $this->language->get('text_enabled');
29 | $data['text_disabled'] = $this->language->get('text_disabled');
30 |
31 | $data['entry_rro_login'] = $this->language->get('entry_rro_login');
32 | $data['entry_rro_password'] = $this->language->get('entry_rro_password');
33 | $data['entry_rro_cashbox_key'] = $this->language->get('entry_rro_cashbox_key');
34 |
35 | $data['entry_rro_receipt_header'] = $this->language->get('entry_rro_receipt_header');
36 | $data['entry_rro_receipt_footer'] = $this->language->get('entry_rro_receipt_footer');
37 |
38 | $data['entry_status'] = $this->language->get('entry_status');
39 |
40 | $data['button_save'] = $this->language->get('button_save');
41 | $data['button_cancel'] = $this->language->get('button_cancel');
42 |
43 | if (isset($this->error['warning'])) {
44 | $data['error_warning'] = $this->error['warning'];
45 | } else {
46 | $data['error_warning'] = '';
47 | }
48 |
49 | $data['breadcrumbs'] = array();
50 |
51 | $data['breadcrumbs'][] = array(
52 | 'text' => $this->language->get('text_home'),
53 | 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true)
54 | );
55 |
56 | $data['breadcrumbs'][] = array(
57 | 'text' => $this->language->get('text_extension'),
58 | 'href' => $this->url->link('extension/extension', 'user_token=' . $this->session->data['user_token'] . '&type=module', true)
59 | );
60 |
61 | $data['breadcrumbs'][] = array(
62 | 'text' => $this->language->get('heading_title'),
63 | 'href' => $this->url->link('extension/module/checkbox', 'user_token=' . $this->session->data['user_token'], true)
64 | );
65 |
66 | $data['action'] = $this->url->link('extension/module/checkbox', 'user_token=' . $this->session->data['user_token'], true);
67 |
68 | $data['cancel'] = $this->url->link('extension/extension', 'user_token=' . $this->session->data['user_token'] . '&type=module', true);
69 |
70 | if (isset($this->request->post['module_checkbox_rro_login'])) {
71 | $data['module_checkbox_rro_login'] = $this->request->post['module_checkbox_rro_login'];
72 | } else {
73 | $data['module_checkbox_rro_login'] = $this->config->get('module_checkbox_rro_login');
74 | }
75 |
76 | if (isset($this->request->post['module_checkbox_rro_password'])) {
77 | $data['module_checkbox_rro_password'] = $this->request->post['module_checkbox_rro_password'];
78 | } else {
79 | $data['module_checkbox_rro_password'] = $this->config->get('module_checkbox_rro_password');
80 | }
81 |
82 | if (isset($this->request->post['module_checkbox_rro_cashbox_key'])) {
83 | $data['module_checkbox_rro_cashbox_key'] = $this->request->post['module_checkbox_rro_cashbox_key'];
84 | } else {
85 | $data['module_checkbox_rro_cashbox_key'] = $this->config->get('module_checkbox_rro_cashbox_key');
86 | }
87 |
88 | if (isset($this->request->post['module_checkbox_rro_is_dev'])) {
89 | $data['module_checkbox_rro_is_dev'] = $this->request->post['module_checkbox_rro_is_dev'];
90 | } else {
91 | $data['module_checkbox_rro_is_dev'] = $this->config->get('module_checkbox_rro_is_dev');
92 | }
93 |
94 | if (isset($this->request->post['module_checkbox_rro_receipt_header'])) {
95 | $data['module_checkbox_rro_receipt_header'] = $this->request->post['module_checkbox_rro_receipt_header'];
96 | } else {
97 | $data['module_checkbox_rro_receipt_header'] = $this->config->get('module_checkbox_rro_receipt_header');
98 | }
99 |
100 | if (isset($this->request->post['module_checkbox_rro_receipt_footer'])) {
101 | $data['module_checkbox_rro_receipt_footer'] = $this->request->post['module_checkbox_rro_receipt_footer'];
102 | } else {
103 | $data['module_checkbox_rro_receipt_footer'] = $this->config->get('module_checkbox_rro_receipt_footer');
104 | }
105 |
106 | if (isset($this->request->post['module_checkbox_status'])) {
107 | $data['module_checkbox_status'] = $this->request->post['module_checkbox_status'];
108 | } else {
109 | $data['module_checkbox_status'] = $this->config->get('module_checkbox_status');
110 | }
111 |
112 | $data['instruction'] = print_r('1) для роботи з касою запустіть Checkbox підпис або HSM (DepositSign)', 1);
113 |
114 | $data['header'] = $this->load->controller('common/header');
115 | $data['column_left'] = $this->load->controller('common/column_left');
116 | $data['footer'] = $this->load->controller('common/footer');
117 |
118 | $this->response->setOutput($this->load->view('extension/module/checkbox', $data));
119 |
120 | }
121 |
122 |
123 | public function getViewInfo()
124 | {
125 | if (!$this->config->get('module_checkbox_status')) {
126 | return '';
127 | }
128 |
129 | if (isset($this->request->get['order_id'])) {
130 | $data['order_id'] = $this->request->get['order_id'];
131 | } else {
132 | $data['order_id'] = 0;
133 | }
134 |
135 | if (isset($this->request->get['user_token'])) {
136 | $data['user_token'] = $this->request->get['user_token'];
137 | } else {
138 | $data['user_token'] = 0;
139 | }
140 |
141 | return $this->load->view('extension/module/checkbox_order_info', $data);
142 |
143 |
144 | }
145 |
146 | public function getViewList()
147 | {
148 |
149 | if (!$this->config->get('module_checkbox_status')) {
150 | return '';
151 | }
152 |
153 | if (isset($this->request->get['user_token'])) {
154 | $data['user_token'] = $this->request->get['user_token'];
155 | } else {
156 | $data['user_token'] = 0;
157 | }
158 |
159 | return $this->load->view('extension/module/checkbox_order_list', $data);
160 |
161 | }
162 |
163 | public function createReceipt()
164 | {
165 |
166 | if (isset($this->request->get['order_id'])) {
167 | $order_id = $this->request->get['order_id'];
168 | } else {
169 | $order_id = 0;
170 | }
171 |
172 | if (isset($this->request->get['payment_type'])) {
173 | $payment_type = $this->request->get['payment_type'];
174 | } else {
175 | $payment_type = 'CASH';
176 | }
177 |
178 | if (isset($this->request->get['send_email'])) {
179 | $send_email = $this->request->get['send_email'];
180 | } else {
181 | $send_email = true;
182 | }
183 |
184 | if (isset($this->request->get['is_return'])) {
185 | $is_return = ($this->request->get['is_return'] > 0);
186 | } else {
187 | $is_return = false;
188 | }
189 |
190 | $this->load->model('sale/order');
191 | $this->load->model('extension/payment/checkbox');
192 |
193 | $order_info = $this->model_extension_payment_checkbox->getOrder($order_id);
194 |
195 |
196 | $email = $order_info['email'];
197 | //$cashier_name = $order_info['firstname'] . ' ' . $order_info['lastname'];
198 | $cashier_name =$order_info['store_name'];
199 | $departament = 'store';
200 |
201 |
202 | $params = [];
203 |
204 | $goods = [];
205 |
206 | $products = $this->model_sale_order->getOrderProducts($this->request->get['order_id']);
207 |
208 | $total = 0;
209 |
210 | foreach ($products as $product) {
211 |
212 | $price = (float)number_format((float)$product['price'], 2, '', '');
213 |
214 | $good = [
215 | 'code' => $product['product_id'] . '-' . $product['name'],
216 | 'name' => $product['name'],
217 | 'price' => $price
218 | ];
219 |
220 | $total += $price;
221 |
222 | $item = [
223 | 'good' => $good,
224 | 'quantity' => (int)$product['quantity'] * 1000
225 | ];
226 |
227 | if ($is_return) {
228 | $item['is_return'] = true;
229 | }
230 |
231 | $goods[] = $item;
232 | }
233 |
234 | $params['goods'] = $goods;
235 | $params['cashier_name'] = $cashier_name;
236 | $params['departament'] = $departament;
237 |
238 | if ($send_email) {
239 | $params['delivery'] = ['email' => $email];
240 | }
241 |
242 |
243 | $order_totals = $this->model_sale_order->getOrderTotals($this->request->get['order_id']);
244 |
245 | foreach ($order_totals as $order_total) {
246 |
247 | if ('total' == $order_total['code']) {
248 | $total = (float)number_format((float)$order_total['value'], 2, '', '');
249 | }
250 |
251 | if (in_array($order_total['code'], array('sub_total', 'total'))) {
252 | continue;
253 | }
254 |
255 | if ($order_total['value'] > 0) {
256 | $discount_type = 'EXTRA_CHARGE';
257 | } else {
258 | $discount_type = 'DISCOUNT';
259 | }
260 |
261 | $discount_price = (float)number_format((float)$order_total['value'], 2, '', '');
262 |
263 | $params['discounts'][] = array(
264 | 'type' => $discount_type,
265 | 'mode' => 'VALUE',
266 | 'value' => abs($discount_price),
267 | 'name' => strip_tags($order_total['title']),
268 | );
269 | }
270 |
271 | $params['payments'][] = [
272 | 'type' => ( in_array($payment_type, ['CASH', 'CASHLESS', 'CARD'])) ? $payment_type : 'CASH',
273 | 'value' => $total
274 | ];
275 |
276 | if ($this->config->get('module_checkbox_rro_receipt_header')) {
277 | $params['header'] = $this->config->get('module_checkbox_rro_receipt_header');
278 | }
279 |
280 | if ($this->config->get('module_checkbox_rro_receipt_footer')) {
281 | $params['footer'] = $this->config->get('module_checkbox_rro_receipt_footer');
282 | }
283 |
284 | $receipt = $this->model_extension_payment_checkbox->create_receipt($params);
285 |
286 |
287 | $this->json['return_$params'] = $params;
288 | $this->json['return_$receipt'] = $receipt;
289 |
290 | if (isset($receipt['id'])) {
291 | if ($is_return) {
292 | $this->db->query("UPDATE " . DB_PREFIX . "order SET checkbox_return_receipt_id = '" . $this->db->escape($receipt['id']) . "' WHERE order_id = '" . (int)$order_id . "'");
293 | } else {
294 | $this->db->query("UPDATE " . DB_PREFIX . "order SET checkbox_receipt_id = '" . $this->db->escape($receipt['id']) . "' WHERE order_id = '" . (int)$order_id . "'");
295 | }
296 | }
297 |
298 | if (isset($receipt['message'])) {
299 | $this->json['error'] = '' . print_r($receipt['message'], 1) . '
';
300 | }
301 |
302 |
303 | $this->response->addHeader('Content-Type: application/json');
304 | $this->response->setOutput(json_encode($this->json));
305 |
306 | }
307 |
308 | public function getReceiptHtml()
309 | {
310 |
311 | if (isset($this->request->get['receipt_id'])) {
312 | $receipt_id = $this->request->get['receipt_id'];
313 | } else {
314 | $receipt_id = '';
315 | }
316 |
317 | $this->load->model('extension/payment/checkbox');
318 |
319 | if ($receipt_id) {
320 | echo $this->model_extension_payment_checkbox->getReceiptHtml($receipt_id);
321 | }
322 | }
323 |
324 | public function orderInfo()
325 | {
326 |
327 | sleep(2);
328 |
329 | if (isset($this->request->get['order_id'])) {
330 | $order_id = $this->request->get['order_id'];
331 | } else {
332 | $order_id = 0;
333 | }
334 |
335 | if (isset($this->request->get['user_token'])) {
336 | $user_token = $this->request->get['user_token'];
337 | } else {
338 | $user_token = 0;
339 | }
340 |
341 | $data['user_token'] = $user_token;
342 | $data['order_id'] = $order_id;
343 |
344 | $this->load->model('extension/payment/checkbox');
345 |
346 | $order_info = $this->model_extension_payment_checkbox->getOrder($order_id);
347 |
348 |
349 | list($shift_id, $is_connected, $status) = $this->getShiftStatus();
350 |
351 | $data['link_html_receipt'] = $this->url->link('extension/module/checkbox/getReceiptHtml', 'user_token=' . $user_token . '&receipt_id=' . $order_info['checkbox_receipt_id'], true);
352 | $data['link_html_receipt_return'] = $this->url->link('extension/module/checkbox/getReceiptHtml', 'user_token=' . $user_token . '&receipt_id=' . $order_info['checkbox_return_receipt_id'], true);
353 |
354 | $data['status'] = $status;
355 |
356 | $data['checkbox_receipt_id'] = '';
357 | $data['checkbox_return_receipt_id'] = '';
358 |
359 | if ($order_info['checkbox_receipt_id']) {
360 | $receipt_info = $this->model_extension_payment_checkbox->getReceipt($order_info['checkbox_receipt_id']);
361 | if (isset($receipt_info['fiscal_code'])) {
362 | $data['checkbox_receipt_id'] = $receipt_info['fiscal_code'];
363 | }
364 | }
365 |
366 | if ($order_info['checkbox_return_receipt_id']) {
367 | $receipt_info = $this->model_extension_payment_checkbox->getReceipt($order_info['checkbox_return_receipt_id']);
368 | if (isset($receipt_info['fiscal_code'])) {
369 | $data['checkbox_return_receipt_id'] = $receipt_info['fiscal_code'];
370 | }
371 | }
372 |
373 | $this->response->setOutput($this->load->view('extension/module/checkbox_order_info_ajax', $data));
374 |
375 | }
376 |
377 | public function getZReport()
378 | {
379 |
380 | $this->load->model('extension/payment/checkbox');
381 |
382 | $shifts = $this->model_extension_payment_checkbox->getShifts();
383 |
384 | $z_report_id = '';
385 |
386 | if ($shifts['results']) {
387 | foreach ($shifts['results'] as $shift) {
388 |
389 | if ($shift->z_report && $shift->z_report->is_z_report) {
390 | $z_report_id = $shift->z_report->id;
391 | break;
392 | }
393 | }
394 | }
395 |
396 | if ($z_report_id) {
397 |
398 | $html = $this->model_extension_payment_checkbox->getReportText($z_report_id);
399 |
400 | echo str_replace(PHP_EOL, '
', $html);
401 |
402 | } else {
403 | echo 'Звітів не знайдено';
404 | }
405 |
406 |
407 | }
408 |
409 | public function createCashierShift()
410 | {
411 |
412 | $this->load->model('extension/payment/checkbox');
413 |
414 | $shift = $this->model_extension_payment_checkbox->connect();
415 |
416 | if (isset($shift['message'])) {
417 | $this->json['error'] = '' . print_r($shift['message'], 1) . '
';
418 | }
419 |
420 | $this->response->addHeader('Content-Type: application/json');
421 | $this->response->setOutput(json_encode($this->json));
422 | }
423 |
424 | public function closeCashierShift()
425 | {
426 |
427 | $this->load->model('extension/payment/checkbox');
428 |
429 | $shift = $this->model_extension_payment_checkbox->disconnect();
430 |
431 | if (isset($shift['message'])) {
432 | $this->json['error'] = '' . print_r($shift['message'], 1) . '
';
433 | }
434 |
435 | $this->response->addHeader('Content-Type: application/json');
436 | $this->response->setOutput(json_encode($this->json));
437 | }
438 |
439 | public function createServiceReceipt()
440 | {
441 | if (isset($this->request->get['cash'])) {
442 | $cash = $this->request->get['cash'];
443 | } else {
444 | $cash = 0;
445 | }
446 |
447 | $cash_val = (int)((float)$this->request->get['cash'] * 100);
448 |
449 | $this->load->model('extension/payment/checkbox');
450 |
451 | $shift = $this->model_extension_payment_checkbox->createServiceReceipt($cash_val);
452 |
453 | if (isset($shift['message'])) {
454 | $this->json['error'] = '' . print_r($shift['message'], 1) . '
';
455 | }
456 |
457 | $this->response->addHeader('Content-Type: application/json');
458 | $this->response->setOutput(json_encode($this->json));
459 | }
460 |
461 | public function orderListContainer()
462 | {
463 | sleep(2);
464 |
465 | if (isset($this->request->get['user_token'])) {
466 | $user_token = $this->request->get['user_token'];
467 | } else {
468 | $user_token = 0;
469 | }
470 |
471 | list($shift_id, $is_connected, $status, $balance) = $this->getShiftStatus();
472 |
473 | $data['shift_id'] = $shift_id;
474 | $data['is_connected'] = $is_connected;
475 | $data['status'] = $status;
476 | $data['balance'] = $balance;
477 |
478 | $data['link_z_report'] = $this->url->link('extension/module/checkbox/getZReport', 'user_token=' . $user_token, true);
479 |
480 | $this->response->setOutput($this->load->view('extension/module/checkbox_order_list_ajax', $data));
481 |
482 | }
483 |
484 | private function getShiftStatus()
485 | {
486 |
487 | $status = 'CLOSED';
488 | $shift_id = '';
489 | $date = '';
490 | $is_connected = false;
491 | $balance = '';
492 |
493 | $this->load->model('extension/payment/checkbox');
494 |
495 | $shift = $this->model_extension_payment_checkbox->getCurrentCashierShift();
496 |
497 | if ($shift) {
498 | $shift_id = isset($shift['id']) ? $shift['id'] : '';
499 | $is_connected = isset($shift['status']) && ($shift['status'] == 'OPENED');
500 | $status = isset($shift['status']) ? $shift['status'] : $status;
501 |
502 | if ($shift['opened_at']) {
503 | $date = date('d.m.Y H:i', strtotime($shift['opened_at']));
504 | }
505 | if ($shift['closed_at']) {
506 | $date = date('d.m.Y H:i', strtotime($shift['closed_at']));
507 | }
508 |
509 | $balance = number_format(substr($shift['balance']->balance, 0, -2), 0, '', ' ') . '.' . substr($shift['balance']->balance, -2);
510 |
511 | }
512 |
513 | if (in_array($status, ['CLOSED', 'CLOSING'])) {
514 | $status = '' . $status . '';
515 | }
516 |
517 | if (in_array($status, ['OPEN', 'OPENING', 'CREATED'])) {
518 | $status = '' . $status . '';
519 | }
520 | if (in_array($status, ['OPENED'])) {
521 | $status = '' . $status . '';
522 | }
523 |
524 | $status = $status . '
' . $date;
525 |
526 |
527 | return [$shift_id, $is_connected, $status, $balance];
528 | }
529 |
530 | protected function validate()
531 | {
532 | if (!$this->user->hasPermission('modify', 'extension/module/checkbox')) {
533 | $this->error['warning'] = $this->language->get('error_permission');
534 | }
535 |
536 | return !$this->error;
537 | }
538 |
539 | public function install()
540 | {
541 | $query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "order` LIMIT 1");
542 | if (!isset($query->row['checkbox_receipt_id'])) {
543 | $this->db->query("ALTER TABLE `" . DB_PREFIX . "order` ADD `checkbox_receipt_id` VARCHAR(64) NOT NULL");
544 | $this->db->query("ALTER TABLE `" . DB_PREFIX . "order` ADD `checkbox_return_receipt_id` VARCHAR(64) NOT NULL");
545 | }
546 | }
547 |
548 | }
549 |
--------------------------------------------------------------------------------
/OP_v3.0/admin/language/en-gb/extension/module/checkbox.php:
--------------------------------------------------------------------------------
1 | login = $this->config->get('module_checkbox_rro_login');
21 | $this->password = $this->config->get('module_checkbox_rro_password');
22 | $this->cashbox_key = $this->config->get('module_checkbox_rro_cashbox_key');
23 | $this->is_dev = $this->config->get('module_checkbox_rro_is_dev');
24 | $this->getBearToken();
25 | }
26 |
27 |
28 | public function getBearToken()
29 | {
30 | $params = ['login' => $this->login, 'password' => $this->password];
31 | $response = $this->makePostRequest('/api/v1/cashier/signin', $params);
32 |
33 | $this->access_token = $response['access_token'] ? $response['access_token'] : '';
34 | }
35 |
36 | public function connect()
37 | {
38 | $cashbox_key = $this->cashbox_key;
39 | $header_params = ['cashbox_key' => $cashbox_key];
40 | return $this->makePostRequest('/api/v1/shifts', [], $header_params);
41 | }
42 |
43 | public function disconnect()
44 | {
45 | return $this->makePostRequest('/api/v1/shifts/close');
46 | }
47 |
48 | public function getShifts()
49 | {
50 | $url = '/api/v1/shifts?desc=true';
51 | return $this->makeGetRequest($url);
52 | }
53 |
54 | public function getCurrentCashierShift()
55 | {
56 | $url = '/api/v1/cashier/shift';
57 | return $this->makeGetRequest($url);
58 | }
59 |
60 | public function getCurrentCashboxInfo()
61 | {
62 | $url = '/api/v1/cash-registers/info';
63 | $header_params = ['cashbox_key' => $this->cashbox_key];
64 | return $this->makeGetRequest($url, [], $header_params);
65 | }
66 |
67 | public function checkConnection($shift_id)
68 | {
69 | $url = '/api/v1/shifts/' . $shift_id;
70 | return $this->makeGetRequest($url);
71 | }
72 |
73 | public function getZReports()
74 | {
75 | $url = '/api/v1/reports/?is_z_report=true';
76 | return $this->makeGetRequest($url);
77 | }
78 |
79 | public function getReportText($report_id)
80 | {
81 | $url = '/api/v1/reports/' . $report_id . '/text/';
82 | return $this->makeGetRequest($url, [], [], true);
83 | }
84 |
85 | public function getReceiptHtml($receipt_id)
86 | {
87 | $url = '/api/v1/receipts/' . $receipt_id . '/html/';
88 | return $this->makeGetRequest($url, [], [], true);
89 | }
90 |
91 | public function getReceipt($receipt_id)
92 | {
93 | $url = '/api/v1/receipts/' . $receipt_id;
94 | return $this->makeGetRequest($url);
95 | }
96 |
97 | public function createServiceReceipt($cash)
98 | {
99 | $params = [
100 | 'payment' => [
101 | 'type' => 'CASH',
102 | 'value' => $cash,
103 | ]
104 | ];
105 | return $this->makePostRequest('/api/v1/receipts/service', $params);
106 | }
107 |
108 | public function create_receipt($params)
109 | {
110 | return $this->makePostRequest('/api/v1/receipts/sell', $params);
111 | }
112 |
113 |
114 | private function makePostRequest($route, $params = [], $header_params = [])
115 | {
116 | $url_host = $this->is_dev ? 'https://dev-api.checkbox.in.ua' : 'https://api.checkbox.in.ua';
117 | $url = $url_host . $route;
118 |
119 | $header = ['Content-type' => 'application/json'];
120 |
121 | if ($this->access_token) {
122 | $header = array_merge($header, ['Authorization: Bearer ' . trim($this->access_token)]);
123 | }
124 |
125 | if (isset($header_params['cashbox_key'])) {
126 | $header = array_merge($header, ['X-License-Key: ' . $header_params['cashbox_key']]);
127 | }
128 |
129 | $header = array_merge($header, ['X-Client-Name: shhygolvv_khm']);
130 | $header = array_merge($header, ['X-Client-Version: 1']);
131 |
132 | $curl = curl_init();
133 |
134 | curl_setopt_array($curl, array(
135 | CURLOPT_URL => $url,
136 | CURLOPT_RETURNTRANSFER => true,
137 | CURLOPT_SSL_VERIFYPEER => false,
138 | CURLOPT_ENCODING => "",
139 | CURLOPT_MAXREDIRS => 10,
140 | CURLOPT_TIMEOUT => 0,
141 | CURLOPT_FOLLOWLOCATION => true,
142 | CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
143 | CURLOPT_CUSTOMREQUEST => "POST",
144 | CURLOPT_POSTFIELDS => json_encode($params),
145 | CURLOPT_HTTPHEADER => $header,
146 | ));
147 |
148 | $response = curl_exec($curl);
149 |
150 | curl_close($curl);
151 |
152 | return isset($response) ? (array)json_decode($response) : [];
153 | }
154 |
155 | private function makeGetRequest($route, $params = [], $header_params = [], $echo = false)
156 | {
157 | $url_host = $this->is_dev ? 'https://dev-api.checkbox.in.ua' : 'https://api.checkbox.in.ua';
158 | $url = $url_host . $route;
159 |
160 | $header = ['Content-type' => 'application/json'];
161 | if ($this->access_token) {
162 | $header = array_merge($header, ['Authorization: Bearer ' . trim($this->access_token)]);
163 | }
164 |
165 | if (isset($header_params['cashbox_key'])) {
166 | $header = array_merge($header, ['X-License-Key: ' . $header_params['cashbox_key']]);
167 | }
168 |
169 | $header = array_merge($header, ['X-Client-Name: shhygolvv_khm']);
170 | $header = array_merge($header, ['X-Client-Version: 1']);
171 |
172 | if ($params) {
173 | $params = http_build_query($params);
174 | } else {
175 | $params = '';
176 | }
177 |
178 | $curl = curl_init();
179 |
180 | curl_setopt_array($curl, array(
181 | CURLOPT_URL => $url,
182 | CURLOPT_RETURNTRANSFER => true,
183 | CURLOPT_SSL_VERIFYPEER => false,
184 | CURLOPT_ENCODING => "",
185 | CURLOPT_MAXREDIRS => 10,
186 | CURLOPT_TIMEOUT => 0,
187 | CURLOPT_FOLLOWLOCATION => true,
188 | CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
189 | CURLOPT_CUSTOMREQUEST => "GET",
190 | CURLOPT_HTTPHEADER => $header,
191 | ));
192 |
193 | $response = curl_exec($curl);
194 |
195 | curl_close($curl);
196 |
197 | if ($echo) {
198 | return $response;
199 | } else {
200 | return isset($response) ? (array)json_decode($response) : [];
201 | }
202 |
203 | }
204 |
205 |
206 | public function getOrder($order_id)
207 | {
208 | $order_query = $this->db->query("SELECT *, (SELECT CONCAT(c.firstname, ' ', c.lastname) FROM " . DB_PREFIX . "customer c WHERE c.customer_id = o.customer_id) AS customer, (SELECT os.name FROM " . DB_PREFIX . "order_status os WHERE os.order_status_id = o.order_status_id AND os.language_id = '" . (int)$this->config->get('config_language_id') . "') AS order_status FROM `" . DB_PREFIX . "order` o WHERE o.order_id = '" . (int)$order_id . "'");
209 |
210 | return $order_query->row;
211 | }
212 |
213 |
214 | }
215 |
--------------------------------------------------------------------------------
/OP_v3.0/admin/view/template/extension/module/checkbox.twig:
--------------------------------------------------------------------------------
1 | {{ header }}{{ column_left }}
2 |
3 |
18 |
19 | {% if error_warning %}
20 |
{{ error_warning }}
21 |
22 |
23 | {% endif %}
24 |
25 |
26 |
{{ text_edit }}
27 |
28 |
113 |
114 |
115 |
116 | {{ footer }}
117 |
--------------------------------------------------------------------------------
/OP_v3.0/admin/view/template/extension/module/checkbox_order_info.twig:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
Checkbox PPO
5 |
6 |
12 |
13 |
78 |
107 |
108 |
109 |
--------------------------------------------------------------------------------
/OP_v3.0/admin/view/template/extension/module/checkbox_order_info_ajax.twig:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
67 |
--------------------------------------------------------------------------------
/OP_v3.0/admin/view/template/extension/module/checkbox_order_list.twig:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
91 |
120 |
--------------------------------------------------------------------------------
/OP_v3.0/admin/view/template/extension/module/checkbox_order_list_ajax.twig:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | Статус каси
11 | *для роботи з касою запустіть
12 | - Checkbox підпис або HSM (DepositSign)
13 | |
14 | {{ status}}
15 |
16 | |
17 |
18 |
19 | Відкрити / Закрити зміну |
20 |
21 | {% if not is_connected %}
22 |
25 | {% else %}
26 |
29 | {% endif %}
30 | |
31 |
32 |
33 | Друкувати z-звіт *за останньою закритою зміною |
34 |
35 | Друкувати z-звіт
36 | |
37 |
38 |
39 | Службове внесення / винесення коштів *внесення зі знаком + *винесення зі знаком - |
40 |
41 | Баланс: {{ balance}}
42 |
43 |
44 |
45 |
46 |
47 |
48 | |
49 |
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/OP_v3.0/build/checkbox-OP3.0.ocmod.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WebSystemsSolutions/opencart-rro-checkbox/748ed7047df978e0f4bd76d313f50b0725eab859/OP_v3.0/build/checkbox-OP3.0.ocmod.zip
--------------------------------------------------------------------------------
/OP_v3.0/system/checkbox.ocmod.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Checkbox RRO
4 | web systems solutions
5 | checkbox_rro
6 | 1.0
7 | https://web-systems.solutions/
8 |
9 |
10 | response->setOutput($this->load->view('sale/order_list', $data));]]>
11 | load->controller('extension/module/checkbox/getViewList');
13 | ]]>
14 |
15 |
16 | response->setOutput($this->load->view('sale/order_info', $data));]]>
17 | load->controller('extension/module/checkbox/getViewInfo');
19 | ]]>
20 |
21 |
22 |
23 |
24 | response->setOutput($this->load->view('sale/order_list', $data));]]>
25 | load->controller('extension/module/checkbox/getViewList');
27 | ]]>
28 |
29 |
30 | response->setOutput($this->load->view('sale/order_info', $data));]]>
31 | load->controller('extension/module/checkbox/getViewInfo');
33 | ]]>
34 |
35 |
36 |
37 |
38 |
39 | {{ heading_title }}]]>
40 |
43 |
44 |
45 |
46 |
47 | ]]>
48 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Електронне РРО для CMS OpenCart + checkbox
2 |
3 | Модуль Checkbox.in.ua РРО для CMS OpenCart
4 | (для версій 1.5, 2.1-2.31, 3)
5 |
6 | Модуль електронного РРО для інтеграції CMS OpenCart та сервісом Checkbox розроблений для максимально зручної інтеграції інтернет-магазинів.
7 |
8 | Функціонал модулю наступний:
9 | - відкриття каси;
10 | - закриття каси;
11 | - друк чеків;
12 | - друк z-звіту;
13 | - генерування чеку повернення;
14 | - список замовлень;
15 | - службове внесення / винесення коштів.
16 |
17 |
18 | Для роботи з модулем необхідно:
19 |
20 | 1 - зареєструватись на порталі checkbox та ознайомитись з роботою (інструкція по роботі з порталом Checkbox.in.ua https://docs.google.com/document/d/1lr5HFn17EvWdGhl1U2sFCWeGhIsT7oAhOYeEY8m--Hs/edit )
21 |
22 | 2 - заповнити логін, пароль, та ключ ліцензії каси Checkbox, який можна взяти в особистому кабінеті на порталі https://checkbox.in.ua/ ;
23 |
24 | 3 - для роботи також необхідна постійно запущене ПО Checkbox підпис (є окремо версії для ОС Windows та Linux, завантажити ПО можна в особистому кабінеті https://checkbox.in.ua/) або використовувати сервіс HSM (DepositSign)
25 |
26 | Детальніше про встановлення про CheckboxПідпис https://docs.google.com/document/d/1U_zSY8w4TByXSQMHP0t4l3BsvjZnUeUP_G7FiCrc7vQ/edit?usp=sharing
27 |
28 | 4 - інсталювати модуль в адмінпанелі вашого веб-ресурсу на CMS OpenCart
29 |
30 | Короткий опис можливостей модулю
31 |
32 | 1) сторінка налаштувань модуля
33 |
34 | Скріншот 1 - https://prnt.sc/vr2jc6
35 |
36 | 2) сторінка загальних налаштувань роботи з касою
37 |
38 | Скріншот 2 - https://prnt.sc/vr2lxv
39 |
40 | 3) сторінка інформації про замовлення з можливістю згенерувати чек або згенерувати чек повернення
41 |
42 | Скріншот 3 - https://prnt.sc/vr2mmj
43 |
44 | УВАГА! Завантажуючи і встановлюючи даний модуль, Ви приймаєте той факт, що модуль поширюється безкоштовно по моделі "AS IS - ЯК Є". Ви все робите на свій страх і ризик. Автори доповнення не несуть ніякої відповідальності за помилки, недоробки або конфлікти модуля з іншими доповненнями. Будьте уважними, перед установкою робіть бекап сайту!
45 |
46 | З додаткових питань інтеграції - info@web-systems.solutions
47 |
--------------------------------------------------------------------------------