<?php

use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

// {} Librerías

// ! Peticiones
use Illuminate\Http\Request;

// ! Base de datos
use Illuminate\Support\Facades\DB;

// ! Controladores

// + General
use App\Http\Controllers\Controlador;

// ! Autenticación
use Illuminate\Support\Facades\Auth;

// {} Controlador de la autenticación (inicio y cierre de sesión)
Route::controller(Controlador::class)->group(function() {

	// + Rutas sin autenticación
	Route::post('/autenticacion/iniciar', 'autenticacion')
		->middleware(['guest'])
		->name('autenticacion.iniciar');

	// + Rutas con autenticación
	Route::get('/autenticacion/cerrar', 'autenticacion')
		->middleware(['auth', 'peticiones'])
		->name('autenticacion.cerrar');

});

// {} Rutas

// ! Vista del inicio
Route::middleware('peticiones')->get('/', function() {

	// + Condición para verificar si
	// + la sesión está autenticada y
	// + retornar hacía la vista inicial
	if (Auth::check())
		return view('aplicacion.seccion.inicio');
	else
		return view('autenticacion.inicio')
	;

})->name('inicio');

// {} Rutas sin autenticación
Route::group(['middleware' => ['guest']], function() {

	Route::get('/i', function() {

		return view('autenticacion2');

	});

});

// {} Rutas con autenticación

// ! Usuario autenticado
Route::group(['middleware' => ['peticiones', 'auth']], function() {

	// + Perfil
	Route::get('/perfil', function(Request $request) {

		return view('aplicacion.seccion.perfil');

	})->name('perfil');

	// +

	// ? Secciones de registros
	Route::prefix('/registros')->group(function() {

		// *
		Route::get('/', function(Request $request) {

			return back();

		});

		// * AFP
		Route::get('/afps', function(Request $request) {

			return view('aplicacion.seccion.registros.afps');

		})->name('registros.afps');

		// * AFP
		Route::get('/aliados', function(Request $request) {

			return view('aplicacion.seccion.registros.aliados');

		})->name('registros.aliados');

		// * Necesidades
		Route::get('/necesidades', function(Request $request) {

			return view('aplicacion.seccion.registros.necesidades');

		})->name('registros.necesidades');

		// * Tarifarios
		Route::get('/tarifarios', function(Request $request) {

			return view('aplicacion.seccion.registros.tarifarios');

		})->name('registros.tarifarios');

		// * Argumentos
		Route::get('/argumentos', function(Request $request) {

			return view('aplicacion.seccion.registros.argumentos');

		})->name('registros.argumentos');

		// * ESPECIALIDADES
		Route::get('/especialidades', function(Request $request) {

			return view('aplicacion.seccion.registros.especialidades');

		})->name('registros.especialidades');


		// * Colores
		Route::get('/colores', function(Request $request) {

				return view('aplicacion.seccion.registros.colores');

		})->name('registros.colores');


		// * Marcas
		Route::get('/marcas', function(Request $request) {

			return view('aplicacion.seccion.registros.marcas');

		})->name('registros.marcas');

		// * Tipos Permisos
		Route::get('/tiposPermisos', function(Request $request) {

			return view('aplicacion.seccion.registros.tiposPermisos');

		})->name('registros.tiposPermisos');

		// * Cobradores
		Route::get('/cobradores', function(Request $request) {

			return view('aplicacion.seccion.registros.cobradores');

		})->name('registros.cobradores');

		// * Accesos Remotos
		Route::get('/accesosRemotos', function(Request $request) {

			return view('aplicacion.seccion.administracion.registros.accesosRemotos');

		})->name('registros.accesosRemotos');

		// * Accesos Remotos
		Route::get('/accesosRemotos', function(Request $request) {

			return view('aplicacion.seccion.administracion.registros.subCategorias');

		})->name('registros.subCategorias');

		// * Oficiales
		Route::get('/oficiales', function(Request $request) {

			return view('aplicacion.seccion.registros.oficiales');

		})->name('registros.oficiales');

		// * Tipos de Notas
		Route::get('/tiposNotas', function(Request $request) {

			return view('aplicacion.seccion.registros.tiposNotas');

		})->name('registros.tiposNotas');

		// * Tipos de Contribuyentes
		Route::get('/tiposContribuyentes', function(Request $request) {

			return view('aplicacion.seccion.registros.tiposContribuyentes');

		})->name('registros.tiposContribuyentes');

		// * Supervisores
		Route::get('/supervisores', function(Request $request) {

			return view('aplicacion.seccion.registros.supervisores');

		})->name('registros.supervisores');

		// * Departamentos
		Route::get('/departamentos', function(Request $request) {

			return view('aplicacion.seccion.registros.departamentos');

		})->name('registros.departamentos');

		// * Posiciones
		Route::get('/posiciones', function(Request $request) {

			return view('aplicacion.seccion.registros.posiciones');

		})->name('registros.posiciones');

		// * Permisos Empleados
		Route::get('/permisosEmpleados', function(Request $request) {

			return view('aplicacion.seccion.registros.permisosEmpleados');

		})->name('registros.permisosEmpleados');

		// * Áreas
		Route::get('/areas', function(Request $request) {

			return view('aplicacion.seccion.registros.areas');

		})->name('registros.areas');

		// * Empresas
		Route::get('/empresas', function(Request $request) {

			return view('aplicacion.seccion.registros.empresas');

		})->name('registros.empresas');

		// * Categorías
		Route::get('/categorias', function(Request $request) {

			return view('aplicacion.seccion.registros.categorias');

		})->name('registros.categorias');

		// * Actividades
		Route::get('/actividades', function(Request $request) {

			return view('aplicacion.seccion.registros.actividades');

		})->name('registros.actividades');

		// * Cajeros
		Route::get('/cajeros', function (Request $request) {

			return view('aplicacion.seccion.registros.cajeros');

		})->name('registros.cajeros');

		// * Cuentas
		Route::get('/cuentas', function(Request $request) {

			return view('aplicacion.seccion.registros.cuentas');

		})->name('registros.cuentas');

		// * Clientes
		Route::get('/clientes', function (Request $request) {

			$fecha = DB::select("EXEC [dbo].[p_traer_fechas] ?, ?", [
				Auth::user()->id_usuario,
				'FECHA_ACTUAL'
			])[0];

			$fecha->minima = explode(' ', $fecha->fecha_minima)[0];
			$fecha->valor = explode(' ', $fecha->fecha)[0];
			$fecha->maxima = explode(' ', $fecha->fecha_maxima)[0];

			return view('aplicacion.seccion.registros.clientes', compact('fecha'));

		})->name('registros.clientes');

		// * Tipos de Seguimientos
		Route::get('/tiposSeguimientos', function(Request $request) {

			return view('aplicacion.seccion.registros.tiposSeguimientos');

		})->name('registros.tiposSeguimientos');

		// * Tipos de Relacionados
		Route::get('/tiposRelacionados', function(Request $request) {

			return view('aplicacion.seccion.registros.tiposRelacionados');

		})->name('registros.tiposRelacionados');

		// * Tipos de Documentos
		Route::get('/tiposDocumentos', function(Request $request) {

			return view('aplicacion.seccion.registros.tiposDocumentos');

		})->name('registros.tiposDocumentos');

		// * Seguimientos
		Route::get('/seguimientos', function(Request $request) {

			$fecha = DB::select("EXEC [dbo].[p_traer_fechas] ?, ?", [
				Auth::user()->id_usuario,
				'FECHA_ACTUAL'
			])[0];

			$fecha->minima = explode(' ', $fecha->fecha_minima)[0];
			$fecha->valor = explode(' ', $fecha->fecha)[0];
			$fecha->maxima = explode(' ', $fecha->fecha_maxima)[0];

			return view('aplicacion.seccion.registros.seguimientos', compact('fecha'));

		})->name('registros.seguimientos');

		// * Activos
		Route::get('/activos', function(Request $request) {

			return view('aplicacion.seccion.registros.activos');

		})->name('registros.activos');

		// * Indicadores
		Route::get('/indicadores', function(Request $request) {

			return view('aplicacion.seccion.registros.indicadores');

		})->name('registros.indicadores');

		// * Comprobantes Fiscales
		Route::get('/comprobantes', function(Request $request) {

			return view('aplicacion.seccion.registros.comprobantes');

		})->name('registros.comprobantes');

		// * Cuentas de Bancos
		Route::get('/cuentasBancos', function(Request $request) {

			return view('aplicacion.seccion.registros.cuentasBancos');

		})->name('registros.cuentasBancos');

		// * Cuentas Contables
		Route::get('/cuentasContables', function(Request $request) {

			return view('aplicacion.seccion.registros.cuentasContables');

		})->name('registros.cuentasContables');

		// * Notas
		Route::get('/notas', function(Request $request) {

			return view('aplicacion.seccion.registros.notas');

		})->name('registros.notas');

		// * Certificados
		Route::get('/certificados', function(Request $request) {

			return view('aplicacion.seccion.registros.certificados');

		})->name('registros.certificados');

		// * Vehículos
		Route::get('/vehiculos', function(Request $request) {

			return view('aplicacion.seccion.registros.vehiculos');

		})->name('registros.vehiculos');

		// * Articulos
		Route::get('/articulos', function(Request $request) {

			return view('aplicacion.seccion.registros.articulos');

		})->name('registros.articulos');

		// * Tipos Vehiculos
		Route::get('/tiposVehiculos', function(Request $request) {

			return view('aplicacion.seccion.registros.tiposVehiculos');

		})->name('registros.tiposVehiculos');

		// * Administración

		// Programas
		Route::get('/programas', function(Request $request) {

			return view('aplicacion.seccion.administracion.registros.programas');

		})->name('registros.programas');

		// Bancos
		Route::get('/bancos', function(Request $request) {

			return view('aplicacion.seccion.administracion.registros.bancos');

		})->name('registros.bancos');

		// Configuraciones
		Route::get('/configuraciones', function(Request $request) {

			return view('aplicacion.seccion.administracion.registros.configuraciones');

		})->name('registros.configuraciones');

		// Clasificaciones contables
		Route::get('/clasificacionesContables', function(Request $request) {

			return view('aplicacion.seccion.administracion.registros.clasificacionesContables');

		})->name('registros.clasificacionesContables');

		// Comentarios
		Route::get('/comentarios', function(Request $request) {

			return view('aplicacion.seccion.administracion.registros.comentarios');

		})->name('registros.comentarios');

		// Informes
		Route::get('/informes', function(Request $request) {

			return view('aplicacion.seccion.administracion.registros.informes');

		})->name('registros.informes');

		// Distritos
		Route::get('/distritos', function(Request $request) {

			return view('aplicacion.seccion.administracion.registros.distritos');

		})->name('registros.distritos');

		// Estados civiles
		Route::get('/estadosCiviles', function(Request $request) {

			return view('aplicacion.seccion.administracion.registros.estadosCiviles');

		})->name('registros.estadosCiviles');

		// Formas de pago
		Route::get('/formasPagos', function(Request $request) {

			return view('aplicacion.seccion.administracion.registros.formasPagos');

		})->name('registros.formasPagos');

		// Garantías
		Route::get('/garantias', function(Request $request) {

			return view('aplicacion.seccion.administracion.registros.garantias');

		})->name('registros.garantias');

		// Generos
		Route::get('/generos', function(Request $request) {

			return view('aplicacion.seccion.administracion.registros.generos');

		})->name('registros.generos');

		// Gestores
		Route::get('/gestores', function(Request $request) {

			return view('aplicacion.seccion.registros.gestores');

		})->name('registros.gestores');

		// Monedas
		Route::get('/monedas', function(Request $request) {

			return view('aplicacion.seccion.administracion.registros.monedas');

		})->name('registros.monedas');

		// Municipios
		Route::get('/municipios', function(Request $request) {

			return view('aplicacion.seccion.administracion.registros.municipios');

		})->name('registros.municipios');

		// Países
		Route::get('/paises', function(Request $request) {

			return view('aplicacion.seccion.administracion.registros.paises');

		})->name('registros.paises');

		// Provincias
		Route::get('/provincias', function(Request $request) {

			return view('aplicacion.seccion.administracion.registros.provincias');

		})->name('registros.provincias');

		// Rutas
		Route::get('/rutas', function(Request $request) {

			return view('aplicacion.seccion.administracion.registros.rutas');

		})->name('registros.rutas');

		// Renglones
		Route::get('/renglones', function (Request $request) {

			return view('aplicacion.seccion.administracion.registros.renglones');

		})->name('registros.renglones');

		// Sectores
		Route::get('/sectores', function(Request $request) {

			return view('aplicacion.seccion.administracion.registros.sectores');

		})->name('registros.sectores');

		// Seguros
		Route::get('/seguros', function(Request $request) {

			return view('aplicacion.seccion.administracion.registros.seguros');

		})->name('registros.seguros');

		// Sucursales
		Route::get('/sucursales', function(Request $request) {

			return view('aplicacion.seccion.administracion.registros.sucursales');

		})->name('registros.sucursales');

		// Tipos de Contactos
		Route::get('/tiposContactos', function(Request $request) {

			return view('aplicacion.seccion.administracion.registros.tiposContactos');

		})->name('registros.tiposContactos');

		// Tipos de Créditos
		Route::get('/tiposCreditos', function(Request $request) {

			return view('aplicacion.seccion.administracion.registros.tiposCreditos');

		})->name('registros.tiposCreditos');

		// Tipos de Préstamos
		Route::get('/tiposCalculos', function(Request $request) {

			return view('aplicacion.seccion.administracion.registros.tiposCalculos');

		})->name('registros.tiposCalculos');

		// Tipos de Cargos
		Route::get('/tiposCargos', function (Request $request) {

			return view('aplicacion.seccion.administracion.registros.tiposCargos');

		})->name('registros.tiposCargos');

		// Tipos de Tasas
		Route::get('/tiposTasas', function(Request $request) {

			return view('aplicacion.seccion.administracion.registros.tiposTasas');

		})->name('registros.tiposTasas');

		// Usuarios
		Route::get('/usuarios', function(Request $request) {

			return view('aplicacion.seccion.administracion.registros.usuarios');

		})->name('registros.usuarios');

		// Tipos de Cuentas
		Route::get('/tiposCuentas', function(Request $request) {

			return view('aplicacion.seccion.administracion.registros.tiposCuentas');

		})->name('registros.tiposCuentas');

		// Conceptos
		Route::get('/conceptos', function (Request $request) {

			return view('aplicacion.seccion.registros.conceptos');

		})->name('registros.conceptos');

		// Conceptos Fijos
		Route::get('/conceptosFijos', function (Request $request) {

			return view('aplicacion.seccion.registros.conceptosFijos');

		})->name('registros.conceptosFijos');

		// Grupos
		Route::get('/grupos', function (Request $request) {

			return view('aplicacion.seccion.registros.grupos');

		})->name('registros.grupos');

		// Instituciones Educativas
		Route::get('/institucionesEducativas', function (Request $request) {

			return view('aplicacion.seccion.registros.institucionesEducativas');

		})->name('registros.institucionesEducativas');

		// * Proyectos

		// Nóminas
		Route::get('/nominas', function(Request $request) {

			return view('aplicacion.seccion.proyectos.registros.nominas');

		})->name('registros.nominas');

		// Proyectos
		Route::get('/proyectos', function(Request $request) {

			return view('aplicacion.seccion.proyectos.registros.proyectos');

		})->name('registros.proyectos');

		// Empleados
		Route::get('/empleados', function(Request $request) {

			$fecha = DB::select("EXEC [dbo].[p_traer_fechas] ?, ?", [
				Auth::user()->id_usuario,
				'FECHA_ACTUAL'
			])[0];

			$fecha->minima = explode(' ', $fecha->fecha_minima)[0];
			$fecha->valor = explode(' ', $fecha->fecha)[0];
			$fecha->maxima = explode(' ', $fecha->fecha_maxima)[0];

			return view('aplicacion.seccion.registros.empleados', compact('fecha'));

		})->name('registros.empleados');

		// Suplidores
		Route::get('/suplidores', function(Request $request) {

			$fecha = DB::select("EXEC [dbo].[p_traer_fechas] ?, ?", [
				Auth::user()->id_usuario,
				'FECHA_ACTUAL'
			])[0];

			$fecha->minima = explode(' ', $fecha->fecha_minima)[0];
			$fecha->valor = explode(' ', $fecha->fecha)[0];
			$fecha->maxima = explode(' ', $fecha->fecha_maxima)[0];

			return view('aplicacion.seccion.registros.suplidores', compact('fecha'));

		})->name('registros.suplidores');

	});

	// ? Secciones de procesos
	Route::prefix('/procesos')->group(function() {

		// *
		Route::get('/', function(Request $request) {

			return back();

		});

		// * Anulaciones
		Route::get('/anulaciones', function(Request $request) {

			return view('aplicacion.seccion.procesos.anulaciones');

		})->name('procesos.anulaciones');

		// * Autorizaciones
		Route::get('/autorizaciones', function(Request $request) {

			return view('aplicacion.seccion.procesos.autorizaciones');

		})->name('procesos.autorizaciones');

		// * Amortización
		Route::get('/amortizacion', function(Request $request) {

			return view('aplicacion.seccion.procesos.amortizacion');

		})->name('procesos.amortizacion');

		// * Entradas de Facturas CXP
		Route::get('/entradasFacturasCXP', function(Request $request) {

			return view('aplicacion.seccion.procesos.entradasFacturasCXP');

		})->name('procesos.entradasFacturasCXP');

		// * Entradas CXC
		Route::get('/entradasFacturasCXC', function(Request $request) {

			return view('aplicacion.seccion.procesos.entradasFacturasCXC');

		})->name('procesos.entradasFacturasCXC');

		// * Documentos Bancarios
		Route::get('/depositosBancarios', function(Request $request) {

			$fecha = DB::select("EXEC [dbo].[p_traer_fechas] ?, ?", [
				Auth::user()->id_usuario,
				'FECHA_ACTUAL'
			])[0];

			$fecha->minima = explode(' ', $fecha->fecha_minima)[0];
			$fecha->valor = explode(' ', $fecha->fecha)[0];
			$fecha->maxima = explode(' ', $fecha->fecha_maxima)[0];

			return view('aplicacion.seccion.procesos.depositosBancarios', compact('fecha'));

		})->name('procesos.depositosBancarios');

		// * Consulta Solicitudes de Pagos
		Route::get('/consultaSolicitudesPagos', function(Request $request) {

			return view('aplicacion.seccion.procesos.consultaSolicitudesPagos');

		})->name('procesos.consultaSolicitudesPagos');

		// * Consulta Solicitudes Prestamos
		Route::get('/consultaSolicitudesPrestamos', function(Request $request) {

			return view('aplicacion.seccion.procesos.consultaSolicitudesPrestamos');

		})->name('procesos.consultaSolicitudesPrestamos');

		// * Consulta Estados de Cuentas
		Route::get('/consultaEstadosCuentas', function(Request $request) {

			return view('aplicacion.seccion.procesos.consultaEstadosCuentas');

		})->name('procesos.consultaEstadosCuentas');

		// * Generar Depreciación
		Route::get('/generarDepreciacion', function(Request $request) {

			return view('aplicacion.seccion.procesos.generarDepreciacion');

		})->name('procesos.generarDepreciacion');

		// * Preselección Facturas
		Route::get('/preseleccionFacturas', function(Request $request) {

			return view('aplicacion.seccion.procesos.preseleccionFacturas');

		})->name('procesos.preseleccionFacturas');

		// * Solicitudes Préstamos
		Route::get('/solicitudesPrestamos', function(Request $request) {

			return view('aplicacion.seccion.procesos.solicitudesPrestamos');

		})->name('procesos.solicitudesPrestamos');

		// * Histórico de Empleado
		Route::get('/historicoEmpleado', function(Request $request) {

			return view('aplicacion.seccion.procesos.historicoEmpleado');

		})->name('procesos.historicoEmpleado');

		// * Cargos
		Route::get('/cargos', function (Request $request) {

			return view('aplicacion.seccion.registros.cargos');

		})->name('procesos.cargos');

		// * Avances
		Route::get('/avances', function (Request $request) {

			$fecha = DB::select("EXEC [dbo].[p_traer_fechas] ?, ?", [
				Auth::user()->id_usuario,
				'FECHA_ACTUAL'
			])[0];

			$fecha->minima = explode(' ', $fecha->fecha_minima)[0];
			$fecha->valor = explode(' ', $fecha->fecha)[0];
			$fecha->maxima = explode(' ', $fecha->fecha_maxima)[0];

			return view('aplicacion.seccion.procesos.avances', compact('fecha'));

		})->name('procesos.avances');

		// * Apertura de Cajero
		Route::get('/aperturaCaja', function (Request $request) {

			return view('aplicacion.seccion.procesos.aperturaCaja');

		})->name('procesos.aperturaCaja');

		// * Anular Última Concilación
		Route::get('/anularConcilacion', function (Request $request) {

			return view('aplicacion.seccion.procesos.anularConcilacion');

		})->name('procesos.anularConcilacion');

		// * Cuadre de Caja
		Route::get('/cuadreCaja', function (Request $request) {

			return view('aplicacion.seccion.procesos.cuadreCaja');

		})->name('procesos.cuadreCaja');

		// * Pago Interes
		Route::get('/pagoInteres', function (Request $request) {

			$fecha = DB::select("EXEC [dbo].[p_traer_fechas] ?, ?", [
				Auth::user()->id_usuario,
				'FECHA_ACTUAL'
			])[0];

			$fecha->minima = explode(' ', $fecha->fecha_minima)[0];
			$fecha->valor = explode(' ', $fecha->fecha)[0];
			$fecha->maxima = explode(' ', $fecha->fecha_maxima)[0];

			return view('aplicacion.seccion.procesos.pagoInteres', compact('fecha'));

		})->name('procesos.pagoInteres');

		// * Documentos Bancarios Recibidos
		Route::get('/documentosBancariosRecibidos', function (Request $request) {

			return view('aplicacion.seccion.procesos.documentosBancariosRecibidos');

		})->name('procesos.documentosBancariosRecibidos');

		// * Solicitudes de Pagos
		Route::get('/solicitudesPagos', function (Request $request) {

			$fecha = DB::select("EXEC [dbo].[p_traer_fechas] ?, ?", [
				Auth::user()->id_usuario,
				'FECHA_ACTUAL'
			])[0];

			$fecha->minima = explode(' ', $fecha->fecha_minima)[0];
			$fecha->valor = explode(' ', $fecha->fecha)[0];
			$fecha->maxima = explode(' ', $fecha->fecha_maxima)[0];

			return view('aplicacion.seccion.procesos.solicitudesPagos', compact('fecha'));

		})->name('procesos.solicitudesPagos');

		// * Aplicar Avances
		Route::get('/aplicarAvances', function (Request $request) {

			return view('aplicacion.seccion.procesos.aplicarAvances');

		})->name('procesos.aplicarAvances');

		// * Caja
		Route::get('/caja', function (Request $request) {

			$fecha = DB::select("EXEC [dbo].[p_traer_fechas] ?, ?", [
				Auth::user()->id_usuario,
				'FECHA_ACTUAL'
			])[0];

			$fecha->minima = explode(' ', $fecha->fecha_minima)[0];
			$fecha->valor = explode(' ', $fecha->fecha)[0];
			$fecha->maxima = explode(' ', $fecha->fecha_maxima)[0];

			$caja = DB::select("EXEC [dbo].[p_traer_unico_registro] ?, ?, ?, ?", [
				Auth::user()->id_usuario,
				'TURNO_ABIERTO',
				Route::currentRouteName(),
				''
			]);

			if ($caja) {

				$caja = $caja[0];

				$caja->fecha = explode(' ', $caja->fecha)[0];

				if (empty($caja->id_cajero))
					$caja->id_cajero = 0
				;

			} else
				$caja = (object) ['cajero' => '', 'turno' => '', 'fecha' => '']
			;

			return view('aplicacion.seccion.procesos.caja', compact('fecha', 'caja'));

		})->name('procesos.caja');

		// * Cambios de Cuentas
		Route::get('/cambiosCuentas', function(Request $request) {

			return view('aplicacion.seccion.procesos.cambiosCuentas');

		})->name('procesos.cambiosCuentas');

		// * Administración

		// Permisos
		Route::get('/permisos', function(Request $request) {

			return view('aplicacion.seccion.administracion.procesos.permisos');

		})->name('procesos.permisos');

		// Permisos
		Route::get('/favoritos', function(Request $request) {

			return view('aplicacion.seccion.administracion.procesos.favoritos');

		})->name('procesos.favoritos');

		// * Proyectos

		// Asistencias
		Route::get('/asistencias', function(Request $request) {

			return view('aplicacion.seccion.proyectos.procesos.asistencias');

		})->name('procesos.asistencias');

		// Pagos de Facturas
		Route::get('/documentosCXP', function(Request $request) {

			$fecha = DB::select("EXEC [dbo].[p_traer_fechas] ?, ?", [
				Auth::user()->id_usuario,
				'FECHA_ACTUAL'
			])[0];

			$fecha->minima = explode(' ', $fecha->fecha_minima)[0];
			$fecha->valor = explode(' ', $fecha->fecha)[0];
			$fecha->maxima = explode(' ', $fecha->fecha_maxima)[0];

			return view('aplicacion.seccion.procesos.documentosCXP', compact('fecha'));

		})->name('procesos.documentosCXP');

		// Cobros Facturas
		Route::get('/cobrosFacturas', function(Request $request) {

			return view('aplicacion.seccion.procesos.cobrosFacturas');

		})->name('procesos.cobrosFacturas');

		// Cerrar Nómina
		Route::get('/cerrarNomina', function(Request $request) {

			return view('aplicacion.seccion.proyectos.procesos.cerrarNomina');

		})->name('procesos.cerrarNomina');

		// Generar Factura de Gestión
		Route::get('/facturaGestion', function(Request $request) {

			return view('aplicacion.seccion.proyectos.procesos.facturaGestion');

		})->name('procesos.facturaGestion');

		// Facturas
		Route::get('/facturas', function(Request $request) {

			$fecha = DB::select("EXEC [dbo].[p_traer_fechas] ?, ?", [
				Auth::user()->id_usuario,
				'FECHA_ACTUAL'
			])[0];

			$fecha->minima = explode(' ', $fecha->fecha_minima)[0];
			$fecha->valor = explode(' ', $fecha->fecha)[0];
			$fecha->maxima = explode(' ', $fecha->fecha_maxima)[0];

			return view('aplicacion.seccion.proyectos.procesos.facturas', compact('fecha'));

		})->name('procesos.facturas');

		// Reaperturas Nóminas
		Route::get('/reaperturasNominas', function(Request $request) {

			return view('aplicacion.seccion.proyectos.procesos.reaperturasNominas');

		})->name('procesos.reaperturasNominas');

	});

	// ? Secciones de reportes
	Route::prefix('/reportes')->group(function() {

		// *
		Route::get('/', function(Request $request) {

			return back();

		});

		// * Seguimientos
		Route::get('/seguimientos', function(Request $request) {

			return view('aplicacion.seccion.reportes.seguimientos');

		})->name('reportes.seguimientos');

		// * Indicadores
		Route::get('/indicadores', function(Request $request) {

			return view('aplicacion.seccion.reportes.indicadores');

		})->name('reportes.indicadores');

		// * Data Credito
		Route::get('/dataCredito', function(Request $request) {

			return view('aplicacion.seccion.reportes.dataCredito');

		})->name('reportes.dataCredito');

		// * Solicitudes Pagos
		Route::get('/solicitudesPagos', function(Request $request) {

			return view('aplicacion.seccion.reportes.solicitudesPagos');

		})->name('reportes.solicitudesPagos');

		// * Consulta de Distribuciones de Excedentes
		Route::get('/consultaExcedentes', function(Request $request) {

			return view('aplicacion.seccion.reportes.consultaExcedentes');

		})->name('reportes.consultaExcedentes');

		// * Cargos
		Route::get('/cargos', function(Request $request) {

			return view('aplicacion.seccion.reportes.cargos');

		})->name('reportes.cargos');

		// * Documentos Cargos
		Route::get('/documentosCargos', function(Request $request) {

			return view('aplicacion.seccion.reportes.documentosCargos');

		})->name('reportes.documentosCargos');

		// * Documentos Bancarios
		Route::get('/documentosBancarios', function(Request $request) {

			return view('aplicacion.seccion.reportes.documentosBancarios');

		})->name('reportes.documentosBancarios');

		// * Documentos para reimpresión
		Route::get('/documentos', function (Request $request) {

			return view('aplicacion.seccion.reportes.documentos');

		})->name('reportes.documentos');

		// * Cuentas
		Route::get('/cuentas', function(Request $request) {

			return view('aplicacion.seccion.reportes.cuentas');

		})->name('reportes.cuentas');

		// * Balances de Cuentas
		Route::get('/balancesCuentas', function(Request $request) {

			return view('aplicacion.seccion.reportes.balancesCuentas');

		})->name('reportes.balancesCuentas');

		// * Cuotas Por Cobrar
		Route::get('/cuotasPorCobrar', function(Request $request) {

			return view('aplicacion.seccion.reportes.cuotasPorCobrar');

		})->name('reportes.cuotasPorCobrar');

		// * Documentos Cuentas
		Route::get('/documentosCuentas', function(Request $request) {

			return view('aplicacion.seccion.reportes.documentosCuentas');

		})->name('reportes.documentosCuentas');

		// * Documentos Préstamos
		Route::get('/documentosPrestamos', function(Request $request) {

			return view('aplicacion.seccion.reportes.documentosPrestamos');

		})->name('reportes.documentosPrestamos');

		// * Variables Financiares
		Route::get('/variablesFinancieras', function(Request $request) {

			return view('aplicacion.seccion.reportes.variablesFinancieras');

		})->name('reportes.variablesFinancieras');

		// * Prestamos
		Route::get('/prestamos', function(Request $request) {

			return view('aplicacion.seccion.reportes.prestamos');

		})->name('reportes.prestamos');

		// * Clientes
		Route::get('/clientes', function(Request $request) {

			return view('aplicacion.seccion.reportes.clientes');

		})->name('reportes.clientes');

		// * Activos
		Route::get('/activos', function(Request $request) {

			return view('aplicacion.seccion.reportes.activos');

		})->name('reportes.activos');

		// * Documentos Anulados
		Route::get('/documentosAnulados', function(Request $request) {

			return view('aplicacion.seccion.reportes.documentosAnulados');

		})->name('reportes.documentosAnulados');

		// * Facturas CXP
		Route::get('/facturasCXP', function(Request $request) {

			return view('aplicacion.seccion.reportes.facturasCXP');

		})->name('reportes.facturasCXP');

		// * Facturas CXC
		Route::get('/facturasCXC', function(Request $request) {

			return view('aplicacion.seccion.reportes.facturasCXC');

		})->name('reportes.facturasCXC');

		// * Facturas CXC
		Route::get('/avances', function(Request $request) {

			return view('aplicacion.seccion.reportes.avances');

		})->name('reportes.avances');

		// * Notas
		Route::get('/notas', function(Request $request) {

			return view('aplicacion.seccion.reportes.notas');

		})->name('reportes.notas');

		// * Vehículos
		Route::get('/vehiculos', function(Request $request) {

			return view('aplicacion.seccion.reportes.vehiculos');

		})->name('reportes.vehiculos');

		// * Artículos
		Route::get('/articulos', function(Request $request) {

			return view('aplicacion.seccion.reportes.articulos');

		})->name('reportes.articulos');

		// * Proyectos

		// Documentos CXP
		Route::get('/documentosCXP', function(Request $request) {

			return view('aplicacion.seccion.reportes.documentosCXP');

		})->name('reportes.documentosCXP');

		// Documentos CXC
		Route::get('/documentosCXC', function(Request $request) {

			return view('aplicacion.seccion.reportes.documentosCXC');

		})->name('reportes.documentosCXC');


		// Asistencias
		Route::get('/asistencias', function(Request $request) {

			return view('aplicacion.seccion.proyectos.reportes.asistencias');

		})->name('reportes.asistencias');

		// Nóminas
		Route::get('/nominas', function(Request $request) {

			return view('aplicacion.seccion.proyectos.reportes.nominas');

		})->name('reportes.nominas');

		// Nóminas
		Route::get('/suplidores', function(Request $request) {

			return view('aplicacion.seccion.reportes.suplidores');

		})->name('reportes.suplidores');

		// Empleados
		Route::get('/empleados', function(Request $request) {

			return view('aplicacion.seccion.reportes.empleados');

		})->name('reportes.empleados');

	});

	// + Administración
	Route::prefix('/administracion')->group(function() {

		// ? Inicio
		Route::get('/', function(Request $request) {

			$programas = [];

			return view('aplicacion.seccion.administracion.inicio', compact('programas'));

		})->name('administracion');

		// ? Secciones de registros
		Route::prefix('/registros')->group(function() {});

		// ? Secciones de procesos
		Route::prefix('/procesos')->group(function() {});

		// ? Secciones de reportes
		Route::prefix('/reportes')->group(function() {});

	});

	// + Proyectos
	Route::prefix('/proyectos')->group(function() {

		// ? Secciones de registros
		Route::prefix('/registros')->group(function() {});

		// ? Secciones de procesos
		Route::prefix('/procesos')->group(function() {});

		// ? Secciones de reportes
		Route::prefix('/reportes')->group(function() {});

	});

	// + Estadísticas
	Route::prefix('/estadisticas')->group(function() {

		// ?
		Route::get('/', function(Request $request) {

			return view('aplicacion.seccion.estadisticas.inicio');

		})->name('estadisticas');

	});

	// + Peticiones
	Route::controller(Controlador::class)->group(function() {

		Route::get('/esquema', 'esquema')->name('esquema');

		Route::post('/correo', 'correo')->name('correo');

		Route::get('/ejecutar', 'ejecutar')->name('ejecutar');

		Route::post('/ejecutar', 'ejecutar')->name('ejecutar');

		Route::get('/impresion', 'impresion')->name('impresion');

	});

});
