2026-01-28 16:46:31 -06:00

108 lines
4.4 KiB
PHP

<?php
use App\Http\Controllers\App\CashRegisterController;
use App\Http\Controllers\App\CategoryController;
use App\Http\Controllers\App\ClientController;
use App\Http\Controllers\App\ClientTierController;
use App\Http\Controllers\App\ExcelController;
use App\Http\Controllers\App\InventoryController;
use App\Http\Controllers\App\PriceController;
use App\Http\Controllers\App\ReportController;
use App\Http\Controllers\App\SaleController;
use App\Http\Controllers\App\ReturnController;
use App\Http\Controllers\App\FacturaDataController;
use App\Http\Controllers\App\InventorySerialController;
use Illuminate\Support\Facades\Route;
/**
* Rutas del núcleo de la aplicación.
*
* Se recomienda que no se modifiquen estas rutas a menos que sepa lo que está haciendo.
*/
require('core.php');
/**
* Rutas de tu aplicación.
*
* Estas rutas son de la aplicación AP I que desarrollarás. Siéntete libre de agregar lo que consideres necesario.
* Procura revisar que no existan rutas que entren en conflicto con las rutas del núcleo.
*/
/** Rutas protegidas (requieren autenticación) */
Route::middleware('auth:api')->group(function() {
// Tus rutas protegidas
//INVENTARIO
Route::resource('inventario', InventoryController::class);
Route::post('inventario/import', [InventoryController::class, 'import']);
Route::get('inventario/template/download', [InventoryController::class, 'downloadTemplate']);
// Números de serie
Route::resource('inventario.serials', InventorySerialController::class);
//CATEGORIAS
Route::resource('categorias', CategoryController::class);
//PRECIOS
Route::resource('precios', PriceController::class);
//VENTAS
Route::resource('/sales', SaleController::class);
Route::put('/sales/{sale}/cancel', [SaleController::class, 'cancel']);
// DEVOLUCIONES
Route::prefix('returns')->group(function () {
Route::get('/', [ReturnController::class, 'index']);
Route::get('/{return}', [ReturnController::class, 'show']);
Route::post('/', [ReturnController::class, 'store']);
Route::put('/{return}/cancel', [ReturnController::class, 'cancel']);
});
// Items que pueden ser devueltos de una venta
Route::get('/sales/{sale}/returnable', [ReturnController::class, 'returnable']);
// Rutas de caja
Route::prefix('cash-registers')->group(function () {
Route::get('/', [CashRegisterController::class, 'index']);
Route::get('/current', [CashRegisterController::class, 'current']);
Route::get('/{register}', [CashRegisterController::class, 'show']);
Route::post('/open', [CashRegisterController::class, 'open']);
Route::put('/{register}/close', [CashRegisterController::class, 'close']);
});
// REPORTES
Route::prefix('reports')->group(function () {
Route::get('top-selling-product', [ReportController::class, 'topSellingProduct']);
Route::get('products-without-movement', [ReportController::class, 'productsWithoutMovement']);
Route::get('client-discounts/excel', [ExcelController::class, 'clientDiscountsReport']);
});
//CLIENTES
Route::resource('clients', ClientController::class);
// ESTADÍSTICAS Y DESCUENTOS DE CLIENTES
Route::prefix('clients')->group(function () {
Route::get('/{client}/stats', [ClientController::class, 'stats']);
Route::get('/{client}/tier-history', [ClientController::class, 'tierHistory']);
Route::get('/{client}/sales-with-discounts', [ClientController::class, 'salesWithDiscounts']);
});
// RANGOS DE CLIENTES
Route::prefix('client-tiers')->group(function () {
Route::get('/', [ClientTierController::class, 'index']);
Route::get('/active', [ClientTierController::class, 'active']);
Route::get('/{tier}', [ClientTierController::class, 'show']);
Route::post('/', [ClientTierController::class, 'store']);
Route::put('/{tier}', [ClientTierController::class, 'update']);
Route::delete('/{tier}', [ClientTierController::class, 'destroy']);
Route::patch('/{tier}/toggle-active', [ClientTierController::class, 'toggleActive']);
});
});
/** Rutas públicas */
// Formulario de datos fiscales para facturación
Route::prefix('facturacion')->group(function () {
Route::get('/{invoiceNumber}', [FacturaDataController::class, 'show']);
Route::post('/{invoiceNumber}', [FacturaDataController::class, 'store']);
});