!!!warning Este código está diseñado exclusivamente para el sitio de la Bolsa de Santiago. !!!note Este código JavaScript recopila y suma los dividendos registrados por año, mostrando un porcentaje basado en el precio ingresado por el usuario. !!!danger Asegúrate de utilizar un Navegador Web que admita la ejecución de códigos JavaScript.
javascript: async function getD(symbol) {
const d = new Date();
const injector = angular.element(document.body).injector();
try {
const [stock, dividends] = await Promise.all([
getStockData(symbol, injector),
getDividendsData(symbol, d, injector),
]);
const precio = prompt('Ingrese Precio:', stock.PRECIO_CIERRE) || stock.PRECIO_CIERRE;
const dividendsByYear = processDividends(dividends);
updateDOM(stock, precio, d, dividendsByYear);
} catch (error) {
console.error('Error:', error);
}
}
function getStockData(symbol, injector) {
return new Promise(resolve => {
injector.get('RV_Instrumentos')['getResumenInstrumento']({ nemo: symbol }, data => resolve(data.listaResult[0]));
});
}
function getDividendsData(symbol, d, injector) {
return new Promise(resolve => {
injector.get('RV_ResumenMercado')['getDividendos']({
fec_pagoini: `${d.getFullYear()}-01-01`,
fec_pagofin: `${d.getFullYear()}-12-31`,
nemo: symbol,
}, data => resolve(data.listaResult));
});
}
function processDividends(dividends) {
const wordFind = 'DIVID';
const dividendsByYear = {};
dividends.forEach(dividendo => {
const { fec_pago, val_acc, descrip_vc } = dividendo;
if (fec_pago && descrip_vc.includes(wordFind)) {
const year = fec_pago.split('-')[0];
dividendsByYear[year] = (dividendsByYear[year] || 0) + val_acc;
}
});
return dividendsByYear;
}
function updateDOM(stock, precio, d, dividendsByYear) {
const result = [];
result.push(`${stock.NEMO_SASA}\n${stock.RAZON_SOCIAL}\nPrecio Actual: \$${stock.PRECIO_CIERRE}\nFecha Hoy: ${d.getDate()}/${d.getMonth() + 1}/${d.getFullYear()}\n\nPrecio: \$${precio}\n`);
result.push(`-\tDIVID\t-\n`);
Object.entries(dividendsByYear).sort().forEach(([year, total]) => {
const moneda = '$';
const percentage = (total / precio * 100).toFixed(1);
result.push(`${year} - ${moneda}${total} (${percentage}%).\n`);
});
result.push(`-\t-\t-\n\n`);
document.body.style.cssText = "white-space: pre-wrap; margin: 20px; font-size: 16px";
document.body.textContent = result.join('');
}
const pathnameSplit = window.location.pathname.split("/");
if (window.location.hostname === "www.bolsadesantiago.com" && (pathnameSplit[1] === "dividendos" || pathnameSplit[1] === "resumen_instrumento") && pathnameSplit[2]) {
const NEMOX = pathnameSplit[2];
alert(`[${NEMOX}] Dividendos % Precio`);
getD(NEMOX);
} else {
alert('wrongSite!');
};;
void 0
Este código trabaja únicamente en el sitio de la Bolsa de Santiago. Específicamente con las URL:
https://www.bolsadesantiago.com/resumen_instrumento/{NEMO}
https://www.bolsadesantiago.com/dividendos/{NEMO}
Por ejemplo, para el instrumento CFMDIVO, accede a la URL: https://www.bolsadesantiago.com/resumen_instrumento/CFMDIVO Luego, sin cambiar de pestaña, ejecuta el código.
- Añadir a Favoritos/Marcadores:
- Crear un nuevo Favorito/Marcador en tu Navegador Web.
- En el campo del Nombre, escribe lo que desees.
- En el campo de la URL, pega el código.
- Ejecución directa en la Barra de Direcciones:
- Copia el código sin la primera letra, la
j
. - Antes o después de pegarlo en la Barra de Direcciones, escribe la
j
faltante. Esto es debido a la seguridad de los Navegadores Web que impide la ejecución directa de códigos potencialmente peligrosos.
- Utilizar una Extensión o Add-on:
- Instalar en el Navegador Web una Extensión o Add-on que ejecute códigos Javascript.
- Copia y pega el código sin el texto
javascript:
al inicio.
javascript: const { hostname, pathname } = window.location;
const pathnameSplit = pathname.split("/");
if (hostname === "www.bolsadesantiago.com" && ["dividendos", "resumen_instrumento"].includes(pathnameSplit[1]) && pathnameSplit[2]) {
(async () => {
const currentDate = new Date();
const dataStr = JSON.stringify(await new Promise(resolve => angular.element(document.body).injector().get('RV_ResumenMercado')['getDividendos']({
fec_pagoini: `${currentDate.getFullYear()}-01-01`,
fec_pagofin: `${currentDate.getFullYear()}-12-31`,
nemo: pathnameSplit[2],
}, resolve))).replace('listaResult', pathnameSplit[2]);
document.body.style.cssText = "white-space: pre-wrap; margin: 20px; font-size: 16px";
document.body.textContent = `${dataStr}`;
const element = document.createElement('a');
element.href = `data:text/json;charset=utf-8,${encodeURIComponent(dataStr)}`;
element.download = `getDividendos_${pathnameSplit[2]}.json`;
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
})();
} else {
alert('wrongSite!');
};;
void 0