diff --git a/commands/CreateBarcode.php b/commands/CreateBarcode.php index 7e194fe..ed6f023 100644 --- a/commands/CreateBarcode.php +++ b/commands/CreateBarcode.php @@ -13,7 +13,7 @@ class CreateBarcode extends HRCCommand implements HRCCommandInterface { public function command($input, $output = null) { $group = ClientsGroup::where('id', '=', $input['group_id'])->first(); - if (($input['start'] <= $input['end']) && (srtlen($input['start']) == srtlen($input['end']))) { + if (($input['start'] <= $input['end']) && (strlen($input['start']) == strlen($input['end']))) { for ($i = $input['start']; $i <= $input['end']; $i++) { $total = Client::where('name', '=', $i)->count(); $client = new Client; diff --git a/commands/GETOrderHistory.php b/commands/GETOrderHistory.php index e78172b..93b67a7 100644 --- a/commands/GETOrderHistory.php +++ b/commands/GETOrderHistory.php @@ -5,6 +5,7 @@ namespace App\Commands; use App\Component\Models\ActionTypes; use App\Component\Models\Dishes; use App\Component\Models\ShiftOnlineActions; +use App\Component\Models\ShiftOnlineDeleted; use App\Component\Models\ShiftOnlineItems; use App\Component\Models\Staff; use App\Component\Models\Units; @@ -18,18 +19,77 @@ class GETOrderHistory extends HRCCommand implements HRCCommandInterface { public function command($input, $output = null) { if (isset($input['order_id'])) { + $bill_count = 0; + $slice_trigger = 0; + $slice_order = 0; + $merged_order_items = $sliced_order_items = []; + $merge_trigger = 0; + + function data_decode($data) { + $alph = [ + "А", "Б", "В", "Г", "Д", + "Е", "Ё", "Ж", "З", "И", + "Й", "К", "Л", "М", "Н", + "О", "П", "Р", "С", "Т", + "У", "Ф", "Х", "Ц", "Ч", + "Ш", "Щ", "Ъ", "Ы", "Ь", + "Э", "Ю", "Я", + "а", "б", "в", "г", "д", + "е", "ё", "ж", "з", "и", + "й", "к", "л", "м", "н", + "о", "п", "р", "с", "т", + "у", "ф", "х", "ц", "ч", + "ш", "щ", "ъ", "ы", "ь", + "э", "ю", "я", + ]; + + foreach ($alph as $key => $letter) { + $haystack = mb_convert_encoding($data, "CP1251", "UTF-8"); + $needle = $letter; + $pos = strripos($haystack, $needle); + if ($pos === false) { + $after_conv = false; + } else { + $after_conv = true; + break; + } + } + + if (!$after_conv) { + foreach ($alph as $key => $letter) { + $haystack = $data; + $needle = $letter; + $pos = strripos($haystack, $needle); + if ($pos === false) { + $before_conv = false; + } else { + $before_conv = true; + break; + } + } + } + + if ($after_conv) { + $retval = mb_convert_encoding($data, "CP1251", "UTF-8"); + } elseif ($before_conv) { + $retval = $data; + } else { + $retval = $data; + } + return $retval; + } + $order = ShiftOnlineActions::where('order_code', $input['order_id'])->orderBy('time', 'asc')->get(); foreach ($order as $key => $item) { $action_type = ActionTypes::where('type_id', $item['type_action'])->first(); $action_name = $action_type['name']; $staff = Staff::where('code', $item['who'])->first(); $staff_name = $staff['name']; - if ($item['type_action'] == 45 || $item['type_action'] == 39) { - $action_name = $item['value']; - } - if ($item['type_action'] == 46 || $item['type_action'] == 35) { - $action_name = $action_name . ': ' . $item['value']; + + if ($item['type_action'] == 1) { + $action_name = 'Заказ создан'; } + if ($item['type_action'] == 2) { $shiftOnlineItem = ShiftOnlineItems::where('order_code', $item['order_code'])->where('dish_code', $item['more'])->first(); $unitsList = UnitsList::where('id', $shiftOnlineItem['units_code'])->first(); @@ -38,11 +98,150 @@ class GETOrderHistory extends HRCCommand implements HRCCommandInterface { $dish = Dishes::where('code', $item['more'])->first(); $action_name = $action_name . ': ' . $dish['name'] . ' в количестве ' . $item['value'] . ' ' . $unit_name; } + + if ($item['type_action'] == 5) { + $shiftOnlineDeletedItem = ShiftOnlineDeleted::where('order_code', $item['order_code'])->where('item_id', $item['order_position'])->first(); + $unitsList = UnitsList::where('id', $shiftOnlineDeletedItem['units_id'])->first(); + $units = Units::where('id', $unitsList['unit_id'])->first(); + $unit_name = $units['name']; + $dish = Dishes::where('code', $shiftOnlineDeletedItem['dishes_code'])->first(); + $action_name = $action_name . ': ' . $dish['name'] . ' в количестве ' . $item['value'] . ' ' . $unit_name; + } + + if ($item['type_action'] == 11) { + $action_name = 'Назначен гость: ' . data_decode($item['value']); + } + + if ($item['type_action'] == 12) { + $action_name = 'Гость отменен: ' . data_decode($item['value']); + } + if ($item['type_action'] == 21) { + $item_more = data_decode($item['more']); + $item_value = data_decode($item['value']); + if ($item_more == 'предчек' && $item_value != 'HRC Pay Box') { + $action_name = 'Распечатан предчек'; + $bill_count = $bill_count + 1; + } elseif ($item_more == 'счет') { + $action_name = 'Распечатан окончательный счет'; + } elseif ($item_value == 'HRC Pay Box') { + continue; + } + } + + if ($item['type_action'] == 22) { + $dish = Dishes::where('code', $item['order_position'])->first(); + $action_name = 'Отменена позиции: ' . $dish['name'] . ' в количестве ' . $item['value']; + } + + if ($item['type_action'] == 24) { + $action_name = 'Оплачено наличными: ' . $item['value'] . ' BYN'; + } + + if ($item['type_action'] == 25) { + $action_name = 'Безналичный расчет: ' . $item['value'] . ' BYN'; + } + + if ($item['type_action'] == 26) { + $action_name = 'Оплачено кредитной картой: ' . $item['value'] . ' BYN'; + } + + if ($item['type_action'] == 26) { + $action_name = 'Оплачено кредитной картой: ' . $item['value'] . ' BYN'; + } + + if ($item['type_action'] == 27) { + $action_name = 'Питание штата: ' . $item['value'] . ' BYN'; + } + + if ($item['type_action'] == 28) { + $action_name = 'Зачтен аванс: ' . $item['value'] . ' BYN'; + } + + if ($item['type_action'] == 29 && $item['value'] > 0) { + $action_name = 'Сдача: ' . $item['value'] . ' BYN'; + } elseif ($item['type_action'] == 29 && $item['value'] == 0) { + continue; + } + + if ($item['type_action'] == 35) { + $action_name = $action_name . ': ' . $item['value']; + $slice_items = []; + if ($item['more']) { + $slice_order_items = json_decode(utf8_encode($item['more']), true, JSON_INVALID_UTF8_SUBSTITUTE); + $slice_order_items = $slice_order_items['items']; + $slice_order = $item['value']; + foreach ($slice_order_items as $key => $slice_order_item) { + $slice_items[] = array('id' => $key + 1, 'name' => $slice_order_item['name'], 'count' => $slice_order_item['count']); + } + $sliced_order_items[] = array('order' => $slice_order, 'items' => $slice_items); + $slice_trigger = 1; + } + } + + if ($item['type_action'] == 31) { + $action_name = $action_name . ' c заказом: ' . $item['value']; + $merge_order = $item['value']; + $item_actions = ShiftOnlineActions::where('order_code', $item['value'] + 0) + ->where('type_action', 32) + ->get(); + foreach ($item_actions as $key => $item_action) { + if ($item_action['more']) { + $merge_trigger = 1; + $merge_items_before = $merge_items_after = $merge_items = $merge_order_item_before = $merge_order_item_after = $merged_items = []; + $merge_order_items = json_decode(utf8_encode($item_action['more']), true, JSON_INVALID_UTF8_SUBSTITUTE); + $merge_order_items_before = $merge_order_items['before']['items']; + $merge_order_items_after = $merge_order_items['after']['items']; + foreach ($merge_order_items_before as $key => $merge_order_item_before) { + $merge_items_before[] = array('id' => $key + 1, + 'code' => $merge_order_item_before['id'], + 'name' => $merge_order_item_before['name'], + 'count' => $merge_order_item_before['count']); + } + foreach ($merge_order_items_after as $key => $merge_order_item_after) { + $merge_items_after[] = array('id' => $key + 1, + 'code' => $merge_order_item_after['id'], + 'name' => $merge_order_item_after['name'], + 'count' => $merge_order_item_after['count']); + } + foreach ($merge_order_items_after as $key => $merge_order_item_after) { + if (!in_array(array('id' => $key + 1, + 'code' => $merge_order_item_after['id'], + 'name' => $merge_order_item_after['name'], + 'count' => $merge_order_item_after['count']), $merge_items_before, true)) { + $merged_items[] = array('code' => $merge_order_item_after['id'], + 'name' => $merge_order_item_after['name'], + 'count' => $merge_order_item_after['count']); + } + } + foreach ($merged_items as $key => $merged_item) { + $merge_items[] = array('id' => $key + 1, + 'code' => $merged_item['code'], + 'name' => $merged_item['name'], + 'count' => $merged_item['count']); + } + $merged_order_items[] = array('order' => $merge_order, 'items' => $merge_items); + } + } + } + + if ($item['type_action'] == 46) { + $action_name = 'Изменено количество гостей: ' . $item['value']; + } + + if ($item['type_action'] == 45 || $item['type_action'] == 39) { + $action_name = data_decode($item['value']); + } + $order_info[] = array('id' => $key, 'action' => $action_name, 'who' => $staff_name, 'time' => $item['time'], 'workgroup' => $item['workgroup'], 'workcode' => $item['workcode']); } return [ 'status' => 'success', 'actions' => $order_info, + 'bill' => $bill_count, + 'slice_trigger' => $slice_trigger, + 'merge_trigger' => $merge_trigger, + 'sliced_order_items' => $sliced_order_items, + 'merged_order_items' => $merged_order_items, ]; } else { return [ diff --git a/composer.json b/composer.json index a875ac8..0037658 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "hrc-admin/hello-world", - "version": "2.14", + "version": "2.15", "require": { "horeca/admin-php-module-core": "dev-master" }, diff --git a/module.ini b/module.ini index 07fdcd2..95e1fde 100644 --- a/module.ini +++ b/module.ini @@ -1,5 +1,5 @@ [info] name=V1 -version=2.14 +version=2.15 [build] -version=2.14 +version=2.15 diff --git a/web/controllers/dashboard.js b/web/controllers/dashboard.js index 2c0bdfb..2272bc0 100644 --- a/web/controllers/dashboard.js +++ b/web/controllers/dashboard.js @@ -21,8 +21,8 @@ }) .controller('DashboardCtrl', DashboardCtrl); - DashboardCtrl.inject = ['$scope', 'smartRequest', '$interval', '$location']; - function DashboardCtrl($scope, smartRequest, $interval, $location) { + DashboardCtrl.inject = ['$scope', 'smartRequest', '$interval', '$location', 'Notification']; + function DashboardCtrl($scope, smartRequest, $interval, $location, Notification) { $(document).ready(function() { if (moment(moment().format('YYYY-MM-DD')).isAfter('2021-12-25')) { if (moment(moment().format('YYYY-MM-DD')).isBefore('2022-01-10')) { @@ -105,7 +105,7 @@ $scope.deleted_sum = 0; $scope.discounts = 0; $scope.discounts_sum = 0; - + $scope.bill = 0; $scope.personals = []; $scope.dishes = []; @@ -335,6 +335,13 @@ task: 'online', terminal: $scope.terminalId, }, function(data) { + $('#preload-modal').modal(); + + setTimeout(function() { + Notification.success('Данные синхронизируются. Обновите страницу через 5 минут.'); + $('#preload-modal').modal('toggle'); + }, 5000); + }); } }); @@ -728,6 +735,7 @@ $scope.order = data; smartRequest.get('v1/orderhistory?order_id=' + order.number, function (actions) { $scope.actions = actions; + console.log(actions); }); $('#items-total').modal('toggle'); }); diff --git a/web/views/dashboard/dashboard.html b/web/views/dashboard/dashboard.html index 32a1202..3f65134 100644 --- a/web/views/dashboard/dashboard.html +++ b/web/views/dashboard/dashboard.html @@ -184,9 +184,8 @@

- {{namedGuests}} - {{ GetCountNamedGuests(namedGuests) }}. Сумма заказов: - {{sumNamedGuests | curr}} + Сумма заказов: {{sumNamedGuests | curr}} BYN +

Именованных гостей нет @@ -612,4 +611,8 @@ + + \ No newline at end of file diff --git a/web/views/dashboard/items/items-total — копия.html b/web/views/dashboard/items/items-total — копия.html deleted file mode 100644 index 660006b..0000000 --- a/web/views/dashboard/items/items-total — копия.html +++ /dev/null @@ -1,55 +0,0 @@ - \ No newline at end of file diff --git a/web/views/dashboard/items/items-total.html b/web/views/dashboard/items/items-total.html index 82bbe39..a5d954c 100644 --- a/web/views/dashboard/items/items-total.html +++ b/web/views/dashboard/items/items-total.html @@ -21,6 +21,9 @@

{{ order.closed }}

+
+

Распечатано предчеков: {{ actions.bill }}

+
@@ -62,6 +71,7 @@
+ + + + + diff --git a/web/views/dashboard/preload.html b/web/views/dashboard/preload.html new file mode 100644 index 0000000..0c5026e --- /dev/null +++ b/web/views/dashboard/preload.html @@ -0,0 +1,5 @@ +
+
+
+
+
\ No newline at end of file