20-02-2026
This commit is contained in:
parent
a8b395e20d
commit
a00c42e770
252 changed files with 28785 additions and 8907 deletions
|
|
@ -1,19 +1,14 @@
|
|||
<?php
|
||||
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Carbon;
|
||||
use Request;
|
||||
use App\Services\Payment;
|
||||
use App\Models\UserInvoice;
|
||||
use App\Services\HTMLHelper;
|
||||
use App\Models\UserSalesVolume;
|
||||
use App\Services\BusinessPlan\SalesPointsVolume;
|
||||
use App\Services\HTMLHelper;
|
||||
use Request;
|
||||
|
||||
class BusinessPointsController extends Controller
|
||||
{
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('admin');
|
||||
|
|
@ -26,7 +21,6 @@ class BusinessPointsController extends Controller
|
|||
->groupBy('user_id')->join('user_accounts', 'account_id', '=', 'user_accounts.id')
|
||||
->select('users.id', 'users.email', 'user_accounts.first_name', 'user_accounts.last_name')->get();
|
||||
|
||||
|
||||
$this->setFilterVars();
|
||||
$data = [
|
||||
'filter_months' => HTMLHelper::getTransMonths(),
|
||||
|
|
@ -34,37 +28,40 @@ class BusinessPointsController extends Controller
|
|||
'filter_members' => $filter_members,
|
||||
'filter_status_types' => UserSalesVolume::getTransStatusType(),
|
||||
|
||||
|
||||
];
|
||||
|
||||
return view('admin.business.points', $data);
|
||||
}
|
||||
|
||||
public function store()
|
||||
{
|
||||
$data = Request::all();
|
||||
if (!isset($data['action'])) {
|
||||
if (! isset($data['action'])) {
|
||||
return back();
|
||||
}
|
||||
if (!isset($data['change_member_key']) || $data['change_member_key'] !== config('mivita.edit_data_pass')) {
|
||||
if (! isset($data['change_member_key']) || $data['change_member_key'] !== config('mivita.edit_data_pass')) {
|
||||
\Session()->flash('alert-error', 'Das Passwort ist falsch.');
|
||||
|
||||
return back();
|
||||
}
|
||||
if (!isset($data['is_checked_action'])) {
|
||||
if (! isset($data['is_checked_action'])) {
|
||||
\Session()->flash('alert-error', 'Änderung nicht bestätigt');
|
||||
|
||||
return back();
|
||||
}
|
||||
|
||||
if ($data['action'] === 'add_user_sales_volume') {
|
||||
SalesPointsVolume::addSalesPointsVolume($data);
|
||||
|
||||
return back();
|
||||
}
|
||||
|
||||
if ($data['action'] === 'edit_user_sales_volume') {
|
||||
SalesPointsVolume::editSalesPointsVolume($data);
|
||||
|
||||
return back();
|
||||
}
|
||||
|
||||
|
||||
return redirect(route('admin_business_points'));
|
||||
}
|
||||
|
||||
|
|
@ -74,34 +71,35 @@ class BusinessPointsController extends Controller
|
|||
$month = Request::get('points_filter_month');
|
||||
$year = Request::get('points_filter_year');
|
||||
|
||||
if (!$user_id) {
|
||||
if (! $user_id) {
|
||||
\Session()->flash('alert-error', 'Kein Berater ausgewählt.');
|
||||
|
||||
return back();
|
||||
}
|
||||
|
||||
if (!$month || !$year) {
|
||||
if (! $month || ! $year) {
|
||||
\Session()->flash('alert-error', 'Monat und Jahr müssen angegeben sein.');
|
||||
|
||||
return back();
|
||||
}
|
||||
|
||||
try {
|
||||
SalesPointsVolume::reCalculateSalesPointsVolume($user_id, $month, $year);
|
||||
\Session()->flash('alert-success', 'Punkte für den ausgewählten Berater im Monat ' . str_pad($month, 2, "0", STR_PAD_LEFT) . '/' . $year . ' wurden erfolgreich neu berechnet.');
|
||||
\Session()->flash('alert-success', 'Punkte für den ausgewählten Berater im Monat '.str_pad($month, 2, '0', STR_PAD_LEFT).'/'.$year.' wurden erfolgreich neu berechnet.');
|
||||
} catch (\Exception $e) {
|
||||
\Session()->flash('alert-error', 'Fehler bei der Neuberechnung: ' . $e->getMessage());
|
||||
\Session()->flash('alert-error', 'Fehler bei der Neuberechnung: '.$e->getMessage());
|
||||
}
|
||||
|
||||
return back();
|
||||
}
|
||||
|
||||
|
||||
private function setFilterVars()
|
||||
{
|
||||
|
||||
if (!session('points_filter_month')) {
|
||||
if (! session('points_filter_month')) {
|
||||
session(['points_filter_month' => intval(date('m'))]);
|
||||
}
|
||||
if (!session('points_filter_year')) {
|
||||
if (! session('points_filter_year')) {
|
||||
session(['points_filter_year' => intval(date('Y'))]);
|
||||
}
|
||||
|
||||
|
|
@ -120,7 +118,7 @@ class BusinessPointsController extends Controller
|
|||
{
|
||||
$this->setFilterVars();
|
||||
|
||||
//$query = UserSalesVolume::with('user', 'user.account')->with('shopping_order')->select('user_sales_volumes.*')
|
||||
// $query = UserSalesVolume::with('user', 'user.account')->with('shopping_order')->select('user_sales_volumes.*')
|
||||
$query = UserSalesVolume::join('users', 'user_id', '=', 'users.id')->join('user_accounts', 'account_id', '=', 'user_accounts.id')
|
||||
->select('user_sales_volumes.*', 'users.email', 'user_accounts.m_account', 'user_accounts.first_name', 'user_accounts.last_name')
|
||||
->where('user_sales_volumes.month', '=', Request::get('points_filter_month'))
|
||||
|
|
@ -132,6 +130,7 @@ class BusinessPointsController extends Controller
|
|||
if (Request::get('points_filter_status_type_id')) {
|
||||
$query->where('user_sales_volumes.status', '=', Request::get('points_filter_status_type_id'));
|
||||
}
|
||||
|
||||
return $query;
|
||||
}
|
||||
|
||||
|
|
@ -141,10 +140,10 @@ class BusinessPointsController extends Controller
|
|||
$month = Request::get('points_filter_month');
|
||||
$year = Request::get('points_filter_year');
|
||||
|
||||
if (!$user_id || !$month || !$year) {
|
||||
if (! $user_id || ! $month || ! $year) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'data' => null
|
||||
'data' => null,
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
@ -155,10 +154,10 @@ class BusinessPointsController extends Controller
|
|||
->orderBy('id', 'DESC')
|
||||
->first();
|
||||
|
||||
if (!$lastEntry) {
|
||||
if (! $lastEntry) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'data' => null
|
||||
'data' => null,
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
@ -173,7 +172,7 @@ class BusinessPointsController extends Controller
|
|||
'total_KP_points' => ($lastEntry->month_KP_points ?? 0) + ($lastEntry->month_shop_points ?? 0),
|
||||
'total_TP_points' => ($lastEntry->month_TP_points ?? 0) + ($lastEntry->month_shop_points ?? 0),
|
||||
'total_net' => ($lastEntry->month_total_net ?? 0) + ($lastEntry->month_shop_total_net ?? 0),
|
||||
]
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
@ -181,67 +180,80 @@ class BusinessPointsController extends Controller
|
|||
{
|
||||
|
||||
$query = $this->initSearch();
|
||||
|
||||
return \DataTables::eloquent($query)
|
||||
->addColumn('id', function (UserSalesVolume $UserSalesVolume) {
|
||||
return '<button type="button" class="btn btn-xs btn-secondary" data-toggle="modal" data-target="#modals-load-content"
|
||||
data-id="' . $UserSalesVolume->id . '"
|
||||
data-id="'.$UserSalesVolume->id.'"
|
||||
data-action="edit_user_sales_volume"
|
||||
data-back=""
|
||||
data-modal="modal-xl"
|
||||
data-init_from="user"
|
||||
data-route="' . route('modal_load') . '"><span class="fa fa-eye"></span></button>';
|
||||
data-route="'.route('modal_load').'"><span class="fa fa-eye"></span></button>';
|
||||
})
|
||||
->addColumn('order', function (UserSalesVolume $UserSalesVolume) {
|
||||
if ($UserSalesVolume->shopping_order) {
|
||||
// Status 1 = Beraterbestellung
|
||||
if ($UserSalesVolume->status === 1) {
|
||||
return '<a href="' . route('admin_sales_users_detail', [$UserSalesVolume->shopping_order->id]) . '" class="btn btn-xs btn-primary">' . $UserSalesVolume->shopping_order->id . '</a>';
|
||||
return '<a href="'.route('admin_sales_users_detail', [$UserSalesVolume->shopping_order->id]).'" class="btn btn-xs btn-primary">'.$UserSalesVolume->shopping_order->id.'</a>';
|
||||
}
|
||||
// Status 2/3 = Shop-Bestellung
|
||||
if ($UserSalesVolume->status === 2 || $UserSalesVolume->status === 3) {
|
||||
return '<a href="' . route('admin_sales_customers_detail', [$UserSalesVolume->shopping_order->id]) . '" class="btn btn-xs btn-secondary">' . $UserSalesVolume->shopping_order->id . '</a>';
|
||||
return '<a href="'.route('admin_sales_customers_detail', [$UserSalesVolume->shopping_order->id]).'" class="btn btn-xs btn-secondary">'.$UserSalesVolume->shopping_order->id.'</a>';
|
||||
}
|
||||
// Status 6 = Storno - Link zur ursprünglichen Bestellung mit Storno-Icon
|
||||
if ($UserSalesVolume->status === 6) {
|
||||
// Prüfen ob Berater- oder Shop-Bestellung anhand des payment_for Feldes
|
||||
$route = ($UserSalesVolume->shopping_order->payment_for === 6 || $UserSalesVolume->shopping_order->payment_for === 7)
|
||||
? route('admin_sales_customers_detail', [$UserSalesVolume->shopping_order->id])
|
||||
: route('admin_sales_users_detail', [$UserSalesVolume->shopping_order->id]);
|
||||
|
||||
return '<a href="'.$route.'" class="btn btn-xs btn-danger" title="Storno-Eintrag"><i class="fa fa-undo"></i> '.$UserSalesVolume->shopping_order->id.'</a>';
|
||||
}
|
||||
}
|
||||
|
||||
return '';
|
||||
})
|
||||
->addColumn('points', function (UserSalesVolume $UserSalesVolume) {
|
||||
return formatNumber($UserSalesVolume->points);
|
||||
})
|
||||
->addColumn('total_net', function (UserSalesVolume $UserSalesVolume) {
|
||||
return formatNumber($UserSalesVolume->total_net) . ' €';
|
||||
return formatNumber($UserSalesVolume->total_net).' €';
|
||||
})
|
||||
->addColumn('status_turnover', function (UserSalesVolume $UserSalesVolume) {
|
||||
return '<span class="badge badge-pill badge-' . $UserSalesVolume->getStatusTurnoverColor() . '">' . $UserSalesVolume->getStatusTurnoverType() . '</span>';
|
||||
return '<span class="badge badge-pill badge-'.$UserSalesVolume->getStatusTurnoverColor().'">'.$UserSalesVolume->getStatusTurnoverType().'</span>';
|
||||
})
|
||||
->addColumn('status', function (UserSalesVolume $UserSalesVolume) {
|
||||
return '<span class="badge badge-pill badge-' . $UserSalesVolume->getStatusColor() . '">' . $UserSalesVolume->getStatusType() . '</span>';
|
||||
return '<span class="badge badge-pill badge-'.$UserSalesVolume->getStatusColor().'">'.$UserSalesVolume->getStatusType().'</span>';
|
||||
})
|
||||
->addColumn('status_points', function (UserSalesVolume $UserSalesVolume) {
|
||||
return '<span class="badge badge-pill badge-' . $UserSalesVolume->getStatusPointsColor() . '">' . $UserSalesVolume->getStatusPointsType() . '</span>';
|
||||
return '<span class="badge badge-pill badge-'.$UserSalesVolume->getStatusPointsColor().'">'.$UserSalesVolume->getStatusPointsType().'</span>';
|
||||
})
|
||||
->addColumn('message', function (UserSalesVolume $UserSalesVolume) {
|
||||
return '<span class="no-line-break">' . $UserSalesVolume->message . '</span>';
|
||||
return '<span class="no-line-break">'.$UserSalesVolume->message.'</span>';
|
||||
})
|
||||
->addColumn('info', function (UserSalesVolume $UserSalesVolume) {
|
||||
return '<span class="no-line-break">' . $UserSalesVolume->info . '</span>';
|
||||
return '<span class="no-line-break">'.$UserSalesVolume->info.'</span>';
|
||||
})
|
||||
|
||||
->filterColumn('m_account', function ($query, $keyword) {
|
||||
if ($keyword != "") {
|
||||
$query->whereRaw("m_account LIKE ?", '%' . $keyword . '%');
|
||||
if ($keyword != '') {
|
||||
$query->whereRaw('m_account LIKE ?', '%'.$keyword.'%');
|
||||
}
|
||||
})
|
||||
->filterColumn('first_name', function ($query, $keyword) {
|
||||
if ($keyword != "") {
|
||||
$query->whereRaw("first_name LIKE ?", '%' . $keyword . '%');
|
||||
if ($keyword != '') {
|
||||
$query->whereRaw('first_name LIKE ?', '%'.$keyword.'%');
|
||||
}
|
||||
})
|
||||
->filterColumn('last_name', function ($query, $keyword) {
|
||||
if ($keyword != "") {
|
||||
$query->whereRaw("last_name LIKE ?", '%' . $keyword . '%');
|
||||
if ($keyword != '') {
|
||||
$query->whereRaw('last_name LIKE ?', '%'.$keyword.'%');
|
||||
}
|
||||
})
|
||||
->filterColumn('email', function ($query, $keyword) {
|
||||
if ($keyword != "") {
|
||||
$query->whereRaw("email LIKE ?", '%' . $keyword . '%');
|
||||
if ($keyword != '') {
|
||||
$query->whereRaw('email LIKE ?', '%'.$keyword.'%');
|
||||
}
|
||||
})
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue