822 lines
53 KiB
PHP
822 lines
53 KiB
PHP
<?php
|
|
|
|
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
|
|
{
|
|
protected $signature = 'getroommap';
|
|
|
|
public function command($input, $output = null)
|
|
{
|
|
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',
|
|
'message' => 'Ошибка данных запроса',];
|
|
}
|
|
} |