v.2.15
Order history Small fixes
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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 [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "hrc-admin/hello-world",
|
||||
"version": "2.14",
|
||||
"version": "2.15",
|
||||
"require": {
|
||||
"horeca/admin-php-module-core": "dev-master"
|
||||
},
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[info]
|
||||
name=V1
|
||||
version=2.14
|
||||
version=2.15
|
||||
[build]
|
||||
version=2.14
|
||||
version=2.15
|
||||
|
||||
@@ -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');
|
||||
});
|
||||
|
||||
@@ -184,9 +184,8 @@
|
||||
<div class="box-body b-t">
|
||||
<h4 class="m-a-0 text-md" ng-if="namedGuests > 0">
|
||||
<a>
|
||||
{{namedGuests}}
|
||||
<span class="text-sm">{{ GetCountNamedGuests(namedGuests) }}. Сумма заказов: </span>
|
||||
{{sumNamedGuests | curr}}
|
||||
<span class="text-sm lead"><strong>Сумма заказов: {{sumNamedGuests | curr}} BYN</strong></span>
|
||||
|
||||
</a>
|
||||
</h4>
|
||||
<span class="text-muted" ng-if="namedGuests == 0">Именованных гостей нет</h4>
|
||||
@@ -613,3 +612,7 @@
|
||||
<div class="modal fade" id="items-delete">
|
||||
<div ui-include="'../views/dashboard/items/items-delete.html'"></div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="preload-modal" data-backdrop="true">
|
||||
<div ui-include="'../views/dashboard/preload.html'"></div>
|
||||
</div>
|
||||
@@ -1,55 +0,0 @@
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-toggle="modal" data-target="#items-total" ng-click="returnModal('total')">
|
||||
<i class="material-icons md-24">arrow_back</i>
|
||||
</button>
|
||||
<h5 class="modal-title" style="padding-bottom: 12px;">Подробнее о заказе № {{ order.title }}</h5>
|
||||
<div class="row">
|
||||
<div class="col-xs-6 col-md-3">
|
||||
<p class="text-muted m-b-0">Открыт</p>
|
||||
<p class="m-b-0">{{ order.who_open }}</p>
|
||||
<p class="m-b-0">{{ order.opened }}</p>
|
||||
</div>
|
||||
<div class="col-xs-6 col-md-3">
|
||||
<div ng-if="getClosedDate(order.closed) == NOT_CLOSED">
|
||||
<p class="text-muted m-b-0">{{NOT_CLOSED}}</p>
|
||||
</div>
|
||||
<div ng-if="getClosedDate(order.closed) != NOT_CLOSED">
|
||||
<p class="text-muted m-b-0">Закрыт</p>
|
||||
<p class="m-b-0">{{ order.who_close }}</p>
|
||||
<p class="m-b-0">{{ order.closed }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-body p-lg">
|
||||
<div class="table-responsive">
|
||||
<table class="table m-a-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Блюдо</th>
|
||||
<th>Количество</th>
|
||||
<th class="text-right">Сумма, BYN</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<tr ng-repeat="item in order.items">
|
||||
<td>{{ item.name }}</td>
|
||||
<td>{{ item.count }}</td>
|
||||
<td class="text-right">{{ item.sale_price | curr }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
<thead>
|
||||
<tr>
|
||||
<th colspan="2"></th>
|
||||
<th class="text-right">Итого: {{ order.total | curr }} BYN</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -21,6 +21,9 @@
|
||||
<p class="m-b-0">{{ order.closed }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-6 col-md-3">
|
||||
<p class="text-muted m-b-0">Распечатано предчеков: <span class="m-b-0">{{ actions.bill }}</span></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-body p-lg">
|
||||
@@ -33,6 +36,12 @@
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="" data-toggle="tab" data-target="#tab2" aria-expanded="false">Журнал заказа</a>
|
||||
</li>
|
||||
<li class="nav-item" ng-if="actions.slice_trigger == 1">
|
||||
<a class="nav-link" href="" data-toggle="tab" data-target="#tab3" aria-expanded="false">История разбиения</a>
|
||||
</li>
|
||||
<li class="nav-item" ng-if="actions.merge_trigger == 1">
|
||||
<a class="nav-link" href="" data-toggle="tab" data-target="#tab4" aria-expanded="false">История объединения</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tab-content p-a m-b-md">
|
||||
@@ -62,6 +71,7 @@
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Журнал заказа -->
|
||||
<div class="tab-pane animated fadeIn text-muted" id="tab2" aria-expanded="false">
|
||||
<div class="table-responsive">
|
||||
<table class="table m-a-0">
|
||||
@@ -86,6 +96,52 @@
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<!--Разбиение заказа-->
|
||||
<div ng-if="actions.slice_trigger == 1" class="tab-pane animated fadeIn text-muted" id="tab3" aria-expanded="false">
|
||||
<div ng-repeat="sliced_order_item in actions.sliced_order_items">
|
||||
<p class="text-muted m-b-0">Товары перенесенные в заказ №<span class="m-b-0">{{ sliced_order_item.order }}</span></p>
|
||||
<div class="table-responsive">
|
||||
<table class="table m-a-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Наименование</th>
|
||||
<th>Количество</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="item in sliced_order_item.items">
|
||||
<td>{{ item.name }}</td>
|
||||
<td>{{ item.count }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<hr>
|
||||
</div>
|
||||
</div>
|
||||
<!--Объединение заказа-->
|
||||
<div ng-if="actions.merge_trigger == 1" class="tab-pane animated fadeIn text-muted" id="tab4" aria-expanded="false">
|
||||
<div ng-repeat="merged_order_item in actions.merged_order_items">
|
||||
<p class="text-muted m-b-0">Товары перенесенные из заказа №<span class="m-b-0">{{ merged_order_item.order }}</span></p>
|
||||
<div class="table-responsive">
|
||||
<table class="table m-a-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Наименование</th>
|
||||
<th>Количество</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="item in merged_order_item.items">
|
||||
<td>{{ item.name }}</td>
|
||||
<td>{{ item.count }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<hr>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
5
web/views/dashboard/preload.html
Normal file
5
web/views/dashboard/preload.html
Normal file
@@ -0,0 +1,5 @@
|
||||
<div class="ng-scope">
|
||||
<div id="loader-wrapper">
|
||||
<div id="loader"></div>
|
||||
</div>
|
||||
</div>
|
||||
Reference in New Issue
Block a user