Fixed reports
This commit is contained in:
miroman-afk
2023-05-02 15:21:54 +03:00
parent 70120653f7
commit fb46c8e739
78 changed files with 21233 additions and 1892 deletions

256
commands/GETDashboard.php Normal file
View File

@@ -0,0 +1,256 @@
<?php
namespace App\Commands;
use App\Component\Models\Client;
use App\Component\Models\Dishes;
use App\Component\Models\Reasons;
use App\Component\Models\ShiftOnlineActions;
use App\Component\Models\ShiftOnlineDeleted;
use App\Component\Models\ShiftOnlineOrders;
use App\Component\Models\Shifts;
use App\Component\Models\Staff;
use App\Console\Commands\HRCCommand;
use App\Console\Commands\HRCCommandInterface;
use Carbon\Carbon;
class GETDashboard extends HRCCommand implements HRCCommandInterface
{
protected $signature = 'getdashboard';
public function command($input, $output = null)
{
if (isset($input['method'])) {
if (isset($input['more'])) {
$more = $input['more'];
} else {
$more = false;
}
if (isset($input['items'])) {
if (isset($input['order_id'])) {
$order_id = $input['order_id'];
} else {
return [
'status' => 'success',
'message' => 'Проверьте введенные данные'
];
}
$items = $input['items'];
} else {
$items = false;
}
if (isset($input['type'])) {
$type = $input['type'];
} else {
$type = false;
}
$method = $input['method'];
} else {
return [
'status' => 'success',
'message' => 'Проверьте введенные данные'
];
}
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;
}
if ($more) {
$deleted_items = ShiftOnlineDeleted::select('order_code')
->selectRaw('SUM(count * sale_price) as sum')
->groupBy('order_code')
->get();
if ($count > 0) {
foreach ($deleted_items as $deleted_item) {
$order = ShiftOnlineOrders::select('opened', 'closed')
->where('code', $deleted_item['order_code'])
->first();
$closed = $order['closed'];
if ($closed == '0000-00-00 00:00:00') {
$closed = '30.12.1899';
}
$orders[] = array(
'number' => $deleted_item['order_code'],
'opened' => $order['opened'],
'closed' => $closed,
'deleted_sum' => round($deleted_item['sum'], 2)
);
}
} else {
$orders = [];
}
return [
'status' => 'success',
'title' => 'Подробнее об удаленных',
'total_sum' => round($sum, 2),
'total_count' => $count,
'deleted_orders' => $orders
];
}
if ($items) {
$all_sum = $all_count = 0;
$deleted_items = ShiftOnlineDeleted::where('order_code', $order_id)
->get();
if ($count > 0) {
foreach ($deleted_items as $deleted_item) {
$order = ShiftOnlineActions::where('order_code', $deleted_item['order_code'])
->where('type_action', 5)
->first();
$out_items[] = array(
'dish' => Dishes::getName($deleted_item['menu_code']),
'time' => $order['time'],
'reason' => Reasons::getName($order['reason']),
'count' => $deleted_item['count'],
'sale_price' => $deleted_item['count'] * $deleted_item['sale_price'],
'who_deleted' => Staff::getName($order['who'])
);
$all_sum += $deleted_item['count'] * $deleted_item['sale_price'];
$all_count += $deleted_item['count'];
}
} else {
$out_items = [];
}
return [
'status' => 'success',
'code' => $order_id,
'all_sum' => round($all_sum, 2),
'all_count' => round($all_count, 3),
'items' => $out_items
];
}
return [
'status' => 'success',
'sum' => round($sum, 2),
'count' => $count
];
}
if ($method == 'guests') {
if ($type == 'median') {
$data = [];
$orders = ShiftOnlineOrders::where('is_waited', 1)
->where('is_deleted', 0)
->get();
if (isset($orders)) {
foreach ($orders as $order) {
$originalTime = $order['opened'];
$newTime = Carbon::createFromFormat('Y-m-d H:i:s', $originalTime)->format('d.m.Y H:i:s');
$data[] = array(
'time' => $newTime,
'count' => $order['client_count']
);
}
}
return [
'status' => 'success',
'data' => $data
];
}
if ($type == 'more') {
$clientsIDS = ShiftOnlineOrders::select('client_code')
->where('is_deleted', 0)
->where('is_returned', 0)
->where('who_open', '<>', 0)
->where('client_code', '<>', '')
->groupBy('client_code')
->get();
$clientsOrdersCount = ShiftOnlineOrders::select('client_code')
->where('is_deleted', 0)
->where('is_returned', 0)
->where('who_open', '<>', 0)
->where('client_code', '<>', '')
->groupBy('client_code')
->count();
if ($clientsOrdersCount > 0) {
foreach ($clientsIDS as $clientsID) {
$orders_info = ShiftOnlineOrders::where('client_code', $clientsID['client_code'])
->where('is_deleted', 0)
->where('is_returned', 0)
->where('who_open', '<>', 0)
->get();
$clientName = Client::getName($clientsID['client_code']);
$clientOrder[$clientName] = [];
foreach ($orders_info as $order_info) {
if ($order_info['closed'] == '0000-00-00 00:00:00') {
$closed = false;
} else {
$closed = $order_info['closed'];
}
$order = array(
'number' => $order_info['code'],
'opened' => $order_info['opened'],
'closed' => $closed,
'sum' => $order_info['order_sum']
);
array_push($clientOrder[$clientName], $order);
}
}
foreach ($clientOrder as $key => $oInfo) {
$out[] = array(
'name' => $key,
'orders' => $oInfo
);
}
return [
'status' => 'success',
'title' => 'Подробнее о заказах гостей',
'clients' => $out
];
} else {
return [
'status' => 'success',
'title' => 'Подробнее о заказах гостей',
'clients' => []
];
}
}
$guests = $namedGuests = $totalSum = 0;
$orders = ShiftOnlineOrders::where('is_waited', 1)
->where('is_deleted', 0)
->get();
if (isset($orders)) {
foreach ($orders as $order) {
$guests += $order['client_count'];
$totalSum += $order['order_sum'];
if ($order['client_code'] != '') {
$namedGuests += 1;
}
}
}
return [
'status' => 'success',
'namedGuests' => $namedGuests,
'guestsCount' => $guests,
'totalSum' => round($totalSum, 2)
];
}
if ($method == 'info') {
$response['status'] = 'success';
$response['exists'] = 'false';
$shifts = Shifts::first();
if (isset($shifts)) {
$response['exists'] = true;
$response['opened'] = $shifts['opened'];
$response['open'] = Staff::getName($shifts['who_open']);
$response['z_number'] = $shifts['z_number'];
if ($shifts['who_close'] > 0) {
$response['closed'] = $shifts['closed'];
$response['close'] = Staff::getName($shifts['who_close']);
}
}
return $response;
}
}
}