238 lines
9.4 KiB
JavaScript
238 lines
9.4 KiB
JavaScript
const connection = require('../conf/connection.js');;
|
|
const express = require('express');
|
|
const fileUpload = require('express-fileupload');
|
|
var path = require('path');
|
|
const nodemailer = require("nodemailer");
|
|
const fs = require("fs");
|
|
var app = express()
|
|
app.use(fileUpload());
|
|
|
|
function query(consulta) {
|
|
return new Promise(function(resolve, reject) {
|
|
connection.query(`${consulta}`, (error, results, files) => {
|
|
if (error) reject(error);
|
|
resolve(results);
|
|
});
|
|
})
|
|
}
|
|
|
|
function depurado(cadena) {
|
|
if (cadena != null)
|
|
return cadena.replace(/'/g, "''");
|
|
else
|
|
return null;
|
|
}
|
|
|
|
async function sendEmail( destination, idPersona ) {
|
|
|
|
// Generate test SMTP service account from ethereal.email
|
|
// Only needed if you don't have a real mail account for testing
|
|
let testAccount = await nodemailer.createTestAccount();
|
|
|
|
// create reusable transporter object using the default SMTP transport
|
|
let transporter = nodemailer.createTransport({
|
|
service: "Gmail",
|
|
port: 587,
|
|
secure: false, // true for 465, false for other ports
|
|
auth: {
|
|
user: 'asinea103@fa.unam.mx', // generated ethereal user
|
|
pass: 'As1n34103++'
|
|
},
|
|
});
|
|
|
|
// send mail with defined transport object
|
|
let info = await transporter.sendMail({
|
|
from: '"ASINEA 2020" <asinea103@fa.unam.mx>', // sender address
|
|
to: `"${destination}"`, // list of receivers
|
|
subject: "Ficha de deposito ASINEA 2020", // Subject line
|
|
text: `
|
|
Enviamos la referencia bancaria para poder realizar el pago.
|
|
|
|
El pago puede realizarse por medio de transferencia interbancaria o depósito en banco (BBVA). Le adjuntamos las instrucciones de acuerdo al banco* desde el que desee realizarlo.
|
|
https://drive.google.com/file/d/1ygl7kQDTHOmLN9UNZ1D_Bx1u2IOBww7g/view?usp=sharing
|
|
Nota: En el número de CLABE le pedimos que se base en la que aparece en las imágenes de acuerdo al banco desde el que lo realice.
|
|
|
|
Si realiza el pago desde BBVA, deberán dirigirse a pago de servicios, ingresar el número de convenio, que inicia con 14 y aparecerán los datos de la UNAM, después deberá ingresar la referencia.
|
|
|
|
|
|
|
|
|
|
|
|
La referencia tiene una vigencia de 3 días. En este lapso deberá enviar su comprobante para poder validar que el pago fue realizado correctamente. De no usarla, la referencia será cancelada.
|
|
|
|
Una vez realizado el pago, deberá ingresar nuevamente a la plataforma donde realizaste tu registro para adjuntar el archivo en pdf del voucher de pago con los siguientes datos:
|
|
|
|
-Número de referencia o convenio
|
|
-Banco de procedencia
|
|
-Fecha de la operación
|
|
-Clave de rastreo
|
|
-Cuenta de retiro
|
|
-Cuenta de depósito e importe.
|
|
|
|
De no tener estos datos, su pago no podrá ser rastreado.
|
|
Ahí podrá solicitar su factura. El tiempo de envío es entre 15 y 20 días hábiles una vez validado el comprobante.El uso del CFDI en las facturas será generara en automático por Gastos en General, si requiere de otro tipo notificarlo al correo asinea103@fa.unam.mx
|
|
|
|
La siguiente imagen te apoyará para saber como subir tu comprobante de pago y los datos antes mencionados a la plataforma, además adjuntamos a este correo un manual para realizar transferencias a los Convenios BBVA Bancome
|
|
`, // plain text body
|
|
attachments: [
|
|
{
|
|
filename: 'ficha de deposito.pdf',
|
|
path: `${path.join('./files/fichasDeposito', `ficha-${idPersona}.pdf`)}`// stream this file
|
|
},
|
|
{
|
|
filename: 'Manual para transferencia.pdf',
|
|
path: `${path.join('./public', 'manual.pdf')}`
|
|
},
|
|
{
|
|
filename: 'Guia para subir el comprobante de pago.png',
|
|
path: `${path.join('./public', `guiaComprobante.png`)}`// stream this file
|
|
}
|
|
]
|
|
|
|
});
|
|
|
|
console.log("Message sent: %s", info.messageId);
|
|
// Message sent: <b658f8ca-6296-ccf4-8306-87d57a0b4321@example.com>
|
|
|
|
// Preview only available when sending through an Ethereal account
|
|
console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info));
|
|
// Preview URL: https://ethereal.email/message/WaQKMgKddxQDoou...
|
|
}
|
|
|
|
app.post('/enviarFicha', async(req, res) => {
|
|
console.log(req.files);
|
|
console.log(req.body);
|
|
if ( req.files === null || typeof(req.files) === 'undefined' ) {
|
|
res.status(400).json({error: true, msj: 'Falata seleccionar el archivo'});
|
|
return;
|
|
}
|
|
try {
|
|
console.log(req.files);
|
|
if (req.files.fichaDeposito != undefined) {
|
|
let sampleFile = req.files.fichaDeposito;
|
|
let nombreCortado = sampleFile.name.split('.');
|
|
let extencion = nombreCortado[nombreCortado.length - 1];
|
|
let extensionValidas = ['pdf', 'jpg', 'jpeg', 'png', 'docx', 'doc', 'odt', 'pdf'];
|
|
|
|
if (extensionValidas.indexOf(extencion) < 0) {
|
|
return res.status(400).json({
|
|
error: true,
|
|
msj: "Extensión invalida del archivo de fichaDeposito"
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
|
|
} catch (err) {
|
|
console.log(err);
|
|
return res.status(400).json({
|
|
error: true,
|
|
msj: "error al verificar la extensión"
|
|
});
|
|
}
|
|
|
|
|
|
try {
|
|
|
|
console.log(req.body)
|
|
if (req.files.fichaDeposito != undefined) {
|
|
|
|
let idPersona = req.body.idPersona;
|
|
let correo = req.body.correo;
|
|
let sampleFile = req.files.fichaDeposito;
|
|
|
|
sampleFile.mv( path.join('./files/fichasDeposito', `ficha-${idPersona}.pdf`), function(err) {
|
|
if (err)
|
|
return res.status(400).json({ error: true, msj: "Error al guardar la ficha de deposito" });
|
|
|
|
});
|
|
await sendEmail(correo, idPersona);
|
|
|
|
let sqlString = `update persona set referenciaEnviada = true, fechaEnvioFicha = NOW() where idPersona=${idPersona}`;
|
|
|
|
await query(sqlString);
|
|
|
|
|
|
}
|
|
|
|
} catch (err) {
|
|
console.log(err);
|
|
res.status(400).json({ error: true, msj: "Error al subir el archivo de ficha de deposito", type: err });
|
|
return;
|
|
}
|
|
|
|
|
|
try {
|
|
|
|
console.log(req.body)
|
|
if (req.files.reciboPago != undefined) {
|
|
|
|
let sampleFile = req.files.reciboPago;
|
|
console.log('este es el body antes', req.body);
|
|
//req.body = req.body.datos;
|
|
let body = req.body;
|
|
console.log('este es el body despues', body);
|
|
for( item in body){
|
|
console.log(`${item} : ${body[item]}`);
|
|
}
|
|
let idPersona= body.idPersona;
|
|
|
|
sampleFile.mv( path.join('./files/recibos', `recibo-${idPersona}.pdf`), function(err) {
|
|
if (err)
|
|
return res.status(400).json({ error: true, msj: "Error al registrar al guardar el recibo de pago" });
|
|
|
|
});
|
|
|
|
|
|
let sqlString = `update persona set envioComprobante = true where idPersona=${idPersona}`;
|
|
await query(sqlString);
|
|
|
|
|
|
// CREATE TABLE `comprobante` ( `idComprobante` integer `idPersona` int, `bancoProcedencia` varchar(250), `fechaOperacion` date, `claveRastreo` varchar(250), `cuentaRetiro` varchar(250), `importe` varchar(250), `cuentaDeposito` varchar(250)
|
|
|
|
|
|
sqlString = `INSERT INTO comprobante values (null, ${idPersona}, '${ body.bancoProcedencia }', '${ body.fechaOperacion }', '${ body.claveRastreo }', '${ body.cuentaRetiro }', '${ body.importe }', '${ body.cuentaDeposito }' ) ;`;
|
|
await query(sqlString);
|
|
|
|
if( typeof(body.factura) !== 'undefined' ){
|
|
|
|
|
|
sqlString = `update persona set requiereFactura = true where idPersona=${idPersona}`;
|
|
await query(sqlString);
|
|
|
|
|
|
// CREATE TABLE `factura` ( `idFactura` integer , `idPersona` int, `rfc` varchar(255), `telefono` varchar(255), `correo` varchar(255), `nombre` varchar(255), ` apellidoPaterno` varchar(255), `apellidoMaterno` varchar(255), `calle` varchar(255), `noInterior` varchar(255), `noExterior` varchar(255), `colonia` varchar(255), `municipio` varchar(255), `estado` varchar(255), `codigoPostal` varchar(255)
|
|
|
|
|
|
sqlString = `INSERT INTO factura values (null, ${idPersona}, '${ body.rfc }', '${ body.telefono }', '${ body.correoPersona }', '${ body.nombrePersona }', '${ body.apellidoPaterno }', '${ body.apellidoMaterno }', '${ body.calle }', '${ body.noInterior }' , '${ body.noExterior }', '${ body.colonia }', '${ body.municipio }', '${ body.estado }', '${ body.codigoPostal }' ) ;`;
|
|
await query(sqlString);
|
|
|
|
res.status(200).json({ error: false, msj: "exito " });
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
} catch (err) {
|
|
console.log(err);
|
|
res.status(400).json({ error: true, msj: "Error al subir el archivo de comprobante de pago", type: err });
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
res.status(200).json({ error: false, msj: "exito " });
|
|
return;
|
|
|
|
});
|
|
|
|
module.exports = app; |