UNPKG

boletahonorarios

Version:

Realizar boletas de honorarios de manera automática

181 lines (145 loc) 5.76 kB
/* global $ */ const recursos = require('../recursos.json'); //iniciar sesión const sendCredentials = (user,selectors) => { $("#"+selectors.campoRut).val(user.rut); $("#"+selectors.campoClave).val(user.password); $("#"+selectors.botonIngresar).click(); }; //tipo retención const gotToDestinatary = (selectors) => { document.querySelector('input[value="'+selectors.radioTipoRetencion+'"]').checked = true; document.getElementById(selectors.continuarRetencion).click(); }; //agrega jquery a la pagina const addJquery = () =>{ script = document.createElement('script'); script.type = 'text/javascript'; script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js'; document.head.appendChild(script); }; //completa formulario const fillForm = (work, destinatary, zone, commune, selectors) => { zone = zone || null; commune = commune || null; fecha= destinatary.fecha.split('-'); day= fecha[0]; month= fecha[1]; year= fecha[2]; $('select[name='+selectors.diaBoleta+']').val(day); $('select[name='+selectors.diaBoleta+']').change(); $('select[name='+selectors.mesBoleta+']').val(month); $('select[name='+selectors.mesBoleta+']').change(); $('select[name='+selectors.yearBoleta+']').val(year); $('select[name='+selectors.yearBoleta+']').change(); $('#'+selectors.valorPrestacion).val(work.value); $('#'+selectors.prestacion).val(work.description); $('input[name='+selectors.rutDestin+']').val(destinatary.rut); $('input[name='+selectors.dvDestin+']').val(destinatary.dv); $('input[name='+selectors.nombreDestin+']').val(destinatary.name); $('input[name='+selectors.domicilioDestin+']').val(destinatary.address); $('select[name='+selectors.regionDestin+']').val(zone); $('select[name='+selectors.regionDestin+']').change(); $('select[name='+selectors.comunaDestin+']').val(commune); $('select[name='+selectors.comunaDestin+']').change() }; //confirma datos y crea preview boleta const createPreview = (selectors) => { $('#'+selectors.confirmarDatos).click(); }; //confirma emision boleta const confirm = (selectors) => { document.querySelector('input[name="'+selectors.confirmarEmision+'"]').click(); }; //seleccionar enviar boleta por email const sendEmail = (selectors) => { document.querySelector('#'+selectors.enviarEmail).click(); }; //confirmar emision envio email con boleta const confirmSendEmail = (destinatary,selectors) => { $('input[name="'+selectors.campoCorreo+'"]').val(destinatary.email); $('#'+selectors.confirmarEnvioCorreo).click(); }; //salir const exit = (selectors) => { $('#'+selectors.salir).click(); }; //le da tiempo a las ejecuciones function delay(time) { return new Promise(function(resolve) { setTimeout(resolve, time) }); }; //todo function progress(num, totalaction){ const perceten= 100/totalaction; let progress= num*perceten || 0; console.log('Progreso: '+progress+'%'); }; const hacerboleta = (async (work, destinatary, zone, commune, selectors, loginUri,user) => { //iniciar puppeteer var result = new Object(); const puppeteer = require('puppeteer'); const browser = await puppeteer.launch({headless: false}); const page = await browser.newPage(); try{ await page.goto(loginUri); await page.waitForSelector('#'+selectors.botonIngresar); await delay(500); await page.evaluate(sendCredentials, user, selectors); await delay(500); await page.waitForSelector('#'+selectors.continuarRetencion); await page.evaluate(gotToDestinatary, selectors); await delay(500); await page.waitForSelector('#'+selectors.confirmarDatos); await page.evaluate(addJquery); await delay(500); await page.evaluate(fillForm, work, destinatary, zone, commune, selectors); await delay(1000); await page.evaluate(createPreview, selectors); await delay(500); await page.waitForSelector('input[name="'+selectors.confirmarEmision+'"]'); await delay(1500); await page.evaluate(confirm,selectors); await delay(1500); await page.screenshot({ path: 'ultimaBoleta.png' }); await page.waitForSelector('#'+selectors.enviarEmail); await delay(3000); await page.evaluate(sendEmail,selectors); await page.waitForSelector('#'+selectors.confirmarEnvioCorreo); await delay(3000); await page.evaluate(confirmSendEmail,destinatary,selectors); await delay(3000); await page.evaluate(exit,selectors); var result={ ok:true, msj: 'Boleta Emitida' } await browser.close(); return result } catch (e){ await page.screenshot({ path: 'error.png' }); var result={ ok:false, msj: 'Ha ocurrido un error: '+ e }; await browser.close(); return result } }); //todo función boleta honorarios para agente normal const emitirBoleta = async (work, destinatary, zone, commune, selectors, loginUri,user) => { return new Promise(function(resolve) { const emite = hacerboleta(work, destinatary, zone, commune, selectors, loginUri,user) console.log(emite) return resolve(emite) }); }; module.exports = { emitirBoleta: emitirBoleta, recursos: recursos };