@extends('layouts.app') @section('content') {{-- Alerts --}} @if(session('success'))
{{ session('success') }}
@endif @if(session('error'))
{{ session('error') }}
@endif @if($errors->any())
No se pudo guardar:
    @foreach($errors->all() as $error)
  • {{ $error }}
  • @endforeach
@endif {{-- ═══ TABS compactos ═══ --}}
@php $tabs = [ ['id'=>'empresa', 'icon'=>'bi-building', 'label'=>'Empresa'], ['id'=>'sunat', 'icon'=>'bi-receipt-cutoff', 'label'=>'SUNAT'], ['id'=>'pse', 'icon'=>'bi-plug-fill', 'label'=>'PSE'], ['id'=>'ticket', 'icon'=>'bi-printer', 'label'=>'Ticket'], ['id'=>'api', 'icon'=>'bi-cpu', 'label'=>'API DNI/RUC'], ['id'=>'backup', 'icon'=>'bi-cloud-download', 'label'=>'Backup'], ['id'=>'reinicio', 'icon'=>'bi-arrow-counterclockwise','label'=>'Reinicio'], ]; @endphp @foreach($tabs as $i => $tab) @endforeach
{{-- ══════════════════════ EMPRESA ══════════════════════ --}}
@csrf

Pantalla de Inicio de Sesión

La imagen y el texto que ven tus usuarios al entrar al sistema.

@if(!empty($settings['login_cover_image'])) @endif
{{-- ══════════════════════ SUNAT ══════════════════════ --}}
@csrf
@php $ambiente = $settings['sunat_environment'] ?? 'beta'; $tieneCert = !empty($settings['sunat_cert_path']); @endphp
Ambiente: {{ $ambiente==='produccion'?'PRODUCCIÓN':'BETA (pruebas)' }} @if(!$tieneCert) · cert. demo@endif
Actívalo solo si este negocio está domiciliado y opera dentro de la zona de Selva (Ley N° 27037). No depende de dónde sea el cliente. Al activarlo, todas las ventas (Boleta, Factura y Nota de Venta) se calculan sin IGV. Verifica con tu contador antes de activarlo.
@if($tieneCert) {{ $settings['sunat_cert_path'] }} @elseSin cert. Para BETA: php artisan sunat:cert:demo@endif
{{-- ══════════════════════ PSE ══════════════════════ --}}
@csrf @php $pseProveedor = $settings['sunat_pse_proveedor'] ?? ''; $pseEntorno = $settings['sunat_pse_entorno'] ?? 'test'; @endphp
{{-- Banner informativo --}}
Modo PSE — El proveedor de servicios electrónicos firma y envía tus comprobantes a SUNAT. No necesitas certificado digital propio.
{{-- Selector de proveedor --}}
🟢
Nubefact
Token API
🟢
QPSE
Usuario + Clave
⏳
Gior Technology
Próximamente
⏳
SendFact
Próximamente
{{-- Info del proveedor seleccionado --}}
@if($pseProveedor==='nubefact') 🟢 Nubefact — Obtén tu token en nubefact.com → Panel → Token API. @elseif($pseProveedor==='qpse') 🟢 QPSE — Usa el usuario y contraseña de tu cuenta en qpse.pe @endif
{{-- Campos según proveedor --}}
{{-- Campos QPSE --}}
Importante: Configura primero tu RUC, Razón Social y datos fiscales en la pestaña SUNAT antes de activar el PSE.
{{-- ══════════════════════ TICKET ══════════════════════ --}}
@csrf
Aparece al final de cada ticket impreso.
{{-- Vista previa 80mm --}}
{{ $settings['company_name']??'Mi Restaurante' }}
@if(!empty($settings['sunat_ruc']))
RUC: {{ $settings['sunat_ruc'] }}
@endif @if(!empty($settings['company_phone']))
Telf: {{ $settings['company_phone'] }}
@endif
TICKET V000001
{{ now()->format('d/m/Y H:i') }}
Producto Ejemplo
2 x S/ 10.00S/ 20.00
TOTAL:S/ 20.00
{{-- ══════════════════════ API DNI/RUC ══════════════════════ --}}
@csrf {{-- ─── PERÚ ─────────────────────────────────────────── --}}
🇵🇪
Perú — RENIEC / SUNAT
Usar consulta interna
Activa solo si tienes una API propia en tu servidor.
@php $presets = ['https://apiperu.dev'=>'apiperu.dev','https://apis.net.pe'=>'apis.net.pe','https://apiperu.info'=>'apiperu.info','https://dniruc.apisperu.com'=>'apisperu.com']; $urlActual = $settings['apiperu_url']??'https://apiperu.dev'; $esCustom = !array_key_exists($urlActual,$presets); @endphp
@foreach($presets as $url => $label) @endforeach
@if(!empty($settings['apiperu_token']))
Token configurado · Búsqueda activa
@else
Sin token · Búsqueda desactivada
@endif
{{-- ─── PAÍSES INTERNACIONALES ────────────────────────── --}} @php $paises = [ ['code'=>'mx','flag'=>'🇲🇽','nombre'=>'México','tipo'=>'RFC / CURP','field_url'=>'api_mx_url','field_token'=>'api_mx_token','placeholder_url'=>'https://api.ejemplo.com.mx','placeholder_token'=>'Token de tu proveedor México'], ['code'=>'ec','flag'=>'🇪🇨','nombre'=>'Ecuador','tipo'=>'RUC / CI','field_url'=>'api_ec_url','field_token'=>'api_ec_token','placeholder_url'=>'https://api.sri.gob.ec','placeholder_token'=>'Token de tu proveedor Ecuador'], ['code'=>'ar','flag'=>'🇦🇷','nombre'=>'Argentina','tipo'=>'CUIT / DNI','field_url'=>'api_ar_url','field_token'=>'api_ar_token','placeholder_url'=>'https://afip.ejemplo.com.ar','placeholder_token'=>'Token de tu proveedor Argentina'], ['code'=>'cl','flag'=>'🇨🇱','nombre'=>'Chile','tipo'=>'RUT','field_url'=>'api_cl_url','field_token'=>'api_cl_token','placeholder_url'=>'https://api.sii.cl','placeholder_token'=>'Token de tu proveedor Chile'], ['code'=>'co','flag'=>'🇨🇴','nombre'=>'Colombia','tipo'=>'NIT / CC','field_url'=>'api_co_url','field_token'=>'api_co_token','placeholder_url'=>'https://api.dian.gov.co','placeholder_token'=>'Token de tu proveedor Colombia'], ]; @endphp
@foreach($paises as $p)
{{ $p['flag'] }}
{{ $p['nombre'] }}
Consulta {{ $p['tipo'] }}
@if(!empty($settings[$p['field_token']])) Activo @else Sin configurar @endif
URL de la API
Token de acceso
@endforeach
{{-- ══════════════════════ BACKUP ══════════════════════ --}}
Descargar Backup

Genera un archivo .sql con toda la información: productos, ventas, clientes, mesas, pedidos, etc.

@csrf
backup_restaurante_{{ now()->format('Y-m-d') }}.sql
¿Cómo restaurar?
  1. Abre phpMyAdmin
  2. Selecciona la BD {{ env('DB_DATABASE','restaurante_db') }}
  3. Pestaña Importar
  4. Selecciona el .sql
  5. Clic en Continuar
Haz backup diario. Guárdalo en Google Drive o USB.
Resumen de la Base de Datos
@php $resumen = [ ['label'=>'Pedidos','icon'=>'bi-cart-check','color'=>'primary','count'=>\App\Models\Order::count()], ['label'=>'Clientes','icon'=>'bi-people','color'=>'success','count'=>\App\Models\Client::count()], ['label'=>'Productos','icon'=>'bi-box-seam','color'=>'warning','count'=>\App\Models\Product::count()], ['label'=>'Categorías','icon'=>'bi-tags','color'=>'info','count'=>\App\Models\Category::count()], ['label'=>'Mesas','icon'=>'bi-grid-3x3','color'=>'secondary','count'=>\App\Models\Table::count()], ['label'=>'Detalle','icon'=>'bi-list-ol','color'=>'danger','count'=>\App\Models\OrderDetail::count()], ]; @endphp @foreach($resumen as $item)
{{ number_format($item['count']) }}
{{ $item['label'] }}
@endforeach
{{-- ══════════════════════ REINICIO ══════════════════════ --}}
Reinicio Total del Sistema
ADVERTENCIA: Esta acción eliminará TODOS los datos:
  • Ventas, detalle de ventas, cuentas por cobrar
  • Reservas y gastos · Cajas y movimientos
  • Stock de productos (queda en cero)
  • Clientes registrados
Esta acción NO se puede deshacer. Haz un backup antes.
@php $claveSeguridad = substr(md5(date('Ymd').env('APP_KEY','secret')),0,6); @endphp
@csrf
La clave es: {{ $claveSeguridad }}
{{-- /tab-content-wrapper --}} @endsection