v.2.30
Добавлен расширенный отчет по реализации Добавлен монитор активности
This commit is contained in:
@@ -4,15 +4,20 @@ namespace App\Commands;
|
||||
|
||||
use App\Component\Models\Client;
|
||||
use App\Component\Models\Dishes;
|
||||
use App\Component\Models\Places;
|
||||
use App\Component\Models\Reasons;
|
||||
use App\Component\Models\Settings;
|
||||
use App\Component\Models\ShiftOnlineActions;
|
||||
use App\Component\Models\ShiftOnlineDeleted;
|
||||
use App\Component\Models\ShiftOnlineItems;
|
||||
use App\Component\Models\ShiftOnlineOrders;
|
||||
use App\Component\Models\Shifts;
|
||||
use App\Component\Models\Staff;
|
||||
use App\Component\Models\Tables;
|
||||
use App\Console\Commands\HRCCommand;
|
||||
use App\Console\Commands\HRCCommandInterface;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class GETDashboard extends HRCCommand implements HRCCommandInterface
|
||||
{
|
||||
@@ -31,7 +36,7 @@ class GETDashboard extends HRCCommand implements HRCCommandInterface
|
||||
$order_id = $input['order_id'];
|
||||
} else {
|
||||
return [
|
||||
'status' => 'success',
|
||||
'status' => 'fail',
|
||||
'message' => 'Проверьте введенные данные'
|
||||
];
|
||||
}
|
||||
@@ -47,29 +52,231 @@ class GETDashboard extends HRCCommand implements HRCCommandInterface
|
||||
$method = $input['method'];
|
||||
} else {
|
||||
return [
|
||||
'status' => 'success',
|
||||
'status' => 'fail',
|
||||
'message' => 'Проверьте введенные данные'
|
||||
];
|
||||
}
|
||||
$setting = Settings::getValue(10);
|
||||
|
||||
if ($method == "profit") {
|
||||
if ($setting > 0) {
|
||||
$orders = ShiftOnlineOrders::where('who_open', '>', 0)
|
||||
->where('full_sum', '>=', 0)
|
||||
->where('is_closed', 1)
|
||||
->where('is_deleted', 0)
|
||||
->where('who_close', '>', 0)
|
||||
->get();
|
||||
} else {
|
||||
$orders = ShiftOnlineOrders::where('who_open', '>', 0)
|
||||
->where('full_sum', '>=', 0)
|
||||
->where('is_closed', 1)
|
||||
->where('is_deleted', 0)
|
||||
->where('who_close', '>', 0)
|
||||
->where('place_name', '<>', 'ДОСТАВКА')
|
||||
->get();
|
||||
}
|
||||
$profit = $middle = 0;
|
||||
$guests = $amount = 0;
|
||||
foreach ($orders as $order) {
|
||||
$order_status = ShiftOnlineOrders::getOrderStatus($order['code']);
|
||||
if ($setting > 0) {
|
||||
$order_info = ShiftOnlineOrders::getInfo($order['code']);
|
||||
$order_items = $order_info['items'];
|
||||
$guests += $order_info['client_count'];
|
||||
$amount += $order_info['amount'] - $order_info['returned_sum'];
|
||||
} elseif ($setting < 1 && $order_status != "Оплачен (*)") {
|
||||
$order_info = ShiftOnlineOrders::getInfo($order['code']);
|
||||
$order_items = $order_info['items'];
|
||||
$guests += $order_info['client_count'];
|
||||
$amount += $order_info['amount'] - $order_info['returned_sum'];
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
|
||||
foreach ($order_items as $order_item) {
|
||||
$profit += $order_item['profit'];
|
||||
}
|
||||
|
||||
}
|
||||
if ($guests > 0) {
|
||||
$middle = round($amount / $guests, 2);
|
||||
} else {
|
||||
$middle = 0;
|
||||
}
|
||||
return [
|
||||
'status' => 'success',
|
||||
'profit' => round($profit, 2),
|
||||
'guests' => $guests,
|
||||
'amount' => $amount,
|
||||
'middle' => $middle
|
||||
];
|
||||
}
|
||||
|
||||
if ($method == "total") {
|
||||
$orders = ShiftOnlineOrders::where('who_open', '>', 0)
|
||||
->where('full_sum', '>=', 0)
|
||||
->get();
|
||||
$waited_count = $waited_sum = 0;
|
||||
$closed_count = $closed_sum = 0;
|
||||
$returned_count = $returned_sum = 0;
|
||||
$cancellations_count = $cancellations_sum = 0;
|
||||
$deleted_count = $deleted_sum = 0;
|
||||
foreach ($orders as $order) {
|
||||
$order_status = ShiftOnlineOrders::getOrderStatus($order['code']);
|
||||
$returned_order_sum = 0;
|
||||
if ($order['order_sum'] >= 0
|
||||
&& $order['is_deleted'] > 0
|
||||
&& $order['check_number'] > 0
|
||||
&& $order['who_open'] > 0) {
|
||||
$cancellations_count += 1;
|
||||
$cancellations_sum += $order['order_sum'];
|
||||
}
|
||||
if ($setting > 0) {
|
||||
if ($order['order_sum'] >= 0
|
||||
&& $order['who_open'] > 0
|
||||
&& $order['who_close'] == 0) {
|
||||
$waited_count++;
|
||||
$waited_sum += $order['order_sum'];
|
||||
}
|
||||
} else {
|
||||
if ($order['order_sum'] >= 0
|
||||
&& $order['who_open'] > 0
|
||||
&& $order['who_close'] == 0
|
||||
&& $order['place_name'] != 'ДОСТАВКА') {
|
||||
$waited_count++;
|
||||
$waited_sum += $order['order_sum'];
|
||||
}
|
||||
}
|
||||
|
||||
if ($setting > 0) {
|
||||
if ($order['order_sum'] >= 0
|
||||
&& $order['who_open'] > 0
|
||||
&& $order['who_close'] > 0
|
||||
&& $order['is_closed'] == 1
|
||||
&& $order['is_deleted'] == 0
|
||||
&& $order['is_returned'] == 0
|
||||
&& $order['place_name'] != 'ДОСТАВКА') {
|
||||
$closed_count++;
|
||||
$closed_sum += $order['order_sum'];
|
||||
}
|
||||
} else {
|
||||
if ($order['order_sum'] >= 0
|
||||
&& $order['who_open'] > 0
|
||||
&& $order['who_close'] > 0
|
||||
&& $order['is_closed'] == 1
|
||||
&& $order['is_deleted'] == 0
|
||||
&& $order['is_returned'] == 0
|
||||
&& $order['place_name'] != 'ДОСТАВКА'
|
||||
&& $order_status != "Оплачен(*)") {
|
||||
$closed_count++;
|
||||
$closed_sum += $order['order_sum'];
|
||||
}
|
||||
}
|
||||
if ($setting > 0) {
|
||||
if ($order['order_sum'] >= 0
|
||||
&& $order['who_open'] > 0
|
||||
&& $order['who_close'] > 0
|
||||
&& $order['is_closed'] == 1
|
||||
&& $order['is_deleted'] == 0
|
||||
&& $order['is_returned'] == 1
|
||||
&& $order['place_name'] != 'ДОСТАВКА') {
|
||||
$returned_items = ShiftOnlineOrders::getReturnedItems($order['code']);
|
||||
foreach ($returned_items as $returned_item) {
|
||||
$returned_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
|
||||
$returned_order_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
|
||||
$returned_count += $returned_item['count'];
|
||||
}
|
||||
$closed_count += 1;
|
||||
$closed_sum += round($order['order_sum'], 2) - $returned_order_sum;
|
||||
}
|
||||
} else {
|
||||
if ($order['order_sum'] >= 0
|
||||
&& $order['who_open'] > 0
|
||||
&& $order['who_close'] > 0
|
||||
&& $order['is_closed'] == 1
|
||||
&& $order['is_deleted'] == 0
|
||||
&& $order['is_returned'] == 1) {
|
||||
$returned_items = ShiftOnlineOrders::getReturnedItems($order['code']);
|
||||
foreach ($returned_items as $returned_item) {
|
||||
$returned_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
|
||||
$returned_order_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
|
||||
$returned_count += $returned_item['count'];
|
||||
}
|
||||
$closed_count += 1;
|
||||
$closed_sum += round($order['order_sum'], 2) - $returned_order_sum;
|
||||
}
|
||||
}
|
||||
if ($setting > 0) {
|
||||
$deleted_items_count = ShiftOnlineDeleted::where('order_code', $order['code'])->sum('count');
|
||||
$deleted_items_sum = ShiftOnlineDeleted::selectRaw('sum(sale_price * count) as deleted_sum')
|
||||
->where('order_code', $order['code'])
|
||||
->first();
|
||||
$deleted_items_sum = $deleted_items_sum['deleted_sum'];
|
||||
$deleted_count += $deleted_items_count;
|
||||
$deleted_sum += $deleted_items_sum;
|
||||
} else {
|
||||
if ($order['place_name'] != 'ДОСТАВКА') {
|
||||
$deleted_items_count = ShiftOnlineDeleted::where('order_code', $order['code'])->sum('count');
|
||||
$deleted_items_sum = ShiftOnlineDeleted::selectRaw('sum(sale_price * count) as deleted_sum')
|
||||
->where('order_code', $order['code'])
|
||||
->first();
|
||||
$deleted_items_sum = $deleted_items_sum['deleted_sum'];
|
||||
$deleted_count += $deleted_items_count;
|
||||
$deleted_sum += $deleted_items_sum;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return [
|
||||
'status' => 'success',
|
||||
'total' => round($closed_sum + $waited_sum, 2),
|
||||
'closed_sum' => round($closed_sum, 2),
|
||||
'closed_count' => $closed_count,
|
||||
'waited_sum' => round($waited_sum, 2),
|
||||
'waited_count' => $waited_count,
|
||||
'cancellations_sum' => round($cancellations_sum, 2),
|
||||
'cancellations_count' => $cancellations_count,
|
||||
'returned_sum' => round($returned_sum, 2),
|
||||
'returned_count' => $returned_count,
|
||||
'deleted_sum' => round($deleted_sum, 2),
|
||||
'deleted_count' => $deleted_count,
|
||||
];
|
||||
}
|
||||
|
||||
if ($method == "deleted") {
|
||||
$count = ShiftOnlineDeleted::count();
|
||||
if ($count < 1) {
|
||||
$count = 0;
|
||||
}
|
||||
$sum = ShiftOnlineDeleted::selectRaw('SUM(count * sale_price) as sum')->first();
|
||||
if (isset($sum) && !is_null($sum['sum'])) {
|
||||
$sum = $sum['sum'];
|
||||
} else {
|
||||
$sum = 0;
|
||||
$deleted_count = $deleted_sum = 0;
|
||||
$orders = ShiftOnlineOrders::where('who_open', '>', 0)
|
||||
->where('full_sum', '>=', 0)
|
||||
->get();
|
||||
foreach ($orders as $order) {
|
||||
if ($setting > 0) {
|
||||
$deleted_items_count = ShiftOnlineDeleted::where('order_code', $order['code'])->sum('count');
|
||||
$deleted_items_sum = ShiftOnlineDeleted::selectRaw('sum(sale_price * count) as deleted_sum')
|
||||
->where('order_code', $order['code'])
|
||||
->first();
|
||||
$deleted_items_sum = $deleted_items_sum['deleted_sum'];
|
||||
$deleted_count += $deleted_items_count;
|
||||
$deleted_sum += $deleted_items_sum;
|
||||
} else {
|
||||
if ($order['place_name'] != 'ДОСТАВКА') {
|
||||
$deleted_items_count = ShiftOnlineDeleted::where('order_code', $order['code'])->sum('count');
|
||||
$deleted_items_sum = ShiftOnlineDeleted::selectRaw('sum(sale_price * count) as deleted_sum')
|
||||
->where('order_code', $order['code'])
|
||||
->first();
|
||||
$deleted_items_sum = $deleted_items_sum['deleted_sum'];
|
||||
$deleted_count += $deleted_items_count;
|
||||
$deleted_sum += $deleted_items_sum;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($more) {
|
||||
$deleted_items = ShiftOnlineDeleted::select('order_code')
|
||||
->selectRaw('SUM(count * sale_price) as sum')
|
||||
->groupBy('order_code')
|
||||
->get();
|
||||
if ($count > 0) {
|
||||
$orders = [];
|
||||
if ($deleted_count > 0) {
|
||||
foreach ($deleted_items as $deleted_item) {
|
||||
$order = ShiftOnlineOrders::select('opened', 'closed')
|
||||
->where('code', $deleted_item['order_code'])
|
||||
@@ -85,14 +292,12 @@ class GETDashboard extends HRCCommand implements HRCCommandInterface
|
||||
'deleted_sum' => round($deleted_item['sum'], 2)
|
||||
);
|
||||
}
|
||||
} else {
|
||||
$orders = [];
|
||||
}
|
||||
return [
|
||||
'status' => 'success',
|
||||
'title' => 'Подробнее об удаленных',
|
||||
'total_sum' => round($sum, 2),
|
||||
'total_count' => $count,
|
||||
'total_sum' => round($deleted_sum, 2),
|
||||
'total_count' => $deleted_count,
|
||||
'deleted_orders' => $orders
|
||||
];
|
||||
}
|
||||
@@ -100,7 +305,7 @@ class GETDashboard extends HRCCommand implements HRCCommandInterface
|
||||
$all_sum = $all_count = 0;
|
||||
$deleted_items = ShiftOnlineDeleted::where('order_code', $order_id)
|
||||
->get();
|
||||
if ($count > 0) {
|
||||
if ($deleted_count > 0) {
|
||||
foreach ($deleted_items as $deleted_item) {
|
||||
$order = ShiftOnlineActions::where('order_code', $deleted_item['order_code'])
|
||||
->where('type_action', 5)
|
||||
@@ -129,8 +334,8 @@ class GETDashboard extends HRCCommand implements HRCCommandInterface
|
||||
}
|
||||
return [
|
||||
'status' => 'success',
|
||||
'sum' => round($sum, 2),
|
||||
'count' => $count
|
||||
'sum' => round($deleted_sum, 2),
|
||||
'count' => $deleted_count
|
||||
];
|
||||
}
|
||||
|
||||
@@ -177,9 +382,8 @@ class GETDashboard extends HRCCommand implements HRCCommandInterface
|
||||
->where('is_returned', 0)
|
||||
->where('who_open', '<>', 0)
|
||||
->get();
|
||||
|
||||
$clientName = Client::getName($clientsID['client_code']);
|
||||
$clientOrder[$clientName] = [];
|
||||
$clientOrders[$clientName] = [];
|
||||
foreach ($orders_info as $order_info) {
|
||||
if ($order_info['closed'] == '0000-00-00 00:00:00') {
|
||||
$closed = false;
|
||||
@@ -192,19 +396,44 @@ class GETDashboard extends HRCCommand implements HRCCommandInterface
|
||||
'closed' => $closed,
|
||||
'sum' => $order_info['order_sum']
|
||||
);
|
||||
array_push($clientOrder[$clientName], $order);
|
||||
array_push($clientOrders[$clientName], $order);
|
||||
}
|
||||
}
|
||||
foreach ($clientOrder as $key => $oInfo) {
|
||||
$out[] = array(
|
||||
'name' => $key,
|
||||
'orders' => $oInfo
|
||||
);
|
||||
foreach ($clientOrders as $key => $ordersInfo) {
|
||||
if ($setting > 0) {
|
||||
$out[] = array(
|
||||
'name' => $key,
|
||||
'orders' => $ordersInfo
|
||||
);
|
||||
} else {
|
||||
$filtered_orders = [];
|
||||
foreach ($ordersInfo as $orderInfo) {
|
||||
$order_status = ShiftOnlineOrders::getOrderStatus($orderInfo['number']);
|
||||
if ($order_status != 'Доставка' && $order_status != 'Оплачен(*)') {
|
||||
$filtered_orders[] = array(
|
||||
'number' => $orderInfo['number'],
|
||||
'opened' => $orderInfo['opened'],
|
||||
'closed' => $orderInfo['closed'],
|
||||
'sum' => $orderInfo['sum']
|
||||
);
|
||||
}
|
||||
}
|
||||
$out[] = array(
|
||||
'name' => $key,
|
||||
'orders' => $filtered_orders
|
||||
);
|
||||
}
|
||||
}
|
||||
$clients_info = [];
|
||||
foreach ($out as $out_item) {
|
||||
if (count($out_item['orders']) > 0) {
|
||||
array_push($clients_info, $out_item);
|
||||
}
|
||||
}
|
||||
return [
|
||||
'status' => 'success',
|
||||
'title' => 'Подробнее о заказах гостей',
|
||||
'clients' => $out
|
||||
'clients' => $clients_info
|
||||
];
|
||||
} else {
|
||||
return [
|
||||
@@ -221,10 +450,32 @@ class GETDashboard extends HRCCommand implements HRCCommandInterface
|
||||
->get();
|
||||
if (isset($orders)) {
|
||||
foreach ($orders as $order) {
|
||||
$guests += $order['client_count'];
|
||||
$totalSum += $order['order_sum'];
|
||||
if ($order['client_code'] != '') {
|
||||
$namedGuests += 1;
|
||||
$returned_order_sum = 0;
|
||||
$order_status = ShiftOnlineOrders::getOrderStatus($order['code']);
|
||||
if ($setting > 0) {
|
||||
$guests += $order['client_count'];
|
||||
if ($order['client_code'] != '') {
|
||||
if ($order_status == "Возвращен" || $order_status == "Возвращен частично") {
|
||||
$returned_order_id = ShiftOnlineOrders::getReturnedOrderId($order['code']);
|
||||
$returned_order_sum = ShiftOnlineOrders::where('code', $returned_order_id)->first();
|
||||
$returned_order_sum = $returned_order_sum['order_sum'];
|
||||
}
|
||||
$namedGuests += 1;
|
||||
$totalSum += $order['order_sum'] - abs($returned_order_sum);
|
||||
}
|
||||
} else {
|
||||
if ($order_status != 'Доставка' && $order_status != 'Оплачен(*)') {
|
||||
$guests += $order['client_count'];
|
||||
if ($order['client_code'] != '') {
|
||||
if ($order_status == "Возвращен" || $order_status == "Возвращен частично") {
|
||||
$returned_order_id = ShiftOnlineOrders::getReturnedOrderId($order['code']);
|
||||
$returned_order_sum = ShiftOnlineOrders::where('code', $returned_order_id)->first();
|
||||
$returned_order_sum = $returned_order_sum['order_sum'];
|
||||
}
|
||||
$namedGuests += 1;
|
||||
$totalSum += $order['order_sum'] - abs($returned_order_sum);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -252,5 +503,220 @@ class GETDashboard extends HRCCommand implements HRCCommandInterface
|
||||
}
|
||||
return $response;
|
||||
}
|
||||
|
||||
if ($method == 'online') {
|
||||
if ($type == 'items') {
|
||||
$response['status'] = 'success';
|
||||
$shifts = Shifts::first();
|
||||
if (isset($shifts)) {
|
||||
$response['shift_time'] = $shifts['opened'];
|
||||
$items = ShiftOnlineItems::select('menu_code')
|
||||
->selectRaw('SUM(count - IFNULL(`count_return`, 0)) as count')
|
||||
->where('menu_code', '>', 0)
|
||||
->where('dish_code', '>', 0)
|
||||
->where('real_price', '>=', 0)
|
||||
->where('sale_price', '>=', 0)
|
||||
->groupBy('menu_code')
|
||||
->get();
|
||||
foreach ($items as $item) {
|
||||
if ($item['count'] > 0) {
|
||||
$output_items[] = array(
|
||||
'code' => $item['menu_code'],
|
||||
'name' => Dishes::getName($item['menu_code']),
|
||||
'count' => round($item['count'], 2)
|
||||
);
|
||||
}
|
||||
}
|
||||
$response['items'] = $output_items;
|
||||
}
|
||||
return $response;
|
||||
} else {
|
||||
return [
|
||||
'status' => 'fail',
|
||||
'message' => 'Проверьте введенные данные'
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
if ($method == 'staff') {
|
||||
if ($type == 'online') {
|
||||
$orders = ShiftOnlineOrders::where('who_open', '>', 0)
|
||||
->where('full_sum', '>=', 0)
|
||||
->get();
|
||||
$orders_count = ShiftOnlineOrders::where('who_open', '>', 0)
|
||||
->where('full_sum', '>=', 0)
|
||||
->count();
|
||||
$staff_data = [];
|
||||
$sum = 0;
|
||||
if ($orders_count > 0) {
|
||||
$staff = Staff::where('is_history', 0)->get();
|
||||
$staff_data[] = array(
|
||||
'code' => 0,
|
||||
'name' => 'Персонал не найден',
|
||||
'orders_count' => 0,
|
||||
'orders_sum' => 0
|
||||
);
|
||||
foreach ($staff as $staff_item) {
|
||||
$staff_data[] = array(
|
||||
'code' => $staff_item['code'],
|
||||
'name' => Staff::getName($staff_item['code']),
|
||||
'orders_count' => 0,
|
||||
'orders_sum' => 0
|
||||
);
|
||||
}
|
||||
foreach ($orders as $order) {
|
||||
$order_status = ShiftOnlineOrders::getOrderStatus($order['code']);
|
||||
$returned_order_sum = 0;
|
||||
if ($setting > 0) {
|
||||
if ($order_status == 'Возвращен' && $order_status != 'Возвращен частично') {
|
||||
$returned_order_id = ShiftOnlineOrders::getReturnedOrderId($order['code']);
|
||||
$returned_order = ShiftOnlineOrders::where('code', $returned_order_id)->first();
|
||||
$returned_order_sum = abs($returned_order['full_sum']);
|
||||
}
|
||||
$staff_name = Staff::getName($order['who_open']);
|
||||
$sum = $order['full_sum'] - $returned_order_sum;
|
||||
$res = array_filter($staff_data,
|
||||
function ($x) use ($staff_name) {
|
||||
return $x['name'] == $staff_name;
|
||||
});
|
||||
$key = key($res);
|
||||
$staff_data[$key]['orders_sum'] += $sum;
|
||||
$staff_data[$key]['orders_count']++;
|
||||
|
||||
} else {
|
||||
if ($order_status != 'Доставка' && $order_status != 'Оплачен(*)') {
|
||||
if ($order_status == 'Возвращен' && $order_status != 'Возвращен частично') {
|
||||
$returned_order_id = ShiftOnlineOrders::getReturnedOrderId($order['code']);
|
||||
$returned_order = ShiftOnlineOrders::where('code', $returned_order_id)->first();
|
||||
$returned_order_sum = abs($returned_order['full_sum']);
|
||||
}
|
||||
$staff_name = Staff::getName($order['who_open']);
|
||||
$sum = $order['full_sum'] - $returned_order_sum;
|
||||
$res = array_filter($staff_data,
|
||||
function ($x) use ($staff_name) {
|
||||
return $x['name'] == $staff_name;
|
||||
});
|
||||
$key = key($res);
|
||||
$staff_data[$key]['orders_sum'] += $sum;
|
||||
$staff_data[$key]['orders_count']++;
|
||||
}
|
||||
}
|
||||
}
|
||||
return [
|
||||
'status' => 'success',
|
||||
'staff' => $staff_data,
|
||||
];
|
||||
} else {
|
||||
return [
|
||||
'status' => 'success',
|
||||
'staff' => $staff_data,
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($method == 'tables') {
|
||||
if ($type == 'online') {
|
||||
if ($setting > 0) {
|
||||
$orders = ShiftOnlineOrders::selectRaw("COUNT(`id`) AS `orders_count`, SUM(`full_sum`) AS `orders_sum`, CONCAT(place_name, '_', `table_name`) AS `tables`")
|
||||
->where('who_open', '>', 0)
|
||||
->where('full_sum', '>=', 0)
|
||||
->where('is_deleted', 0)
|
||||
->where('is_closed', 0)
|
||||
->where('is_waited', 1)
|
||||
->groupBy('tables')
|
||||
->get();
|
||||
$orders_count = ShiftOnlineOrders::where('who_open', '>', 0)
|
||||
->where('full_sum', '>=', 0)
|
||||
->where('is_deleted', 0)
|
||||
->where('is_closed', 0)
|
||||
->where('is_waited', 1)
|
||||
->count();
|
||||
} else {
|
||||
$orders = ShiftOnlineOrders::selectRaw("COUNT(`id`) AS `orders_count`, SUM(`full_sum`) AS `orders_sum`, CONCAT(place_name, '_', `table_name`) AS `tables`")
|
||||
->where('who_open', '>', 0)
|
||||
->where('full_sum', '>=', 0)
|
||||
->where('is_deleted', 0)
|
||||
->where('is_closed', 0)
|
||||
->where('is_waited', 1)
|
||||
->where('place_name', '<>', 'ДОСТАВКА')
|
||||
->groupBy('tables')
|
||||
->get();
|
||||
$orders_count = ShiftOnlineOrders::where('who_open', '>', 0)
|
||||
->where('full_sum', '>=', 0)
|
||||
->where('is_deleted', 0)
|
||||
->where('is_closed', 0)
|
||||
->where('is_waited', 1)
|
||||
->where('place_name', '<>', 'ДОСТАВКА')
|
||||
->count();
|
||||
}
|
||||
$tables_data = [];
|
||||
if ($orders_count > 0) {
|
||||
foreach ($orders as $order) {
|
||||
$table_info = explode("_", $order['tables']);
|
||||
$tables_data[] = array(
|
||||
'place_name' => $table_info[0],
|
||||
'table_name' => $table_info[1],
|
||||
'orders_count' => $order['orders_count'],
|
||||
'orders_sum' => $order['orders_sum']
|
||||
);
|
||||
}
|
||||
}
|
||||
return [
|
||||
'status' => 'success',
|
||||
'tables' => $tables_data,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
if ($method == 'discounts') {
|
||||
if ($type == 'online') {
|
||||
$count = $discountSum = $totalSum = 0;
|
||||
$orders = ShiftOnlineOrders::where('sale_sum', '>', 0)
|
||||
->where('full_sum', '>=', 0)
|
||||
->get();
|
||||
foreach ($orders as $order) {
|
||||
if ($setting > 0) {
|
||||
$count++;
|
||||
} else {
|
||||
$order_status = ShiftOnlineOrders::getOrderStatus($order['code']);
|
||||
if ($order_status != 'Оплачен(*)' && $order_status != 'ДОСТАВКА') {
|
||||
$count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($count > 0) {
|
||||
foreach ($orders as $key => $order) {
|
||||
if ($setting > 0) {
|
||||
$totalSum += $order['order_sum'];
|
||||
$items = ShiftOnlineItems::where('order_code', $order['code'])->get();
|
||||
foreach ($items as $key => $item) {
|
||||
$realPrice = $item['real_price'] * $item['count'] * $item['cof'];
|
||||
$salePrice = $item['sale_price'] * $item['count'];
|
||||
$discountSum = round(($discountSum + abs($salePrice - $realPrice)), 2);
|
||||
}
|
||||
} else {
|
||||
$order_status = ShiftOnlineOrders::getOrderStatus($order['code']);
|
||||
if ($order_status != 'Оплачен(*)' && $order_status != 'ДОСТАВКА') {
|
||||
$totalSum += $order['order_sum'];
|
||||
$items = ShiftOnlineItems::where('order_code', $order['code'])->get();
|
||||
foreach ($items as $key => $item) {
|
||||
$realPrice = $item['real_price'] * $item['count'] * $item['cof'];
|
||||
$salePrice = $item['sale_price'] * $item['count'];
|
||||
$discountSum = round(($discountSum + abs($salePrice - $realPrice)), 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return [
|
||||
'status' => 'success',
|
||||
'count' => $count,
|
||||
'sum' => $discountSum,
|
||||
'total_sum' => $totalSum
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@ namespace App\Commands;
|
||||
|
||||
use App\Component\Models\Base;
|
||||
use App\Component\Models\Cache;
|
||||
use App\Component\Models\Client;
|
||||
use App\Component\Models\ClientsActions;
|
||||
use App\Component\Models\Dishes;
|
||||
use App\Component\Models\ExchangeActions;
|
||||
@@ -17,8 +18,12 @@ use App\Component\Models\Reasons;
|
||||
use App\Component\Models\Report;
|
||||
use App\Component\Models\Settings;
|
||||
use App\Component\Models\Staff;
|
||||
use App\Component\Models\Terminal;
|
||||
use App\Component\Models\Units;
|
||||
use App\Console\Commands\HRCCommand;
|
||||
use App\Console\Commands\HRCCommandInterface;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
@@ -29,65 +34,9 @@ class GETDataReport extends HRCCommand implements HRCCommandInterface
|
||||
public function command($input, $output = null)
|
||||
{
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
$reportType = $input['type'];
|
||||
//merge, slice, move
|
||||
if (isset($reportType)) {
|
||||
//merge
|
||||
|
||||
if ($reportType == 'merge') {
|
||||
$code = Filesystem::GetCode($input['token']);
|
||||
$cache = Cache::get($code, 'shift', $input);
|
||||
@@ -174,12 +123,12 @@ class GETDataReport extends HRCCommand implements HRCCommandInterface
|
||||
->where('action_type', 45)
|
||||
->where('shift_id', $input['shift_id'])
|
||||
->first();
|
||||
$start_order_place = data_decode($start_order_place['value']);
|
||||
$start_order_place = Base::data_decode($start_order_place['value']);
|
||||
$end_order_place = ExchangeActions::where('order_code', $merge_order)
|
||||
->where('action_type', 45)
|
||||
->where('shift_id', $input['shift_id'])
|
||||
->first();
|
||||
$end_order_place = data_decode($end_order_place['value']);
|
||||
$end_order_place = Base::data_decode($end_order_place['value']);
|
||||
$merged_order_items[] = array(
|
||||
'start_order' => $item['order_code'],
|
||||
'end_order' => $merge_order,
|
||||
@@ -206,7 +155,7 @@ class GETDataReport extends HRCCommand implements HRCCommandInterface
|
||||
}
|
||||
return $cache;
|
||||
}
|
||||
//slice
|
||||
|
||||
if ($reportType == 'slice') {
|
||||
$code = Filesystem::GetCode($input['token']);
|
||||
$cache = Cache::get($code, 'shift', $input);
|
||||
@@ -240,12 +189,12 @@ class GETDataReport extends HRCCommand implements HRCCommandInterface
|
||||
->where('action_type', 45)
|
||||
->where('shift_id', $input['shift_id'])
|
||||
->first();
|
||||
$from_place = data_decode($from_place['value']);
|
||||
$from_place = Base::data_decode($from_place['value']);
|
||||
$to_place = ExchangeActions::where('order_code', $value)
|
||||
->where('action_type', 45)
|
||||
->where('shift_id', $input['shift_id'])
|
||||
->first();
|
||||
$to_place = data_decode($to_place['value']);
|
||||
$to_place = Base::data_decode($to_place['value']);
|
||||
$to_action = ExchangeActions::where('value', $codeOrder)
|
||||
->where('order_code', $value)
|
||||
->where('action_type', 34)
|
||||
@@ -311,10 +260,10 @@ class GETDataReport extends HRCCommand implements HRCCommandInterface
|
||||
$time_from = date('d.m.Y H:i:s', strtotime($data_from['time']));
|
||||
$moved_order_data[] = array(
|
||||
'order' => $item['order_code'],
|
||||
'move_from' => data_decode($data_from['value']),
|
||||
'move_from' => Base::data_decode($data_from['value']),
|
||||
'move_from_staff' => $staff_name_from,
|
||||
'move_from_time' => $time_from,
|
||||
'move_to' => data_decode($item['value']),
|
||||
'move_to' => Base::data_decode($item['value']),
|
||||
'move_to_staff' => $staff_name_to,
|
||||
'move_to_time' => $time_to
|
||||
);
|
||||
@@ -447,6 +396,9 @@ class GETDataReport extends HRCCommand implements HRCCommandInterface
|
||||
->sum('sale_price');
|
||||
$deletedSum = $deletedSum + $deletedOrdersSum;
|
||||
}
|
||||
if ($deletedSum === 0) {
|
||||
$deletedCount = 0;
|
||||
}
|
||||
$staff_data[] = array(
|
||||
'name' => $name,
|
||||
'code' => $code,
|
||||
@@ -580,6 +532,9 @@ class GETDataReport extends HRCCommand implements HRCCommandInterface
|
||||
->whereIn('shift_id', $shifts)
|
||||
->sum('sale_price');
|
||||
}
|
||||
if ($deletedSum === 0) {
|
||||
$deletedCount = 0;
|
||||
}
|
||||
$staff_data[] = array(
|
||||
'name' => $name,
|
||||
'code' => $code,
|
||||
@@ -708,7 +663,29 @@ class GETDataReport extends HRCCommand implements HRCCommandInterface
|
||||
->where('opened', '>', $start_date)
|
||||
->where('closed', '<', $end_date)
|
||||
->get();
|
||||
|
||||
$shifts_count = ExchangeShifts::select('id')
|
||||
->where('opened', '>', $start_date)
|
||||
->where('closed', '<', $end_date)
|
||||
->count();
|
||||
$shift_orders = [];
|
||||
$totalCount = $totalSum = 0;
|
||||
if ($shifts_count < 1) {
|
||||
if (Report::where('start_date', $start_date)->where('end_date', $end_date)->where('report_type', 'deleted')->count() < 1) {
|
||||
$report = new Report;
|
||||
$report->user_id = intval($input['admin_user_id']);
|
||||
$report->name = 'Отчет по удалениям';
|
||||
$report->shift_id = 0;
|
||||
$report->start_date = $start_date;
|
||||
$report->end_date = $end_date;
|
||||
$report->report_type = 'deleted';
|
||||
$report->save();
|
||||
}
|
||||
return [
|
||||
'status' => 'success',
|
||||
'message' => 'Удаления отсутствуют',
|
||||
'totalCount' => 0
|
||||
];
|
||||
}
|
||||
foreach ($shifts as $shift) {
|
||||
$shift_id = $shift['id'];
|
||||
$actionsResult = ExchangeDeleted::select('order_code', 'menu_code', 'count', 'sale_price', 'item_id', 'shift_id')
|
||||
@@ -879,6 +856,7 @@ class GETDataReport extends HRCCommand implements HRCCommandInterface
|
||||
return $cache;
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($input['start_date']) && isset($input['end_date'])) {
|
||||
$end_date = date('Y-m-d H:i:s', strtotime($input['end_date']));
|
||||
$start_date = date('Y-m-d H:i:s', strtotime($input['start_date']));
|
||||
@@ -1084,10 +1062,8 @@ class GETDataReport extends HRCCommand implements HRCCommandInterface
|
||||
'total_count' => round($total_count, 2),
|
||||
'total_sum' => round($total_sum, 2)
|
||||
);
|
||||
|
||||
$cache = Cache::store(strval($code), 'shift', $input, $return);
|
||||
return $cache;
|
||||
}
|
||||
|
||||
if (isset($input['start_date']) && isset($input['end_date'])) {
|
||||
$end_date = date('Y-m-d H:i:s', strtotime($input['end_date'] . ' 23:59:59'));
|
||||
$start_date = date('Y-m-d H:i:s', strtotime($input['start_date'] . ' 00:00:01'));
|
||||
@@ -1226,13 +1202,20 @@ class GETDataReport extends HRCCommand implements HRCCommandInterface
|
||||
'total_count' => round($total_count, 2),
|
||||
'total_sum' => round($total_sum, 2)
|
||||
);
|
||||
|
||||
$cache = Cache::store(strval($code), 'shift', $input, $return);
|
||||
return $cache;
|
||||
}
|
||||
|
||||
if (!$cache) {
|
||||
$cache = Cache::store(strval($code), 'shift', $input, $return);
|
||||
}
|
||||
return $cache;
|
||||
}
|
||||
|
||||
if ($reportType == 'statistic') {
|
||||
$code = Filesystem::GetCode($input['token']);
|
||||
$cache = Cache::get($code, 'shift', $input);
|
||||
if ($cache) {
|
||||
return $cache;
|
||||
}
|
||||
if (isset($input['shift_id'])) {
|
||||
$shift_id = $input['shift_id'];
|
||||
$shift_time = ExchangeShifts::where('id', $shift_id)->first();
|
||||
@@ -1492,7 +1475,7 @@ class GETDataReport extends HRCCommand implements HRCCommandInterface
|
||||
->where('shift_id', $shift_id)
|
||||
->sum('order_sum');
|
||||
}
|
||||
return [
|
||||
$return = array(
|
||||
'status' => 'success',
|
||||
'fiscal' => [
|
||||
'income_sum' => $checkout_sum,
|
||||
@@ -1543,7 +1526,11 @@ class GETDataReport extends HRCCommand implements HRCCommandInterface
|
||||
'pay_echeck' => $pay_echeck_sum,
|
||||
'pay_delivery' => $pay_delivery_sum
|
||||
]
|
||||
];
|
||||
);
|
||||
if (!$cache) {
|
||||
$cache = Cache::store(strval($code), 'shift', $input, $return);
|
||||
}
|
||||
return $cache;
|
||||
}
|
||||
|
||||
if (isset($input['start_date']) && isset($input['end_date'])) {
|
||||
@@ -1839,7 +1826,7 @@ class GETDataReport extends HRCCommand implements HRCCommandInterface
|
||||
$report->save();
|
||||
}
|
||||
|
||||
return [
|
||||
$return = array(
|
||||
'status' => 'success',
|
||||
'fiscal' => [
|
||||
'income_sum' => $checkout_sum,
|
||||
@@ -1890,12 +1877,20 @@ class GETDataReport extends HRCCommand implements HRCCommandInterface
|
||||
'pay_echeck' => $pay_echeck_sum,
|
||||
'pay_delivery' => $pay_delivery_sum
|
||||
]
|
||||
];
|
||||
|
||||
);
|
||||
if (!$cache) {
|
||||
$cache = Cache::store(strval($code), 'shift', $input, $return);
|
||||
}
|
||||
return $cache;
|
||||
}
|
||||
}
|
||||
|
||||
if ($reportType == 'payment') {
|
||||
$code = Filesystem::GetCode($input['token']);
|
||||
$cache = Cache::get($code, 'shift', $input);
|
||||
if ($cache) {
|
||||
return $cache;
|
||||
}
|
||||
if (isset($input['shift_id'])) {
|
||||
$shift_id = $input['shift_id'];
|
||||
$shift_time = ExchangeShifts::where('id', $shift_id)->first();
|
||||
@@ -1946,13 +1941,13 @@ class GETDataReport extends HRCCommand implements HRCCommandInterface
|
||||
if ($sum_payments == 0) {
|
||||
continue;
|
||||
}
|
||||
$cash_cof = round($order['cash'] / $sum_payments, 2);
|
||||
$credit_cof = round($order['credit'] / $sum_payments, 2);
|
||||
$presale_cof = round($order['presale'] / $sum_payments, 2);
|
||||
$self_cof = round($order['self'] / $sum_payments, 2);
|
||||
$clearing_cof = round($order['clearing'] / $sum_payments, 2);
|
||||
$online_cof = round($order_online / $sum_payments, 2);
|
||||
$emoney_cof = round($order_emoney / $sum_payments, 2);
|
||||
$cash_cof = $order['cash'] / $sum_payments;
|
||||
$credit_cof = $order['credit'] / $sum_payments;
|
||||
$presale_cof = $order['presale'] / $sum_payments;
|
||||
$self_cof = $order['self'] / $sum_payments;
|
||||
$clearing_cof = $order['clearing'] / $sum_payments;
|
||||
$online_cof = $order_online / $sum_payments;
|
||||
$emoney_cof = $order_emoney / $sum_payments;
|
||||
$items = ExchangeItems::where('shift_id', $shift_id)
|
||||
->where('order_code', $order['code'])
|
||||
->get();
|
||||
@@ -1982,11 +1977,14 @@ class GETDataReport extends HRCCommand implements HRCCommandInterface
|
||||
'payments' => $item
|
||||
);
|
||||
}
|
||||
$return = [
|
||||
$return = array(
|
||||
'status' => 'success',
|
||||
'items' => $out
|
||||
];
|
||||
return $return;
|
||||
);
|
||||
if (!$cache) {
|
||||
$cache = Cache::store(strval($code), 'shift', $input, $return);
|
||||
}
|
||||
return $cache;
|
||||
|
||||
}
|
||||
if (isset($input['start_date']) && isset($input['end_date'])) {
|
||||
@@ -2043,20 +2041,19 @@ class GETDataReport extends HRCCommand implements HRCCommandInterface
|
||||
if ($sum_payments == 0) {
|
||||
continue;
|
||||
}
|
||||
$cash_cof = round($order['cash'] / $sum_payments, 2);
|
||||
$credit_cof = round($order['credit'] / $sum_payments, 2);
|
||||
$presale_cof = round($order['presale'] / $sum_payments, 2);
|
||||
$self_cof = round($order['self'] / $sum_payments, 2);
|
||||
$clearing_cof = round($order['clearing'] / $sum_payments, 2);
|
||||
$online_cof = round($order_online / $sum_payments, 2);
|
||||
$emoney_cof = round($order_emoney / $sum_payments, 2);
|
||||
$cash_cof = $order['cash'] / $sum_payments;
|
||||
$credit_cof = $order['credit'] / $sum_payments;
|
||||
$presale_cof = $order['presale'] / $sum_payments;
|
||||
$self_cof = $order['self'] / $sum_payments;
|
||||
$clearing_cof = $order['clearing'] / $sum_payments;
|
||||
$online_cof = $order_online / $sum_payments;
|
||||
$emoney_cof = $order_emoney / $sum_payments;
|
||||
$items = ExchangeItems::where('shift_id', $shift_id)
|
||||
->where('order_code', $order['code'])
|
||||
->get();
|
||||
foreach ($items as $item) {
|
||||
$sum = round(($item['count'] - $item['count_return']) * $item['sale_price'], 2);
|
||||
$printer_code = Dishes::GetPrinterCode($item['dishes_code']);
|
||||
Log::debug($printer_code);
|
||||
$report[$printer_code]['cash'] += round($sum * $cash_cof, 2);
|
||||
$report[$printer_code]['credit'] += round($sum * $credit_cof, 2);
|
||||
$report[$printer_code]['presale'] += round($sum * $presale_cof, 2);
|
||||
@@ -2081,11 +2078,339 @@ class GETDataReport extends HRCCommand implements HRCCommandInterface
|
||||
'payments' => $item
|
||||
);
|
||||
}
|
||||
$return = [
|
||||
$return = array(
|
||||
'status' => 'success',
|
||||
'items' => $out
|
||||
];
|
||||
return $return;
|
||||
);
|
||||
if (Report::where('start_date', $start_date)->where('end_date', $end_date)->where('report_type', 'payment')->count() < 1) {
|
||||
$report = new Report;
|
||||
$report->user_id = intval($input['admin_user_id']);
|
||||
$report->name = 'Отчет по отделам и видам оплат';
|
||||
$report->shift_id = 0;
|
||||
$report->start_date = $start_date;
|
||||
$report->end_date = $end_date;
|
||||
$report->report_type = 'payment';
|
||||
$report->save();
|
||||
}
|
||||
if (!$cache) {
|
||||
$cache = Cache::store(strval($code), 'shift', $input, $return);
|
||||
}
|
||||
return $cache;
|
||||
}
|
||||
}
|
||||
|
||||
if ($reportType == "report_construct") {
|
||||
$code = Filesystem::GetCode($input['token']);
|
||||
$cache = Cache::get($code, 'shift', $input);
|
||||
if ($cache) {
|
||||
return $cache;
|
||||
}
|
||||
if (isset($input['shift_id'])) {
|
||||
$shift_id = $input['shift_id'];
|
||||
$shift_data = ExchangeShifts::where('id', $shift_id)->first();
|
||||
$close_actions = ExchangeActions::select('order_code')
|
||||
->where('shift_id', $shift_id)
|
||||
->groupBy('order_code')
|
||||
->get();
|
||||
$close_actions_count = ExchangeActions::select('order_code')
|
||||
->where('shift_id', $shift_id)
|
||||
->groupBy('order_code')
|
||||
->count();
|
||||
if ($close_actions_count < 1) {
|
||||
return [
|
||||
'status' => 'success',
|
||||
'error_message' => 'Заказы отсутствуют',
|
||||
];
|
||||
}
|
||||
$order_ids = [];
|
||||
foreach ($close_actions as $close_action) {
|
||||
$order_status = ExchangeOrders::getOrderStatus($close_action['order_code'], $shift_id);
|
||||
if ($order_status != 'Удален' && $order_status != 'Возвращен') {
|
||||
$order_ids[] = $close_action['order_code'];
|
||||
}
|
||||
}
|
||||
$items = ExchangeItems::selectRaw('code, menu_code, dishes_code, order_code, units_id, (count - count_return) as count, cof, real_price, sale_price, special_price, shift_id')
|
||||
->where('shift_id', $shift_id)
|
||||
->whereIn('order_code', $order_ids)
|
||||
->get();
|
||||
$collection = new Collection();
|
||||
foreach ($items as $item) {
|
||||
$order_cash_cof = $order_credit_cof = $order_presale_cof = $order_clearing_cof = 0;
|
||||
$order = ExchangeOrders::where('code', $item['order_code'])
|
||||
->where('shift_id', $shift_id)
|
||||
->first();
|
||||
$returned_order_order_sum = $returned_order_cash = $returned_order_credit = $returned_order_presale = $returned_order_clearing = 0;
|
||||
if ($order['is_returned'] > 0) {
|
||||
$returned_order_id = ExchangeOrders::getReturnedOrderId($item['order_code'], $shift_id);
|
||||
$returned_order = ExchangeOrders::where('code', $returned_order_id)
|
||||
->where('shift_id', $shift_id)
|
||||
->first();
|
||||
$returned_order_order_sum = abs($returned_order['order_sum']);
|
||||
$returned_order_cash = abs($returned_order['cash']);
|
||||
$returned_order_credit = abs($returned_order['credit']);
|
||||
$returned_order_presale = abs($returned_order['presale']);
|
||||
$returned_order_clearing = abs($returned_order['clearing']);
|
||||
}
|
||||
|
||||
$order_order_sum = $order['order_sum'] - $returned_order_order_sum;
|
||||
$order_cash = $order['cash'] - $returned_order_cash;
|
||||
$order_credit = $order['credit'] - $returned_order_credit;
|
||||
$order_presale = $order['presale'] - $returned_order_presale;
|
||||
$order_clearing = $order['clearing'] - $returned_order_clearing;
|
||||
if ($order['client_code'] != '') {
|
||||
$order_client_name = Client::getName($order['client_code']);
|
||||
} else {
|
||||
$order_client_name = '';
|
||||
}
|
||||
if ($order_order_sum > 0) {
|
||||
$order_cash_cof = $order_cash / $order_order_sum;
|
||||
$order_credit_cof = $order_credit / $order_order_sum;
|
||||
$order_presale_cof = $order_presale / $order_order_sum;
|
||||
$order_clearing_cof = $order_clearing / $order_order_sum;
|
||||
}
|
||||
|
||||
$create_actions = ExchangeActions::where('action_type', 2)
|
||||
->where('shift_id', $shift_id)
|
||||
->where('order_position', $item['code'])
|
||||
->get();
|
||||
$create_count = 0;
|
||||
|
||||
foreach ($create_actions as $create_action) {
|
||||
$create_count += Base::toFloat($create_action['value']);
|
||||
if ($create_count <= $item['count']) {
|
||||
$realPrice = $item['real_price'] * $item['count'] * $item['cof'];
|
||||
$salePrice = $item['sale_price'] * $item['count'];
|
||||
if ($realPrice > 0) {
|
||||
$discount = $salePrice / $realPrice;
|
||||
$discount = (1 - $discount) * 100;
|
||||
} else {
|
||||
$discount = 0;
|
||||
}
|
||||
$item_menu_code = $item['menu_code'];
|
||||
$item_dishes_code = $item['dishes_code'];
|
||||
$item_order_code = $item['order_code'];
|
||||
$item_units_id = $item['units_id'];
|
||||
$item_count = Base::toFloat($create_action['value']);
|
||||
$item_cof = $item['cof'];
|
||||
$item_real_price = $item['real_price'];
|
||||
$item_sale_price = $item['sale_price'];
|
||||
$item_special_price = $item['special_price'];
|
||||
$item_cash = $item_count * $item_sale_price * $order_cash_cof;
|
||||
$item_credit = $item_count * $item_sale_price * $order_credit_cof;
|
||||
$item_presale = $item_count * $item_sale_price * $order_presale_cof;
|
||||
$item_clearing = $item_count * $item_sale_price * $order_clearing_cof;
|
||||
$item_discount_sum = $item_real_price - $item_sale_price;
|
||||
$item_staff = Staff::getName($create_action['who']);
|
||||
$item_time = $create_action['time'];
|
||||
$item_printer = Printer::getName(Dishes::GetPrinterCode($item_menu_code));
|
||||
$item_work_place = Terminal::getNameByWorkGroup($create_action['work_group'], $create_action['work_code']);
|
||||
$items_array = array(
|
||||
'shift_id' => $shift_id,
|
||||
'work_place' => $item_work_place,
|
||||
'place_name' => Base::data_decode($order['place_name']),
|
||||
'table_name' => $order['table_name'],
|
||||
'printer_name' => $item_printer,
|
||||
'client_name' => $order_client_name,
|
||||
'staff_name' => $item_staff,
|
||||
'order_code' => $item_order_code,
|
||||
'item_time' => $item_time,
|
||||
'item_menu_code' => $item_menu_code,
|
||||
'item_dishes_code' => $item_dishes_code,
|
||||
'item_name' => Dishes::getName($item_menu_code),
|
||||
'item_units_id' => $item_units_id,
|
||||
'item_units_name' => Units::getName($item_units_id),
|
||||
'item_cof' => floatval($item_cof),
|
||||
'item_count' => $item_count,
|
||||
'item_real_price' => floatval($item_real_price),
|
||||
'item_sale_price' => floatval($item_sale_price),
|
||||
'item_special_price' => floatval($item_special_price),
|
||||
'item_cash' => $item_cash,
|
||||
'item_credit' => $item_credit,
|
||||
'item_presale' => $item_presale,
|
||||
'item_clearing' => $item_clearing,
|
||||
'item_discount_sum' => round($item_discount_sum, 2),
|
||||
'item_discount_value' => round($discount, 2),
|
||||
'order_opened' => $order['opened'],
|
||||
'order_closed' => $order['closed'],
|
||||
'order_check_number' => $order['check_number'],
|
||||
'shift_opened' => $shift_data['opened'],
|
||||
'shift_closed' => $shift_data['closed'],
|
||||
);
|
||||
$collection->push((object)$items_array);
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
$return = array(
|
||||
'status' => 'success',
|
||||
'data' => $collection
|
||||
);
|
||||
if (!$cache) {
|
||||
$cache = Cache::store(strval($code), 'shift', $input, $return);
|
||||
}
|
||||
return $cache;
|
||||
}
|
||||
if (isset($input['start_date']) && isset($input['end_date'])) {
|
||||
$end_date = date('Y-m-d H:i:s', strtotime($input['end_date'] . ' 23:59:59'));
|
||||
$start_date = date('Y-m-d H:i:s', strtotime($input['start_date'] . ' 00:00:01'));
|
||||
$shifts = ExchangeShifts::select('id', 'opened', 'closed')
|
||||
->where('opened', '>', $start_date)
|
||||
->where('closed', '<', $end_date)
|
||||
->get();
|
||||
$collection = new Collection();
|
||||
foreach ($shifts as $shift) {
|
||||
$shift_id = $shift['id'];
|
||||
$close_actions = ExchangeActions::select('order_code')
|
||||
->where('shift_id', $shift_id)
|
||||
->groupBy('order_code')
|
||||
->get();
|
||||
$close_actions_count = ExchangeActions::select('order_code')
|
||||
->where('shift_id', $shift_id)
|
||||
->groupBy('order_code')
|
||||
->count();
|
||||
if ($close_actions_count < 1) {
|
||||
continue;
|
||||
}
|
||||
$order_ids = [];
|
||||
foreach ($close_actions as $close_action) {
|
||||
$order_status = ExchangeOrders::getOrderStatus($close_action['order_code'], $shift_id);
|
||||
if ($order_status != 'Удален' && $order_status != 'Возвращен') {
|
||||
$order_ids[] = $close_action['order_code'];
|
||||
}
|
||||
}
|
||||
$items = ExchangeItems::selectRaw('code, menu_code, dishes_code, order_code, units_id, (count - count_return) as count, cof, real_price, sale_price, special_price, shift_id')
|
||||
->where('shift_id', $shift_id)
|
||||
->whereIn('order_code', $order_ids)
|
||||
->get();
|
||||
|
||||
foreach ($items as $item) {
|
||||
$order_cash_cof = $order_credit_cof = $order_presale_cof = $order_clearing_cof = 0;
|
||||
$order = ExchangeOrders::where('code', $item['order_code'])
|
||||
->where('shift_id', $shift_id)
|
||||
->first();
|
||||
$returned_order_order_sum = $returned_order_cash = $returned_order_credit = $returned_order_presale = $returned_order_clearing = 0;
|
||||
if ($order['is_returned'] > 0) {
|
||||
$returned_order_id = ExchangeOrders::getReturnedOrderId($item['order_code'], $shift_id);
|
||||
$returned_order = ExchangeOrders::where('code', $returned_order_id)
|
||||
->where('shift_id', $shift_id)
|
||||
->first();
|
||||
$returned_order_order_sum = abs($returned_order['order_sum']);
|
||||
$returned_order_cash = abs($returned_order['cash']);
|
||||
$returned_order_credit = abs($returned_order['credit']);
|
||||
$returned_order_presale = abs($returned_order['presale']);
|
||||
$returned_order_clearing = abs($returned_order['clearing']);
|
||||
}
|
||||
|
||||
$order_order_sum = $order['order_sum'] - $returned_order_order_sum;
|
||||
$order_cash = $order['cash'] - $returned_order_cash;
|
||||
$order_credit = $order['credit'] - $returned_order_credit;
|
||||
$order_presale = $order['presale'] - $returned_order_presale;
|
||||
$order_clearing = $order['clearing'] - $returned_order_clearing;
|
||||
if ($order['client_code'] != '') {
|
||||
$order_client_name = Client::getName($order['client_code']);
|
||||
} else {
|
||||
$order_client_name = '';
|
||||
}
|
||||
if ($order_order_sum > 0) {
|
||||
$order_cash_cof = $order_cash / $order_order_sum;
|
||||
$order_credit_cof = $order_credit / $order_order_sum;
|
||||
$order_presale_cof = $order_presale / $order_order_sum;
|
||||
$order_clearing_cof = $order_clearing / $order_order_sum;
|
||||
}
|
||||
|
||||
$create_actions = ExchangeActions::where('action_type', 2)
|
||||
->where('shift_id', $shift_id)
|
||||
->where('order_position', $item['code'])
|
||||
->get();
|
||||
$create_count = 0;
|
||||
|
||||
foreach ($create_actions as $create_action) {
|
||||
$create_count += Base::toFloat($create_action['value']);
|
||||
if ($create_count <= $item['count']) {
|
||||
$realPrice = $item['real_price'] * $item['count'] * $item['cof'];
|
||||
$salePrice = $item['sale_price'] * $item['count'];
|
||||
if ($realPrice > 0) {
|
||||
$discount = $salePrice / $realPrice;
|
||||
$discount = (1 - $discount) * 100;
|
||||
} else {
|
||||
$discount = 0;
|
||||
}
|
||||
$item_menu_code = $item['menu_code'];
|
||||
$item_dishes_code = $item['dishes_code'];
|
||||
$item_order_code = $item['order_code'];
|
||||
$item_units_id = $item['units_id'];
|
||||
$item_count = Base::toFloat($create_action['value']);
|
||||
$item_cof = $item['cof'];
|
||||
$item_real_price = $item['real_price'];
|
||||
$item_sale_price = $item['sale_price'];
|
||||
$item_special_price = $item['special_price'];
|
||||
$item_cash = $item_count * $item_sale_price * $order_cash_cof;
|
||||
$item_credit = $item_count * $item_sale_price * $order_credit_cof;
|
||||
$item_presale = $item_count * $item_sale_price * $order_presale_cof;
|
||||
$item_clearing = $item_count * $item_sale_price * $order_clearing_cof;
|
||||
$item_discount_sum = $item_real_price - $item_sale_price;
|
||||
$item_staff = Staff::getName($create_action['who']);
|
||||
$item_time = $create_action['time'];
|
||||
$item_printer = Printer::getName(Dishes::GetPrinterCode($item_menu_code));
|
||||
$item_work_place = Terminal::getNameByWorkGroup($create_action['work_group'], $create_action['work_code']);
|
||||
$items_array = array(
|
||||
'shift_id' => $shift_id,
|
||||
'work_place' => $item_work_place,
|
||||
'place_name' => Base::data_decode($order['place_name']),
|
||||
'table_name' => $order['table_name'],
|
||||
'printer_name' => $item_printer,
|
||||
'client_name' => $order_client_name,
|
||||
'staff_name' => $item_staff,
|
||||
'order_code' => $item_order_code,
|
||||
'item_time' => $item_time,
|
||||
'item_menu_code' => $item_menu_code,
|
||||
'item_dishes_code' => $item_dishes_code,
|
||||
'item_name' => Dishes::getName($item_menu_code),
|
||||
'item_units_id' => $item_units_id,
|
||||
'item_units_name' => Units::getName($item_units_id),
|
||||
'item_cof' => floatval($item_cof),
|
||||
'item_count' => $item_count,
|
||||
'item_real_price' => floatval($item_real_price),
|
||||
'item_sale_price' => floatval($item_sale_price),
|
||||
'item_special_price' => floatval($item_special_price),
|
||||
'item_cash' => $item_cash,
|
||||
'item_credit' => $item_credit,
|
||||
'item_presale' => $item_presale,
|
||||
'item_clearing' => $item_clearing,
|
||||
'item_discount_sum' => round($item_discount_sum, 2),
|
||||
'item_discount_value' => round($discount, 2),
|
||||
'order_opened' => $order['opened'],
|
||||
'order_closed' => $order['closed'],
|
||||
'order_check_number' => $order['check_number'],
|
||||
'shift_opened' => $shift['opened'],
|
||||
'shift_closed' => $shift['closed'],
|
||||
);
|
||||
$collection->push((object)$items_array);
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (Report::where('start_date', $start_date)->where('end_date', $end_date)->where('report_type', 'reportRealisationConstruct')->count() < 1) {
|
||||
$report = new Report;
|
||||
$report->user_id = intval($input['admin_user_id']);
|
||||
$report->name = 'Расширенный отчет по реализации';
|
||||
$report->shift_id = 0;
|
||||
$report->start_date = $start_date;
|
||||
$report->end_date = $end_date;
|
||||
$report->report_type = 'reportRealisationConstruct';
|
||||
$report->save();
|
||||
}
|
||||
$return = array(
|
||||
'status' => 'success',
|
||||
'data' => $collection
|
||||
);
|
||||
if (!$cache) {
|
||||
$cache = Cache::store(strval($code), 'shift', $input, $return);
|
||||
}
|
||||
return $cache;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -3,7 +3,12 @@
|
||||
namespace App\Commands;
|
||||
|
||||
use App\Component\Models\ActionTypes;
|
||||
use App\Component\Models\Base;
|
||||
use App\Component\Models\Dishes;
|
||||
use App\Component\Models\ExchangeActions;
|
||||
use App\Component\Models\ExchangeDeleted;
|
||||
use App\Component\Models\ExchangeItems;
|
||||
use App\Component\Models\ExchangeOrders;
|
||||
use App\Component\Models\ShiftOnlineActions;
|
||||
use App\Component\Models\ShiftOnlineDeleted;
|
||||
use App\Component\Models\ShiftOnlineItems;
|
||||
@@ -20,6 +25,244 @@ class GETOrderHistory extends HRCCommand implements HRCCommandInterface {
|
||||
public function command($input, $output = null) {
|
||||
|
||||
if (isset($input['order_id'])) {
|
||||
|
||||
if (isset($input['opened']) && isset($input['closed'])) {
|
||||
$order_find = ExchangeOrders::where('opened', urldecode($input['opened']))
|
||||
->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;
|
||||
@@ -27,111 +270,6 @@ class GETOrderHistory extends HRCCommand implements HRCCommandInterface {
|
||||
$merge_trigger = 0;
|
||||
$move_trigger = 0;
|
||||
|
||||
function json_validate($string)
|
||||
{
|
||||
// decode the JSON data
|
||||
$result = json_decode(utf8_encode($string), true, JSON_INVALID_UTF8_SUBSTITUTE);
|
||||
|
||||
// switch and check possible JSON errors
|
||||
switch (json_last_error()) {
|
||||
case JSON_ERROR_NONE:
|
||||
$error = ''; // JSON is valid // No error has occurred
|
||||
break;
|
||||
case JSON_ERROR_DEPTH:
|
||||
$error = 'The maximum stack depth has been exceeded.';
|
||||
break;
|
||||
case JSON_ERROR_STATE_MISMATCH:
|
||||
$error = 'Invalid or malformed JSON.';
|
||||
break;
|
||||
case JSON_ERROR_CTRL_CHAR:
|
||||
$error = 'Control character error, possibly incorrectly encoded.';
|
||||
break;
|
||||
case JSON_ERROR_SYNTAX:
|
||||
$error = 'Syntax error, malformed JSON.';
|
||||
break;
|
||||
// PHP >= 5.3.3
|
||||
case JSON_ERROR_UTF8:
|
||||
$error = 'Malformed UTF-8 characters, possibly incorrectly encoded.';
|
||||
break;
|
||||
// PHP >= 5.5.0
|
||||
case JSON_ERROR_RECURSION:
|
||||
$error = 'One or more recursive references in the value to be encoded.';
|
||||
break;
|
||||
// PHP >= 5.5.0
|
||||
case JSON_ERROR_INF_OR_NAN:
|
||||
$error = 'One or more NAN or INF values in the value to be encoded.';
|
||||
break;
|
||||
case JSON_ERROR_UNSUPPORTED_TYPE:
|
||||
$error = 'A value of a type that cannot be encoded was given.';
|
||||
break;
|
||||
default:
|
||||
$error = 'Unknown JSON error occured.';
|
||||
break;
|
||||
}
|
||||
|
||||
if ($error !== '') {
|
||||
// throw the Exception or exit // or whatever :)
|
||||
return false;
|
||||
}
|
||||
|
||||
// everything is OK
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
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) {
|
||||
@@ -171,15 +309,15 @@ class GETOrderHistory extends HRCCommand implements HRCCommandInterface {
|
||||
}
|
||||
|
||||
if ($item['type_action'] == 11) {
|
||||
$action_name = 'Назначен гость: ' . data_decode($item['value']);
|
||||
$action_name = 'Назначен гость: ' . Base::data_decode($item['value']);
|
||||
}
|
||||
|
||||
if ($item['type_action'] == 12) {
|
||||
$action_name = 'Гость отменен: ' . data_decode($item['value']);
|
||||
$action_name = 'Гость отменен: ' . Base::data_decode($item['value']);
|
||||
}
|
||||
if ($item['type_action'] == 21) {
|
||||
$item_more = data_decode($item['more']);
|
||||
$item_value = data_decode($item['value']);
|
||||
$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;
|
||||
@@ -229,7 +367,7 @@ class GETOrderHistory extends HRCCommand implements HRCCommandInterface {
|
||||
$action_name = $action_name . ': ' . $item['value'];
|
||||
$slice_items = [];
|
||||
if ($item['more']) {
|
||||
if (json_validate($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);
|
||||
@@ -254,14 +392,13 @@ class GETOrderHistory extends HRCCommand implements HRCCommandInterface {
|
||||
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 (json_validate($item_action['more'])) {
|
||||
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 = json_decode(utf8_encode($item_action['more']), true, JSON_INVALID_UTF8_SUBSTITUTE);
|
||||
$merge_order_items_before = $merge_order_items['before']['items'];
|
||||
$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) {
|
||||
@@ -299,24 +436,31 @@ class GETOrderHistory extends HRCCommand implements HRCCommandInterface {
|
||||
}
|
||||
}
|
||||
if ($item['type_action'] == 39) {
|
||||
$action_name = data_decode($item['value']);
|
||||
$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' => data_decode($data['value']));
|
||||
$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'] == 46) {
|
||||
$action_name = 'Изменено количество гостей: ' . $item['value'];
|
||||
if ($item['type_action'] == 45) {
|
||||
$action_name = Base::data_decode($item['value']);
|
||||
}
|
||||
|
||||
if ($item['type_action'] == 45) {
|
||||
$action_name = 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']);
|
||||
}
|
||||
|
||||
@@ -8,9 +8,9 @@ use App\Component\Models\ShiftOnlineOrders;
|
||||
use App\Console\Commands\HRCCommand;
|
||||
use App\Console\Commands\HRCCommandInterface;
|
||||
|
||||
class GETClientOrderInfo extends HRCCommand implements HRCCommandInterface
|
||||
class GETOrderInfo extends HRCCommand implements HRCCommandInterface
|
||||
{
|
||||
protected $signature = 'getclientorderinfo';
|
||||
protected $signature = 'getorderinfo';
|
||||
|
||||
public function command($input, $output = null)
|
||||
{
|
||||
@@ -28,7 +28,7 @@ class GETClientOrderInfo extends HRCCommand implements HRCCommandInterface
|
||||
|
||||
return [
|
||||
'status' => 'success',
|
||||
'info' => $info[0],
|
||||
'info' => $info,
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -2,10 +2,18 @@
|
||||
|
||||
namespace App\Commands;
|
||||
|
||||
use App\Component\Models\Client;
|
||||
use App\Component\Models\Places;
|
||||
use App\Component\Models\Settings;
|
||||
use App\Component\Models\ShiftOnlineActions;
|
||||
use App\Component\Models\ShiftOnlineDeleted;
|
||||
use App\Component\Models\ShiftOnlineItems;
|
||||
use App\Component\Models\ShiftOnlineOrders;
|
||||
use App\Component\Models\Staff;
|
||||
use App\Component\Models\Tables;
|
||||
use App\Console\Commands\HRCCommand;
|
||||
use App\Console\Commands\HRCCommandInterface;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class GETRoomMap extends HRCCommand implements HRCCommandInterface
|
||||
{
|
||||
@@ -13,47 +21,802 @@ class GETRoomMap extends HRCCommand implements HRCCommandInterface
|
||||
|
||||
public function command($input, $output = null)
|
||||
{
|
||||
if (isset($input['type'])) {
|
||||
$roommap = [];
|
||||
if ($input['type'] == 'places') {
|
||||
$places = Places::all();
|
||||
return [
|
||||
'status' => 'success',
|
||||
'places' => $places,
|
||||
];
|
||||
}
|
||||
if ($input['type'] == 'place' && isset($input['id'])) {
|
||||
$place_name = Places::getName($input['id']);
|
||||
$tables = Tables::where('place_id', $input['id'])
|
||||
->get();
|
||||
return [
|
||||
'status' => 'success',
|
||||
'place_id' => $input['id'],
|
||||
'place' => $place_name,
|
||||
'tables' => $tables,
|
||||
];
|
||||
}
|
||||
if ($input['type'] == 'full') {
|
||||
$places = Places::all();
|
||||
foreach ($places as $place) {
|
||||
$tables = Tables::where('place_id', $place['id'])
|
||||
->get();
|
||||
$roommap[] = array(
|
||||
'place_id' => $place['id'],
|
||||
'place_name' => $place['name'],
|
||||
'tables' => $tables
|
||||
);
|
||||
if (isset($input['method'])) {
|
||||
$method = $input['method'];
|
||||
if ($method == 'statistic') {
|
||||
if (isset($input['type'])) {
|
||||
$type = $input['type'];
|
||||
if ($type == 'place') {
|
||||
if (isset($input['place_id'])) {
|
||||
$place_id = $input['place_id'];
|
||||
$places = Places::find($place_id);
|
||||
$closed_orders_count = $closed_orders_sum = $closed_orders_client_count = 0;
|
||||
if (isset($input['table_id'])) {
|
||||
$table_id = $input['table_id'];
|
||||
$orders = ShiftOnlineOrders::where('place_name', $places->name)
|
||||
->where('table_name', strval($table_id))
|
||||
->where('who_open', '>', 0)
|
||||
->where('full_sum', '>=', 0)
|
||||
->get();
|
||||
$cancellations_count = $cancellations_sum = 0;
|
||||
$waited_count = $waited_sum = 0;
|
||||
$closed_count = $closed_sum = 0;
|
||||
$deleted_count = $deleted_sum = 0;
|
||||
$returned_count = $returned_sum = 0;
|
||||
$orders_info = [];
|
||||
$place_name = Places::getName($place_id);
|
||||
$setting = Settings::getValue(10);
|
||||
foreach ($orders as $order) {
|
||||
$order_status = ShiftOnlineOrders::getOrderStatus($order['code']);
|
||||
$returned_order_sum = 0;
|
||||
if ($order['order_sum'] >= 0
|
||||
&& $order['is_deleted'] > 0
|
||||
&& $order['check_number'] > 0
|
||||
&& $order['who_open'] > 0) {
|
||||
$cancellations_count += 1;
|
||||
$cancellations_sum += $order['order_sum'];
|
||||
}
|
||||
if ($setting > 0) {
|
||||
if ($order['order_sum'] >= 0
|
||||
&& $order['who_open'] > 0
|
||||
&& $order['who_close'] == 0) {
|
||||
$waited_count += 1;
|
||||
$waited_sum += $order['order_sum'];
|
||||
}
|
||||
} else {
|
||||
if ($order['order_sum'] >= 0
|
||||
&& $order['who_open'] > 0
|
||||
&& $order['who_close'] == 0
|
||||
&& $order['place_name'] != 'ДОСТАВКА') {
|
||||
$waited_count += 1;
|
||||
$waited_sum += $order['order_sum'];
|
||||
}
|
||||
}
|
||||
|
||||
if ($setting > 0) {
|
||||
if ($order['order_sum'] >= 0
|
||||
&& $order['who_open'] > 0
|
||||
&& $order['who_close'] > 0
|
||||
&& $order['is_closed'] == 1
|
||||
&& $order['is_deleted'] == 0
|
||||
&& $order['is_returned'] == 0
|
||||
&& $order['place_name'] != 'ДОСТАВКА') {
|
||||
$closed_count += 1;
|
||||
$closed_sum += $order['order_sum'];
|
||||
}
|
||||
} else {
|
||||
if ($order['order_sum'] >= 0
|
||||
&& $order['who_open'] > 0
|
||||
&& $order['who_close'] > 0
|
||||
&& $order['is_closed'] == 1
|
||||
&& $order['is_deleted'] == 0
|
||||
&& $order['is_returned'] == 0
|
||||
&& $order['place_name'] != 'ДОСТАВКА'
|
||||
&& $order_status != "Оплачен(*)") {
|
||||
$closed_count += 1;
|
||||
$closed_sum += $order['order_sum'];
|
||||
}
|
||||
}
|
||||
if ($setting > 0) {
|
||||
$deleted_items_count = ShiftOnlineDeleted::where('order_code', $order['code'])->sum('count');
|
||||
$deleted_items_sum = ShiftOnlineDeleted::selectRaw('sum(sale_price * count) as deleted_sum')
|
||||
->where('order_code', $order['code'])
|
||||
->first();
|
||||
$deleted_items_sum = $deleted_items_sum['deleted_sum'];
|
||||
$deleted_count += $deleted_items_count;
|
||||
$deleted_sum += $deleted_items_sum;
|
||||
} else {
|
||||
if ($order['place_name'] != 'ДОСТАВКА') {
|
||||
$deleted_items_count = ShiftOnlineDeleted::where('order_code', $order['code'])->sum('count');
|
||||
$deleted_items_sum = ShiftOnlineDeleted::selectRaw('sum(sale_price * count) as deleted_sum')
|
||||
->where('order_code', $order['code'])
|
||||
->first();
|
||||
$deleted_items_sum = $deleted_items_sum['deleted_sum'];
|
||||
$deleted_count += $deleted_items_count;
|
||||
$deleted_sum += $deleted_items_sum;
|
||||
}
|
||||
}
|
||||
if ($order['order_sum'] >= 0
|
||||
&& $order['who_open'] > 0
|
||||
&& $order['who_close'] > 0
|
||||
&& $order['is_closed'] == 1
|
||||
&& $order['is_deleted'] == 0
|
||||
&& $order['is_returned'] == 1
|
||||
&& $order['place_name'] != 'ДОСТАВКА') {
|
||||
$returned_items = ShiftOnlineOrders::getReturnedItems($order['code']);
|
||||
foreach ($returned_items as $returned_item) {
|
||||
$returned_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
|
||||
$returned_order_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
|
||||
$returned_count += $returned_item['count'];
|
||||
}
|
||||
$closed_count += 1;
|
||||
$closed_sum += round($order['order_sum'], 2) - $returned_order_sum;
|
||||
}
|
||||
|
||||
if ($setting == 1) {
|
||||
$orders_info[] = array(
|
||||
'id' => $order['code'],
|
||||
'place' => $order['place_name'],
|
||||
'table' => $order['table_name'],
|
||||
'opened' => $order['opened'],
|
||||
'closed' => $order['closed'] != '0000-00-00 00:00:00' ? $order['closed'] : false,
|
||||
'who_open' => Staff::getName($order['who_open']),
|
||||
'who_close' => $order['who_close'] != 0 ? Staff::getName($order['who_close']) : false,
|
||||
'sum' => round($order['order_sum'], 2) - $returned_order_sum,
|
||||
'preCheck_count' => ShiftOnlineActions::getPreCheckCount($order['code']),
|
||||
'is_printed_before_edit' => ShiftOnlineActions::isPrintedBeforeEdit($order['code']),
|
||||
'hasMove' => ShiftOnlineActions::hasMove($order['code']),
|
||||
'hasMerge' => ShiftOnlineActions::hasMerge($order['code']),
|
||||
'hasSlice' => ShiftOnlineActions::hasSlice($order['code']),
|
||||
'hasDelete' => ShiftOnlineActions::hasDelete($order['code']),
|
||||
'status' => $order_status
|
||||
);
|
||||
} elseif ($setting == 0 && $order_status != "Доставка" && $order_status != "Оплачен(*)" && $order['place_name'] != "ДОСТАВКА") {
|
||||
$orders_info[] = array(
|
||||
'id' => $order['code'],
|
||||
'place' => $order['place_name'],
|
||||
'table' => $order['table_name'],
|
||||
'opened' => $order['opened'],
|
||||
'closed' => $order['closed'] != '0000-00-00 00:00:00' ? $order['closed'] : false,
|
||||
'who_open' => Staff::getName($order['who_open']),
|
||||
'who_close' => $order['who_close'] != 0 ? Staff::getName($order['who_close']) : false,
|
||||
'sum' => round($order['order_sum'], 2) - $returned_order_sum,
|
||||
'preCheck_count' => ShiftOnlineActions::getPreCheckCount($order['code']),
|
||||
'is_printed_before_edit' => ShiftOnlineActions::isPrintedBeforeEdit($order['code']),
|
||||
'hasMove' => ShiftOnlineActions::hasMove($order['code']),
|
||||
'hasMerge' => ShiftOnlineActions::hasMerge($order['code']),
|
||||
'hasSlice' => ShiftOnlineActions::hasSlice($order['code']),
|
||||
'hasDelete' => ShiftOnlineActions::hasDelete($order['code']),
|
||||
'status' => $order_status
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return [
|
||||
'status' => 'success',
|
||||
'place_name' => $place_name,
|
||||
'waited_count' => round($waited_count, 2),
|
||||
'waited_sum' => round($waited_sum, 2),
|
||||
'closed_count' => round($closed_count, 2),
|
||||
'closed_sum' => round($closed_sum, 2),
|
||||
'deleted_count' => round($deleted_count, 2),
|
||||
'deleted_sum' => round($deleted_sum, 2),
|
||||
'returned_count' => round($returned_count, 2),
|
||||
'returned_sum' => round($returned_sum, 2),
|
||||
'cancellations_count' => round($cancellations_count, 2),
|
||||
'cancellations_sum' => round($cancellations_sum, 2),
|
||||
'orders' => $orders_info
|
||||
];
|
||||
}
|
||||
$opened_orders_count = ShiftOnlineOrders::where('place_name', $places->name)
|
||||
->where('is_closed', 0)
|
||||
->where('is_deleted', 0)
|
||||
->where('who_open', '>', 0)
|
||||
->where('is_returned', 0)
|
||||
->count('id');
|
||||
$opened_orders_sum = ShiftOnlineOrders::where('place_name', $places->name)
|
||||
->where('is_closed', 0)
|
||||
->where('is_deleted', 0)
|
||||
->where('who_open', '>', 0)
|
||||
->where('is_returned', 0)
|
||||
->sum('order_sum');
|
||||
$opened_orders_client_count = ShiftOnlineOrders::where('place_name', $places->name)
|
||||
->where('is_closed', 0)
|
||||
->where('is_deleted', 0)
|
||||
->where('who_open', '>', 0)
|
||||
->where('is_returned', 0)
|
||||
->sum('client_count');
|
||||
|
||||
|
||||
$setting = Settings::getValue(10);
|
||||
$closed_orders = ShiftOnlineOrders::where('place_name', $places->name)
|
||||
->where('is_closed', 1)
|
||||
->where('is_deleted', 0)
|
||||
->where('who_open', '>', 0)
|
||||
->where('who_close', '>', 0)
|
||||
->get();
|
||||
foreach ($closed_orders as $closed_order) {
|
||||
$order_status = ShiftOnlineOrders::getOrderStatus($closed_order['code']);
|
||||
if ($closed_order['order_sum'] >= 0
|
||||
&& $closed_order['who_open'] > 0
|
||||
&& $closed_order['who_close'] > 0
|
||||
&& $closed_order['is_closed'] == 1
|
||||
&& $closed_order['is_deleted'] == 0
|
||||
&& $closed_order['is_returned'] == 1
|
||||
&& $closed_order['place_name'] != 'ДОСТАВКА') {
|
||||
$returned_items = ShiftOnlineOrders::getReturnedItems($closed_order['code']);
|
||||
$returned_sum = $returned_order_sum = $returned_count = 0;
|
||||
foreach ($returned_items as $returned_item) {
|
||||
$returned_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
|
||||
$returned_order_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
|
||||
$returned_count += $returned_item['count'];
|
||||
}
|
||||
$closed_orders_count += 1;
|
||||
$closed_orders_sum += round($closed_order['order_sum'], 2) - $returned_order_sum;
|
||||
$closed_orders_client_count += $closed_order['client_count'];
|
||||
}
|
||||
if ($setting > 0) {
|
||||
if ($closed_order['order_sum'] >= 0
|
||||
&& $closed_order['who_open'] > 0
|
||||
&& $closed_order['who_close'] > 0
|
||||
&& $closed_order['is_closed'] == 1
|
||||
&& $closed_order['is_deleted'] == 0
|
||||
&& $closed_order['is_returned'] == 0
|
||||
&& $closed_order['place_name'] != 'ДОСТАВКА') {
|
||||
$closed_orders_count += 1;
|
||||
$closed_orders_sum += $closed_order['order_sum'];
|
||||
$closed_orders_client_count += $closed_order['client_count'];
|
||||
}
|
||||
} else {
|
||||
if ($closed_order['order_sum'] >= 0
|
||||
&& $closed_order['who_open'] > 0
|
||||
&& $closed_order['who_close'] > 0
|
||||
&& $closed_order['is_closed'] == 1
|
||||
&& $closed_order['is_deleted'] == 0
|
||||
&& $closed_order['is_returned'] == 0
|
||||
&& $closed_order['place_name'] != 'ДОСТАВКА'
|
||||
&& $order_status != "Оплачен(*)") {
|
||||
$closed_orders_count += 1;
|
||||
$closed_orders_sum += $closed_order['order_sum'];
|
||||
$closed_orders_client_count += $closed_order['client_count'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return [
|
||||
'status' => 'success',
|
||||
'opened_orders_count' => round($opened_orders_count, 2),
|
||||
'opened_orders_sum' => round($opened_orders_sum, 2),
|
||||
'opened_orders_client_count' => round($opened_orders_client_count, 2),
|
||||
'closed_orders_count' => round($closed_orders_count, 2),
|
||||
'closed_orders_sum' => round($closed_orders_sum, 2),
|
||||
'closed_orders_client_count' => round($closed_orders_client_count, 2),
|
||||
];
|
||||
}
|
||||
}
|
||||
if ($type == 'places') {
|
||||
$setting = Settings::getValue(10);
|
||||
$opened_orders_count = $opened_orders_sum = $opened_orders_client_count = 0;
|
||||
if ($setting > 0) {
|
||||
$opened_orders_count = ShiftOnlineOrders::where('is_closed', 0)
|
||||
->where('is_deleted', 0)
|
||||
->where('who_open', '>', 0)
|
||||
->where('is_returned', 0)
|
||||
->count('id');
|
||||
$opened_orders_sum = ShiftOnlineOrders::where('is_closed', 0)
|
||||
->where('is_deleted', 0)
|
||||
->where('who_open', '>', 0)
|
||||
->where('is_returned', 0)
|
||||
->sum('order_sum');
|
||||
$opened_orders_client_count = ShiftOnlineOrders::where('is_closed', 0)
|
||||
->where('is_deleted', 0)
|
||||
->where('who_open', '>', 0)
|
||||
->where('is_returned', 0)
|
||||
->sum('client_count');
|
||||
} else {
|
||||
$opened_orders_count = ShiftOnlineOrders::where('is_closed', 0)
|
||||
->where('is_deleted', 0)
|
||||
->where('who_open', '>', 0)
|
||||
->where('is_returned', 0)
|
||||
->where('place_name', '<>', 'ДОСТАВКА')
|
||||
->count('id');
|
||||
$opened_orders_sum = ShiftOnlineOrders::where('is_closed', 0)
|
||||
->where('is_deleted', 0)
|
||||
->where('who_open', '>', 0)
|
||||
->where('is_returned', 0)
|
||||
->where('place_name', '<>', 'ДОСТАВКА')
|
||||
->sum('order_sum');
|
||||
$opened_orders_client_count = ShiftOnlineOrders::where('is_closed', 0)
|
||||
->where('is_deleted', 0)
|
||||
->where('who_open', '>', 0)
|
||||
->where('is_returned', 0)
|
||||
->where('place_name', '<>', 'ДОСТАВКА')
|
||||
->sum('client_count');
|
||||
}
|
||||
|
||||
$closed_orders = ShiftOnlineOrders::where('is_closed', 1)
|
||||
->where('is_deleted', 0)
|
||||
->where('who_open', '>', 0)
|
||||
->where('who_close', '>', 0)
|
||||
->get();
|
||||
$closed_orders_count = $closed_orders_sum = $closed_orders_client_count = 0;
|
||||
foreach ($closed_orders as $closed_order) {
|
||||
$order_status = ShiftOnlineOrders::getOrderStatus($closed_order['code']);
|
||||
if ($closed_order['order_sum'] >= 0
|
||||
&& $closed_order['who_open'] > 0
|
||||
&& $closed_order['who_close'] > 0
|
||||
&& $closed_order['is_closed'] == 1
|
||||
&& $closed_order['is_deleted'] == 0
|
||||
&& $closed_order['is_returned'] == 1
|
||||
&& $closed_order['place_name'] != 'ДОСТАВКА') {
|
||||
$returned_items = ShiftOnlineOrders::getReturnedItems($closed_order['code']);
|
||||
$returned_sum = $returned_order_sum = $returned_count = 0;
|
||||
foreach ($returned_items as $returned_item) {
|
||||
$returned_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
|
||||
$returned_order_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
|
||||
$returned_count += $returned_item['count'];
|
||||
}
|
||||
$closed_orders_count += 1;
|
||||
$closed_orders_sum += round($closed_order['order_sum'], 2) - $returned_order_sum;
|
||||
$closed_orders_client_count += $closed_order['client_count'];
|
||||
}
|
||||
if ($setting > 0) {
|
||||
if ($closed_order['order_sum'] >= 0
|
||||
&& $closed_order['who_open'] > 0
|
||||
&& $closed_order['who_close'] > 0
|
||||
&& $closed_order['is_closed'] == 1
|
||||
&& $closed_order['is_deleted'] == 0
|
||||
&& $closed_order['is_returned'] == 0
|
||||
&& $closed_order['place_name'] != 'ДОСТАВКА') {
|
||||
$closed_orders_count += 1;
|
||||
$closed_orders_sum += $closed_order['order_sum'];
|
||||
$closed_orders_client_count += $closed_order['client_count'];
|
||||
}
|
||||
} else {
|
||||
if ($closed_order['order_sum'] >= 0
|
||||
&& $closed_order['who_open'] > 0
|
||||
&& $closed_order['who_close'] > 0
|
||||
&& $closed_order['is_closed'] == 1
|
||||
&& $closed_order['is_deleted'] == 0
|
||||
&& $closed_order['is_returned'] == 0
|
||||
&& $closed_order['place_name'] != 'ДОСТАВКА'
|
||||
&& $order_status != "Оплачен(*)") {
|
||||
$closed_orders_count += 1;
|
||||
$closed_orders_sum += $closed_order['order_sum'];
|
||||
$closed_orders_client_count += $closed_order['client_count'];
|
||||
}
|
||||
}
|
||||
}
|
||||
return [
|
||||
'status' => 'success',
|
||||
'opened_orders_count' => round($opened_orders_count, 2),
|
||||
'opened_orders_sum' => round($opened_orders_sum, 2),
|
||||
'opened_orders_client_count' => round($opened_orders_client_count, 2),
|
||||
'closed_orders_count' => round($closed_orders_count, 2),
|
||||
'closed_orders_sum' => round($closed_orders_sum, 2),
|
||||
'closed_orders_client_count' => round($closed_orders_client_count, 2),
|
||||
];
|
||||
}
|
||||
|
||||
if ($type == 'full') {
|
||||
if (isset($input['staff_id'])) {
|
||||
$staff_id = $input['staff_id'];
|
||||
$orders = ShiftOnlineOrders::where('who_open', $staff_id)
|
||||
->where('full_sum', '>=', 0)
|
||||
->get();
|
||||
$orders_count = ShiftOnlineOrders::where('who_open', $staff_id)
|
||||
->where('full_sum', '>=', 0)
|
||||
->count();
|
||||
} elseif (isset($input['guests']) && $input['guests'] == true) {
|
||||
$orders = ShiftOnlineOrders::where('who_open', '>', 0)
|
||||
->where('full_sum', '>=', 0)
|
||||
->where('client_code', '<>', '')
|
||||
->get();
|
||||
$orders_count = ShiftOnlineOrders::where('who_open', '>', 0)
|
||||
->where('full_sum', '>=', 0)
|
||||
->where('client_code', '<>', '')
|
||||
->count();
|
||||
} elseif (isset($input['deleted']) && $input['deleted'] == true) {
|
||||
$deleted_orders = ShiftOnlineDeleted::select('order_code')->groupBy('order_code')->get();
|
||||
$deleted_orders_count = ShiftOnlineDeleted::select('order_code')->count();
|
||||
$deleted_orders_id = [];
|
||||
if ($deleted_orders_count > 0) {
|
||||
foreach ($deleted_orders as $deleted_order) {
|
||||
$deleted_orders_id[] = $deleted_order['order_code'];
|
||||
}
|
||||
}
|
||||
|
||||
$orders = ShiftOnlineOrders::whereIn('code', $deleted_orders_id)
|
||||
->where('who_open', '>', 0)
|
||||
->where('full_sum', '>=', 0)
|
||||
->get();
|
||||
$orders_count = $deleted_orders_count;
|
||||
} elseif (isset($input['discounts']) && $input['discounts'] == true) {
|
||||
$orders = ShiftOnlineOrders::where('who_open', '>', 0)
|
||||
->where('sale_sum', '>', 0)
|
||||
->where('full_sum', '>=', 0)
|
||||
->get();
|
||||
$orders_count = ShiftOnlineOrders::where('who_open', '>', 0)
|
||||
->where('sale_sum', '>', 0)
|
||||
->where('full_sum', '>=', 0)
|
||||
->count();
|
||||
} else {
|
||||
$orders = ShiftOnlineOrders::where('who_open', '>', 0)
|
||||
->where('full_sum', '>=', 0)
|
||||
->get();
|
||||
$orders_count = ShiftOnlineOrders::where('who_open', '>', 0)
|
||||
->where('full_sum', '>=', 0)
|
||||
->count();
|
||||
}
|
||||
$cancellations_count = $cancellations_sum = 0;
|
||||
$waited_count = $waited_sum = 0;
|
||||
$closed_count = $closed_sum = 0;
|
||||
$deleted_count = $deleted_sum = 0;
|
||||
$returned_count = $returned_sum = 0;
|
||||
$deleted_items_count = $deleted_items_sum = 0;
|
||||
$orders_info = [];
|
||||
|
||||
if ($orders_count > 0) {
|
||||
$setting = Settings::getValue(10);
|
||||
foreach ($orders as $order) {
|
||||
$order_status = ShiftOnlineOrders::getOrderStatus($order['code']);
|
||||
$returned_order_sum = 0;
|
||||
if ($order['order_sum'] >= 0
|
||||
&& $order['is_deleted'] > 0
|
||||
&& $order['check_number'] > 0
|
||||
&& $order['who_open'] > 0) {
|
||||
$cancellations_count += 1;
|
||||
$cancellations_sum += $order['order_sum'];
|
||||
}
|
||||
if ($setting > 0) {
|
||||
if ($order['order_sum'] >= 0
|
||||
&& $order['who_open'] > 0
|
||||
&& $order['who_close'] == 0) {
|
||||
$waited_count += 1;
|
||||
$waited_sum += $order['order_sum'];
|
||||
}
|
||||
} else {
|
||||
if ($order['order_sum'] >= 0
|
||||
&& $order['who_open'] > 0
|
||||
&& $order['who_close'] == 0
|
||||
&& $order['place_name'] != 'ДОСТАВКА') {
|
||||
$waited_count += 1;
|
||||
$waited_sum += $order['order_sum'];
|
||||
}
|
||||
}
|
||||
|
||||
if ($setting > 0) {
|
||||
if ($order['order_sum'] >= 0
|
||||
&& $order['who_open'] > 0
|
||||
&& $order['who_close'] > 0
|
||||
&& $order['is_closed'] == 1
|
||||
&& $order['is_deleted'] == 0
|
||||
&& $order['is_returned'] == 0
|
||||
&& $order['place_name'] != 'ДОСТАВКА') {
|
||||
$closed_count += 1;
|
||||
$closed_sum += $order['order_sum'];
|
||||
}
|
||||
} else {
|
||||
if ($order['order_sum'] >= 0
|
||||
&& $order['who_open'] > 0
|
||||
&& $order['who_close'] > 0
|
||||
&& $order['is_closed'] == 1
|
||||
&& $order['is_deleted'] == 0
|
||||
&& $order['is_returned'] == 0
|
||||
&& $order['place_name'] != 'ДОСТАВКА'
|
||||
&& $order_status != "Оплачен(*)") {
|
||||
$closed_count += 1;
|
||||
$closed_sum += $order['order_sum'];
|
||||
}
|
||||
}
|
||||
if ($setting > 0) {
|
||||
$deleted_items_count = ShiftOnlineDeleted::where('order_code', $order['code'])->sum('count');
|
||||
$deleted_items_sum = ShiftOnlineDeleted::selectRaw('sum(sale_price * count) as deleted_sum')
|
||||
->where('order_code', $order['code'])
|
||||
->first();
|
||||
$deleted_items_sum = $deleted_items_sum['deleted_sum'];
|
||||
$deleted_count += $deleted_items_count;
|
||||
$deleted_sum += $deleted_items_sum;
|
||||
} else {
|
||||
if ($order['place_name'] != 'ДОСТАВКА') {
|
||||
$deleted_items_count = ShiftOnlineDeleted::where('order_code', $order['code'])->sum('count');
|
||||
$deleted_items_sum = ShiftOnlineDeleted::selectRaw('sum(sale_price * count) as deleted_sum')
|
||||
->where('order_code', $order['code'])
|
||||
->first();
|
||||
$deleted_items_sum = $deleted_items_sum['deleted_sum'];
|
||||
$deleted_count += $deleted_items_count;
|
||||
$deleted_sum += $deleted_items_sum;
|
||||
}
|
||||
}
|
||||
if ($setting > 0) {
|
||||
if ($order['order_sum'] >= 0
|
||||
&& $order['who_open'] > 0
|
||||
&& $order['who_close'] > 0
|
||||
&& $order['is_closed'] == 1
|
||||
&& $order['is_deleted'] == 0
|
||||
&& $order['is_returned'] == 1
|
||||
&& $order['place_name'] != 'ДОСТАВКА') {
|
||||
$returned_items = ShiftOnlineOrders::getReturnedItems($order['code']);
|
||||
foreach ($returned_items as $returned_item) {
|
||||
$returned_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
|
||||
$returned_order_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
|
||||
$returned_count += $returned_item['count'];
|
||||
}
|
||||
$closed_count += 1;
|
||||
$closed_sum += round($order['order_sum'], 2) - $returned_order_sum;
|
||||
}
|
||||
} else {
|
||||
if ($order['order_sum'] >= 0
|
||||
&& $order['who_open'] > 0
|
||||
&& $order['who_close'] > 0
|
||||
&& $order['is_closed'] == 1
|
||||
&& $order['is_deleted'] == 0
|
||||
&& $order['is_returned'] == 1) {
|
||||
$returned_items = ShiftOnlineOrders::getReturnedItems($order['code']);
|
||||
foreach ($returned_items as $returned_item) {
|
||||
$returned_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
|
||||
$returned_order_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
|
||||
$returned_count += $returned_item['count'];
|
||||
}
|
||||
$closed_count += 1;
|
||||
$closed_sum += round($order['order_sum'], 2) - $returned_order_sum;
|
||||
}
|
||||
}
|
||||
|
||||
if ($setting == 1) {
|
||||
$orders_info[] = array(
|
||||
'id' => $order['code'],
|
||||
'place' => $order['place_name'],
|
||||
'table' => $order['table_name'],
|
||||
'opened' => $order['opened'],
|
||||
'closed' => $order['closed'] != '0000-00-00 00:00:00' ? $order['closed'] : false,
|
||||
'who_open' => Staff::getName($order['who_open']),
|
||||
'who_close' => $order['who_close'] != 0 ? Staff::getName($order['who_close']) : false,
|
||||
'client_name' => $order['client_code'] != '' ? Client::getName($order['client_code']) : false,
|
||||
'sum' => round($order['order_sum'], 2) - $returned_order_sum,
|
||||
'sale_sum' => round($order['sale_sum'], 2),
|
||||
'full_sum' => round($order['full_sum'], 2) - $returned_order_sum,
|
||||
'preCheck_count' => ShiftOnlineActions::getPreCheckCount($order['code']),
|
||||
'is_printed_before_edit' => ShiftOnlineActions::isPrintedBeforeEdit($order['code']),
|
||||
'hasMove' => ShiftOnlineActions::hasMove($order['code']),
|
||||
'hasMerge' => ShiftOnlineActions::hasMerge($order['code']),
|
||||
'hasSlice' => ShiftOnlineActions::hasSlice($order['code']),
|
||||
'hasDelete' => ShiftOnlineActions::hasDelete($order['code']),
|
||||
'deleted_items_count' => $deleted_items_count,
|
||||
'deleted_items_sum' => $deleted_items_sum,
|
||||
'title' => '',
|
||||
'status' => $order_status
|
||||
);
|
||||
|
||||
|
||||
} elseif ($setting == 0 && $order_status != "Доставка" && $order_status != "Оплачен(*)" && $order['place_name'] != "ДОСТАВКА") {
|
||||
$orders_info[] = array(
|
||||
'id' => $order['code'],
|
||||
'place' => $order['place_name'],
|
||||
'table' => $order['table_name'],
|
||||
'opened' => $order['opened'],
|
||||
'closed' => $order['closed'] != '0000-00-00 00:00:00' ? $order['closed'] : false,
|
||||
'who_open' => Staff::getName($order['who_open']),
|
||||
'who_close' => $order['who_close'] != 0 ? Staff::getName($order['who_close']) : false,
|
||||
'client_name' => $order['client_code'] != '' ? Client::getName($order['client_code']) : false,
|
||||
'sum' => round($order['order_sum'], 2) - $returned_order_sum,
|
||||
'sale_sum' => round($order['sale_sum'], 2),
|
||||
'full_sum' => round($order['full_sum'], 2) - $returned_order_sum,
|
||||
'preCheck_count' => ShiftOnlineActions::getPreCheckCount($order['code']),
|
||||
'is_printed_before_edit' => ShiftOnlineActions::isPrintedBeforeEdit($order['code']),
|
||||
'hasMove' => ShiftOnlineActions::hasMove($order['code']),
|
||||
'hasMerge' => ShiftOnlineActions::hasMerge($order['code']),
|
||||
'hasSlice' => ShiftOnlineActions::hasSlice($order['code']),
|
||||
'hasDelete' => ShiftOnlineActions::hasDelete($order['code']),
|
||||
'deleted_items_count' => $deleted_items_count,
|
||||
'deleted_items_sum' => $deleted_items_sum,
|
||||
'title' => '',
|
||||
'status' => $order_status
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return [
|
||||
'status' => 'success',
|
||||
'waited_count' => round($waited_count, 2),
|
||||
'waited_sum' => round($waited_sum, 2),
|
||||
'closed_count' => round($closed_count, 2),
|
||||
'closed_sum' => round($closed_sum, 2),
|
||||
'deleted_count' => round($deleted_count, 2),
|
||||
'deleted_sum' => round($deleted_sum, 2),
|
||||
'returned_count' => round($returned_count, 2),
|
||||
'returned_sum' => round($returned_sum, 2),
|
||||
'cancellations_count' => round($cancellations_count, 2),
|
||||
'cancellations_sum' => round($cancellations_sum, 2),
|
||||
'orders' => $orders_info
|
||||
];
|
||||
}
|
||||
|
||||
if ($type == 'dashboard') {
|
||||
$orders = ShiftOnlineOrders::where('who_open', '>', 0)
|
||||
->where('full_sum', '>=', 0)
|
||||
->get();
|
||||
$cancellations_count = $cancellations_sum = 0;
|
||||
$waited_count = $waited_sum = 0;
|
||||
$closed_count = $closed_sum = 0;
|
||||
$deleted_count = $deleted_sum = 0;
|
||||
$returned_count = $returned_sum = 0;
|
||||
$setting = Settings::getValue(10);
|
||||
foreach ($orders as $order) {
|
||||
$order_status = ShiftOnlineOrders::getOrderStatus($order['code']);
|
||||
$returned_order_sum = 0;
|
||||
if ($order['order_sum'] >= 0
|
||||
&& $order['is_deleted'] > 0
|
||||
&& $order['check_number'] > 0
|
||||
&& $order['who_open'] > 0) {
|
||||
$cancellations_count += 1;
|
||||
$cancellations_sum += $order['order_sum'];
|
||||
}
|
||||
if ($setting > 0) {
|
||||
if ($order['order_sum'] >= 0
|
||||
&& $order['who_open'] > 0
|
||||
&& $order['who_close'] == 0) {
|
||||
$waited_count += 1;
|
||||
$waited_sum += $order['order_sum'];
|
||||
}
|
||||
} else {
|
||||
if ($order['order_sum'] >= 0
|
||||
&& $order['who_open'] > 0
|
||||
&& $order['who_close'] == 0
|
||||
&& $order['place_name'] != 'ДОСТАВКА') {
|
||||
$waited_count += 1;
|
||||
$waited_sum += $order['order_sum'];
|
||||
}
|
||||
}
|
||||
|
||||
if ($setting > 0) {
|
||||
if ($order['order_sum'] >= 0
|
||||
&& $order['who_open'] > 0
|
||||
&& $order['who_close'] > 0
|
||||
&& $order['is_closed'] == 1
|
||||
&& $order['is_deleted'] == 0
|
||||
&& $order['is_returned'] == 0
|
||||
&& $order['place_name'] != 'ДОСТАВКА') {
|
||||
$closed_count += 1;
|
||||
$closed_sum += $order['order_sum'];
|
||||
}
|
||||
} else {
|
||||
if ($order['order_sum'] >= 0
|
||||
&& $order['who_open'] > 0
|
||||
&& $order['who_close'] > 0
|
||||
&& $order['is_closed'] == 1
|
||||
&& $order['is_deleted'] == 0
|
||||
&& $order['is_returned'] == 0
|
||||
&& $order['place_name'] != 'ДОСТАВКА'
|
||||
&& $order_status != "Оплачен(*)") {
|
||||
$closed_count += 1;
|
||||
$closed_sum += $order['order_sum'];
|
||||
}
|
||||
}
|
||||
if ($setting > 0) {
|
||||
$deleted_items_count = ShiftOnlineDeleted::where('order_code', $order['code'])->sum('count');
|
||||
$deleted_items_sum = ShiftOnlineDeleted::selectRaw('sum(sale_price * count) as deleted_sum')
|
||||
->where('order_code', $order['code'])
|
||||
->first();
|
||||
$deleted_items_sum = $deleted_items_sum['deleted_sum'];
|
||||
$deleted_count += $deleted_items_count;
|
||||
$deleted_sum += $deleted_items_sum;
|
||||
|
||||
} else {
|
||||
if ($order['place_name'] != 'ДОСТАВКА') {
|
||||
$deleted_items_count = ShiftOnlineDeleted::where('order_code', $order['code'])->sum('count');
|
||||
$deleted_items_sum = ShiftOnlineDeleted::selectRaw('sum(sale_price * count) as deleted_sum')
|
||||
->where('order_code', $order['code'])
|
||||
->first();
|
||||
$deleted_items_sum = $deleted_items_sum['deleted_sum'];
|
||||
$deleted_count += $deleted_items_count;
|
||||
$deleted_sum += $deleted_items_sum;
|
||||
}
|
||||
}
|
||||
if ($setting > 0) {
|
||||
if ($order['order_sum'] >= 0
|
||||
&& $order['who_open'] > 0
|
||||
&& $order['who_close'] > 0
|
||||
&& $order['is_closed'] == 1
|
||||
&& $order['is_deleted'] == 0
|
||||
&& $order['is_returned'] == 1
|
||||
&& $order['place_name'] != 'ДОСТАВКА') {
|
||||
$returned_items = ShiftOnlineOrders::getReturnedItems($order['code']);
|
||||
foreach ($returned_items as $returned_item) {
|
||||
$returned_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
|
||||
$returned_order_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
|
||||
$returned_count += $returned_item['count'];
|
||||
}
|
||||
$closed_count += 1;
|
||||
$closed_sum += round($order['order_sum'], 2) - $returned_order_sum;
|
||||
}
|
||||
} else {
|
||||
if ($order['order_sum'] >= 0
|
||||
&& $order['who_open'] > 0
|
||||
&& $order['who_close'] > 0
|
||||
&& $order['is_closed'] == 1
|
||||
&& $order['is_deleted'] == 0
|
||||
&& $order['is_returned'] == 1) {
|
||||
$returned_items = ShiftOnlineOrders::getReturnedItems($order['code']);
|
||||
foreach ($returned_items as $returned_item) {
|
||||
$returned_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
|
||||
$returned_order_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
|
||||
$returned_count += $returned_item['count'];
|
||||
}
|
||||
$closed_count += 1;
|
||||
$closed_sum += round($order['order_sum'], 2) - $returned_order_sum;
|
||||
}
|
||||
}
|
||||
}
|
||||
return [
|
||||
'status' => 'success',
|
||||
'waited_count' => round($waited_count, 2),
|
||||
'waited_sum' => round($waited_sum, 2),
|
||||
'closed_count' => round($closed_count, 2),
|
||||
'closed_sum' => round($closed_sum, 2),
|
||||
'deleted_count' => round($deleted_count, 2),
|
||||
'deleted_sum' => round($deleted_sum, 2),
|
||||
'returned_count' => round($returned_count, 2),
|
||||
'returned_sum' => round($returned_sum, 2),
|
||||
'cancellations_count' => round($cancellations_count, 2),
|
||||
'cancellations_sum' => round($cancellations_sum, 2)
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($method == 'map') {
|
||||
$roommap = [];
|
||||
if (isset($input['type'])) {
|
||||
$type = $input['type'];
|
||||
if ($type == 'places') {
|
||||
$places = Places::all();
|
||||
return [
|
||||
'status' => 'success',
|
||||
'places' => $places,
|
||||
];
|
||||
}
|
||||
if ($type == 'place' && isset($input['id'])) {
|
||||
$place = Places::find($input['id']);
|
||||
$place_name = $place->name;
|
||||
$place_image = $place->image;
|
||||
$tables = Tables::where('place_id', $input['id'])
|
||||
->get();
|
||||
foreach ($tables as $table) {
|
||||
$opened_order_sum = ShiftOnlineOrders::where('place_name', $place_name)
|
||||
->where('table_name', strval($table['table_id']))
|
||||
->where('is_closed', 0)
|
||||
->where('is_deleted', 0)
|
||||
->where('who_open', '>', 0)
|
||||
->where('is_returned', 0)
|
||||
->sum('order_sum');
|
||||
$orders_count = ShiftOnlineOrders::where('place_name', $place_name)
|
||||
->where('table_name', strval($table['table_id']))
|
||||
->where('who_open', '>', 0)
|
||||
->count();
|
||||
$tables_info[] = array(
|
||||
'id' => $table['id'],
|
||||
'name' => $table['name'],
|
||||
'place_id' => $table['place_id'],
|
||||
'table_id' => $table['table_id'],
|
||||
'type' => $table['type'],
|
||||
'width' => $table['width'],
|
||||
'height' => $table['height'],
|
||||
'x' => $table['x'],
|
||||
'y' => $table['y'],
|
||||
'sum' => floatval($opened_order_sum),
|
||||
'count' => $orders_count
|
||||
);
|
||||
}
|
||||
return [
|
||||
'status' => 'success',
|
||||
'place_id' => $input['id'],
|
||||
'place' => $place_name,
|
||||
'place_image' => $place_image,
|
||||
'tables' => $tables_info,
|
||||
];
|
||||
}
|
||||
if ($type == 'full') {
|
||||
$places = Places::all();
|
||||
foreach ($places as $place) {
|
||||
$tables = Tables::where('place_id', $place['id'])
|
||||
->get();
|
||||
$roommap[] = array(
|
||||
'place_id' => $place['id'],
|
||||
'place_name' => $place['name'],
|
||||
'tables' => $tables
|
||||
);
|
||||
}
|
||||
return [
|
||||
'status' => 'success',
|
||||
'roommap' => $roommap,
|
||||
];
|
||||
}
|
||||
}
|
||||
return [
|
||||
'status' => 'success',
|
||||
'roommap' => $roommap,
|
||||
];
|
||||
}
|
||||
} else {
|
||||
return [
|
||||
'status' => 'success',
|
||||
'message' => 'Ошибка данных запроса',
|
||||
];
|
||||
}
|
||||
|
||||
return ['status' => 'success',
|
||||
'message' => 'Ошибка данных запроса',];
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Commands;
|
||||
|
||||
use App\Component\Models\Base;
|
||||
use App\Component\Models\Places;
|
||||
use App\Component\Models\Tables;
|
||||
use App\Component\Models\Terminal;
|
||||
@@ -11,6 +12,7 @@ use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Mtownsend\XmlToArray\XmlToArray;
|
||||
|
||||
class GETRoomMapFile extends HRCCommand implements HRCCommandInterface
|
||||
{
|
||||
@@ -74,19 +76,79 @@ class GETRoomMapFile extends HRCCommand implements HRCCommandInterface
|
||||
'message' => 'Файлы не найдены'
|
||||
];
|
||||
}
|
||||
$objXmlDocument = simplexml_load_file($places_file);
|
||||
$objJsonDocument = json_encode($objXmlDocument);
|
||||
$xmlPlaces = json_decode($objJsonDocument, TRUE);
|
||||
|
||||
$xmlPlaces = XmlToArray::convert(file_get_contents($places_file));
|
||||
Schema::disableForeignKeyConstraints();
|
||||
DB::table('place_tables')->truncate();
|
||||
DB::table('places')->truncate();
|
||||
Schema::enableForeignKeyConstraints();
|
||||
if (count($xmlPlaces['Place']) > 2) {
|
||||
foreach ($xmlPlaces['Place'] as $xmlPlace) {
|
||||
if (count($xmlPlaces['Place']) > 1) {
|
||||
$places = $xmlPlaces['Place'];
|
||||
foreach ($places as $place) {
|
||||
$newPlace = new Places;
|
||||
$newPlace->name = $xmlPlace['@attributes']['name'];
|
||||
$newPlace->name = $place['@attributes']['name'];
|
||||
if ($place['@attributes']['image'] != "false") {
|
||||
$newPlace->image = base64_encode(Base::customBase64Decode($place['@attributes']['image']));
|
||||
$newPlace->save();
|
||||
$image = $newPlace->image;
|
||||
$imageName = "place-" . $newPlace->id . ".png";
|
||||
file_put_contents($dirname . $imageName, base64_decode($image));
|
||||
} else {
|
||||
$newPlace->save();
|
||||
}
|
||||
$tables = $place['Table'];
|
||||
if (count($tables) > 1) {
|
||||
foreach ($tables as $table) {
|
||||
$newTable = new Tables;
|
||||
$newTable->name = $table['@attributes']['text'];
|
||||
$newTable->table_id = intval($table['@attributes']['number']);
|
||||
$newTable->place_id = $newPlace['id'];
|
||||
$newTable->width = $table['@attributes']['width'];
|
||||
$newTable->height = $table['@attributes']['height'];
|
||||
$newTable->x = $table['@attributes']['y'];
|
||||
$newTable->y = $table['@attributes']['x'];
|
||||
if (isset($table['@attributes']['type'])) {
|
||||
$newTable->type = intval($table['@attributes']['type']);
|
||||
} else {
|
||||
$newTable->type = 0;
|
||||
}
|
||||
$newTable->save();
|
||||
}
|
||||
} else {
|
||||
$table = $place['Table'];
|
||||
$newTable = new Tables;
|
||||
$newTable->name = $table['@attributes']['text'];
|
||||
$newTable->table_id = intval($table['@attributes']['number']);
|
||||
$newTable->place_id = $newPlace['id'];
|
||||
$newTable->width = $table['@attributes']['width'];
|
||||
$newTable->height = $table['@attributes']['height'];
|
||||
$newTable->x = $table['@attributes']['y'];
|
||||
$newTable->y = $table['@attributes']['x'];
|
||||
if (isset($table['@attributes']['type'])) {
|
||||
$newTable->type = intval($table['@attributes']['type']);
|
||||
} else {
|
||||
$newTable->type = 0;
|
||||
}
|
||||
$newTable->save();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$place = $xmlPlaces['Place'];
|
||||
$newPlace = new Places;
|
||||
$newPlace->name = $place['@attributes']['name'];
|
||||
if ($place['@attributes']['image'] != "false") {
|
||||
$newPlace->image = $place['@attributes']['image'];
|
||||
$newPlace->save();
|
||||
$tables = $xmlPlace['Table'];
|
||||
$image = $newPlace->image;
|
||||
$image = str_replace(array('\r\n', '\r', '\n'), '', $image);
|
||||
$image = str_replace(' ', '', $image);
|
||||
$imageName = "place-" . $newPlace->id . ".png";
|
||||
file_put_contents($dirname . $imageName, base64_decode($image));
|
||||
} else {
|
||||
$newPlace->save();
|
||||
}
|
||||
$tables = $place['Table'];
|
||||
if (count($tables) > 1) {
|
||||
foreach ($tables as $table) {
|
||||
$newTable = new Tables;
|
||||
$newTable->name = $table['@attributes']['text'];
|
||||
@@ -103,17 +165,8 @@ class GETRoomMapFile extends HRCCommand implements HRCCommandInterface
|
||||
}
|
||||
$newTable->save();
|
||||
}
|
||||
return [
|
||||
'status' => 'success',
|
||||
'places' => $xmlPlaces
|
||||
];
|
||||
}
|
||||
} else {
|
||||
$newPlace = new Places;
|
||||
$newPlace->name = $xmlPlaces['Place']['@attributes']['name'];
|
||||
$newPlace->save();
|
||||
$tables = $xmlPlaces['Place']['Table'];
|
||||
foreach ($tables as $table) {
|
||||
} else {
|
||||
$table = $place['Table'];
|
||||
$newTable = new Tables;
|
||||
$newTable->name = $table['@attributes']['text'];
|
||||
$newTable->table_id = intval($table['@attributes']['number']);
|
||||
@@ -129,11 +182,10 @@ class GETRoomMapFile extends HRCCommand implements HRCCommandInterface
|
||||
}
|
||||
$newTable->save();
|
||||
}
|
||||
return [
|
||||
'status' => 'success',
|
||||
'places' => $xmlPlaces
|
||||
];
|
||||
}
|
||||
|
||||
return [
|
||||
'status' => 'success',
|
||||
'places' => $xmlPlaces
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -28,6 +28,8 @@ class GETSettings extends HRCCommand implements HRCCommandInterface
|
||||
}
|
||||
|
||||
$out[] = array(
|
||||
'id' => $terminal['id'],
|
||||
'name' => $terminal['name'],
|
||||
'work_code' => $terminal['work_code'],
|
||||
'work_group' => $terminal['work_group'],
|
||||
'soft' => $terminal['soft'],
|
||||
|
||||
@@ -24,6 +24,7 @@ class GETTopDishes extends HRCCommand implements HRCCommandInterface {
|
||||
->where('is_returned', 0)
|
||||
->where('is_deleted', 0)
|
||||
->get();
|
||||
$orders = [];
|
||||
foreach ($allOrders as $order) {
|
||||
$orders[] = array($order['code']);
|
||||
}
|
||||
|
||||
43
commands/POSTTerminals.php
Normal file
43
commands/POSTTerminals.php
Normal file
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
namespace App\Commands;
|
||||
|
||||
use App\Component\Models\Terminal;
|
||||
use App\Console\Commands\HRCCommand;
|
||||
use App\Console\Commands\HRCCommandInterface;
|
||||
|
||||
class POSTTerminals extends HRCCommand implements HRCCommandInterface
|
||||
{
|
||||
protected $signature = 'postterminals';
|
||||
|
||||
public function command($input, $output = null)
|
||||
{
|
||||
|
||||
if (isset($input['method'])) {
|
||||
$method = $input['method'];
|
||||
if ($method == 'update') {
|
||||
if (isset($input['data'])) {
|
||||
$data = $input['data'];
|
||||
$data = json_decode(base64_decode(urldecode($data)), true);
|
||||
$terminals = Terminal::get();
|
||||
foreach ($terminals as $terminal) {
|
||||
if ($terminal['work_group'] == $data['work_group']) {
|
||||
$item = Terminal::find($terminal['id']);
|
||||
$item->name = $data['name'];
|
||||
$item->save();
|
||||
}
|
||||
}
|
||||
$terminals = Terminal::get();
|
||||
return [
|
||||
'status' => 'success',
|
||||
'terminals' => $terminals
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
return [
|
||||
'status' => 'fail',
|
||||
'error_message' => 'Проверьте введенные данные',
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user