Parcourir la source

actualizo para prubas en servidor

FREDY il y a 2 mois
Parent
commit
7073ca77e0

+ 45 - 41
Front/src/app/modules/Padres/pages/Registro/registro.component.ts

@@ -1134,68 +1134,74 @@ cargarFormulario() {
   this._registroAdministrativo.getOneRegistroAdmin(this.id).subscribe({
     next: (data: any) => {
       this.isLoading = false;
-      this.datos = data.registro[0];
 
-      if (this.datos != undefined) {
-        this.form.get('gradoCursar')?.setValue(this.datos.RegA_GradoCursar);
+      // Protege el acceso a data.registro
+    this.datos = data.registro && data.registro.length > 0 ? data.registro[0] : null;
 
+if (!this.datos) {
+  this.isLoading = false;
+  Swal.fire('Aviso', 'No se encontraron datos para este registro', 'info');
+  return;
+}
+      if (this.datos) {
+        // Cargar campos principales
+        this.form.get('gradoCursar')?.setValue(this.datos.RegA_GradoCursar || '');
+        this.form.get('mesInscripcion')?.setValue(this.datos.RegA_MesInscripcion || '');
+        this.form.get('planPago')?.setValue(this.datos.RegA_PlanPagos || '');
+
+        // Método de pago
         const metodoPagoBD = this.datos.RegA_MetodoPago;
         if (this.MetodoPago && metodoPagoBD) {
           const match = this.MetodoPago.find((p: any) => p.idMetodoPago == metodoPagoBD);
-          if (match) {
-            this.form2.get('metedoPago')?.setValue(match.idMetodoPago);
-          } else {
-            this.form2.get('metedoPago')?.setValue('');
-          }
+          this.form2.get('metedoPago')?.setValue(match ? match.idMetodoPago : '');
         }
 
-        this.form.get('mesInscripcion')?.setValue(this.datos.RegA_MesInscripcion);
-        this.form.get('planPago')?.setValue(this.datos.RegA_PlanPagos);
-
+        // Beca
         const beca = (this.datos.RegA_BecaCurso || '').toLowerCase();
-        if (beca === 'si' || beca === 'no') {
-          this.form.get('becaCurso')?.setValue(beca.charAt(0).toUpperCase() + beca.slice(1));
-        } else {
-          this.form.get('becaCurso')?.setValue('');
-        }
-
-        this.form.get('becaPorcentaje')?.setValue(this.datos.RegA_BecaPorcentaje);
+        this.form.get('becaCurso')?.setValue(
+          beca === 'si' || beca === 'no' ? beca.charAt(0).toUpperCase() + beca.slice(1) : ''
+        );
+        this.form.get('becaPorcentaje')?.setValue(this.datos.RegA_BecaPorcentaje || '');
 
-        const requiereFactura = this.datos.RegA_RequiereFactura?.toLowerCase() || 'no';
+        // Facturación
+        const requiereFactura = (this.datos.RegA_RequiereFactura || 'no').toLowerCase();
         this.form2.get('factura')?.setValue(requiereFactura);
 
         this.facturaDataOriginal = {
-          metodoPago: this.datos.RegA_MetodoPago,
-          RFC: this.datos.RegA_RfcFactura,
-          razonSocial: this.datos.RegA_NombreFactura,
-          domicilio: this.datos.RegA_DireccionFactura,
-          correo: this.datos.RegA_CorreoFactura,
-          cuenta: this.datos.RegA_CuentaPago,
-          archivo: this.datos.RegA_ConstanciaFiscal,
+          metodoPago: this.datos.RegA_MetodoPago || '',
+          RFC: this.datos.RegA_RfcFactura || '',
+          razonSocial: this.datos.RegA_NombreFactura || '',
+          domicilio: this.datos.RegA_DireccionFactura || '',
+          correo: this.datos.RegA_CorreoFactura || '',
+          cuenta: this.datos.RegA_CuentaPago || '',
+          archivo: this.datos.RegA_ConstanciaFiscal || '',
         };
 
         if (requiereFactura === 'si') {
-          this.form2.get('metedoPago')?.setValue(this.facturaDataOriginal.metodoPago || '', { emitEvent: false });
-          this.form2.get('RFCFactura')?.setValue(this.facturaDataOriginal.RFC || '', { emitEvent: false });
-          this.form2.get('razonSocial')?.setValue(this.facturaDataOriginal.razonSocial || '', { emitEvent: false });
-          this.form2.get('correoFactura')?.setValue(this.facturaDataOriginal.correo || '', { emitEvent: false });
-          this.form2.get('cuentaPago')?.setValue(this.facturaDataOriginal.cuenta || '', { emitEvent: false });
-
-          if (this.datos.RegA_DireccionFactura && this.datos.RegA_DireccionFactura.trim() !== '') {
-            this.form2.get('domicilioFactura')?.setValue(this.datos.RegA_DireccionFactura, { emitEvent: false });
+          this.form2.get('metedoPago')?.setValue(this.facturaDataOriginal.metodoPago, { emitEvent: false });
+          this.form2.get('RFCFactura')?.setValue(this.facturaDataOriginal.RFC, { emitEvent: false });
+          this.form2.get('razonSocial')?.setValue(this.facturaDataOriginal.razonSocial, { emitEvent: false });
+          this.form2.get('correoFactura')?.setValue(this.facturaDataOriginal.correo, { emitEvent: false });
+          this.form2.get('cuentaPago')?.setValue(this.facturaDataOriginal.cuenta, { emitEvent: false });
+
+          if (this.facturaDataOriginal.domicilio.trim() !== '') {
+            this.form2.get('domicilioFactura')?.setValue(this.facturaDataOriginal.domicilio, { emitEvent: false });
           } else {
             this.autocompletarDomicilio();
           }
 
-          if (this.datos.RegA_ConstanciaFiscal && this.datos.RegA_ConstanciaFiscal.trim() !== '') {
-            this.rutaArchivo = this.datos.RegA_ConstanciaFiscal;
-            this.rutaArchivoOriginal = this.datos.RegA_ConstanciaFiscal;
-            this.form2.get('constanciaFiscal')?.setValue(this.datos.RegA_ConstanciaFiscal, { emitEvent: false });
+          if (this.facturaDataOriginal.archivo.trim() !== '') {
+            this.rutaArchivo = this.facturaDataOriginal.archivo;
+            this.rutaArchivoOriginal = this.facturaDataOriginal.archivo;
+            this.form2.get('constanciaFiscal')?.setValue(this.facturaDataOriginal.archivo, { emitEvent: false });
           }
         }
 
         this.factura({ value: requiereFactura });
         this.cdr.detectChanges();
+      } else {
+        console.warn('No se encontraron datos para este registro');
+        Swal.fire('Aviso', 'No se encontraron datos para este registro', 'info');
       }
     },
     error: (err) => {
@@ -1204,11 +1210,9 @@ cargarFormulario() {
       Swal.fire('Error', 'No se pudo cargar el formulario', 'error');
     }
   });
-
-
-
 }
 
+
 factura(event: any) {
   const requiereFactura = event.value;
 

+ 21 - 29
Front/src/app/modules/Padres/pages/registroAlumno/registroAlumno.component.ts

@@ -183,35 +183,27 @@ getAll() {
   nombre(data: any, tipo: string) {
     tipo === 'ac' ? this.router.navigate(['/homePadres/registro', btoa(data)]) : this.router.navigate(['/homePadres/registroAd', btoa(data)]);
   }
-convertImageToBase64(url: string): Promise<string | null> {
-  return new Promise((resolve, reject) => {
-   if (!url) {
-      resolve(''); // Cadena vacía en vez de null
-      return;
-    }
-    const img = new Image();
-    img.crossOrigin = 'anonymous'; // importante para evitar problemas de CORS
-    img.onload = () => {
-      const canvas = document.createElement('canvas');
-      canvas.width = img.width;
-      canvas.height = img.height;
-      const ctx = canvas.getContext('2d');
-      if (!ctx) {
-        resolve(null);
-        return;
-      }
-      ctx.drawImage(img, 0, 0);
-      const dataURL = canvas.toDataURL('image/png'); // obtiene base64 con prefijo completo
-      resolve(dataURL);
-    };
-    img.onerror = (error) => {
-      console.error('Error cargando imagen:', url, error);
-      resolve(null); // Para que no falle toda la promesa si una imagen no carga
-    };
-    img.src = url;
-  });
+async convertImageUrlToBase64(url: string): Promise<string | null> {
+  if (!url) return '';
+
+  try {
+    const response = await fetch(url, { mode: 'cors' }); // intenta forzar CORS
+    if (!response.ok) return null;
+
+    const blob = await response.blob();
+    return await new Promise<string>((resolve, reject) => {
+      const reader = new FileReader();
+      reader.onloadend = () => resolve(reader.result as string);
+      reader.onerror = reject;
+      reader.readAsDataURL(blob); // convierte a base64
+    });
+  } catch (err) {
+    console.error('Error cargando imagen:', url, err);
+    return null;
+  }
 }
 
+
 descargarPDF(id: string) {
 
   forkJoin({
@@ -231,8 +223,8 @@ descargarPDF(id: string) {
  // 1. Título principal: Nombre del colegio
 // 0. Cargar las imágenes antes de usarlas
 Promise.all([
-  this.convertImageToBase64(this.url1 ?? ''),
-  this.convertImageToBase64(this.url2?? ''),
+  this.convertImageUrlToBase64(this.url1 ?? ''),
+  this.convertImageUrlToBase64(this.url2?? ''),
 ]).then(([imgLeft, imgRight]) => {
   if (imgLeft) {
     doc.addImage(imgLeft, 'PNG', 15, 10, 30, 30);