Order history
Small fixes
This commit is contained in:
miroman-afk
2022-04-12 01:43:05 +03:00
parent 85fd6af04f
commit 53dfb77d7a
9 changed files with 286 additions and 70 deletions

View File

@@ -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;

View File

@@ -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 [