ncontrada en el servidor."); } // Seleccionar endpoint y serie según el tipo solicitado // [FIX] Si no hay comprobante real, forzar nota-venta para evitar quemar correlativos de Boleta/Factura $tipoDocSolicitado = $request->query('tipo', 'nota-venta'); if ($comprobanteReal) { if ($comprobanteReal->tipo_documento_id == 2) { $tipoDocSolicitado = 'invoice'; } elseif ($comprobanteReal->tipo_documento_id == 1) { $tipoDocSolicitado = 'boleta'; } } elseif (in_array($tipoDocSolicitado, ['boleta', 'invoice'])) { \Illuminate\Support\Facades\Log::info("🛡️ [Ticket/Generar] Protegiendo correlativo. Cambiando $tipoDocSolicitado a nota-venta para previsualización."); $tipoDocSolicitado = 'nota-venta'; } $isNotaVenta = ($tipoDocSolicitado === 'nota-venta' || $tipoDocSolicitado === 'pre-cuenta'); $endpoint = ($tipoDocSolicitado === 'invoice') ? '/api/v1/invoices' : (($tipoDocSolicitado === 'boleta') ? '/api/v1/boletas' : '/api/v1/nota-ventas'); if (!$comprobanteReal) { $payload['serie'] = ($tipoDocSolicitado === 'invoice') ? 'F001' : (($tipoDocSolicitado === 'boleta') ? 'B001' : 'NV01'); // 🚀 PASO EXTRA: Si tenemos acceso a piter_facturacion, intentar sacar la serie REAL try { $piterFact = \Illuminate\Support\Facades\DB::connection('piter_facturacion'); $sucursalObj = \Illuminate\Support\Facades\DB::table('Nucleo_Sucursales as s') ->join('Nucleo_Empresas as e', 's.empresa_id', '=', 'e.id_empresa') ->where('s.id_sucursal', $ordenBase->sucursal_id) ->select('e.ruc_nit as ruc') ->first(); if ($sucursalObj) { $cmp = $piterFact->table('companies')->where('ruc', $sucursalObj->ruc)->first(); if ($cmp) { $brn = $piterFact->table('branches')->where('company_id', $cmp->id)->first(); if ($brn) { $tipoRef = ($tipoDocSolicitado === 'invoice') ? '01' : (($tipoDocSolicitado === 'boleta') ? '03' : '17'); // 17 = Nota de Venta (API-GO) $corr = $piterFact->table('correlatives') ->where('branch_id', $brn->id) ->where('tipo_documento', $tipoRef) ->first(); if ($corr) { $payload['serie'] = $corr->serie; $payload['correlativo'] = (int) $corr->correlativo_actual + 1; } } }