diff --git a/routes/getExcelFactura.js b/routes/getExcelFactura.js new file mode 100644 index 0000000..8f33739 --- /dev/null +++ b/routes/getExcelFactura.js @@ -0,0 +1,134 @@ +const connection = require('../conf/connection.js'); +const express = require('express'); +const fs = require('fs'); +var app = express() +const Excel = require('exceljs'); +var path = require('path'); + + + + + + +function query(consulta) { + return new Promise(function(resolve, reject) { + connection.query(`${consulta}`, (error, results, files) => { + if (error) reject(error); + resolve(results); + }); + }) +} + + + +app.get('/getExcelFactura', async(req, res) => { + + try{ + + const workbook = new Excel.Workbook(); + const worksheet = workbook.addWorksheet('Datos alumno'); + + + let encabezados = []; + encabezados.push("Nombre"); + encabezados.push("Apellido Paterno"); + encabezados.push("Apellido Materno"); + encabezados.push("Correo"); + encabezados.push("Comunidad"); + encabezados.push("Institucion"); + encabezados.push("CURP"); + encabezados.push("Situación academica"); + encabezados.push("Grado Academico"); + encabezados.push("Participacion"); + encabezados.push("Codigo Grupal"); + encabezados.push("Total a pagar"); + encabezados.push(""); + encabezados.push(""); + encabezados.push("RFC"); + encabezados.push("Telefono Factura"); + encabezados.push("Correo Factura"); + encabezados.push("Nombre"); + encabezados.push("Apellido Paterno"); + encabezados.push("Apellido Materno"); + encabezados.push("Calle"); + encabezados.push("No. Interior"); + encabezados.push("No. Exterior"); + encabezados.push("Colonia"); + encabezados.push("Municipio"); + encabezados.push("Estado"); + encabezados.push("Codigo Postal"); + + + await worksheet.addRow(encabezados) + + + + + + + + let sqlString = `SELECT * FROM factura;`; + let factura = await query(sqlString); + + + for(let item in factura){ + + sqlString = `SELECT * from persona where idPersona = ${factura[item].idPersona};`; + let datosPersona = await query(sqlString); + datosPersona = datosPersona[0]; + let rowPersona = []; + rowPersona.push(datosPersona.nombre); + rowPersona.push(datosPersona.apellidoPaterno); + rowPersona.push(datosPersona.apellidoMaterno); + rowPersona.push(datosPersona.correo); + rowPersona.push(datosPersona.comunidad); + rowPersona.push(datosPersona.institucion); + rowPersona.push(datosPersona.curp); + rowPersona.push(datosPersona.situacionAcademica); + rowPersona.push(datosPersona.gradoAcademico); + rowPersona.push(datosPersona.participacion); + rowPersona.push(datosPersona.codigoGrupal); + rowPersona.push(datosPersona.totalPagar); + rowPersona.push(""); + rowPersona.push(""); + rowPersona.push(factura[item].rfc); + rowPersona.push(factura[item].telefono); + rowPersona.push(factura[item].correo); + rowPersona.push(factura[item].nombre); + rowPersona.push(factura[item].apellidoPaterno); + rowPersona.push(factura[item].apellidoMaterno); + rowPersona.push(factura[item].calle); + rowPersona.push(factura[item].noInterior); + rowPersona.push(factura[item].noExterior); + rowPersona.push(factura[item].colonia); + rowPersona.push(factura[item].municipio); + rowPersona.push(factura[item].estado); + rowPersona.push(factura[item].codigoPostal); + + await worksheet.addRow(rowPersona); + } + + + + res.attachment(path.join('./public', `Factura.xlsx`)); + + workbook.xlsx.write(res).then( ()=>{ + res.end(); + + }).catch(error =>{ + console.log(`error desc: ${error}`); + res.status(400).json({ error: false, msj: "no se pudo descargar" }); + }) + + + + + } + catch(error){ + console.log(`error desc: ${error}`); + res.status(400).json({ error: false, msj: "no se pudo descargar" }); + } + +}); + +module.exports = app; \ No newline at end of file diff --git a/routes/getFactura.js b/routes/getFactura.js index 03e5c47..d1052e8 100644 --- a/routes/getFactura.js +++ b/routes/getFactura.js @@ -16,20 +16,19 @@ function query(consulta) { app.get('/getFactura', async(req, res) => { try { - let idPersona = req.query.idPersona; - let sqlString = `SELECT * FROM persona WHERE validarPago = true and requiereFactura = true order by participacion;`; - let pagados = await query(sqlString); + let sqlString = `SELECT * FROM factura;`; + let factura = await query(sqlString); - //console.log(pagados); + //console.log(factura); - for(indice in pagados){ + for(indice in factura){ - sqlString = `SELECT * FROM asistencia where idPersona = ${pagados[indice].idPersona};`; + sqlString = `SELECT * FROM asistencia where idPersona = ${factura[indice].idPersona};`; let asistenciaPersona = await query ( sqlString ); let actividad = []; @@ -46,17 +45,17 @@ app.get('/getFactura', async(req, res) => { } - pagados[indice].actividad = actividad; - pagados[indice].estudiosPractica = estudiosPractica; - pagados[indice].recorridos = recorridos; + factura[indice].actividad = actividad; + factura[indice].estudiosPractica = estudiosPractica; + factura[indice].recorridos = recorridos; - sqlString = `Select * from factura where idPersona = ${pagados[indice].idPersona}`; - let facturaDatos = await query ( sqlString ); - pagados[indice].facturaDatos = facturaDatos; + sqlString = `Select * from persona where idPersona = ${factura[indice].idPersona}`; + let datosPersona = await query ( sqlString ); + factura[indice].datosPersona = datosPersona[0]; } - res.status(200).json({error: false, msj: '', datos: pagados }); + res.status(200).json({error: false, msj: '', datos: factura }); } diff --git a/routes/index.js b/routes/index.js index ea0923f..79d9fc4 100644 --- a/routes/index.js +++ b/routes/index.js @@ -25,5 +25,6 @@ app.use(require('./getFactura')); app.use(require('./getEventos')); app.use(require('./getExcelEvento')); app.use(require('./getExcelInscritos')); +app.use(require('./getExcelFactura')); module.exports = app; \ No newline at end of file