- Nueva tabla isr_tables y isr_brackets en BD - Controlador IsrController para CRUD de tablas ISR - Integración con pestaña ISR en settings - Soporte para importación via CSV - Captura manual de brackets
84 lines
4.6 KiB
PHP
Executable File
84 lines
4.6 KiB
PHP
Executable File
<?php
|
|
|
|
use App\Http\Controllers\AuthController;
|
|
use App\Http\Controllers\CalendarController;
|
|
use App\Http\Controllers\DashboardController;
|
|
use App\Http\Controllers\ExpenseController;
|
|
use App\Http\Controllers\IsrController;
|
|
use App\Http\Controllers\MonthController;
|
|
use App\Http\Controllers\ReportController;
|
|
use App\Http\Controllers\SaleController;
|
|
use App\Http\Controllers\SettingsController;
|
|
use App\Http\Controllers\TelegramController;
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
// Rutas públicas - Auth
|
|
Route::middleware('guest')->group(function () {
|
|
Route::get('/login', [AuthController::class, 'showLoginForm'])->name('login');
|
|
Route::post('/login', [AuthController::class, 'login']);
|
|
Route::get('/register', [AuthController::class, 'showRegisterForm'])->name('register');
|
|
Route::post('/register', [AuthController::class, 'register']);
|
|
});
|
|
|
|
// Logout (accessible to authenticated users)
|
|
Route::post('/logout', [AuthController::class, 'logout'])->name('logout');
|
|
|
|
// Rutas protegidas
|
|
Route::middleware(['auth'])->group(function () {
|
|
// Dashboard
|
|
Route::get('/', [DashboardController::class, 'index'])->name('dashboard');
|
|
|
|
// Calendario
|
|
Route::get('/calendar', [CalendarController::class, 'index'])->name('calendar');
|
|
Route::post('/calendar/day', [CalendarController::class, 'storeDay'])->name('calendar.day.store');
|
|
|
|
// Meses
|
|
Route::resource('months', MonthController::class);
|
|
Route::post('/months/{month}/close', [MonthController::class, 'close'])->name('months.close');
|
|
|
|
// Ventas
|
|
Route::get('/sales', [SaleController::class, 'index'])->name('sales.index');
|
|
Route::get('/sales/create', [SaleController::class, 'create'])->name('sales.create');
|
|
Route::post('/sales', [SaleController::class, 'store'])->name('sales.store');
|
|
Route::get('/sales/{sale}/edit', [SaleController::class, 'edit'])->name('sales.edit');
|
|
Route::put('/sales/{sale}', [SaleController::class, 'update'])->name('sales.update');
|
|
Route::delete('/sales/{sale}', [SaleController::class, 'destroy'])->name('sales.destroy');
|
|
|
|
// Gastos
|
|
Route::get('/expenses', [ExpenseController::class, 'index'])->name('expenses.index');
|
|
Route::get('/expenses/create', [ExpenseController::class, 'create'])->name('expenses.create');
|
|
Route::post('/expenses', [ExpenseController::class, 'store'])->name('expenses.store');
|
|
Route::get('/expenses/{expense}/edit', [ExpenseController::class, 'edit'])->name('expenses.edit');
|
|
Route::put('/expenses/{expense}', [ExpenseController::class, 'update'])->name('expenses.update');
|
|
Route::delete('/expenses/{expense}', [ExpenseController::class, 'destroy'])->name('expenses.destroy');
|
|
|
|
// Reportes
|
|
Route::get('/reports/monthly', [ReportController::class, 'monthly'])->name('reports.monthly');
|
|
Route::get('/reports/biweekly', [ReportController::class, 'biweekly'])->name('reports.biweekly');
|
|
Route::get('/reports/yearly', [ReportController::class, 'yearly'])->name('reports.yearly');
|
|
|
|
// Telegram
|
|
Route::get('/telegram/verify', [TelegramController::class, 'showVerifyPage'])->name('telegram.verify');
|
|
Route::post('/telegram/regenerate', [TelegramController::class, 'regenerateCode'])->name('telegram.regenerate');
|
|
Route::post('/telegram/unlink', [TelegramController::class, 'unlink'])->name('telegram.unlink');
|
|
Route::post('/telegram/setup-webhook', [TelegramController::class, 'setupWebhook'])->name('telegram.setup-webhook');
|
|
Route::post('/telegram/delete-webhook', [TelegramController::class, 'deleteWebhook'])->name('telegram.delete-webhook');
|
|
|
|
// Settings
|
|
Route::get('/settings', [SettingsController::class, 'index'])->name('settings.index');
|
|
Route::put('/settings', [SettingsController::class, 'update'])->name('settings.update');
|
|
|
|
// ISR Tables
|
|
Route::prefix('settings/isr')->name('settings.isr.')->group(function () {
|
|
Route::get('/', [IsrController::class, 'index'])->name('index');
|
|
Route::post('/', [IsrController::class, 'store'])->name('store');
|
|
Route::delete('/{isrTable}', [IsrController::class, 'destroy'])->name('destroy');
|
|
Route::get('/{isrTable}/edit', [IsrController::class, 'edit'])->name('edit');
|
|
Route::put('/{isrTable}/brackets', [IsrController::class, 'updateBrackets'])->name('brackets.update');
|
|
Route::post('/{isrTable}/upload', [IsrController::class, 'uploadCsv'])->name('upload');
|
|
});
|
|
});
|
|
|
|
// Webhook de Telegram (público, sin auth)
|
|
Route::post('/telegram/webhook', [TelegramController::class, 'webhook'])->name('telegram.webhook');
|
|
Route::get('/telegram/setup', [TelegramController::class, 'setupWebhook'])->name('telegram.setup'); |