182 lines
8.3 KiB
PHP
182 lines
8.3 KiB
PHP
<?php
|
|
|
|
namespace App\Console\Commands;
|
|
|
|
use App\User;
|
|
use App\Models\UserBusiness;
|
|
use App\Services\BusinessPlan\BusinessUserItemOptimized;
|
|
use App\Cron\UserPaymentCredits;
|
|
use Illuminate\Console\Command;
|
|
use stdClass;
|
|
|
|
class BusinessTestAccount extends Command
|
|
{
|
|
/**
|
|
* php artisan business:test-account {user_id} {month} {year}
|
|
* The name and signature of the console command.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $signature = 'business:test-account {user_id} {month} {year} {--commissions : Calculate and show user commissions}';
|
|
|
|
/**
|
|
* The console command description.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $description = 'Test account data loading for a specific user in business calculations, with optional commission calculation';
|
|
|
|
/**
|
|
* Execute the console command.
|
|
*
|
|
* @return int
|
|
*/
|
|
public function handle()
|
|
{
|
|
try {
|
|
$userId = (int) $this->argument('user_id');
|
|
$month = (int) $this->argument('month');
|
|
$year = (int) $this->argument('year');
|
|
|
|
$this->info("Testing account data for User ID: {$userId}, Month: {$month}, Year: {$year}");
|
|
$this->line('');
|
|
|
|
// Lade User mit Account
|
|
$user = User::with('account', 'user_level')->find($userId);
|
|
|
|
if (!$user) {
|
|
$this->error("User {$userId} not found");
|
|
return 1;
|
|
}
|
|
|
|
$this->info("User found: {$user->email}");
|
|
$this->info("Account ID: " . ($user->account_id ?? 'NULL'));
|
|
|
|
if ($user->account) {
|
|
$this->info("Account loaded: YES");
|
|
$this->info("Account m_account: " . ($user->account->m_account ?? 'NULL'));
|
|
$this->info("Account first_name: " . ($user->account->first_name ?? 'NULL'));
|
|
$this->info("Account last_name: " . ($user->account->last_name ?? 'NULL'));
|
|
$this->info("Account birthday: " . ($user->account->birthday ?? 'NULL'));
|
|
$this->info("Account phone: " . ($user->account->getPhoneNumber() ?? 'NULL'));
|
|
} else {
|
|
$this->warn("Account loaded: NO");
|
|
}
|
|
|
|
$this->line('');
|
|
$this->info('Testing BusinessUserItemOptimized...');
|
|
|
|
// Erstelle Date Object
|
|
$date = new stdClass();
|
|
$date->month = $month;
|
|
$date->year = $year;
|
|
$date->start_date = "{$year}-{$month}-01 00:00:00";
|
|
$date->end_date = date('Y-m-t 23:59:59', strtotime("{$year}-{$month}-01"));
|
|
|
|
// Teste BusinessUserItemOptimized
|
|
$businessUserItem = new BusinessUserItemOptimized($date);
|
|
$businessUserItem->makeUserFromModel($user, true);
|
|
|
|
$bUser = $businessUserItem->getBUser();
|
|
|
|
$this->line('');
|
|
$this->info('Results from BusinessUserItemOptimized:');
|
|
$this->info("m_account: " . ($bUser->m_account ?? 'NULL'));
|
|
$this->info("first_name: " . ($bUser->first_name ?? 'NULL'));
|
|
$this->info("last_name: " . ($bUser->last_name ?? 'NULL'));
|
|
$this->info("user_birthday: " . ($bUser->user_birthday ?? 'NULL'));
|
|
$this->info("user_phone: " . ($bUser->user_phone ?? 'NULL'));
|
|
$this->info("email: " . ($bUser->email ?? 'NULL'));
|
|
|
|
$this->line('');
|
|
$this->info('Sales Volume Fields:');
|
|
$this->info("sales_volume_KP_points: " . ($bUser->sales_volume_KP_points ?? 'NULL'));
|
|
$this->info("sales_volume_TP_points: " . ($bUser->sales_volume_TP_points ?? 'NULL'));
|
|
$this->info("sales_volume_points_shop: " . ($bUser->sales_volume_points_shop ?? 'NULL'));
|
|
$this->info("sales_volume_points_KP_sum: " . ($bUser->sales_volume_points_KP_sum ?? 'NULL'));
|
|
$this->info("sales_volume_points_TP_sum: " . ($bUser->sales_volume_points_TP_sum ?? 'NULL'));
|
|
$this->info("sales_volume_total: " . ($bUser->sales_volume_total ?? 'NULL'));
|
|
$this->info("sales_volume_total_shop: " . ($bUser->sales_volume_total_shop ?? 'NULL'));
|
|
$this->info("sales_volume_total_sum: " . ($bUser->sales_volume_total_sum ?? 'NULL'));
|
|
|
|
$this->line('');
|
|
$this->info('Commission Fields:');
|
|
$this->info("payline_points: " . ($bUser->payline_points ?? 'NULL'));
|
|
$this->info("commission_pp_total: " . ($bUser->commission_pp_total ?? 'NULL'));
|
|
$this->info("commission_shop_sales: " . ($bUser->commission_shop_sales ?? 'NULL'));
|
|
$this->info("commission_growth_total: " . ($bUser->commission_growth_total ?? 'NULL'));
|
|
|
|
// Test UserSalesVolume directly
|
|
$this->line('');
|
|
$this->info('Testing UserSalesVolume data directly:');
|
|
$userSalesVolume = $user->getUserSalesVolume($month, $year, 'first');
|
|
if ($userSalesVolume) {
|
|
$this->info("UserSalesVolume found: ID {$userSalesVolume->id}");
|
|
$this->info("month_KP_points: " . ($userSalesVolume->month_KP_points ?? 'NULL'));
|
|
$this->info("month_TP_points: " . ($userSalesVolume->month_TP_points ?? 'NULL'));
|
|
$this->info("month_shop_points: " . ($userSalesVolume->month_shop_points ?? 'NULL'));
|
|
$this->info("month_total_net: " . ($userSalesVolume->month_total_net ?? 'NULL'));
|
|
$this->info("month_shop_total_net: " . ($userSalesVolume->month_shop_total_net ?? 'NULL'));
|
|
} else {
|
|
$this->warn("No UserSalesVolume found for month {$month}/{$year}");
|
|
|
|
// Check if any UserSalesVolume exists for this user
|
|
$anyVolume = \App\Models\UserSalesVolume::where('user_id', $userId)->orderBy('year', 'desc')->orderBy('month', 'desc')->first();
|
|
if ($anyVolume) {
|
|
$this->info("Latest UserSalesVolume found: {$anyVolume->month}/{$anyVolume->year}");
|
|
} else {
|
|
$this->warn("No UserSalesVolume records found for this user at all");
|
|
}
|
|
}
|
|
|
|
$this->line('');
|
|
|
|
// Prüfe ob UserBusiness bereits gespeichert ist
|
|
$existingUserBusiness = UserBusiness::where('user_id', $userId)
|
|
->where('month', $month)
|
|
->where('year', $year)
|
|
->first();
|
|
|
|
if ($existingUserBusiness) {
|
|
$this->info('Existing UserBusiness found:');
|
|
$this->info("m_account: " . ($existingUserBusiness->m_account ?? 'NULL'));
|
|
$this->info("first_name: " . ($existingUserBusiness->first_name ?? 'NULL'));
|
|
$this->info("last_name: " . ($existingUserBusiness->last_name ?? 'NULL'));
|
|
$this->info("user_birthday: " . ($existingUserBusiness->user_birthday ?? 'NULL'));
|
|
$this->info("user_phone: " . ($existingUserBusiness->user_phone ?? 'NULL'));
|
|
$this->info("email: " . ($existingUserBusiness->email ?? 'NULL'));
|
|
} else {
|
|
$this->info('No existing UserBusiness found for this period');
|
|
}
|
|
|
|
if ($this->option('commissions')) {
|
|
$this->line('');
|
|
$this->info('Testing UserBusiness Commissions to Credit...');
|
|
|
|
if ($existingUserBusiness) {
|
|
try {
|
|
$userPaymentCredits = new UserPaymentCredits($month, $year);
|
|
$ret = $userPaymentCredits->addUserCreditItem($existingUserBusiness);
|
|
$this->info('UserBusinessCredit calculated:');
|
|
$this->info('User ID: ' . $ret->user_id);
|
|
$this->info('Team Commission: ' . $ret->commission_pp_total);
|
|
$this->info('Shop Commission: ' . $ret->commission_shop_sales);
|
|
} catch (\Exception $e) {
|
|
$this->error('Error calculating commissions: ' . $e->getMessage());
|
|
}
|
|
} else {
|
|
$this->warn('No UserBusiness record found, cannot calculate commissions.');
|
|
}
|
|
}
|
|
|
|
$this->line('');
|
|
$this->info('✅ Test completed successfully');
|
|
|
|
return 0;
|
|
} catch (\Exception $e) {
|
|
$this->error('Test failed with error: ' . $e->getMessage());
|
|
$this->error('Stack trace: ' . $e->getTraceAsString());
|
|
return 1;
|
|
}
|
|
}
|
|
}
|