where('closed', urldecode($input['closed'])) ->where('code', $input['order_id']) ->first(); $shift_id = $order_find['shift_id']; $bill_count = 0; $slice_trigger = 0; $slice_order = 0; $merged_order_items = $sliced_order_items = $moved_order_data = []; $merge_trigger = 0; $move_trigger = 0; $order_info = []; $order = ExchangeActions::where('order_code', $input['order_id']) ->where('shift_id', $shift_id) ->orderBy('time', 'asc') ->get(); foreach ($order as $key => $item) { $action_type = ActionTypes::where('type_id', $item['action_type'])->first(); $action_name = $action_type['name']; $staff_name = Staff::getName($item['who']); if ($item['action_type'] == 1) { $action_name = 'Заказ создан'; } if ($item['action_type'] == 2) { $shiftOnlineItem = ExchangeItems::where('order_code', $item['order_code']) ->where('shift_id', $shift_id) ->where('dishes_code', $item['more']) ->first(); $unitsList = UnitsList::where('id', $shiftOnlineItem['units_code'])->first(); $units = Units::where('id', $unitsList['unit_id'])->first(); if ($units) { $unit_name = $units['name']; } else { $unit_name = 'шт'; } $dish = Dishes::getName($item['more']); $action_name = $action_name . ': ' . $dish . ' в количестве ' . $item['value'] . ' ' . $unit_name; } if ($item['action_type'] == 5) { $shiftOnlineDeletedItem = ExchangeDeleted::where('order_code', $item['order_code']) ->where('shift_id', $shift_id) ->where('item_id', $item['order_position']) ->first(); $unitsList = UnitsList::where('id', $shiftOnlineDeletedItem['units_id'])->first(); $units = Units::where('id', $unitsList['unit_id'])->first(); if ($units) { $unit_name = $units['name']; } else { $unit_name = 'шт'; } $dish = Dishes::getName($shiftOnlineDeletedItem['dishes_code']); $action_name = $action_name . ': ' . $dish . ' в количестве ' . $item['value'] . ' ' . $unit_name; } if ($item['action_type'] == 11) { $action_name = 'Назначен гость: ' . Base::data_decode($item['value']); } if ($item['action_type'] == 12) { $action_name = 'Гость отменен: ' . Base::data_decode($item['value']); } if ($item['action_type'] == 21) { $item_more = Base::data_decode($item['more']); $item_value = Base::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['action_type'] == 22) { $dish = Dishes::getName($item['order_position']); $action_name = 'Отменена позиции: ' . $dish . ' в количестве ' . $item['value']; } if ($item['action_type'] == 24) { $action_name = 'Оплачено наличными: ' . $item['value'] . ' BYN'; } if ($item['action_type'] == 25) { $action_name = 'Безналичный расчет: ' . $item['value'] . ' BYN'; } if ($item['action_type'] == 26) { $action_name = 'Оплачено кредитной картой: ' . $item['value'] . ' BYN'; } if ($item['action_type'] == 26) { $action_name = 'Оплачено кредитной картой: ' . $item['value'] . ' BYN'; } if ($item['action_type'] == 27) { $action_name = 'Питание штата: ' . $item['value'] . ' BYN'; } if ($item['action_type'] == 28) { $action_name = 'Зачтен аванс: ' . $item['value'] . ' BYN'; } if ($item['action_type'] == 29 && $item['value'] > 0) { $action_name = 'Сдача: ' . $item['value'] . ' BYN'; } elseif ($item['action_type'] == 29 && $item['value'] == 0) { continue; } if ($item['action_type'] == 35) { $action_name = $action_name . ': ' . $item['value']; $slice_items = []; if ($item['more']) { if (Base::validate_json($item['more'])) { $slice_order_items = json_decode(utf8_encode($item['more']), true, JSON_INVALID_UTF8_SUBSTITUTE); } else { $slice_order_items = json_decode(utf8_encode(base64_decode($item['more'], TRUE)), 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']); } $staff_name = Staff::getName($item['who']); $sliced_order_items[] = array('order' => $slice_order, 'time' => date('d.m.Y H:i:s', strtotime($item['time'])), 'staff' => $staff_name, 'items' => $slice_items); $slice_trigger = 1; } } if ($item['action_type'] == 31) { $action_name = $action_name . ' c заказом: ' . $item['value']; $merge_order = $item['value']; $item_actions = ExchangeActions::where('order_code', $item['value'] + 0) ->where('shift_id', $shift_id) ->where('action_type', 32) ->get(); foreach ($item_actions as $key => $item_action) { if ($item_action['more'] != '') { $merge_items_before = $merge_items_after = $merge_items = $merge_order_item_before = $merge_order_item_after = $merged_items = []; if (Base::validate_json($item_action['more'])) { $merge_order_items = json_decode(utf8_encode($item_action['more']), true, JSON_INVALID_UTF8_SUBSTITUTE); } else { $merge_order_items = json_decode(base64_decode($item_action['more']), true); } $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']); } $staff_name = Staff::getName($item['who']); $merged_order_items[] = array('order' => $merge_order, 'time' => date('d.m.Y H:i:s', strtotime($item['time'])), 'staff' => $staff_name, 'items' => $merge_items); $merge_trigger = 1; } } } if ($item['action_type'] == 39) { $action_name = Base::data_decode($item['value']); $order_data = ExchangeActions::where('order_code', $item['order_code'] + 0) ->where('shift_id', $shift_id) ->where('action_type', 39) ->get(); foreach ($order_data as $key => $data) { $staff_name = Staff::getName($data['who']); $moved_order_data[] = array('staff_name' => $staff_name, 'time' => date('d.m.Y H:i:s', strtotime($data['time'])), 'data' => Base::data_decode($data['value'])); $move_trigger = 1; } } if ($item['action_type'] == 45) { $action_name = Base::data_decode($item['value']); } if ($item['action_type'] == 46) { $action_name = 'Изменено количество гостей: ' . $item['value']; } if ($item['action_type'] == 47) { $items = ExchangeItems::where('code', $item['order_position']) ->where('shift_id', $shift_id) ->first(); $dish = Dishes::getName($items['menu_code']); $course = $item['value'] + 1; $action_name = 'Установлен курс №' . $course . ' для позиции: ' . $dish; } $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, 'move_trigger' => $move_trigger, 'sliced_order_items' => $sliced_order_items, 'merged_order_items' => $merged_order_items, 'moved_order_data' => $moved_order_data, ]; } /*---*/ $bill_count = 0; $slice_trigger = 0; $slice_order = 0; $merged_order_items = $sliced_order_items = $moved_order_data = []; $merge_trigger = 0; $move_trigger = 0; $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_name = Staff::getName($item['who']); 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(); $units = Units::where('id', $unitsList['unit_id'])->first(); if ($units) { $unit_name = $units['name']; } else { $unit_name = 'шт'; } $dish = Dishes::getName($item['more']); $action_name = $action_name . ': ' . $dish . ' в количестве ' . $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(); if ($units) { $unit_name = $units['name']; } else { $unit_name = 'шт'; } $dish = Dishes::getName($shiftOnlineDeletedItem['dishes_code']); $action_name = $action_name . ': ' . $dish . ' в количестве ' . $item['value'] . ' ' . $unit_name; } if ($item['type_action'] == 11) { $action_name = 'Назначен гость: ' . Base::data_decode($item['value']); } if ($item['type_action'] == 12) { $action_name = 'Гость отменен: ' . Base::data_decode($item['value']); } if ($item['type_action'] == 21) { $item_more = Base::data_decode($item['more']); $item_value = Base::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::getName($item['order_position']); $action_name = 'Отменена позиции: ' . $dish . ' в количестве ' . $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']) { if (Base::validate_json($item['more'])) { $slice_order_items = json_decode(utf8_encode($item['more']), true, JSON_INVALID_UTF8_SUBSTITUTE); } else { $slice_order_items = json_decode(utf8_encode(base64_decode($item['more'], TRUE)), 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']); } $staff_name = Staff::getName($item['who']); $sliced_order_items[] = array('order' => $slice_order, 'time' => date('d.m.Y H:i:s', strtotime($item['time'])), 'staff' => $staff_name, '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_items_before = $merge_items_after = $merge_items = $merge_order_item_before = $merge_order_item_after = $merged_items = []; if (Base::validate_json($item_action['more'])) { $merge_order_items = json_decode(utf8_encode($item_action['more']), true, JSON_INVALID_UTF8_SUBSTITUTE); } else { $merge_order_items = json_decode(base64_decode($item_action['more']), true); } $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']); } $staff_name = Staff::getName($item['who']); $merged_order_items[] = array('order' => $merge_order, 'time' => date('d.m.Y H:i:s', strtotime($item['time'])), 'staff' => $staff_name, 'items' => $merge_items); $merge_trigger = 1; } } } if ($item['type_action'] == 39) { $action_name = Base::data_decode($item['value']); $order_data = ShiftOnlineActions::where('order_code', $item['order_code'] + 0) ->where('type_action', 39) ->get(); foreach ($order_data as $key => $data) { $staff_name = Staff::getName($data['who']); $moved_order_data[] = array('staff_name' => $staff_name, 'time' => date('d.m.Y H:i:s', strtotime($data['time'])), 'data' => Base::data_decode($data['value'])); $move_trigger = 1; } } if ($item['type_action'] == 45) { $action_name = Base::data_decode($item['value']); } if ($item['type_action'] == 46) { $action_name = 'Изменено количество гостей: ' . $item['value']; } if ($item['type_action'] == 47) { $items = ShiftOnlineItems::where('code', $item['order_position'])->first(); $dish = Dishes::getName($items['menu_code']); $course = $item['value'] + 1; $action_name = 'Установлен курс №' . $course . ' для позиции: ' . $dish; } $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, 'move_trigger' => $move_trigger, 'sliced_order_items' => $sliced_order_items, 'merged_order_items' => $merged_order_items, 'moved_order_data' => $moved_order_data, ]; } else { return [ 'status' => 'success', 'error_message' => 'Проверьте введенные данные', ]; } } }