feat: actualiza configuración de Docker, mejora la gestión de permisos y renombra campos en las vistas de constancias
This commit is contained in:
parent
e701d5348a
commit
3e7d381f15
@ -51,6 +51,8 @@ services:
|
|||||||
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
|
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
|
||||||
MYSQL_PASSWORD: ${DB_PASSWORD}
|
MYSQL_PASSWORD: ${DB_PASSWORD}
|
||||||
MYSQL_USER: ${DB_USERNAME}
|
MYSQL_USER: ${DB_USERNAME}
|
||||||
|
ports:
|
||||||
|
- "${DB_FORWARD_PORT}:3306"
|
||||||
volumes:
|
volumes:
|
||||||
- mysql_data:/var/lib/mysql
|
- mysql_data:/var/lib/mysql
|
||||||
networks:
|
networks:
|
||||||
|
|||||||
@ -350,8 +350,8 @@ public function cancelarTagNoAsignado(Request $request)
|
|||||||
'motivo' => ($lastCancellation->cancellationReason && isset($lastCancellation->cancellationReason->name))
|
'motivo' => ($lastCancellation->cancellationReason && isset($lastCancellation->cancellationReason->name))
|
||||||
? $lastCancellation->cancellationReason->name
|
? $lastCancellation->cancellationReason->name
|
||||||
: 'No especificado',
|
: 'No especificado',
|
||||||
'operador' => ($lastCancellation->cancelledBy && isset($lastCancellation->cancelledBy->name))
|
'operador' => ($lastCancellation->cancelledBy && isset($lastCancellation->cancelledBy->full_name))
|
||||||
? $lastCancellation->cancelledBy->name
|
? $lastCancellation->cancelledBy->full_name
|
||||||
: 'Sistema',
|
: 'Sistema',
|
||||||
'modulo' => ($tag->module && isset($tag->module->name)) ? $tag->module->name : 'No especificado',
|
'modulo' => ($tag->module && isset($tag->module->name)) ? $tag->module->name : 'No especificado',
|
||||||
'ubicacion' => ($tag->module && isset($tag->module->address)) ? $tag->module->address : 'No especificado',
|
'ubicacion' => ($tag->module && isset($tag->module->address)) ? $tag->module->address : 'No especificado',
|
||||||
|
|||||||
@ -77,8 +77,6 @@ public function store(ModuleStoreRequest $request)
|
|||||||
'responsible_id' => $request->input('responsible_id'),
|
'responsible_id' => $request->input('responsible_id'),
|
||||||
'municipality_id' => $request->input('municipality_id'),
|
'municipality_id' => $request->input('municipality_id'),
|
||||||
'address' => $request->input('address'),
|
'address' => $request->input('address'),
|
||||||
'colony' => $request->input('colony'),
|
|
||||||
'cp' => $request->input('cp'),
|
|
||||||
'longitude' => $request->input('longitude'),
|
'longitude' => $request->input('longitude'),
|
||||||
'latitude' => $request->input('latitude'),
|
'latitude' => $request->input('latitude'),
|
||||||
'status' => $request->input('status', true), // Por defecto activo
|
'status' => $request->input('status', true), // Por defecto activo
|
||||||
@ -99,8 +97,6 @@ public function store(ModuleStoreRequest $request)
|
|||||||
'name' => $module->municipality->name,
|
'name' => $module->municipality->name,
|
||||||
] : null,
|
] : null,
|
||||||
'address' => $module->address,
|
'address' => $module->address,
|
||||||
'colony' => $module->colony,
|
|
||||||
'cp' => $module->cp,
|
|
||||||
'longitude' => $module->longitude,
|
'longitude' => $module->longitude,
|
||||||
'latitude' => $module->latitude,
|
'latitude' => $module->latitude,
|
||||||
'status' => $module->status ? 'Activo' : 'Inactivo',
|
'status' => $module->status ? 'Activo' : 'Inactivo',
|
||||||
@ -170,8 +166,6 @@ public function update(ModuleUpdateRequest $request, int $id)
|
|||||||
'name' => $module->municipality->name,
|
'name' => $module->municipality->name,
|
||||||
] : null,
|
] : null,
|
||||||
'address' => $module->address,
|
'address' => $module->address,
|
||||||
'colony' => $module->colony,
|
|
||||||
'cp' => $module->cp,
|
|
||||||
'longitude' => $module->longitude,
|
'longitude' => $module->longitude,
|
||||||
'latitude' => $module->latitude,
|
'latitude' => $module->latitude,
|
||||||
'status' => $module->status ? 'Activo' : 'Inactivo',
|
'status' => $module->status ? 'Activo' : 'Inactivo',
|
||||||
|
|||||||
@ -477,7 +477,7 @@ private function cancellationData(Tag $tag)
|
|||||||
if ($tagCancellationLog) {
|
if ($tagCancellationLog) {
|
||||||
$data['fecha'] = $tagCancellationLog->cancellation_at->format('d/m/Y');
|
$data['fecha'] = $tagCancellationLog->cancellation_at->format('d/m/Y');
|
||||||
$data['motivo'] = $tagCancellationLog->cancellationReason->name ?? 'No especificado';
|
$data['motivo'] = $tagCancellationLog->cancellationReason->name ?? 'No especificado';
|
||||||
$data['operador'] = $tagCancellationLog->cancelledBy->name ?? 'Sistema';
|
$data['operador'] = $tagCancellationLog->cancelledBy->full_name ?? 'Sistema';
|
||||||
|
|
||||||
// Extraer datos adicionales de las observaciones
|
// Extraer datos adicionales de las observaciones
|
||||||
$this->extractAdditionalDataFromObservations($tagCancellationLog->cancellation_observations, $data);
|
$this->extractAdditionalDataFromObservations($tagCancellationLog->cancellation_observations, $data);
|
||||||
@ -503,7 +503,7 @@ private function cancellationData(Tag $tag)
|
|||||||
|
|
||||||
if ($vehicleTagLog) {
|
if ($vehicleTagLog) {
|
||||||
$data['motivo'] = $vehicleTagLog->cancellationReason->name ?? 'No especificado';
|
$data['motivo'] = $vehicleTagLog->cancellationReason->name ?? 'No especificado';
|
||||||
$data['operador'] = $vehicleTagLog->cancelledBy->name ?? 'Sistema';
|
$data['operador'] = $vehicleTagLog->cancelledBy->full_name ?? 'Sistema';
|
||||||
|
|
||||||
// Cargar módulo del cual el usuario es responsable
|
// Cargar módulo del cual el usuario es responsable
|
||||||
if ($vehicleTagLog->cancelledBy) {
|
if ($vehicleTagLog->cancelledBy) {
|
||||||
|
|||||||
@ -19,8 +19,7 @@ public function rules(): array
|
|||||||
'responsible_id' => ['required', 'exists:users,id'],
|
'responsible_id' => ['required', 'exists:users,id'],
|
||||||
'municipality_id' => 'required|exists:municipalities,id',
|
'municipality_id' => 'required|exists:municipalities,id',
|
||||||
'address' => ['required', 'string', 'max:255'],
|
'address' => ['required', 'string', 'max:255'],
|
||||||
'colony' => ['required', 'string', 'max:100'],
|
|
||||||
'cp' => ['nullable', 'string', 'max:10'],
|
|
||||||
'longitude' => ['nullable', 'numeric', 'between:-180,180'],
|
'longitude' => ['nullable', 'numeric', 'between:-180,180'],
|
||||||
'latitude' => ['nullable', 'numeric', 'between:-90,90'],
|
'latitude' => ['nullable', 'numeric', 'between:-90,90'],
|
||||||
'status' => ['nullable', 'boolean'],
|
'status' => ['nullable', 'boolean'],
|
||||||
@ -38,11 +37,7 @@ public function messages(): array
|
|||||||
'address.required' => 'La dirección es requerida',
|
'address.required' => 'La dirección es requerida',
|
||||||
'address.string' => 'La dirección debe ser una cadena de texto',
|
'address.string' => 'La dirección debe ser una cadena de texto',
|
||||||
'address.max' => 'La dirección no debe superar los 255 caracteres',
|
'address.max' => 'La dirección no debe superar los 255 caracteres',
|
||||||
'colony.required' => 'La colonia es requerida',
|
|
||||||
'colony.string' => 'La colonia debe ser una cadena de texto',
|
|
||||||
'colony.max' => 'La colonia no debe superar los 100 caracteres',
|
|
||||||
'cp.string' => 'El código postal debe ser una cadena de texto',
|
|
||||||
'cp.max' => 'El código postal no debe superar los 10 caracteres',
|
|
||||||
'longitude.numeric' => 'La longitud debe ser un número',
|
'longitude.numeric' => 'La longitud debe ser un número',
|
||||||
'longitude.between' => 'La longitud debe estar entre -180 y 180',
|
'longitude.between' => 'La longitud debe estar entre -180 y 180',
|
||||||
'latitude.numeric' => 'La latitud debe ser un número',
|
'latitude.numeric' => 'La latitud debe ser un número',
|
||||||
|
|||||||
@ -18,9 +18,8 @@ public function rules(): array
|
|||||||
'name' => ['nullable', 'string', 'max:50', Rule::unique('modules', 'name')->ignore($this->route('module'))],
|
'name' => ['nullable', 'string', 'max:50', Rule::unique('modules', 'name')->ignore($this->route('module'))],
|
||||||
'municipality_id' => ['nullable', 'integer', 'exists:municipalities,id'],
|
'municipality_id' => ['nullable', 'integer', 'exists:municipalities,id'],
|
||||||
'responsible_id' => ['nullable', 'integer', 'exists:users,id'],
|
'responsible_id' => ['nullable', 'integer', 'exists:users,id'],
|
||||||
'address' => ['nullable', 'string', 'max:50'],
|
'address' => ['nullable', 'string', 'max:250'],
|
||||||
'colony' => ['nullable', 'string', 'max:100'],
|
|
||||||
'cp' => ['nullable', 'string', 'max:10'],
|
|
||||||
'longitude' => ['nullable', 'numeric', 'between:-180,180'],
|
'longitude' => ['nullable', 'numeric', 'between:-180,180'],
|
||||||
'latitude' => ['nullable', 'numeric', 'between:-90,90'],
|
'latitude' => ['nullable', 'numeric', 'between:-90,90'],
|
||||||
'status' => ['nullable', 'boolean'],
|
'status' => ['nullable', 'boolean'],
|
||||||
@ -39,10 +38,7 @@ public function messages(): array
|
|||||||
'responsible_id.exists' => 'El responsable seleccionado no existe',
|
'responsible_id.exists' => 'El responsable seleccionado no existe',
|
||||||
'address.string' => 'La dirección debe ser texto',
|
'address.string' => 'La dirección debe ser texto',
|
||||||
'address.max' => 'La dirección no debe superar los 50 caracteres',
|
'address.max' => 'La dirección no debe superar los 50 caracteres',
|
||||||
'colony.string' => 'La colonia debe ser texto',
|
|
||||||
'colony.max' => 'La colonia no debe superar los 100 caracteres',
|
|
||||||
'cp.string' => 'El código postal debe ser texto',
|
|
||||||
'cp.max' => 'El código postal no debe superar los 10 caracteres',
|
|
||||||
'longitude.numeric' => 'La longitud debe ser un número',
|
'longitude.numeric' => 'La longitud debe ser un número',
|
||||||
'longitude.between' => 'La longitud debe estar entre -180 y 180',
|
'longitude.between' => 'La longitud debe estar entre -180 y 180',
|
||||||
'latitude.numeric' => 'La latitud debe ser un número',
|
'latitude.numeric' => 'La latitud debe ser un número',
|
||||||
|
|||||||
@ -14,8 +14,6 @@ class Module extends Model
|
|||||||
'responsible_id',
|
'responsible_id',
|
||||||
'municipality_id',
|
'municipality_id',
|
||||||
'address',
|
'address',
|
||||||
'colony',
|
|
||||||
'cp',
|
|
||||||
'longitude',
|
'longitude',
|
||||||
'latitude',
|
'latitude',
|
||||||
'status',
|
'status',
|
||||||
|
|||||||
@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('modules', function (Blueprint $table) {
|
||||||
|
$table->dropColumn(['colony', 'cp']);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('modules', function (Blueprint $table) {
|
||||||
|
$table->string('colony')->nullable();
|
||||||
|
$table->string('cp')->nullable();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
@ -50,7 +50,7 @@ public function run(): void
|
|||||||
'FOTO LADO LATERAL DEL VEHÍCULO',
|
'FOTO LADO LATERAL DEL VEHÍCULO',
|
||||||
'FOTO UBICACIÓN DEL VIN',
|
'FOTO UBICACIÓN DEL VIN',
|
||||||
'FOTO CONSTANCIA DE INSCRIPCIÓN PEGADA (CI MORADA O AZUL)',
|
'FOTO CONSTANCIA DE INSCRIPCIÓN PEGADA (CI MORADA O AZUL)',
|
||||||
'FORMATO DE CONSTANCIA DE SUSTITUCIÓN',
|
'FORMATO DE CONSTANCIA SUSTITUIDA',
|
||||||
'EVIDENCIA ADICIONAL',
|
'EVIDENCIA ADICIONAL',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@ -29,7 +29,7 @@ class RoleSeeder extends Seeder
|
|||||||
public function run(): void
|
public function run(): void
|
||||||
{
|
{
|
||||||
// === USUARIOS ===
|
// === USUARIOS ===
|
||||||
$users = PermissionType::firstOrCreate(['name' => 'Usuarios']);
|
$users = PermissionType::updateOrCreate(['name' => 'Usuarios']);
|
||||||
|
|
||||||
[
|
[
|
||||||
$userIndex,
|
$userIndex,
|
||||||
@ -39,7 +39,7 @@ public function run(): void
|
|||||||
] = $this->onCRUD('users', $users, 'api');
|
] = $this->onCRUD('users', $users, 'api');
|
||||||
|
|
||||||
// === ROLES ===
|
// === ROLES ===
|
||||||
$roles = PermissionType::firstOrCreate(['name' => 'Roles']);
|
$roles = PermissionType::updateOrCreate(['name' => 'Roles']);
|
||||||
|
|
||||||
[
|
[
|
||||||
$roleIndex,
|
$roleIndex,
|
||||||
@ -51,7 +51,7 @@ public function run(): void
|
|||||||
$rolePermissions = $this->onPermission('roles.permissions', 'Permisos de roles', $roles, 'api');
|
$rolePermissions = $this->onPermission('roles.permissions', 'Permisos de roles', $roles, 'api');
|
||||||
|
|
||||||
// === MÓDULOS ===
|
// === MÓDULOS ===
|
||||||
$modules = PermissionType::firstOrCreate(['name' => 'Módulos']);
|
$modules = PermissionType::updateOrCreate(['name' => 'Módulos']);
|
||||||
|
|
||||||
[
|
[
|
||||||
$moduleIndex,
|
$moduleIndex,
|
||||||
@ -64,7 +64,7 @@ public function run(): void
|
|||||||
$moduleToggleStatus = $this->onPermission('module.toggle_status', 'Cambiar estado del módulo', $modules, 'api');
|
$moduleToggleStatus = $this->onPermission('module.toggle_status', 'Cambiar estado del módulo', $modules, 'api');
|
||||||
|
|
||||||
// === DISPOSITIVOS MÓVILES ===
|
// === DISPOSITIVOS MÓVILES ===
|
||||||
$devices = PermissionType::firstOrCreate(['name' => 'Dispositivos Móviles']);
|
$devices = PermissionType::updateOrCreate(['name' => 'Dispositivos Móviles']);
|
||||||
|
|
||||||
[
|
[
|
||||||
$deviceIndex,
|
$deviceIndex,
|
||||||
@ -76,31 +76,31 @@ public function run(): void
|
|||||||
$deviceToggleStatus = $this->onPermission('devices.toggle_status', 'Cambiar estado del dispositivo', $devices, 'api');
|
$deviceToggleStatus = $this->onPermission('devices.toggle_status', 'Cambiar estado del dispositivo', $devices, 'api');
|
||||||
|
|
||||||
// === INSCRIPCIONES ===
|
// === INSCRIPCIONES ===
|
||||||
$inscriptions = PermissionType::firstOrCreate(['name' => 'Proceso de Sustitución por primera vez']);
|
$inscriptions = PermissionType::updateOrCreate(['name' => 'Proceso de Sustitución por primera vez']);
|
||||||
|
|
||||||
$inscriptionVehicle = $this->onPermission('inscription.vehicle', 'Inscribir vehículo', $inscriptions, 'api');
|
$inscriptionVehicle = $this->onPermission('inscription.vehicle', 'Inscribir vehículo', $inscriptions, 'api');
|
||||||
$inscriptionSearchNational = $this->onPermission('inscription.search.national', 'Buscar en consulta nacional', $inscriptions, 'api');
|
$inscriptionSearchNational = $this->onPermission('inscription.search.national', 'Buscar en consulta nacional', $inscriptions, 'api');
|
||||||
$inscriptionSearch = $this->onPermission('inscription.search', 'Buscar en consulta', $inscriptions, 'api');
|
$inscriptionSearch = $this->onPermission('inscription.search', 'Buscar en consulta', $inscriptions, 'api');
|
||||||
|
|
||||||
// === CANCELACIONES ===
|
// === CANCELACIONES ===
|
||||||
$cancellations = PermissionType::firstOrCreate(['name' => 'Cancelaciones']);
|
$cancellations = PermissionType::updateOrCreate(['name' => 'Cancelaciones']);
|
||||||
|
|
||||||
$cancellationTagNoAsignado = $this->onPermission('cancellations.cancel_tag_no_asignado', 'Cancelar constancia no asignada', $cancellations, 'api');
|
$cancellationTagNoAsignado = $this->onPermission('cancellations.cancel_tag_no_asignado', 'Cancelar constancia no asignada', $cancellations, 'api');
|
||||||
|
|
||||||
// === SISTEMA ===
|
// === SISTEMA ===
|
||||||
$system = PermissionType::firstOrCreate(['name' => 'Sistema']);
|
$system = PermissionType::updateOrCreate(['name' => 'Sistema']);
|
||||||
|
|
||||||
$systemSettings = $this->onPermission('system.settings', 'Configurar credenciales REPUVE', $system, 'api');
|
$systemSettings = $this->onPermission('system.settings', 'Configurar credenciales REPUVE', $system, 'api');
|
||||||
|
|
||||||
// === ACTUALIZAR REGISTRO ===
|
// === ACTUALIZAR REGISTRO ===
|
||||||
$updates = PermissionType::firstOrCreate(['name' => 'Actualizar Registro']);
|
$updates = PermissionType::updateOrCreate(['name' => 'Actualizar Registro']);
|
||||||
|
|
||||||
$updateVehicleData = $this->onPermission('updates.vehicle-data', 'Actualizar datos de vehículo por formulario', $updates, 'api');
|
$updateVehicleData = $this->onPermission('updates.vehicle-data', 'Actualizar datos de vehículo por formulario', $updates, 'api');
|
||||||
$updateVehicleUpdate = $this->onPermission('updates.vehicle-update', 'Actualizar datos de vehículo', $updates, 'api');
|
$updateVehicleUpdate = $this->onPermission('updates.vehicle-update', 'Actualizar datos de vehículo', $updates, 'api');
|
||||||
$updateResendToRepuve = $this->onPermission('updates.resend-to-repuve', 'Reenviar a REPUVE', $updates, 'api');
|
$updateResendToRepuve = $this->onPermission('updates.resend-to-repuve', 'Reenviar a REPUVE', $updates, 'api');
|
||||||
|
|
||||||
// === GENERAR FORMATOS ===
|
// === GENERAR FORMATOS ===
|
||||||
$formats = PermissionType::firstOrCreate(['name' => 'Generar Formatos']);
|
$formats = PermissionType::updateOrCreate(['name' => 'Generar Formatos']);
|
||||||
|
|
||||||
$recordGeneratePdf = $this->onPermission('records.generate_pdf', 'Generar Hoja de recepción', $formats, 'api');
|
$recordGeneratePdf = $this->onPermission('records.generate_pdf', 'Generar Hoja de recepción', $formats, 'api');
|
||||||
$recordGeneratePdfForm = $this->onPermission('records.generate_pdf_form', 'Generar solicitud de sustitución', $formats, 'api');
|
$recordGeneratePdfForm = $this->onPermission('records.generate_pdf_form', 'Generar solicitud de sustitución', $formats, 'api');
|
||||||
@ -108,7 +108,7 @@ public function run(): void
|
|||||||
$recordGeneratePdfConstancia = $this->onPermission('records.generate_pdf_constancia', 'Generar Impresión en la constancia', $formats, 'api');
|
$recordGeneratePdfConstancia = $this->onPermission('records.generate_pdf_constancia', 'Generar Impresión en la constancia', $formats, 'api');
|
||||||
|
|
||||||
// === REPORTES ===
|
// === REPORTES ===
|
||||||
$reports = PermissionType::firstOrCreate(['name' => 'Reportes - Excel']);
|
$reports = PermissionType::updateOrCreate(['name' => 'Reportes - Excel']);
|
||||||
|
|
||||||
$reportVehicleUpdates = $this->onPermission('reports.vehicle_updates.index', 'Reporte de actualizaciones', $reports, 'api');
|
$reportVehicleUpdates = $this->onPermission('reports.vehicle_updates.index', 'Reporte de actualizaciones', $reports, 'api');
|
||||||
$reportSubstitutions = $this->onPermission('reports.substitutions.index', 'Reporte de sustituciones', $reports, 'api');
|
$reportSubstitutions = $this->onPermission('reports.substitutions.index', 'Reporte de sustituciones', $reports, 'api');
|
||||||
@ -117,12 +117,12 @@ public function run(): void
|
|||||||
$reportSearchRecords = $this->onPermission('reports.search_records.index', 'Reporte de consulta nacional', $reports, 'api');
|
$reportSearchRecords = $this->onPermission('reports.search_records.index', 'Reporte de consulta nacional', $reports, 'api');
|
||||||
|
|
||||||
// === ACTIVIDAD ===
|
// === ACTIVIDAD ===
|
||||||
$activities = PermissionType::firstOrCreate(['name' => 'Actividad']);
|
$activities = PermissionType::updateOrCreate(['name' => 'Actividad']);
|
||||||
|
|
||||||
$activityIndex = $this->onPermission('activities.index', 'Ver actividad de usuarios', $activities, 'api');
|
$activityIndex = $this->onPermission('activities.index', 'Ver actividad de usuarios', $activities, 'api');
|
||||||
|
|
||||||
// === CAJAS ===
|
// === CAJAS ===
|
||||||
$packages = PermissionType::firstOrCreate(['name' => 'Cajas']);
|
$packages = PermissionType::updateOrCreate(['name' => 'Cajas']);
|
||||||
|
|
||||||
[
|
[
|
||||||
$packageIndex,
|
$packageIndex,
|
||||||
@ -134,7 +134,7 @@ public function run(): void
|
|||||||
$packageBoxTags = $this->onPermission('packages.box_tags', 'Ver constancias de caja', $packages, 'api');
|
$packageBoxTags = $this->onPermission('packages.box_tags', 'Ver constancias de caja', $packages, 'api');
|
||||||
|
|
||||||
// === CONSTANCIAS DE INSCRIPCIÓN ===
|
// === CONSTANCIAS DE INSCRIPCIÓN ===
|
||||||
$tags = PermissionType::firstOrCreate(['name' => 'Constancias de Inscripción']);
|
$tags = PermissionType::updateOrCreate(['name' => 'Constancias de Inscripción']);
|
||||||
|
|
||||||
[
|
[
|
||||||
$tagIndex,
|
$tagIndex,
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
<html lang="es">
|
<html lang="es">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<title>Constancia Cancelada - REPUVE Tabasco</title>
|
<title>Constancia Dañada - REPUVE Tabasco</title>
|
||||||
<style>
|
<style>
|
||||||
@page {
|
@page {
|
||||||
margin: 2cm 1.5cm;
|
margin: 2cm 1.5cm;
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
<html lang="es">
|
<html lang="es">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<title>Constancia Cancelada - REPUVE Tabasco</title>
|
<title>Constancia Dañada - REPUVE Tabasco</title>
|
||||||
<style>
|
<style>
|
||||||
@page {
|
@page {
|
||||||
margin: 2cm 1.5cm;
|
margin: 2cm 1.5cm;
|
||||||
@ -100,7 +100,7 @@
|
|||||||
|
|
||||||
<!-- Subheader -->
|
<!-- Subheader -->
|
||||||
<div class="subheader">
|
<div class="subheader">
|
||||||
CONSTANCIA CANCELADA
|
CONSTANCIA DAÑADA
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Espacio para pegar constancia -->
|
<!-- Espacio para pegar constancia -->
|
||||||
@ -125,9 +125,13 @@
|
|||||||
<td class="data-value">{{ $cancellation['tag_number'] ?? 'N/A' }}</td>
|
<td class="data-value">{{ $cancellation['tag_number'] ?? 'N/A' }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="data-row">
|
<tr class="data-row">
|
||||||
<td class="data-label">PLACA:</td>
|
<td class="data-label">PLACAS</td>
|
||||||
<td class="data-value">{{ $cancellation['placa'] ?? 'N/A' }}</td>
|
<td class="data-value">{{ $cancellation['placa'] ?? 'N/A' }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr class="data-row">
|
||||||
|
<td class="data-label">NIV</td>
|
||||||
|
<td class="data-value">{{ $cancellation['niv'] ?? 'N/A' }}</td>
|
||||||
|
</tr>
|
||||||
<tr class="data-row">
|
<tr class="data-row">
|
||||||
<td class="data-label">MOTIVO:</td>
|
<td class="data-label">MOTIVO:</td>
|
||||||
<td class="data-value">{{ mb_strtoupper($cancellation['motivo'] ?? '') }}</td>
|
<td class="data-value">{{ mb_strtoupper($cancellation['motivo'] ?? '') }}</td>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user