diff --git a/.env b/.env
index d58c144..4a89cf2 100644
--- a/.env
+++ b/.env
@@ -21,7 +21,7 @@ APP_CHECKOUT_TEST_MAIL=kevin.adametz@me.com
APP_INFO_TEST_MAIL=kevin.adametz@me.com
APP_MAIN_TAX = 1.19
-APP_SHIPPING_TAX = 19
+APP_MAIN_TAX_RATE = 19
LOG_CHANNEL=stack
diff --git a/app/Console/Commands/BusinessStore.php b/app/Console/Commands/BusinessStore.php
new file mode 100644
index 0000000..3670dc5
--- /dev/null
+++ b/app/Console/Commands/BusinessStore.php
@@ -0,0 +1,78 @@
+info('RUN Command BusinessStore on Day '. $day);
+
+ $timeStart = microtime(true);
+ $this->info('RUN Command BusinessStore');
+
+ $month = $this->argument('month');
+ $year = $this->argument('year');
+ if(!$month || !$year){
+ $this->info('need arguments month & year');
+ return 0;
+ }
+
+ //$this->info('month: '.$month.' year:'.$year);
+ for($i = 1; $i<=6; $i++){
+ $month = $i;
+ $this->info('month: '.$month.' year:'.$year);
+ $businessUsersStore = new BusinessUsersStore($month, $year);
+ $businessUsersStore->storeUserBusinessStructure();
+ $businessUsersStore->storeBusinessUsersDetail();
+ $bool = $businessUsersStore->storeBusinessCompleted();
+
+ $diff = microtime(true) - $timeStart;
+ $sec = intval($diff);
+ $micro = $diff - $sec;
+ $this->info('BusinessStore: '.$bool. ' | Time: '.$sec. 'sec :' . round($micro * 1000, 4) . " ms");
+
+ }
+
+
+ //$this->info('END Command BusinessStore: '.$bool. ' | Time: '.$sec. 'sec :' . round($micro * 1000, 4) . " ms");
+
+ // \Log::info('Cron is running');
+ //return 0;
+ }
+}
diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php
index a8c5158..ce5cf2c 100755
--- a/app/Console/Kernel.php
+++ b/app/Console/Kernel.php
@@ -2,6 +2,7 @@
namespace App\Console;
+use App\Console\Commands\BusinessStore;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
@@ -13,7 +14,7 @@ class Kernel extends ConsoleKernel
* @var array
*/
protected $commands = [
- //
+ BusinessStore::class,
];
/**
diff --git a/app/Cron/BusinessUsersStore.php b/app/Cron/BusinessUsersStore.php
new file mode 100644
index 0000000..71c913e
--- /dev/null
+++ b/app/Cron/BusinessUsersStore.php
@@ -0,0 +1,159 @@
+month = $month;
+ $this->year = $year;
+ }
+
+
+ public function getStoreUserBusinessStructure(){
+ return UserBusinessStructure::where('year', $this->year)->where('month', $this->month)->first();
+ }
+
+ public function storeUserBusinessStructure()
+ {
+ if($this->user_business_structure = $this->getStoreUserBusinessStructure()){
+ return $this->user_business_structure;
+ }
+ $treeCalcBot = new TreeCalcBot($this->month, $this->year, 'admin');
+ //only load, when no structur is save
+ $treeCalcBot->initStructureAdmin(false);
+ $this->storeStructure($treeCalcBot);
+ }
+
+ public function storeBusinessUsersDetail()
+ {
+ if(!$this->user_business_structure){
+ $this->user_business_structure = $this->getStoreUserBusinessStructure();
+ if(!$this->user_business_structure){
+ abort(403, 'not found UserBusinessStructure');
+ }
+ }
+ foreach($this->user_business_structure->users as $user_id=>$completed){
+ if($completed === 0){
+ $user = User::findOrFail($user_id);
+ $TreeCalcBot = new TreeCalcBot($this->month, $this->year, 'admin');
+ $TreeCalcBot->initBusinesslUserDetail($user);
+ if(!$TreeCalcBot->business_user){
+ abort(403, 'not found TreeCalcBot->business_user');
+ }
+ $this->storeBusinesslUser($TreeCalcBot->business_user);
+ $users = $this->user_business_structure->users;
+ $users[$user_id] = 1;
+ $this->user_business_structure->users = $users;
+ $this->user_business_structure->save();
+ }
+ }
+ }
+
+
+ public function storeBusinesslUser($business_user){
+ $b_user = $business_user->getBUser();
+ $b_user->user_items = $this->storeUserItems($business_user->businessUserItems, 1);
+ $b_user->b_structure_id = $this->user_business_structure->id;
+ $b_user->save();
+ }
+
+
+ public function storeBusinessCompleted(){
+ if(!$this->user_business_structure){
+ $this->user_business_structure = $this->getStoreUserBusinessStructure();
+ }
+ foreach($this->user_business_structure->users as $user_id=>$completed){
+ if($completed === 0){
+ return false;
+ }
+ $this->user_business_structure->completed = 1;
+ $this->user_business_structure->save();
+ }
+ return true;
+ }
+
+
+ private function storeUserItems($userItems, $line){
+ $ret = [];
+ foreach($userItems as $userItem){
+ $temp = null;
+ if(count($userItem->businessUserItems) > 0){
+ $temp = $this->storeUserItems($userItem->businessUserItems, $line+1);
+ }
+ $obj = new stdClass();
+ $obj->user_id = $userItem->user_id;
+ $obj->line = $line;
+ $obj->points = $userItem->sales_volume_points_sum;
+ $obj->parents = $temp;
+ $ret[] = $obj;
+ }
+ return $ret;
+ }
+
+
+ private function storeStructure($treeCalcBot)
+ {
+ /*if($this->user_business_structure = $this->getStoreUserBusinessStructure()){
+ return $this->user_business_structure;
+ }*/
+
+ $structure = [];
+ foreach($treeCalcBot->business_users as $business_user){
+ $structure[] = $this->storeStructureItem($business_user, 0);
+ }
+
+ $parentless = [];
+ if($treeCalcBot->parentless){
+ foreach($treeCalcBot->parentless as $pless){
+ $parentless[] = $this->storeStructureItem($pless, 0);
+ }
+ }
+ $fill = [
+ 'month' => $this->month,
+ 'year' => $this->year,
+ 'structure' => $structure,
+ 'parentless' => $parentless,
+ 'users' => $this->users_structure,
+ 'completed' => false,
+ 'status' => 0
+ ];
+ $this->user_business_structure = UserBusinessStructure::create($fill);
+ return $this->user_business_structure;
+ }
+
+
+
+ private function storeStructureItem($item, $deep){
+ $temp = null;
+ if($item->businessUserItems){
+ foreach($item->businessUserItems as $parent){
+ $temp[] = $this->storeStructureItem($parent, $deep+1);
+ }
+ }
+ $this->users_structure[$item->user_id] = 0;
+ $obj = new stdClass();
+ $obj->user_id = $item->user_id;
+ //$obj->name = $item->first_name .' '. $item->last_name ;
+ $obj->email = $item->email;
+ $obj->deep = $deep;
+ //$obj->points = $item->sales_volume_points_sum;
+ $obj->parents = $temp;
+ return $obj;
+ }
+
+
+
+}
diff --git a/app/Http/Controllers/BusinessController.php b/app/Http/Controllers/BusinessController.php
index ae98a3b..a8bb9a1 100644
--- a/app/Http/Controllers/BusinessController.php
+++ b/app/Http/Controllers/BusinessController.php
@@ -2,11 +2,13 @@
namespace App\Http\Controllers;
-use App\Services\BusinessPlan\TreeCalcBot;
use Request;
use App\User;
use Carbon\Carbon;
+use App\Models\UserBusiness;
use App\Services\HTMLHelper;
+use App\Models\UserBusinessStructure;
+use App\Services\BusinessPlan\TreeCalcBot;
class BusinessController extends Controller
@@ -21,7 +23,6 @@ class BusinessController extends Controller
public function show()
{
$this->setFilterVars();
-
$data = [
'filter_months' => HTMLHelper::$months,
'filter_years' => HTMLHelper::getYearRange(),
@@ -31,12 +32,15 @@ class BusinessController extends Controller
return view('admin.business.show', $data);
}
-
public function structure()
{
$this->setFilterVars();
- $TreeCalcBot = new TreeCalcBot(session('business_user_filter_month'), session('business_user_filter_year'), 'admin');
- $TreeCalcBot->initMain();
+ $this->month = session('business_user_filter_month');
+ $this->year = session('business_user_filter_year');
+
+ $TreeCalcBot = new TreeCalcBot($this->month, $this->year, 'admin');
+ $TreeCalcBot->initStructureAdmin();
+
$data = [
'filter_months' => HTMLHelper::$months,
'filter_years' => HTMLHelper::getYearRange(),
@@ -50,18 +54,31 @@ class BusinessController extends Controller
$user = User::findOrFail($user_id);
$this->setFilterVars();
- $TreeCalcBot = new TreeCalcBot(session('business_user_filter_month'), session('business_user_filter_year'), 'admin');
- $TreeCalcBot->initDetailUser($user);
- if(!$TreeCalcBot->user){
+ $data = [];
+ $data['month'] = session('business_user_filter_month');
+ $data['year'] = session('business_user_filter_year');
+
+ $TreeCalcBot = new TreeCalcBot($data['month'], $data['year'], 'admin');
+ $TreeCalcBot->initBusinesslUserDetail($user);
+ if(!$TreeCalcBot->business_user){
abort(403, 'no user found');
}
- $data = [
- 'month' => HTMLHelper::getMonth(session('business_user_filter_month')),
- 'year' => session('business_user_filter_year'),
- 'TreeCalcBot' => $TreeCalcBot,
- 'user' => $user,
- ];
- return view('admin.business.user_detail', $data);
+ return view('admin.business.user_detail', compact('TreeCalcBot', 'user', 'data'));
+ }
+
+ public function userStore($user_id)
+ {
+ dd('function on: App\Console\Commands\BusinessStore');
+ /*$data = Request::all();
+ $user = User::findOrFail($data['user_id']);
+ $TreeCalcBot = new TreeCalcBot($data['month'], $data['year'], 'admin');
+ $TreeCalcBot->initBusinesslUserDetail($user);
+ if(!$TreeCalcBot->business_user){
+ abort(403, 'no user found');
+ }
+ //$TreeCalcBot->storeBusinesslUser();*/
+
+ //return back();
}
private function setFilterVars(){
@@ -90,12 +107,123 @@ class BusinessController extends Controller
}
}
- private function initSearch($archive = false, $request = true)
- {
- $this->setFilterVars();
+
+ public function userDatatable()
+ {
$this->month = Request::get('business_user_filter_month');
$this->year = Request::get('business_user_filter_year');
+ //only the currently month get from Users -> older month from UserBusiness
+ //return $this->userCurrentlyDatatable();
+ if(TreeCalcBot::isFromStored($this->month, $this->year)){
+ return $this->userStoredDatatable();
+ }else{
+ return $this->userCurrentlyDatatable();
+ }
+ }
+
+ private function initStoredSearch($archive = false, $request = true)
+ {
+ $this->setFilterVars();
+
+ $query = UserBusiness::select('user_businesses.*')->where('month', $this->month)->where('year', $this->year);
+ if(Request::get('business_user_filter_active')){
+ if(Request::get('business_user_filter_active') == 1){
+ $query->where('user_businesses.active_account', 1);
+ }
+ if(Request::get('business_user_filter_active') == 2){
+ $query->where('user_businesses.active_account', 0);
+ }
+ if(Request::get('business_user_filter_active') == 3){
+ //both -> payment_account only not null
+ }
+ }
+ return $query;
+ }
+
+ private function userStoredDatatable()
+ {
+ $query = $this->initStoredSearch();
+ return \DataTables::eloquent($query)
+ ->addColumn('id', function (UserBusiness $userBusiness) {
+ return '';
+ //.'';
+ })
+ ->addColumn('m_account', function (UserBusiness $userBusiness) {
+ return $userBusiness->m_account;
+ })
+ ->addColumn('user_level', function (UserBusiness $userBusiness) {
+ return $userBusiness->user_level_name;
+ })
+ ->addColumn('is_qual_kp', function (UserBusiness $userBusiness) {
+ if($userBusiness->m_level_id){
+ $isQualKP = ($userBusiness->sales_volume_points_sum >= $userBusiness->qual_kp) ? true : false;
+ return ' KD '.$userBusiness->qual_kp.'';
+ }
+ return '-';
+ })
+ ->addColumn('sales_volume_points', function (UserBusiness $userBusiness) {
+ return '
'.$userBusiness->sales_volume_points_sum.'
'.
+ 'B: '.$userBusiness->sales_volume_points.' | S: '.$userBusiness->sales_volume_points_shop.'';
+ })
+ ->addColumn('sales_volume_total', function (UserBusiness $userBusiness) {
+ return ''.formatNumber($userBusiness->sales_volume_total_sum).' €
'.
+ 'B: '.formatNumber($userBusiness->sales_volume_total).' | S: '.formatNumber($userBusiness->sales_volume_total_shop).'';
+ })
+ ->addColumn('email', function (UserBusiness $userBusiness) {
+ return $userBusiness->email;
+ })
+ ->addColumn('first_name', function (UserBusiness $userBusiness) {
+ return $userBusiness->first_name;
+ })
+ ->addColumn('last_name', function (UserBusiness $userBusiness) {
+ return $userBusiness->last_name;
+ })
+ ->addColumn('sponsor', function (UserBusiness $userBusiness) {
+ if($userBusiness->sponsor){
+ $sponsor = "";
+ if($userBusiness->sponsor->is_sponsor){
+ $sponsor .= $userBusiness->sponsor->first_name." ".$userBusiness->sponsor->last_name;
+ $sponsor .= " ".'
';
+
+ $sponsor .= ''.$userBusiness->sponsor->email;
+ $sponsor .= ' | '.$userBusiness->sponsor->m_account;
+ $sponsor .= '';
+ }
+
+ return $sponsor;
+ }
+ return '-';
+ })
+
+ ->addColumn('active_account', function (UserBusiness $userBusiness) {
+ return get_active_badge($userBusiness->active_account);
+ })
+ ->addColumn('payment_account_date', function (UserBusiness $userBusiness) {
+ return $userBusiness->active_date ? formatDate($userBusiness->active_date) : "-";
+ })
+ ->orderColumn('id', 'id $1')
+ ->orderColumn('active_account', 'payment_account $1')
+ ->rawColumns(['id', 'is_qual_kp', 'sales_volume_points', 'sales_volume_total', 'sponsor', 'active_account'])
+ ->make(true);
+ }
+
+ private function initCurrentlySearch($archive = false, $request = true)
+ {
+ $this->setFilterVars();
+
$query = User::with('account')->select('users.*')
->where('users.deleted_at', '=', null)
->where('users.id', '!=', 1)
@@ -114,26 +242,12 @@ class BusinessController extends Controller
//both -> payment_account only not null
}
}
-
- if(Request::get('business_user_filter_name')){
- //$query->where('users.account.first_name', 'LIKE', '%'.Request::get('business_user_filter_name').'%');
- //$query->where('users.account.last_name', 'LIKE', '%'.Request::get('business_user_filter_name').'%');
- //$query->where('users.account.m_account', 'LIKE', '%'.Request::get('business_user_filter_name').'%');
- //$query->where('users.email', 'LIKE', '%'.Request::get('business_user_filter_name').'%');
-
- }
-
- //->orderBy('created_at', 'DESC');
- /* $query = FlexHour::leftJoin("flex_hour_items", function($join) {
- $join->on("flex_hour_items.flex_hour_id","=","flex_hours.id");
- $join->where("flex_hour_items.date","=", FlexHourItemBot::$date);
- })*/
return $query;
}
-
- public function userDatatable()
- {
- $query = $this->initSearch();
+
+ private function userCurrentlyDatatable()
+ {
+ $query = $this->initCurrentlySearch();
return \DataTables::eloquent($query)
->addColumn('id', function (User $user) {
return '';
- //
+ data-route="'.route('modal_load').'">'
+ .'';
+ })
+ ->addColumn('m_account', function (User $user) {
+ return $user->account ? $user->account->m_account : '';
})
->addColumn('user_level', function (User $user) {
return $user->user_level ? $user->user_level->name : '';
})
- ->addColumn('active_account', function (User $user) {
- return get_active_badge($user->isActiveAccount());
- })
- ->addColumn('payment_account_date', function (User $user) {
- return $user->payment_account ? $user->getPaymentAccountDateFormat(false) : "-";
- })
- ->addColumn('sales_volume_points', function (User $user) {
+ ->addColumn('is_qual_kp', function (User $user) {
+ if($user->user_level){
+ $qual_kp = $user->user_level->qual_kp;
+ $sales_volume_points_sum = $user->getUserSalesVolumeBy($this->month, $this->year, 'sales_volume_points_sum');
+ $isQualKP = ($sales_volume_points_sum >= $qual_kp) ? true : false;
+ return ' KD '.$qual_kp.'';
+ }
+ return '-';
+ })
+ ->addColumn('sales_volume_points', function (User $user) {
return ''.$user->getUserSalesVolumeBy($this->month, $this->year, 'sales_volume_points_sum').'
'.
'B: '.$user->getUserSalesVolumeBy($this->month, $this->year, 'sales_volume_points').' | S: '.$user->getUserSalesVolumeBy($this->month, $this->year, 'sales_volume_points_shop').'';
})
->addColumn('sales_volume_total', function (User $user) {
- return ''.$user->getUserSalesVolumeBy($this->month, $this->year, 'sales_volume_total_sum').'
'.
- 'B: '.$user->getUserSalesVolumeBy($this->month, $this->year, 'sales_volume_total').' | S: '.$user->getUserSalesVolumeBy($this->month, $this->year, 'sales_volume_total_shop').'';
+ return ''.formatNumber($user->getUserSalesVolumeBy($this->month, $this->year, 'sales_volume_total_sum')).' €
'.
+ 'B: '.formatNumber($user->getUserSalesVolumeBy($this->month, $this->year, 'sales_volume_total')).' | S: '.formatNumber($user->getUserSalesVolumeBy($this->month, $this->year, 'sales_volume_total_shop')).'';
+ })
+ ->addColumn('email', function (User $user) {
+ return $user->email;
+ })
+ ->addColumn('first_name', function (User $user) {
+ return $user->account ? $user->account->first_name : '';
+ })
+ ->addColumn('last_name', function (User $user) {
+ return $user->account ? $user->account->last_name : '';
})
->addColumn('sponsor', function (User $user) {
if($user->user_sponsor){
@@ -175,7 +304,7 @@ class BusinessController extends Controller
data-init_from="admin"
data-route="'.route('modal_load').'">
';
}
- $sponsor .= ''.$user->email;
+ $sponsor .= ''.$user->user_sponsor->email;
if($user->user_sponsor->account){
$sponsor .= ' | '.$user->user_sponsor->account->m_account;
}
@@ -184,51 +313,17 @@ class BusinessController extends Controller
return $sponsor;
}
return '-';
-
- return ''.$user->getUserSalesVolumeBy($this->month, $this->year, 'sales_volume_total_sum').'
'.
- 'B: '.$user->getUserSalesVolumeBy($this->month, $this->year, 'sales_volume_total').' | S: '.$user->getUserSalesVolumeBy($this->month, $this->year, 'sales_volume_total_shop').'';
})
- ->addColumn('is_qual_kp', function (User $user) {
- if($user->user_level){
- $qual_kp = $user->user_level->qual_kp;
- $sales_volume_points_sum = $user->getUserSalesVolumeBy($this->month, $this->year, 'sales_volume_points_sum');
- $isQualKP = ($sales_volume_points_sum >= $qual_kp) ? true : false;
- return ' KD '.$qual_kp.'';
- }
- return '-';
+ ->addColumn('active_account', function (User $user) {
+ return get_active_badge($user->isActiveAccount());
})
-
-
-
-
-
- /* ->addColumn('sales_volume_points', function (User $user) {
- return $user->getUserSalesVolumeBy($this->month, $this->year, 'sales_volume_points');
+ ->addColumn('payment_account_date', function (User $user) {
+ return $user->payment_account ? $user->getPaymentAccountDateFormat(false) : "-";
})
- ->addColumn('sales_volume_points_shop', function (User $user) {
- return $user->getUserSalesVolumeBy($this->month, $this->year, 'sales_volume_points_shop');
- })
- ->addColumn('sales_volume_points_sum', function (User $user) {
- return $user->getUserSalesVolumeBy($this->month, $this->year, 'sales_volume_points_sum');
- })
- ->addColumn('sales_volume_total', function (User $user) {
- return $user->getUserSalesVolumeBy($this->month, $this->year, 'sales_volume_total');
- })
- ->addColumn('sales_volume_total_shop', function (User $user) {
- return $user->getUserSalesVolumeBy($this->month, $this->year, 'sales_volume_total_shop');
- })
- ->addColumn('sales_volume_total_sum', function (User $user) {
- return $user->getUserSalesVolumeBy($this->month, $this->year, 'sales_volume_total_sum');
- })*/
-
->orderColumn('id', 'id $1')
- ->orderColumn('m_account', 'm_account $1')
- ->orderColumn('first_name', 'first_name $1')
- ->orderColumn('last_name', 'last_name $1')
- ->orderColumn('user_level', 'm_level $1')
->orderColumn('active_account', 'payment_account $1')
- ->rawColumns(['id', 'is_qual_kp', 'confirmed', 'sales_volume_points', 'sales_volume_total', 'sponsor', 'active', 'active_account'])
+ ->rawColumns(['id', 'is_qual_kp', 'sales_volume_points', 'sales_volume_total', 'sponsor', 'active_account'])
->make(true);
- }
+ }
}
\ No newline at end of file
diff --git a/app/Http/Controllers/BusinessPointsController.php b/app/Http/Controllers/BusinessPointsController.php
index 39623a3..e345403 100644
--- a/app/Http/Controllers/BusinessPointsController.php
+++ b/app/Http/Controllers/BusinessPointsController.php
@@ -118,7 +118,7 @@ class BusinessPointsController extends Controller
}
}
- private function initSearch($archive = false, $request = true)
+ private function initSearch()
{
$this->setFilterVars();
@@ -184,7 +184,7 @@ class BusinessPointsController extends Controller
->orderColumn('id', 'id $1')
->orderColumn('order', 'order $1')
->orderColumn('status', 'status $1')
- ->orderColumn('status', 'message $1')
+ ->orderColumn('message', 'message $1')
->rawColumns(['id', 'order', 'status', 'message', 'total_net'])
->make(true);
diff --git a/app/Http/Controllers/FileController.php b/app/Http/Controllers/FileController.php
index 78b3802..ee92b1a 100644
--- a/app/Http/Controllers/FileController.php
+++ b/app/Http/Controllers/FileController.php
@@ -17,13 +17,19 @@ class FileController extends Controller
{
}
- private function isPermission($shopping_order){
+ private function isPermissionShoppingOrder($shopping_order){
$user_id = $shopping_order->auth_user_id ? $shopping_order->auth_user_id : $shopping_order->member_id;
if(Auth::user()->isAdmin() || $user_id == Auth::user()->id){
return true;
}
abort(404);
+ }
+ private function isPermissionUserCredit($user_credit){
+ if(Auth::user()->isAdmin() || $user_credit->user_id == Auth::user()->id){
+ return true;
+ }
+ abort(404);
}
public function show($id = null, $disk = null, $do='file')
@@ -43,7 +49,7 @@ class FileController extends Controller
if ($disk === 'invoice'){
$shopping_order = \App\Models\ShoppingOrder::findOrFail($id);
if($shopping_order->user_invoice){
- $this->isPermission($shopping_order);
+ $this->isPermissionShoppingOrder($shopping_order);
$user_invoice = $shopping_order->user_invoice;
$filename = $user_invoice->filename;
$disk = $user_invoice->disk;
@@ -52,25 +58,15 @@ class FileController extends Controller
return Response::make('File no found.', 404);;
}
$file = Storage::disk($disk)->get($path);
- $mime = Storage::disk($disk)->mimeType($path);
-
- }
- if($do === 'download'){
- return Response::make($file, 200)
- ->header("Content-Type", $mime)
- ->header('Content-disposition', 'attachment; filename="'.$filename.'"');
- }
- if($do === 'stream'){
- return Response::make($file, 200)
- ->header("Content-Type", $mime)
- ->header('Content-disposition','inline; filename="'.$filename.'"');
+ $mime = Storage::disk($disk)->mimeType($path);
}
+
}
if ($disk === 'delivery'){
$shopping_order = \App\Models\ShoppingOrder::findOrFail($id);
if($shopping_order->user_invoice){
- $this->isPermission($shopping_order);
+ $this->isPermissionShoppingOrder($shopping_order);
$user_invoice = $shopping_order->user_invoice;
$filename = $user_invoice->delivery_filename;
$disk = $user_invoice->disk;
@@ -80,8 +76,24 @@ class FileController extends Controller
}
$file = Storage::disk($disk)->get($path);
$mime = Storage::disk($disk)->mimeType($path);
-
}
+
+ }
+
+ if ($disk === 'credit'){
+ $user_credit = \App\Models\UserCredit::findOrFail($id);
+ $this->isPermissionUserCredit($user_credit);
+ $filename = $user_credit->filename;
+ $disk = $user_credit->disk;
+ $path = $user_credit->getDownloadPath();
+ if (!Storage::disk($disk)->exists($path)) {
+ return Response::make('File no found.', 404);;
+ }
+ $file = Storage::disk($disk)->get($path);
+ $mime = Storage::disk($disk)->mimeType($path);
+ }
+
+ if(isset($file)){
if($do === 'download'){
return Response::make($file, 200)
->header("Content-Type", $mime)
@@ -93,9 +105,9 @@ class FileController extends Controller
->header('Content-disposition','inline; filename="'.$filename.'"');
}
}
+
/*if ($disk === 'credit'){
- $UserCredit = \App\Models\UserCredit::findOrFail($id);
$this->isPermission($UserCredit->auth_user_id);
$filename = Credit::getFilename($UserCredit);
diff --git a/app/Http/Controllers/ModalController.php b/app/Http/Controllers/ModalController.php
index 199f4b2..19876b9 100644
--- a/app/Http/Controllers/ModalController.php
+++ b/app/Http/Controllers/ModalController.php
@@ -8,6 +8,7 @@ use App\Models\Product;
use App\Models\Homeparty;
use App\Models\UserLevel;
+use App\Models\UserCredit;
use App\Models\ShoppingUser;
use App\Services\HTMLHelper;
use App\Models\HomepartyUser;
@@ -116,11 +117,10 @@ class ModalController extends Controller
$data['month'] = session('team_user_filter_month');
$data['year'] = session('team_user_filter_year');
}
- $TreeCalcBot = $this->getForBusinessUserDetail($user, $data);
+ $TreeCalcBot = $this->getForBusinessUserDetail($user, $data);
$route = "";
$ret = view("admin.modal.business_user_detail", compact('TreeCalcBot', 'user', 'data'))->render();
}
-
if($data['action'] === 'edit_user_sales_volume'){
$userSalesVolume = UserSalesVolume::findOrFail($data['id']);
$route = route('admin_business_points_store', );
@@ -130,7 +130,15 @@ class ModalController extends Controller
$userSalesVolume = new UserSalesVolume();
$route = route('admin_business_points_store', );
$ret = view("admin.business.modal_add_points", compact('userSalesVolume', 'data', 'route'))->render();
- }
+ }
+ if($data['action'] === 'add-user-credit'){
+ $value = [];
+ $ret = view("admin.payment.modal_add_credit", compact('value', 'data'))->render();
+ }
+ if($data['action'] === 'user-credit-status'){
+ $UserCredit = UserCredit::find($data['id']); //current user form order
+ $ret = view("admin.payment.modal_credit_status", compact('UserCredit', 'data'))->render();
+ }
}
return response()->json(['response' => $data, 'html'=>$ret, 'status'=>$status]);
}
@@ -140,8 +148,8 @@ class ModalController extends Controller
$auth_user = \Auth::user();
if($auth_user->isAdmin() || $auth_user->id === $user->id){
$TreeCalcBot = new TreeCalcBot($data['month'], $data['year'], $data['init_from']);
- $TreeCalcBot->initDetailUser($user);
- if(!$TreeCalcBot->user){
+ $TreeCalcBot->initBusinesslUserDetail($user);
+ if(!$TreeCalcBot->business_user){
abort(403, 'no user found');
}
return $TreeCalcBot;
diff --git a/app/Http/Controllers/PaymentCreditController.php b/app/Http/Controllers/PaymentCreditController.php
index 83f305e..64ecc5c 100644
--- a/app/Http/Controllers/PaymentCreditController.php
+++ b/app/Http/Controllers/PaymentCreditController.php
@@ -10,9 +10,15 @@ use App\Services\Util;
use App\Services\Credit;
use App\Services\Payment;
use App\Models\UserCredit;
-use App\Models\ShoppingOrderMargin;
+use App\Services\HTMLHelper;
+use App\Models\UserCreditItem;
use App\Models\UserCreditMargin;
+use Illuminate\Support\Collection;
+use App\Models\ShoppingOrderMargin;
+
use App\Repositories\CreditRepository;
+use App\Models\Models\UserCreditMargin as ModelsUserCreditMargin;
+use stdClass;
class PaymentCreditController extends Controller
{
@@ -24,8 +30,8 @@ class PaymentCreditController extends Controller
public function __construct()
{
- $this->middleware('auth');
- $this->startYear = 2021;
+ $this->middleware('admin');
+ $this->startYear = 2022;
$this->endYear = date('Y');
$this->rangeYears = range($this->startYear, $this->endYear);
$this->activeYear = $this->endYear;
@@ -34,36 +40,35 @@ class PaymentCreditController extends Controller
public function index()
{
- abort(403, "in progress");
- $data = $this->makeData();
- return view('admin.payment.credit.index', $data);
+ $this->setFilterVars();
+
+ $data = [
+ 'filter_months' => HTMLHelper::$months,
+ 'filter_years' => HTMLHelper::getYearRange(2022),
+ 'user_credit_items' => $this->makeUserCreditItems(),
+ ];
+ return view('admin.payment.credit', $data);
}
-
public function store(){
$data = Request::all();
-
if(isset($data['action']) && $data['action'] === 'add-user-credit'){
- $add_credit_error = false;
if(!isset($data['member_id']) || !$user = User::find($data['member_id'])){
- $add_credit_error = 'Vertriebspartner nicht gefunden';
+ \Session()->flash('alert-error', 'Vertriebspartner nicht gefunden');
+ return back();
}
if(!isset($data['credit'])){
- $add_credit_error = 'Bitte Betrag eingeben';
+ \Session()->flash('alert-error', 'Bitte Betrag eingebe');
+ return back();
}
if(!isset($data['message'])){
- $add_credit_error = 'Bitte Mitteilung eingeben';
- }
- if($add_credit_error){
- $data = $this->makeData();
- $data['add_credit_error'] = $add_credit_error;
- return view('admin.payment.credit.index', $data);
+ \Session()->flash('alert-error', 'Bitte Betreff eingeben');
+ return back();
}
$credit = Util::reFormatNumber($data['credit']);
$credit = number_format($credit, 2, '.', '');
-
Payment::addUserCreditMargin($user, $credit, 3, $data['message']);
\Session()->flash('alert-success', "Guthaben hinzugefügt");
}
@@ -79,8 +84,8 @@ class PaymentCreditController extends Controller
abort(404);
}
$user = User::findOrFail($data['userid']);
- $invoice_repo = new CreditRepository($user);
- $invoice_repo->create($data);
+ $credit_repo = new CreditRepository($user);
+ $credit_repo->create($data);
\Session()->flash('alert-success', "Gutschrift erstellt");
return redirect($data['back']);
}
@@ -94,79 +99,52 @@ class PaymentCreditController extends Controller
}
}
- private function makeData(){
- $this->setActiveYears();
- //$date1 = Carbon::parse('01.01.'.$this->activeYear." 00:00:00")->format('Y-m-d H:i:s');
- //$date2 = Carbon::parse('31.12.'.$this->activeYear." 23:59:59")->toDateString();
-
- $ShoppingOrderMargins = ShoppingOrderMargin::join('users', 'm_sponsor_id', '=', 'users.id')
- ->groupBy('m_sponsor_id')
- ->join('user_accounts', 'account_id', '=', 'user_accounts.id')
- ->select('users.id as user_id', 'users.email', 'user_accounts.first_name', 'user_accounts.last_name')
- ->wherePaid(true)
- ->whereCancellation(false)
- ->wherePartnerCommissionPaid(false)
- ->where('partner_commission_pending_to', '<', Carbon::now())
- ->get();
-
- $ShoppingOrderMarginPendings = ShoppingOrderMargin::join('users', 'm_sponsor_id', '=', 'users.id')
- ->groupBy('m_sponsor_id')
- ->join('user_accounts', 'account_id', '=', 'user_accounts.id')
- ->select('users.id as user_id', 'users.email', 'user_accounts.first_name', 'user_accounts.last_name')
- ->wherePaid(true)
- ->whereCancellation(false)
- ->wherePartnerCommissionPaid(false)
- ->where('partner_commission_pending_to', '>=', Carbon::now())
- ->get();
-
- $UserCreditMargins = UserCreditMargin::wherePaid(false)->get();
- $ShoppingOrderMarginUserIds = ShoppingOrderMargin::select('m_sponsor_id')->groupBy('m_sponsor_id')
- ->wherePaid(true)
- ->whereCancellation(false)
- ->wherePartnerCommissionPaid(false)
- ->where('partner_commission_pending_to', '<', Carbon::now())
- ->get()->pluck('m_sponsor_id')->toArray();
-
- $onlyUserCreditMargins = [];
- foreach($UserCreditMargins as $key => $UserCreditMargin){
- if(!in_array($UserCreditMargin->user_id, $ShoppingOrderMarginUserIds)){
- if(isset($onlyUserCreditMargins[$UserCreditMargin->user_id])){
- $onlyUserCreditMargins[$UserCreditMargin->user_id]['sum'] += $UserCreditMargin->credit;
- $onlyUserCreditMargins[$UserCreditMargin->user_id]['entries'][$UserCreditMargin->id] = $UserCreditMargin;
- }else{
- $onlyUserCreditMargins[$UserCreditMargin->user_id] = [
- 'user_id' => $UserCreditMargin->user->id,
- 'first_name' => $UserCreditMargin->user->account->first_name,
- 'last_name' => $UserCreditMargin->user->account->last_name,
- 'email' => $UserCreditMargin->user->email,
- 'sum' => $UserCreditMargin->credit,
- 'entries' => [$UserCreditMargin->id => $UserCreditMargin],
- ];
- }
- }
+ private function setFilterVars(){
+ if(!session('credit_filter_month')){
+ session(['credit_filter_month' => intval(date('m'))]);
}
- $data = [
- 'years' => $this->rangeYears,
- 'active_year' => $this->activeYear,
- 'ShoppingOrderMargins' => $ShoppingOrderMargins,
- 'ShoppingOrderMarginPendings' => $ShoppingOrderMarginPendings,
- 'onlyUserCreditMargins' => $onlyUserCreditMargins,
- ];
- return $data;
- }
-
- private function setActiveYears(){
- if(Request::get('filter_sales_year')){
- $this->activeYear = Request::get('filter_sales_year');
+ if(!session('credit_filter_year')){
+ session(['credit_filter_year' => intval(date('Y'))]);
+ }
+ if(Request::get('credit_filter_name')){
+ session(['credit_filter_name' => Request::get('credit_filter_name')]);
+ }
+ if(Request::get('credit_filter_month')){
+ session(['credit_filter_month' => Request::get('credit_filter_month')]);
+ }
+ if(Request::get('credit_filter_year')){
+ session(['credit_filter_year' => Request::get('credit_filter_year')]);
}
}
+ private function makeUserCreditItems(){
+ $ret = [];
+ $UserCreditItems = UserCreditItem::wherePaid(false)->get();
+ foreach($UserCreditItems as $userCreditItem){
+ if(isset($ret[$userCreditItem->user_id])){
+ $ret[$userCreditItem->user_id]['sum'] += $userCreditItem->credit;
+ $ret[$userCreditItem->user_id]['entries'][$userCreditItem->id] = $userCreditItem;
+ }else{
+ $ret[$userCreditItem->user_id] = [
+ 'user_id' => $userCreditItem->user_id,
+ 'm_account' => $userCreditItem->user->account->m_account,
+ 'first_name' => $userCreditItem->user->account->first_name,
+ 'last_name' => $userCreditItem->user->account->last_name,
+ 'email' => $userCreditItem->user->email,
+ 'sum' => $userCreditItem->credit,
+ 'entries' => [$userCreditItem->id => $userCreditItem],
+ ];
+ }
+ }
+ return $ret;
+ }
+
public function delete($id, $del){
- if($del === 'user_credit_margin'){
- $UserCreditMargin = UserCreditMargin::findOrFail($id);
- if($deleteTime = $UserCreditMargin->deleteTime()){
- $UserCreditMargin->delete();
+ if($del === 'user_credit_item'){
+ $UserCreditItem = UserCreditItem::findOrFail($id);
+ if($deleteTime = $UserCreditItem->deleteTime()){
+ $UserCreditItem->delete();
\Session()->flash('alert-success', "Guthaben ist gelöscht");
}else{
\Session()->flash('alert-error', "Guthaben kann nicht gelöscht werden");
@@ -177,7 +155,7 @@ class PaymentCreditController extends Controller
public function datatable(){
- $this->setActiveYears();
+ $this->setFilterVars();
$date1 = Carbon::parse('01.01.'.$this->activeYear)->format('Y-m-d');
$date2 = Carbon::parse('31.12.'.$this->activeYear)->format('Y-m-d');
@@ -188,32 +166,9 @@ class PaymentCreditController extends Controller
//->orderBy('created_at', 'DESC');
return \DataTables::eloquent($query)
-
-
- ->addColumn('total', function (UserCredit $UserCredit) {
- return $UserCredit->getFormattedTotal()." €";
- })
- ->addColumn('user_margins', function (UserCredit $UserCredit) {
+ ->addColumn('view', function (UserCredit $UserCredit) {
$ret = "";
- if($UserCredit->user_margins){
- foreach($UserCredit->user_margins as $user_margin){
- $ret .= $user_margin->firstname."/".$user_margin->lastname."/".$user_margin->reference."/".$user_margin->created_at."
";
- }
- }
- if($UserCredit->user_credits){
- foreach($UserCredit->user_credits as $user_credit){
- $ret .= nl2br($user_credit->message)." / ".$user_credit->created_at."
";
-
- }
- }
- return $ret;
- })
- /* ->addColumn('txaction', function (ShoppingOrder $ShoppingOrder) {
- return Payment::getShoppingOrderBadge($ShoppingOrder);
- })*/
- ->addColumn('credit', function (UserCredit $UserCredit) {
- $ret = "";
- if(Credit::isCredit($UserCredit)){
+ if($UserCredit->isCredit()){
$ret .= ' ';
$ret .= '';
}else{
@@ -222,6 +177,19 @@ class PaymentCreditController extends Controller
return $ret;
})
+ ->addColumn('total', function (UserCredit $UserCredit) {
+ return $UserCredit->getFormattedTotal()." €";
+ })
+ ->addColumn('credits', function (UserCredit $UserCredit) {
+ $ret = "";
+ if($UserCredit->user_credit_items){
+ foreach($UserCredit->user_credit_items as $user_credit_item){
+ $ret .= nl2br($user_credit_item->message)." / ".$user_credit_item->created_at->format('d.m.Y')."
";
+
+ }
+ }
+ return $ret;
+ })
->addColumn('status', function (UserCredit $UserCredit) {
return '
@@ -233,7 +201,7 @@ class PaymentCreditController extends Controller
->orderColumn('id', 'id $1')
->orderColumn('status', 'status $1')
->orderColumn('total', 'total $1')
- ->rawColumns(['shipping_order', 'total', 'credit', 'status', 'user_margins'])
+ ->rawColumns(['total', 'credits', 'status', 'view'])
->make(true);
}
}
\ No newline at end of file
diff --git a/app/Http/Controllers/PaymentInvoiceController.php b/app/Http/Controllers/PaymentInvoiceController.php
index 23fb580..5d559ed 100644
--- a/app/Http/Controllers/PaymentInvoiceController.php
+++ b/app/Http/Controllers/PaymentInvoiceController.php
@@ -18,7 +18,7 @@ class PaymentInvoiceController extends Controller
public function __construct()
{
- $this->middleware('auth');
+ $this->middleware('admin');
}
public function index()
@@ -115,10 +115,8 @@ class PaymentInvoiceController extends Controller
$ret = "";
$ret .= ' ';
$ret .= '';
-
return $ret;
})
-
->orderColumn('id', 'id $1')
->orderColumn('invoice_number', 'invoice_number $1')
->orderColumn('txaction', 'txaction $1')
diff --git a/app/Http/Controllers/SyS/SysController.php b/app/Http/Controllers/SyS/SysController.php
index 738642c..f87bc9d 100644
--- a/app/Http/Controllers/SyS/SysController.php
+++ b/app/Http/Controllers/SyS/SysController.php
@@ -9,10 +9,10 @@ use App\Services\SyS\Import;
use App\Services\SyS\Cronjobs;
use App\Services\SyS\Customers;
use App\Services\SyS\DomainSSL;
-use App\Http\Controllers\Controller;
-use App\Models\UserSalesVolume;
use App\Services\SyS\Correction;
+use App\Http\Controllers\Controller;
use App\Services\SyS\ShoppingOrders;
+use App\Services\SyS\BusinessStructur;
class SysController extends Controller
{
@@ -26,27 +26,16 @@ class SysController extends Controller
public function index()
{
- $UserSalesVolumes =UserSalesVolume::all();
-
- foreach($UserSalesVolumes as $UserSalesVolume){
- if($UserSalesVolume->shopping_order->member_id !== NULL && $UserSalesVolume->user_id !== $UserSalesVolume->shopping_order->member_id){
- if($UserSalesVolume->shopping_order->member_id !== 6){
- dump($UserSalesVolume->shopping_order_id);
- dump($UserSalesVolume->shopping_order->member_id);
- dump($UserSalesVolume->user_id);
-
- dump("##");
- }
-
- }
- }
- dd("ebd");
return view('sys.index');
}
public function tool($serve)
{
switch ($serve) {
+
+ case 'business_structur':
+ return BusinessStructur::show();
+ break;
case 'sales_members':
return Sales::show();
break;
@@ -76,6 +65,10 @@ class SysController extends Controller
public function store($serve)
{
switch ($serve) {
+
+ case 'business_structur':
+ return BusinessStructur::show();
+ break;
case 'sales_members':
return Sales::show();
break;
diff --git a/app/Http/Controllers/User/PaymentController.php b/app/Http/Controllers/User/PaymentController.php
new file mode 100644
index 0000000..910bd8c
--- /dev/null
+++ b/app/Http/Controllers/User/PaymentController.php
@@ -0,0 +1,133 @@
+middleware('auth');
+ /* $this->startYear = 2021;
+ $this->endYear = date('Y');
+ $this->rangeYears = range($this->startYear, $this->endYear);
+ $this->activeYear = $this->endYear;*/
+ }
+
+ public function credit()
+ {
+ $user = \Auth::user();
+ $data = [
+ 'user' => $user,
+ ];
+ return view('user.payment.credit', $data);
+ }
+
+
+ public function credit_datatable(){
+
+ $user = \Auth::user();
+ $query = UserCredit::with('user', 'user.account')->select('user_credits.*')->where('user_id', $user->id);
+
+ return \DataTables::eloquent($query)
+
+ ->addColumn('view', function (UserCredit $UserCredit) {
+ $ret = "";
+ if(Credit::isCredit($UserCredit)){
+ $ret .= ' ';
+ $ret .= '';
+ }else{
+ $ret = "-";
+ }
+ return $ret;
+ })
+ ->addColumn('total', function (UserCredit $UserCredit) {
+ return $UserCredit->getFormattedTotal()." €";
+ })
+ ->addColumn('credits', function (UserCredit $UserCredit) {
+ $ret = "";
+ if($UserCredit->user_credit_items){
+ foreach($UserCredit->user_credit_items as $user_credit_item){
+ $ret .= nl2br($user_credit_item->message)." / ".$user_credit_item->created_at->format('d.m.Y')."
";
+
+ }
+ }
+ return $ret;
+ })
+ ->addColumn('status', function (UserCredit $UserCredit) {
+ return ''.$UserCredit->getStatusType().' ';
+ })
+ ->orderColumn('id', 'id $1')
+ ->orderColumn('status', 'status $1')
+ ->orderColumn('total', 'total $1')
+ ->rawColumns(['total', 'credits', 'status', 'view'])
+ ->make(true);
+ }
+
+ public function credit_item_datatable(){
+
+ $user = \Auth::user();
+ $query = UserCreditItem::select('user_credit_items.*')->where('user_id', $user->id);
+
+ return \DataTables::eloquent($query)
+
+ ->addColumn('message', function (UserCreditItem $user_credit_item) {
+ return nl2br($user_credit_item->message);
+ })
+ ->addColumn('credit', function (UserCreditItem $user_credit_item) {
+ return formatNumber($user_credit_item->credit)." €";
+ })
+ ->addColumn('created_at', function (UserCreditItem $user_credit_item) {
+ return formatDate($user_credit_item->created_at);
+ })
+ ->addColumn('status', function (UserCreditItem $user_credit_item) {
+ return ''.$user_credit_item->getStatusType().' ';
+ })
+ ->addColumn('paid', function (UserCreditItem $user_credit_item) {
+ return ($user_credit_item->paid && $user_credit_item->user_credit) ?
+ ' '.$user_credit_item->user_credit->full_number.''
+ : '';
+ })
+
+ ->orderColumn('message', 'message $1')
+ ->orderColumn('credit', 'credit $1')
+ ->orderColumn('created_at', 'created_at $1')
+ ->orderColumn('status', 'status $1')
+ ->rawColumns(['message', 'status', 'paid'])
+ ->make(true);
+ }
+
+
+ /*private function setActiveYears(){
+ if(Request::get('filter_year')){
+ $this->activeYear = Request::get('filter_year');
+ }
+ }
+
+ public function revenue()
+ {
+ $this->setActiveYears();
+
+ $user = \Auth::user();
+ $data = [
+ 'user' => $user,
+ 'years' => $this->rangeYears,
+ 'active_year' => $this->activeYear,
+ 'months' => range(1, 12),
+ ];
+ return view('user.payment.revenue', $data);
+ }*/
+}
\ No newline at end of file
diff --git a/app/Http/Controllers/User/TeamController.php b/app/Http/Controllers/User/TeamController.php
index 4045db8..f8cf8a7 100755
--- a/app/Http/Controllers/User/TeamController.php
+++ b/app/Http/Controllers/User/TeamController.php
@@ -2,13 +2,13 @@
namespace App\Http\Controllers\User;
+use Request;
use App\User;
use App\Services\HTMLHelper;
+use App\Models\UserSalesVolume;
use App\Http\Controllers\Controller;
use App\Services\BusinessPlan\TreeCalcBot;
-use Request;
-
-
+use Auth;
class TeamController extends Controller
{
@@ -38,18 +38,32 @@ class TeamController extends Controller
$user = User::find(\Auth::user()->id);
$this->setFilterVars();
$TreeCalcBot = new TreeCalcBot(session('team_user_filter_month'), session('team_user_filter_year'), 'member');
- $TreeCalcBot->initUser($user->id);
+ $TreeCalcBot->initStructureUser($user->id);
//for testing
//$TreeCalcBot->initUser(56);
$data = [
'filter_months' => HTMLHelper::$months,
- 'filter_years' => HTMLHelper::getYearRange(2022),
+ 'filter_years' => HTMLHelper::getYearRange(date('Y')),
'TreeCalcBot' => $TreeCalcBot,
];
return view('user.team.structure', $data);
}
+ public function points()
+ {
+ $this->setFilterVars();
+ $user = User::find(\Auth::user()->id);
+ $userSalesVolume = $user->getUserSalesVolume(intval(session('team_user_points_filter_month')), intval(session('team_user_points_filter_year')), 'first');
+ $data = [
+ 'userSalesVolume' => $userSalesVolume,
+ 'filter_months' => HTMLHelper::$months,
+ 'filter_years' => HTMLHelper::getYearRange(date('Y')),
+ ];
+ return view('user.team.points', $data);
+ }
+
+
private function setFilterVars(){
if(!session('team_user_filter_month')){
@@ -58,13 +72,90 @@ class TeamController extends Controller
if(!session('team_user_filter_year')){
session(['team_user_filter_year' => intval(date('Y'))]);
}
+
+ if(!session('team_user_points_filter_month')){
+ session(['team_user_points_filter_month' => intval(date('m'))]);
+ }
+ if(!session('team_user_points_filter_year')){
+ session(['team_user_points_filter_year' => intval(date('Y'))]);
+ }
if(Request::get('team_user_filter_month')){
session(['team_user_filter_month' => Request::get('team_user_filter_month')]);
}
- if(Request::get('team_user_filter_year')){
- session(['team_user_filter_year' => Request::get('team_user_filter_year')]);
+ if(Request::get('team_user_points_filter_year')){
+ session(['team_user_points_filter_year' => Request::get('team_user_points_filter_year')]);
}
+
+ if(Request::get('team_user_points_filter_month')){
+ session(['team_user_points_filter_month' => Request::get('team_user_points_filter_month')]);
+ }
+ if(Request::get('team_user_points_filter_year')){
+ session(['team_user_points_filter_year' => Request::get('team_user_points_filter_year')]);
+ }
+ }
+
+ private function initSearchPoints()
+ {
+ $this->setFilterVars();
+
+ $user_id = \Auth::user()->id;
+ $query = UserSalesVolume::with('user', 'user.account')->with('shopping_order')->select('user_sales_volumes.*')
+ ->where('user_sales_volumes.user_id', '=', $user_id)
+ ->where('user_sales_volumes.month', '=', Request::get('team_user_points_filter_month'))
+ ->where('user_sales_volumes.year', '=', Request::get('team_user_points_filter_year'));
+
+ return $query;
+ }
+
+
+ public function datatablePoints(){
+
+ $query = $this->initSearchPoints();
+ return \DataTables::eloquent($query)
+
+ ->addColumn('order', function (UserSalesVolume $UserSalesVolume) {
+ if($UserSalesVolume->shopping_order){
+ if($UserSalesVolume->status === 1 && $UserSalesVolume->shopping_order->auth_user_id === $UserSalesVolume->user_id){
+ return ''.$UserSalesVolume->shopping_order->id.'';
+ }
+ if(($UserSalesVolume->status === 2 || $UserSalesVolume->status === 3) && $UserSalesVolume->shopping_order->member_id === $UserSalesVolume->user_id){
+ return ''.$UserSalesVolume->shopping_order->id.'';
+ }
+ }
+ return '';
+ })
+ ->addColumn('total_net', function (UserSalesVolume $UserSalesVolume) {
+ return formatNumber($UserSalesVolume->total_net).' €';
+ })
+
+ ->addColumn('status', function (UserSalesVolume $UserSalesVolume) {
+ return ''.$UserSalesVolume->getStatusType().'';
+ })
+ ->addColumn('message', function (UserSalesVolume $UserSalesVolume) {
+ return ''.$UserSalesVolume->message.'';
+ })
+
+ ->orderColumn('id', 'id $1')
+ ->orderColumn('order', 'order $1')
+ ->orderColumn('status', 'status $1')
+ ->orderColumn('message', 'message $1')
+
+ ->rawColumns(['id', 'order', 'status', 'message', 'total_net'])
+ ->make(true);
+ }
+
+ public function load(){
+
+ $user = User::find(\Auth::user()->id);
+ $userSalesVolume = $user->getUserSalesVolume(intval(session('team_user_points_filter_month')), intval(session('team_user_points_filter_year')), 'first');
+
+ $data = [
+ 'userSalesVolume' => $userSalesVolume,
+ ];
+ $html = view('user.team._points_sum', $data)->render();
+ return response()->json(['response' => true, 'data'=>$data, 'html'=>$html]);
+
}
diff --git a/app/Mail/MailCredit.php b/app/Mail/MailCredit.php
new file mode 100644
index 0000000..7508347
--- /dev/null
+++ b/app/Mail/MailCredit.php
@@ -0,0 +1,54 @@
+user_credit = $user_credit;
+ $this->subject = 'Deine Gutschrift auf mivita.care';
+ }
+
+ public function build()
+ {
+ $title = __('email.credit_title');
+ $copy1line = __('email.credit_copy1line');
+
+ $filename = $this->user_credit->filename;
+ $disk = $this->user_credit->disk;
+ $path = $this->user_credit->getDownloadPath();
+
+ if (!Storage::disk($disk)->exists($path)) {
+ return;
+ }
+ $file = Storage::disk($disk)->path($path);
+ $file = str_replace('//', '/', $file);
+ $mime = Storage::disk($disk)->mimeType($path);
+
+ return $this->view('emails.blank')->with([
+ 'title' => $title,
+ 'copy1line' => $copy1line,
+ ])->attach($file,[
+ 'as' => $filename,
+ 'mime' => $mime,
+ ]); // attach file;
+ }
+}
\ No newline at end of file
diff --git a/app/Models/UserBusiness.php b/app/Models/UserBusiness.php
new file mode 100644
index 0000000..48c8379
--- /dev/null
+++ b/app/Models/UserBusiness.php
@@ -0,0 +1,104 @@
+ 'int',
+ 'month' => 'int',
+ 'year' => 'int',
+ 'b_structure_id' => 'int',
+ 'm_level_id' => 'int',
+ 'active_account' => 'bool',
+ 'm_account' => 'int',
+ 'sales_volume_points' => 'int',
+ 'sales_volume_points_shop' => 'int',
+ 'sales_volume_points_sum' => 'int',
+ 'sales_volume_total' => 'float',
+ 'sales_volume_total_shop' => 'float',
+ 'sales_volume_total_sum' => 'float',
+ 'margin' => 'int',
+ 'margin_shop' => 'int',
+ 'qual_kp' => 'int',
+ 'qual_tp' => 'int',
+ 'total_tp' => 'int',
+ 'total_qual_tp' => 'int',
+ 'commission_team_total' => 'float',
+ 'commission_shop_sales' => 'float',
+ 'qual_user_level' => 'array',
+ 'sponsor' => 'object',
+ 'business_lines' => AsArrayObject::class,
+ 'user_items' => AsArrayObject::class
+ ];
+
+ protected $dates = [
+ 'payment_account_date',
+ 'active_date'
+ ];
+
+ protected $fillable = [
+ 'user_id',
+ 'month',
+ 'year',
+ 'b_structure_id',
+ 'm_level_id',
+ 'sponsor',
+ 'user_level_name',
+ 'active_account',
+ 'payment_account_date',
+ 'active_date',
+ 'm_account',
+ 'email',
+ 'first_name',
+ 'last_name',
+ 'sales_volume_points',
+ 'sales_volume_points_shop',
+ 'sales_volume_points_sum',
+ 'sales_volume_total',
+ 'sales_volume_total_shop',
+ 'sales_volume_total_sum',
+ 'margin',
+ 'margin_shop',
+ 'qual_kp',
+ 'qual_tp',
+ 'qual_user_level',
+ 'total_tp',
+ 'total_qual_tp',
+ 'commission_team_total',
+ 'commission_shop_sales',
+ 'business_lines',
+ 'user_items',
+ ];
+
+ public function user_business_structure()
+ {
+ return $this->belongsTo(UserBusinessStructure::class, 'b_structure_id');
+ }
+
+ public function isSave(){
+ return $this->id !== null ? true : false;
+ }
+
+ public function setPaymentAccountDateAttribute( $value ) {
+ $this->attributes['payment_account_date'] = isset($value) ? (new Carbon($value))->format('Y-m-d') : NULL;
+ }
+
+
+ public function setActiveDateAttribute( $value ) {
+ $this->attributes['active_date'] = isset($value) ? (new Carbon($value))->format('Y-m-d') : NULL;
+ }
+
+
+
+}
diff --git a/app/Models/UserBusinessStructure.php b/app/Models/UserBusinessStructure.php
new file mode 100644
index 0000000..1ecc9bb
--- /dev/null
+++ b/app/Models/UserBusinessStructure.php
@@ -0,0 +1,73 @@
+ 'int',
+ 'year' => 'int',
+ 'completed' => 'bool',
+ 'status' => 'int',
+ 'structure' => 'object',
+ 'parentless' => 'object',
+ 'users' => 'array',
+ ];
+
+ protected $fillable = [
+ 'month',
+ 'year',
+ 'structure',
+ 'parentless',
+ 'users',
+ 'completed',
+ 'status'
+ ];
+
+
+ public function user_businesses()
+ {
+ return $this->hasMany(UserBusiness::class, 'b_structure_id');
+ }
+}
diff --git a/app/Models/UserCredit.php b/app/Models/UserCredit.php
new file mode 100644
index 0000000..d7ec7c4
--- /dev/null
+++ b/app/Models/UserCredit.php
@@ -0,0 +1,172 @@
+ 'int',
+ 'month' => 'int',
+ 'year' => 'int',
+ 'number' => 'int',
+ 'net' => 'float',
+ 'tax_rate' => 'float',
+ 'tax' => 'float',
+ 'taxable' => 'bool',
+ 'total' => 'float',
+ 'paid_out' => 'bool',
+ 'cancellation' => 'bool',
+ 'cancellation_id' => 'int',
+ 'status' => 'int',
+ 'infos' => 'array'
+ ];
+
+ protected $dates = [
+ 'date',
+ 'paid_out_date',
+ 'cancellation_date'
+ ];
+
+ protected $fillable = [
+ 'user_id',
+ 'month',
+ 'year',
+ 'date',
+ 'full_number',
+ 'number',
+ 'net',
+ 'tax_rate',
+ 'tax',
+ 'total',
+ 'taxable',
+ 'filename',
+ 'dir',
+ 'disk',
+ 'infos',
+ 'paid_out',
+ 'paid_out_date',
+ 'cancellation',
+ 'cancellation_id',
+ 'cancellation_date',
+ 'status'
+ ];
+
+ public static $statusTypes = [
+ 0 => 'offen',
+ 1 => 'bezahlt',
+ 2 => 'prüfen',
+ 10 => 'storniert'
+ ];
+
+ public static $statusColors = [
+ 0 => 'warning',
+ 1 => 'success',
+ 2 => 'secondary',
+ 10 => 'danger',
+ ];
+
+
+ public function user()
+ {
+ return $this->belongsTo(User::class);
+ }
+
+ public function user_credit_items()
+ {
+ return $this->hasMany(UserCreditItem::class);
+ }
+
+ public function isCredit(){
+ return $this->filename ? true : false;
+ }
+
+ public function getDateAttribute($value)
+ {
+ return $value ? Carbon::parse($value)->format(\Util::formatDateDB()) : "";
+ }
+
+
+ public function setDateAttribute( $value ) {
+ $this->attributes['date'] = isset($value) ? (new Carbon($value))->format('Y-m-d') : NULL;
+ }
+ public function getDateRaw(){
+ return isset($this->attributes['date']) ? $this->attributes['date'] : NULL;
+ }
+
+ public function getFormattedTax()
+ {
+ return formatNumber($this->attributes['tax']);
+ }
+
+ public function getFormattedNet()
+ {
+ return formatNumber($this->attributes['net']);
+ }
+
+ public function getFormattedTotal()
+ {
+ return formatNumber($this->attributes['total']);
+ }
+
+
+ public function getStatusType(){
+ return isset(self::$statusTypes[$this->status]) ? self::$statusTypes[$this->status] : "";
+ }
+
+ public function getStatusColor(){
+ return isset(self::$statusColors[$this->status]) ? self::$statusColors[$this->status] : "default";
+ }
+
+ public function getDownloadPath($full = false){
+ if(!$full){
+ return $this->dir.$this->filename;
+ }
+ return \Storage::disk($this->disk)->path($this->dir.$this->filename);
+ }
+}
diff --git a/app/Models/UserCreditItem.php b/app/Models/UserCreditItem.php
new file mode 100644
index 0000000..e795ddf
--- /dev/null
+++ b/app/Models/UserCreditItem.php
@@ -0,0 +1,99 @@
+ 'Provision Shop',
+ 2 => 'Provision Team',
+ 3 => 'Guthaben hinzugefügt',
+ 4 => 'commission ...',
+ ];
+
+ public static $statusColors = [
+ 0 => 'warning',
+ 1 => 'success',
+ 2 => 'secondary',
+ 3 => 'warning',
+ 4 => 'info',
+ 10 => 'danger',
+ ];
+
+
+ protected $table = 'user_credit_items';
+
+ protected $casts = [
+ 'user_id' => 'int',
+ 'user_credit_id' => 'int',
+ 'credit' => 'float',
+ 'status' => 'int',
+ 'paid' => 'bool'
+ ];
+
+ protected $fillable = [
+ 'user_id',
+ 'user_credit_id',
+ 'credit',
+ 'message',
+ 'status',
+ 'paid'
+ ];
+
+ public function user_credit()
+ {
+ return $this->belongsTo(UserCredit::class);
+ }
+
+ public function user()
+ {
+ return $this->belongsTo(User::class);
+ }
+
+
+ public function deleteTime(){
+ $time = '+100 min';
+ if(Carbon::parse($this->created_at)->modify($time)->gt(Carbon::now())){
+ return Carbon::now()->diffInMinutes(Carbon::parse($this->created_at)->modify($time));
+ }
+ return false;
+ }
+
+ public function getStatusType(){
+ return isset(self::$statusTypes[$this->status]) ? self::$statusTypes[$this->status] : "";
+ }
+
+ public function getStatusColor(){
+ return isset(self::$statusColors[$this->status]) ? self::$statusColors[$this->status] : "default";
+ }
+
+
+}
diff --git a/app/Models/UserSalesVolume.php b/app/Models/UserSalesVolume.php
index 93ec826..ef68259 100644
--- a/app/Models/UserSalesVolume.php
+++ b/app/Models/UserSalesVolume.php
@@ -56,6 +56,8 @@ use App\User;
* @method static \Illuminate\Database\Eloquent\Builder|UserSalesVolume whereUserInvoiceId($value)
* @method static \Illuminate\Database\Eloquent\Builder|UserSalesVolume whereYear($value)
* @mixin \Eloquent
+ * @property array|null $syslog
+ * @method static \Illuminate\Database\Eloquent\Builder|UserSalesVolume whereSyslog($value)
*/
class UserSalesVolume extends Model
{
diff --git a/app/Repositories/CreditRepository.php b/app/Repositories/CreditRepository.php
new file mode 100644
index 0000000..4df185b
--- /dev/null
+++ b/app/Repositories/CreditRepository.php
@@ -0,0 +1,125 @@
+model = $model;
+ }
+
+ public function create($request = [])
+ {
+ //need invoice $data
+ $number = Credit::getCreditNumber();
+ $credit_date = isset($request['credit_date']) ? $request['credit_date'] : \Carbon::now()->format("d.m.Y");
+ $credit_send_mail = isset($request['credit_send_mail']) ? true: false;
+ $credit_number = Credit::createCreditNumber($number, $credit_date);
+
+ $this->user_credit = new UserCredit();
+ $user_credit_items = $this->makeUserCredit();
+ $data = [
+ 'user' => $this->model,
+ 'credit_date' => $credit_date,
+ 'credit_number' => $credit_number,
+ 'user_credits' => $this->user_credit,
+ 'user_credit_items' => $user_credit_items,
+ ];
+ $pdf = PDF::loadView('pdf.credit', $data);
+ $pdf->setPaper('A4', 'portrait');
+
+ $dir = Credit::getCreditStorageDir($credit_date);
+ if(!Storage::disk('public')->exists( $dir )){
+ Storage::disk('public')->makeDirectory($dir); //creates directory
+ }
+ $path = Storage::disk('public')->getAdapter()->getPathPrefix();
+ $filename = Credit::makeCreditFilename($credit_number);
+
+ $pdf->save($path.$dir.$filename);
+
+ $pdfMerger = new MyPDFMerger();
+ $pdfMerger->addPDF($path.$dir.$filename);
+ $file = $pdfMerger->myMerge('string', $filename, 'template_invoice_de');
+ Storage::disk('public')->put($dir.$filename, $file);
+
+
+
+ $this->user_credit->user_id = $this->model->id;
+ $this->user_credit->year = \Carbon::parse($credit_date)->format('Y');
+ $this->user_credit->month = \Carbon::parse($credit_date)->format('n');
+ $this->user_credit->date = $credit_date;
+ $this->user_credit->filename = $filename;
+ $this->user_credit->dir = $dir;
+ $this->user_credit->disk = 'public';
+ $this->user_credit->number = $number;
+ $this->user_credit->full_number = $credit_number;
+ $this->user_credit->save();
+
+ if($credit_send_mail){
+ Credit::sendCreditMail($this->user_credit);
+ }
+ $this->finishUserCredit($this->user_credit->id, $user_credit_items);
+ return true;
+ }
+
+ private function finishUserCredit($user_credit_id, $user_credit_items){
+ //next credits
+ Credit::makeNextCreditNumber();
+ //mark as payed
+ //$UserCreditItems = UserCreditItem::where('user_id', $this->model->id)->wherePaid(false)->get();
+ foreach($user_credit_items as $user_credit_item){
+ $user_credit_item->paid = true;
+ $user_credit_item->user_credit_id = $user_credit_id;
+ $user_credit_item->save();
+ }
+ }
+
+
+ private function makeUserCredit(){
+
+ $this->user_credit->net = 0;
+ $this->user_credit->infos = [];
+ $infos = [];
+ $user_credit_items = [];
+
+
+ $UserCreditItems = UserCreditItem::where('user_id', $this->model->id)->wherePaid(false)->get();
+ foreach($UserCreditItems as $userCreditItem){
+ $user_credit_items[] = $userCreditItem;
+ $infos[] = ['id' => $userCreditItem->id, 'credit' => $userCreditItem->credit];
+ $this->user_credit->net += $userCreditItem->credit;
+ }
+ /* taxable_sales //user tax
+ 1 //umsatzsteuerpflichtig
+ 2 // nicht umsatzsteuerpflichtig
+ */
+ if($this->model->account){
+ $this->user_credit->taxable = $this->model->account->taxable_sales == 2 ? false : true;
+ if($this->user_credit->taxable){
+ $this->user_credit->tax_rate = config('app.main_tax_rate');
+ $this->user_credit->total = round($this->user_credit->net * config('app.main_tax'), 2);
+ $this->user_credit->tax = $this->user_credit->total - $this->user_credit->net;
+
+ }else{
+ $this->user_credit->tax_rate = 0;
+ $this->user_credit->total = $this->user_credit->net;
+ $this->user_credit->tax = 0;
+ }
+ }
+ $this->user_credit->infos = $infos;
+ return $user_credit_items;
+ }
+
+}
\ No newline at end of file
diff --git a/app/Services/BusinessPlan/BusinessTreeUserItem.php b/app/Services/BusinessPlan/BusinessTreeUserItem.php
new file mode 100644
index 0000000..ec59ebe
--- /dev/null
+++ b/app/Services/BusinessPlan/BusinessTreeUserItem.php
@@ -0,0 +1,172 @@
+date = $date;
+ return $this;
+ }
+
+ public function makeUser(User $user){
+
+ $this->user_level_active = $user->user_level ? $user->user_level : null;
+ $this->b_user = new UserBusiness();
+ $fill = [
+ 'user_id' => $user->id,
+ 'month' => $this->date->month,
+ 'year' => $this->date->year,
+ 'm_level' => $user->m_level,
+ 'm_sponsor' => $user->m_sponsor,
+ 'user_level_name' => $user->user_level ? $user->user_level->name : '',
+ 'active_account' => $user->payment_account ? Carbon::parse($user->payment_account)->gt(Carbon::parse($this->date->start_date)) : false,
+ 'payment_account_date' => $user->payment_account ? $user->getPaymentAccountDateFormat(false) : NULL,
+ 'active_date' => $user->active_date ? $user->active_date : NULL,
+ 'm_account' => $user->account->m_account,
+ 'email' => $user->email,
+ 'first_name' => $user->account->first_name,
+ 'last_name' => $user->account->last_name,
+ 'sales_volume_points' => $user->getUserSalesVolumeBy($this->date->month, $this->date->year, 'sales_volume_points'),
+ 'sales_volume_points_shop' => $user->getUserSalesVolumeBy($this->date->month, $this->date->year, 'sales_volume_points_shop'),
+ 'sales_volume_points_sum' => $user->getUserSalesVolumeBy($this->date->month, $this->date->year, 'sales_volume_points_sum'),
+ 'sales_volume_total' => $user->getUserSalesVolumeBy($this->date->month, $this->date->year, 'sales_volume_total'),
+ 'sales_volume_total_shop' => $user->getUserSalesVolumeBy($this->date->month, $this->date->year, 'sales_volume_total_shop'),
+ 'sales_volume_total_sum' => $user->getUserSalesVolumeBy($this->date->month, $this->date->year, 'sales_volume_total_sum'),
+ 'margin' => $user->user_level_active ? $user->user_level_active->margin : 0,
+ 'margin_shop' => $user->user_level_active ? $user->user_level_active->margin_shop : 0,
+ 'qual_kp' => $user->user_level_active ? $user->user_level_active->qual_kp : 0,
+ 'qual_tp' => $user->user_level_active ? $user->user_level_active->qual_tp : 0,
+ ];
+ $this->b_user->fill($fill);
+ }
+
+ public function addUserID(){
+ TreeCalcBot::addUserID($this->user_id);
+ }
+
+ public function isQualKP(){
+ return ($this->sales_volume_points_sum >= $this->qual_kp) ? true : false;
+ }
+
+ public function getRestQualKP(){
+ return $this->sales_volume_points_sum - $this->qual_kp;
+ }
+
+ public function checkSponsor(){
+ if($this->m_sponsor === null){
+ $this->m_sponsor_name = 'Keinen Sponsor zugewiesen';
+ return;
+ }
+ $user = User::find($this->m_sponsor);
+ if($user){
+ if($user->account){
+ $this->m_sponsor_name = substr('Sponsor: '.$user->account->first_name.' '.$user->account->last_name.' | '.$user->email.' | '.$user->account->m_account, 0, 190);
+ }else{
+ $this->m_sponsor_name = 'Sponsor: '.$user->email;
+ }
+ return;
+ }
+ $this->m_sponsor_name = 'Sponsor wurde gelöscht.';
+ return;
+ }
+ /*
+
+ 'total_tp' => ,
+ 'total_qual_tp' => ,
+ 'commission_total' => ,
+ 'lines',
+ 'items',
+ 'qual_user_level_id'
+ */
+ public function readParentsUser(){
+
+ $users = User::with('account')->select('users.*')
+ ->where('users.deleted_at', '=', null)
+ ->where('users.id', '!=', 1)
+ ->where('users.admin', "<", 4)
+ ->where('users.m_level', "!=", null)
+ ->where('users.m_sponsor', "=", $this->user_id) //<- need the id for parents / sponsors
+ ->where('users.payment_account', "!=", null)
+ ->where('users.active_date', "<=", $this->date->end_date)
+ ->get();
+ dd($users);
+ if($users){
+ foreach($users as $user){
+ $TreeUserItem = new TreeUserItem($this->date);
+ $TreeUserItem->makeUser($user);
+ $TreeUserItem->addUserID();
+ $this->items[] = $TreeUserItem;
+ }
+ }
+
+ foreach($this->items as $item){
+ $item->readParentsUser();
+ }
+
+ }
+
+
+ public function calcUserTP($line){
+ if(!isset($this->lines[$line])){
+ $this->lines[$line] = new stdClass();
+ $this->lines[$line]->points = 0;
+ }
+ foreach($this->items as $item){
+ if(count($item->items) > 0){
+ $this->calcUserTP($line+1);
+ }
+ $this->lines[$line]->points += $item->sales_volume_points_sum;
+ $this->total_tp += $item->sales_volume_points_sum;
+
+ }
+ }
+
+
+ public function calcQualTP(){
+ if($this->isQualKP()){
+ $this->total_qual_tp = $this->total_tp + $this->getRestQualKP();
+ $this->qual_user_level = UserLevel::where('qual_tp', '<=', $this->total_qual_tp)->where('pos', '<=', $this->user->user_level->pos)->orderBy('qual_tp', 'desc')->first();
+ $this->commission_total = 0;
+ if($this->qual_user_level){
+ foreach($this->lines as $line => $values){
+ $values->margin = $this->qual_user_level->{'pr_line_'.$line};
+ if($line > 6){
+ //wachstumsbonus
+ $values->margin = $this->qual_user_level->growth_bonus;
+ }
+ $values->commission = round($values->points / 100 * $values->margin, 2);
+
+ $this->commission_total += $values->commission;
+ $this->lines[$line] = $values;
+ }
+ }
+ }
+ }
+
+
+ public function __get($property) {
+ if (property_exists($this->b_user, $property)) {
+ return $this->b_user->$property;
+ }
+ if (isset($this->b_user->{$property})) {
+ return $this->b_user->{$property};
+ }
+ }
+
+}
diff --git a/app/Services/BusinessPlan/BusinessUserItem.php b/app/Services/BusinessPlan/BusinessUserItem.php
new file mode 100644
index 0000000..1bfa0b1
--- /dev/null
+++ b/app/Services/BusinessPlan/BusinessUserItem.php
@@ -0,0 +1,257 @@
+date = $date;
+ return $this;
+ }
+
+ public function makeUser($user_id){
+
+ //check for user an load
+ $this->b_user = UserBusiness::where('user_id', $user_id)->where('month', $this->date->month)->where('year', $this->date->year)->first();
+ if($this->b_user !== null){
+ return;
+ }
+ //read User here, can delete in stored data.
+ $user = User::find($user_id);
+ $user_level_active = $user->user_level ? $user->user_level : null;
+ $this->user_level_active_pos = $user_level_active ? $user_level_active->pos : 0;
+ $this->b_user = new UserBusiness();
+ $fill = [
+ 'user_id' => $user->id,
+ 'month' => $this->date->month,
+ 'year' => $this->date->year,
+ 'm_level_id' => $user->m_level,
+ 'user_level_name' => $user_level_active ? $user_level_active->name : '',
+ 'active_account' => $user->payment_account ? Carbon::parse($user->payment_account)->gt(Carbon::parse($this->date->start_date)) : false,
+ 'payment_account_date' => $user->payment_account ? $user->getPaymentAccountDateFormat(false) : NULL,
+ 'active_date' => $user->active_date ? $user->active_date : NULL,
+ 'm_account' => $user->account->m_account,
+ 'email' => $user->email,
+ 'first_name' => $user->account->first_name,
+ 'last_name' => $user->account->last_name,
+ 'sales_volume_points' => $user->getUserSalesVolumeBy($this->date->month, $this->date->year, 'sales_volume_points'),
+ 'sales_volume_points_shop' => $user->getUserSalesVolumeBy($this->date->month, $this->date->year, 'sales_volume_points_shop'),
+ 'sales_volume_points_sum' => $user->getUserSalesVolumeBy($this->date->month, $this->date->year, 'sales_volume_points_sum'),
+ 'sales_volume_total' => $user->getUserSalesVolumeBy($this->date->month, $this->date->year, 'sales_volume_total'),
+ 'sales_volume_total_shop' => $user->getUserSalesVolumeBy($this->date->month, $this->date->year, 'sales_volume_total_shop'),
+ 'sales_volume_total_sum' => $user->getUserSalesVolumeBy($this->date->month, $this->date->year, 'sales_volume_total_sum'),
+ 'margin' => $user_level_active ? $user_level_active->margin : 0,
+ 'margin_shop' => $user_level_active ? $user_level_active->margin_shop : 0,
+ 'qual_kp' => $user_level_active ? $user_level_active->qual_kp : 0,
+ 'qual_tp' => $user_level_active ? $user_level_active->qual_tp : 0,
+ 'commission_team_total' => 0,
+ 'commission_shop_sales' => 0,
+ ];
+ $this->b_user->fill($fill);
+ $this->b_user->business_lines = [];
+ $this->b_user->user_items = [];
+ $this->b_user->commission_shop_sales = round($this->b_user->sales_volume_total_shop / 100 * $this->b_user->margin_shop, 2);
+
+ }
+
+ public function addUserID(){
+ TreeCalcBot::addUserID($this->b_user->user_id);
+ }
+ public function getBUser(){
+ return $this->b_user;
+ }
+
+ public function addBusinessLineToUser($line, $obj){
+ $this->b_user->business_lines[$line] = $obj;
+ }
+
+ public function addBusinessLinePoints($line, $points){
+ $obj = $this->business_lines[$line];
+ $obj->points += $points;
+ $this->b_user->business_lines[$line] = $obj;
+ }
+
+ public function addTotalTP($points){
+ $this->b_user->total_tp += $points;
+
+ }
+
+ public function isQualKP(){
+ return ($this->sales_volume_points_sum >= $this->qual_kp) ? true : false;
+ }
+
+ public function getRestQualKP(){
+ return $this->sales_volume_points_sum - $this->qual_kp;
+ }
+
+ public function getCommissionTotal(){
+ return round($this->commission_shop_sales + $this->commission_team_total, 2);
+ }
+
+ public function calcQualTP(){
+ if($this->isQualKP()){
+ $this->b_user->total_qual_tp = $this->total_tp + $this->getRestQualKP();
+ $commission_total = 0;
+ $qualUserLevel = UserLevel::where('qual_tp', '<=', $this->total_qual_tp)->where('pos', '<=', $this->user_level_active_pos)->orderBy('qual_tp', 'desc')->first();
+ if($qualUserLevel){
+ $this->b_user->qual_user_level = $qualUserLevel->toArray();
+ foreach($this->business_lines as $line => $object){
+ //growth_bonus = ab ebene 6 wachstumsbonus
+ $object->margin = ($line <= 6) ? $this->qual_user_level['pr_line_'.$line] : $this->qual_user_level['growth_bonus'];
+ $object->commission = round($object->points / 100 * $object->margin, 2);
+ $commission_total += $object->commission;
+ $this->b_user->business_lines[$line] = $object;
+ }
+ }
+ $this->b_user->commission_team_total = $commission_total;
+ }
+ }
+
+ /*public function storeUser(){
+ $this->b_user->user_items = $this->storeUserItems($this->businessUserItems, 1);
+ $this->b_user->save();
+ }
+
+ private function storeUserItems($userItems, $line){
+ $ret = [];
+ foreach($userItems as $userItem){
+ $temp = null;
+ if(count($userItem->businessUserItems) > 0){
+ $temp = $this->storeUserItems($userItem->businessUserItems, $line+1);
+ }
+ $obj = new stdClass();
+ $obj->user_id = $userItem->user_id;
+ $obj->line = $line;
+ $obj->points = $userItem->sales_volume_points_sum;
+ $obj->parents = $temp;
+ $ret[] = $obj;
+ }
+ return $ret;
+ }*/
+
+ public function readParentsBusinessUsers(){
+
+ $users = User::with('account')->select('users.*')
+ ->where('users.deleted_at', '=', null)
+ ->where('users.id', '!=', 1)
+ ->where('users.admin', "<", 4)
+ ->where('users.m_level', "!=", null)
+ ->where('users.m_sponsor', "=", $this->b_user->user_id) //<- need the id for parents / sponsors
+ ->where('users.payment_account', "!=", null)
+ ->where('users.active_date', "<=", $this->date->end_date)
+ ->get();
+
+ if($users){
+ foreach($users as $user){
+ $BusinessUserItem = new BusinessUserItem($this->date);
+ $BusinessUserItem->makeUser($user->id);
+ $BusinessUserItem->addUserID();
+ $this->businessUserItems[] = $BusinessUserItem;
+ }
+ }
+ foreach($this->businessUserItems as $businessUserItem){
+ $businessUserItem->readParentsBusinessUsers();
+ }
+ }
+
+
+ public function readStoredParentsBusinessUsers($structure){
+
+ $parents = $this->findParentsBusinessOnStored($this->b_user->user_id, $structure);
+ if($parents){
+ foreach($parents as $obj){
+ $BusinessUserItem = new BusinessUserItem($this->date);
+ $BusinessUserItem->makeUser($obj->user_id);
+ $BusinessUserItem->addUserID();
+ $this->businessUserItems[] = $BusinessUserItem;
+ }
+ foreach($this->businessUserItems as $businessUserItem){
+ $businessUserItem->readStoredParentsBusinessUsers($parents);
+ }
+ }
+ }
+
+ private function findParentsBusinessOnStored($user_id, $structures){
+ if($structures){
+ foreach($structures as $obj){
+ if($user_id === $obj->user_id){
+ return $obj->parents;
+ }
+ if($obj->parents){
+ if($ret = $this->findParentsBusinessOnStored($user_id, $obj->parents)){
+ return $ret;
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ public function checkSponsor($user){
+
+ //check is store? has ID
+ if($this->b_user->isSave()){
+ return;
+ }
+ $sponsor = new stdClass();
+
+ $sponsor->is_sponsor = false;
+ $sponsor->user_id = false;
+ $sponsor->first_name = '';
+ $sponsor->last_name = '';
+ $sponsor->email = '';
+ $sponsor->m_account = '';
+ $sponsor->full_name = 'Keinen Sponsor zugewiesen';
+
+ if($user->m_sponsor){
+
+ if($user->user_sponsor){
+ $sponsor->is_sponsor = true;
+ $sponsor->user_id = $user->user_sponsor->id;
+ if($user->user_sponsor->account){
+ $sponsor->full_name = substr('Sponsor: '.$user->user_sponsor->account->first_name.' '.$user->user_sponsor->account->last_name.' | '.$user->user_sponsor->email.' | '.$user->user_sponsor->account->m_account, 0, 250);
+ $sponsor->first_name = $user->user_sponsor->account->last_name;
+ $sponsor->last_name = $user->user_sponsor->account->first_name;
+ $sponsor->m_account = $user->user_sponsor->account->m_account;
+ }else{
+ $sponsor->full_name = 'Sponsor: '.$user->user_sponsor->email;
+ }
+ $sponsor->email = $user->user_sponsor->email;
+ }else{
+ $sponsor->full_name = 'Sponsor wurde gelöscht.';
+ }
+ }
+ $this->b_user->sponsor = $sponsor;
+ return;
+ }
+
+ public function isSave(){
+ return $this->b_user->isSave();
+ }
+
+ public function __get($property) {
+ if (property_exists($this->b_user, $property)) {
+ return $this->b_user->$property;
+ }
+ if (isset($this->b_user->{$property})) {
+ return $this->b_user->{$property};
+ }
+ }
+
+}
diff --git a/app/Services/BusinessPlan/TreeCalcBot.php b/app/Services/BusinessPlan/TreeCalcBot.php
index 0243717..f9e9f76 100644
--- a/app/Services/BusinessPlan/TreeCalcBot.php
+++ b/app/Services/BusinessPlan/TreeCalcBot.php
@@ -1,27 +1,20 @@
init_from = $init_from;
}
- public function initMain()
+ public function initStructureAdmin($check = true)
{
- $this->readMain();
- $this->readParentsUser();
- $this->readParentlessUser();
- }
-
- public function initUser($user_id)
- {
- $user = User::find($user_id);
- $TreeUserItem = new TreeUserItem($this->date);
- $TreeUserItem->makeUser($user);
- $TreeUserItem->addUserID();
- $this->items[] = $TreeUserItem;
-
- $this->readParentsUser();
- $this->readSponsorUser($user->m_sponsor);
- }
-
-
- public function initDetailUser($user)
- {
- $this->user = new TreeUserItem($this->date);
- $this->user->makeUser($user);
- $this->user->readParentsUser();
-
-
- //calculate Lines
- if(count($this->user->items) > 0){
- $this->calcUserTP($this->user->items, 1);
+ //check is month is saved.
+ if($check && $UserBusinessStructure = self::isFromStored($this->date->month, $this->date->year)){
+ $this->readStoredRootUsers($UserBusinessStructure);
+ $this->readStoredParentsUsers($UserBusinessStructure);
+ $this->readStoredParentlessUser($UserBusinessStructure);
+ }else{
+ $this->readRootUsers();
+ $this->readParentsUsers();
+ $this->readParentlessUser();
}
- $this->calcQualTP();
-
+
}
- private function calcUserTP($items, $line){
- if(!isset($this->lines[$line])){
- $this->lines[$line] = new stdClass();
- $this->lines[$line]->points = 0;
- }
- foreach($items as $item){
- if(count($item->items) > 0){
- $this->calcUserTP($item->items, $line+1);
+ public function initStructureUser($user_id)
+ {
+
+ $BusinessUserItem = new BusinessUserItem($this->date);
+ $BusinessUserItem->makeUser($user_id);
+ $BusinessUserItem->addUserID();
+ $this->business_users[] = $BusinessUserItem;
+
+ //check is month is saved.
+ if($UserBusinessStructure = self::isFromStored($this->date->month, $this->date->year)){
+ $this->readStoredParentsUsers($UserBusinessStructure);
+
+ if(isset($this->business_users[0]) && $this->business_users[0]->sponsor){
+ $this->readStoredSponsorUser($this->business_users[0]->sponsor->user_id);
}
- $this->lines[$line]->points += $item->sales_volume_points_sum;
- $this->total_tp += $item->sales_volume_points_sum;
-
+
+
+ }else{
+ $this->readParentsUsers();
+ $this->readSponsorUser($user_id);
+ }
+
+
+ }
+
+
+ public function initBusinesslUserDetail($user)
+ {
+ $this->business_user = new BusinessUserItem($this->date);
+ $this->business_user->makeUser($user->id);
+ $this->business_user->checkSponsor($user);
+ if(!$this->business_user->isSave()){
+ $this->business_user->readParentsBusinessUsers();
+ //calculate Lines
+ if(count($this->business_user->businessUserItems) > 0){
+ $this->calcUserTP($this->business_user->businessUserItems, 1);
+ }
+ $this->business_user->calcQualTP();
}
}
+ /*public function storeBusinesslUser()
+ {
+ $this->business_user->storeUser();
+ }*/
+
+ public static function isFromStored($month, $year){
+ //when is stored an completed
+ $UserBusinessStructure = UserBusinessStructure::where('year', $year)->where('month', $month)->first();
+ if($UserBusinessStructure && $UserBusinessStructure->completed){
+ return $UserBusinessStructure;
+ }
+ return false;
+ }
+
+ private function calcUserTP($businessUserItems, $line){
+ if(!isset($this->business_user->business_lines[$line])){
+ $obj = new stdClass();
+ $obj->points = 0;
+ $this->business_user->addBusinessLineToUser($line, $obj);
+ }
+ foreach($businessUserItems as $business_user_item){
+ if(count($business_user_item->businessUserItems) > 0){
+ $this->calcUserTP($business_user_item->businessUserItems, $line+1);
+ }
+ $this->business_user->addBusinessLinePoints($line, $business_user_item->sales_volume_points_sum);
+ $this->business_user->addTotalTP($business_user_item->sales_volume_points_sum);
+ }
+ }
+
+ public function getGrowthBonus(){
+ if(count($this->business_user->business_lines) > 6){
+ $b_lines = $this->business_user->business_lines->toArray();
+ return array_slice($b_lines, 6);
+ }
+ return [];
+ }
+
+
public function getKeybyLine($line, $key){
- if(!isset($this->lines[$line])){
- return 0;
- }
- return isset($this->lines[$line]->{$key}) ? $this->lines[$line]->{$key} : 0;
-
- }
-
- public function calcQualTP(){
- if($this->user->isQualKP()){
- $this->total_qual_tp = $this->total_tp + $this->user->getRestQualKP();
- $this->qual_user_level = UserLevel::where('qual_tp', '<=', $this->total_qual_tp)->orderBy('qual_tp', 'desc')->first();
- $this->commission_total = 0;
- if($this->qual_user_level){
- foreach($this->lines as $line => $values){
- $values->margin = $this->qual_user_level->{'pr_line_'.$line};
- $values->commission = round($values->points / 100 * $values->margin, 2);
- $this->commission_total += $values->commission;
- $this->lines[$line] = $values;
+ if($this->business_user->business_lines){
+ $b_lines = $this->business_user->business_lines;
+ if(isset($b_lines[$line])){
+ if($b_lines[$line] instanceof stdClass){
+ if(isset($b_lines[$line]->{$key})){
+ return $b_lines[$line]->{$key};
+ }
+ }else{
+ if(isset($b_lines[$line][$key])){
+ return $b_lines[$line][$key];
+ }
}
+
}
}
+ return 0;
}
- private function readMain(){
-
+ //* reading from current*//
+ private function readRootUsers(){
$users = User::with('account')->select('users.*')
->where('users.deleted_at', '=', null)
->where('users.id', '!=', 1)
@@ -126,18 +158,17 @@ class TreeCalcBot
->get();
if($users){
foreach($users as $user){
- $TreeUserItem = new TreeUserItem($this->date);
- $TreeUserItem->makeUser($user);
- $TreeUserItem->addUserID();
- $this->items[] = $TreeUserItem;
+ $BusinessUserItem = new BusinessUserItem($this->date);
+ $BusinessUserItem->makeUser($user->id);
+ $BusinessUserItem->addUserID();
+ $this->business_users[] = $BusinessUserItem;
}
}
}
-
- private function readParentsUser(){
- foreach($this->items as $item){
- $item->readParentsUser();
+ private function readParentsUsers(){
+ foreach($this->business_users as $business_user){
+ $business_user->readParentsBusinessUsers();
}
}
@@ -149,34 +180,77 @@ class TreeCalcBot
->where('users.payment_account', "!=", null)
->where('users.active_date', "<=", $this->date->end_date)
->get();
+
foreach($users as $user){
if(!isset(self::$userIDs[$user->id])){
- $TreeUserItem = new TreeUserItem($this->date);
- $TreeUserItem->makeUser($user);
- $TreeUserItem->checkSponsor();
-
- $this->parentless[] = $TreeUserItem;
+ $BusinessUserItem = new BusinessUserItem($this->date);
+ $BusinessUserItem->makeUser($user->id);
+ $this->parentless[] = $BusinessUserItem;
}
}
}
- public function readSponsorUser($m_sponsor_id){
- $sponsor = User::find($m_sponsor_id);
- if($sponsor){
- $this->sponsor = new TreeUserItem($this->date);
- $this->sponsor->makeUser($sponsor);
+
+ //* reading from stored*//
+ private function readStoredRootUsers(UserBusinessStructure $userBusinessStructure){
+ //first level is root
+ if($userBusinessStructure->structure){
+ foreach($userBusinessStructure->structure as $obj){
+ $BusinessUserItem = new BusinessUserItem($this->date);
+ $BusinessUserItem->makeUser($obj->user_id);
+ $BusinessUserItem->addUserID();
+ $this->business_users[] = $BusinessUserItem;
+
+ }
}
}
+ private function readStoredParentsUsers(UserBusinessStructure $userBusinessStructure){
+ foreach($this->business_users as $business_user){
+ $business_user->readStoredParentsBusinessUsers($userBusinessStructure->structure);
+ }
+ }
+
+ private function readStoredParentlessUser(UserBusinessStructure $userBusinessStructure){
+ if($userBusinessStructure->parentless){
+ foreach($userBusinessStructure->parentless as $obj){
+ if(!isset(self::$userIDs[$obj->user_id])){
+ $BusinessUserItem = new BusinessUserItem($this->date);
+ $BusinessUserItem->makeUser($obj->user_id);
+ $this->parentless[] = $BusinessUserItem;
+
+ }
+ }
+ }
+ }
+
+
+ public function readSponsorUser($user_id){
+ $user = User::find($user_id);
+ $userSponsor = User::find($user->m_sponsor);
+ if($userSponsor){
+ $this->sponsor = new BusinessUserItem($this->date);
+ $this->sponsor->makeUser($userSponsor->id);
+ }
+ }
+
+ public function readStoredSponsorUser($user_id){
+
+ $this->sponsor = new BusinessUserItem($this->date);
+ $this->sponsor->makeUser($user_id);
+
+ }
+
+
public function getItems(){
- return $this->items;
+ return $this->business_users;
}
public function makeHtmlTree(){
$deep = 0;
$ret = '';
- foreach($this->items as $item){
- $ret .= $this->addItem($item, $deep);
+ foreach($this->business_users as $business_user){
+ $ret .= $this->addItem($business_user, $deep);
}
$ret .= '
';
return $ret;
@@ -185,16 +259,16 @@ class TreeCalcBot
private function addItem($item, $deep){
$button = '';
- if(($this->init_from === 'admin' && \Auth::user()->isAdmin()) || ($this->init_from === 'member' && \Auth::user()->id === $item->id)){
+ if(($this->init_from === 'admin' && \Auth::user()->isAdmin()) || ($this->init_from === 'member' && \Auth::user()->id === $item->user_id)){
$button = ' | ';
}
- return ''.
+ return ''.
'
@endif
-
+
+
| {{__('Datum') }} |
@@ -62,12 +63,31 @@
@endif
+
@endif
@if($user->isActiveAccount())
@endif
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php
index 686e079..7180e65 100755
--- a/resources/views/home.blade.php
+++ b/resources/views/home.blade.php
@@ -31,7 +31,6 @@
@include('dashboard._reminder')
-
@include('dashboard._membership')
@include('dashboard._shop')
diff --git a/resources/views/layouts/includes/layout-sidenav.blade.php b/resources/views/layouts/includes/layout-sidenav.blade.php
index 7c10265..3ae2825 100755
--- a/resources/views/layouts/includes/layout-sidenav.blade.php
+++ b/resources/views/layouts/includes/layout-sidenav.blade.php
@@ -19,6 +19,9 @@
{{ __('navigation.my_account') }}
diff --git a/resources/views/pdf/credit.blade.php b/resources/views/pdf/credit.blade.php
new file mode 100644
index 0000000..49d53b8
--- /dev/null
+++ b/resources/views/pdf/credit.blade.php
@@ -0,0 +1,413 @@
+
+
+
+
+ mivita.care
+
+
+
+
+
+
+
mivita e.K. • Leinfeld 2 • 87755 Kirchhaslach
+ @if($user->account)
+ @if($user->account->company)
+ {{ $user->account->company }}
+ @else
+ Firma
+ @endif
+ {{ \App\Services\HTMLHelper::getSalutationLang($user->account->salutation) }}
+ {{ $user->account->first_name }} {{ $user->account->last_name }}
+ {{ $user->account->address }}
+ @if($user->account->address_2)
+ {{ $user->account->address_2 }}
+ @endif
+ {{ $user->account->zipcode}} {{ $user->account->city }}
+ @if($user->account->country)
+ {{ $user->account->country->getLocated() }}
+ @endif
+ @endif
+
+
+
+
+
+ | {{ __('Berater-ID') }}: |
+
+ @if(isset($user->account))
+ {!! str_pad($user->account->m_account, 5, "0", STR_PAD_LEFT) !!}
+ @endif
+ |
+
+
+ | {{ __('Datum') }}: |
+ {{ $credit_date }} |
+
+
+ | {{ __('Gutschrifts-Nr.') }}: |
+ {{ $credit_number }} |
+
+ @if($user->account->tax_number)
+
+ |
+ {{ __('St.-Nr') }}: {{ $user->account->tax_number}}
+ |
+
+ @else
+ @if($user->account->tax_identification_number)
+
+ |
+ {{ __('USt-IdNr.') }}: {{ $user->account->tax_identification_number}}
+ |
+
+ @endif
+ @endif
+
+
+
+
+
GUTSCHRIFT
+ {{-- @if($cancellation)
+
{{ $invoice->invoice_name }}
+ @endif--}}
+
+
+
+
+
+
+
+ | Gutschrift aus |
+ Betrag |
+
+
+
+
+ @foreach($user_credit_items as $user_credit_item)
+
+ |
+ {!! nl2br($user_credit_item->message) !!} / {{ $user_credit_item->created_at->format('d.m.Y') }}
+ |
+
+ {{ \App\Services\Util::formatNumber($user_credit_item->credit) }} €*
+ |
+
+ @endforeach
+
+
+
+ |
+ Zwischensumme
+ |
+
+ {{ \App\Services\Util::formatNumber($user_credits->net) }} €*
+ |
+
+
+ @if ($user_credits->taxable)
+
+
+ Mehrwertsteuer: {{ $user_credits->tax_rate }} %
+ |
+
+ {{ \App\Services\Util::formatNumber($user_credits->tax) }} €
+ |
+
+
+ @else
+
+
+ Mehrwertsteuer: {{ $user_credits->tax_rate }} %
+ Gutschriftsempfänger ist Kleinunternehmer nach § 19 (1) UStG.
+
+ |
+
+ {{ \App\Services\Util::formatNumber($user_credits->tax) }} €
+ |
+
+ @endif
+
+
+ |
+ Auszahlungsbetrag (Brutto):
+ |
+
+ {{ \App\Services\Util::formatNumber($user_credits->total) }} €
+
+ * Nettobeträge
+ |
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/views/sys/index.blade.php b/resources/views/sys/index.blade.php
index 98853db..8699a5b 100644
--- a/resources/views/sys/index.blade.php
+++ b/resources/views/sys/index.blade.php
@@ -6,6 +6,7 @@
+
Business Strukrur speichern
Buchnungen Pakete Berater nach Jahren
Kundenhoheit prüfen
Cron Jobs
diff --git a/resources/views/sys/tools/business_structur.blade.php b/resources/views/sys/tools/business_structur.blade.php
new file mode 100644
index 0000000..72248a4
--- /dev/null
+++ b/resources/views/sys/tools/business_structur.blade.php
@@ -0,0 +1,16 @@
+@extends('layouts.layout-2')
+
+@section('content')
+
+
+
+ {!! Form::open(['url' => route('sysadmin_tool_store', ['business_structur']), 'class' => 'form-horizontal', 'id'=>'filter_sales_member']) !!}
+
+
+ {!! Form::close() !!}
+
+
+
+@endsection
diff --git a/resources/views/user/payment/credit.blade.php b/resources/views/user/payment/credit.blade.php
new file mode 100644
index 0000000..cbe2618
--- /dev/null
+++ b/resources/views/user/payment/credit.blade.php
@@ -0,0 +1,111 @@
+@extends('layouts.layout-2')
+
+@section('content')
+
+ {{ __('navigation.my_account') }} / {{ __('navigation.credit') }}
+
+
+
+
+
+
+
+ | {{ __('G.Nr.') }} |
+ {{ __('Gutschrift') }} |
+ {{ __('Betrag') }} |
+ {{ __('Datum') }} |
+ {{ __('Zahlung') }} |
+ {{ __('aus Guthaben') }} |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | Betreff |
+ Betrag |
+ Datum |
+ Status |
+ Gutschrift |
+
+
+
+
+
+
+
+
+
+@endsection
diff --git a/resources/views/user/team/_points_detail.blade.php b/resources/views/user/team/_points_detail.blade.php
new file mode 100644
index 0000000..3173fad
--- /dev/null
+++ b/resources/views/user/team/_points_detail.blade.php
@@ -0,0 +1,110 @@
+@extends('layouts.layout-2')
+
+@section('content')
+
+ @if ($errors->any())
+
+
+
+
+ @foreach ($errors->all() as $error)
+ - {{ $error }}
+ @endforeach
+
+
+
+
+ @endif
+
+ {{ __('navigation.my_team') }}
+
+
+
+
+ {!! Form::open(['url' => route('user_team_points'), 'class' => 'form-horizontal', 'id'=>'form_filter_user_points']) !!}
+
+
+ {!! Form::close() !!}
+
+
+
+
+
+
+
+
+
+
+ | {{__('Datum') }} |
+ {{__('Points')}} |
+ {{__('Umsatz netto')}} |
+ {{__('Art')}} |
+ {{__('Bestellung')}} |
+ {{__('Info') }} |
+
+
+
+
+
+
+
+@endsection
diff --git a/resources/views/user/team/_points_sum.blade.php b/resources/views/user/team/_points_sum.blade.php
new file mode 100644
index 0000000..64b112a
--- /dev/null
+++ b/resources/views/user/team/_points_sum.blade.php
@@ -0,0 +1,10 @@
+
+ @if($userSalesVolume)
+
+ Gesamte Points: {{ $userSalesVolume->getPointsSum() }} | Berater: {{ $userSalesVolume->month_points }} | Shop: {{ $userSalesVolume->month_shop_points }}
+
+
+ Gesamter Umsatz: {{ formatNumber($userSalesVolume->getTotalNetSum()) }} € | Berater: {{ formatNumber($userSalesVolume->month_total_net) }} € | Shop: {{ formatNumber($userSalesVolume->month_shop_total_net) }} €
+
+ @endif
+
\ No newline at end of file
diff --git a/resources/views/user/team/points.blade.php b/resources/views/user/team/points.blade.php
new file mode 100644
index 0000000..528f0fd
--- /dev/null
+++ b/resources/views/user/team/points.blade.php
@@ -0,0 +1,125 @@
+@extends('layouts.layout-2')
+
+@section('content')
+
+ @if ($errors->any())
+
+
+
+
+ @foreach ($errors->all() as $error)
+ - {{ $error }}
+ @endforeach
+
+
+
+
+ @endif
+
+ {{ __('navigation.my_team') }}
+
+
+
+
+ {!! Form::open(['url' => route('user_team_points'), 'class' => 'form-horizontal', 'id'=>'form_filter_user_points']) !!}
+
+
+ {!! Form::close() !!}
+
+
+ @include('user.team._points_sum', ['userSalesVolume' => $userSalesVolume])
+
+
+
+
+
+
+
+ | {{__('Datum') }} |
+ {{__('Points')}} |
+ {{__('Umsatz netto')}} |
+ {{__('Art')}} |
+ {{__('Bestellung')}} |
+ {{__('Info') }} |
+
+
+
+
+
+
+
+
+@endsection
diff --git a/resources/views/user/team/structure.blade.php b/resources/views/user/team/structure.blade.php
index fdfb784..c24f82a 100644
--- a/resources/views/user/team/structure.blade.php
+++ b/resources/views/user/team/structure.blade.php
@@ -74,6 +74,7 @@
+