11 mayo, 2021

EJEMPLO PRÁCTICO DE ALGUNOS CÁLCULOS CON TYPESCRIPT: CONVIRTIENDO SCRIPT ASÍNCRONO HEREDADO AL MODELO ACTUAL

Hola a todos, qué tal estáis? espero que bien. Hoy voy a modificar y actualizar otro script asíncrono heredado al modelo actual del API.

El post que vamos a modificar es este: EJEMPLO PRÁCTICO DE ALGUNOS CÁLCULOS CON TYPESCRIPT

Es un post muy interesante por varias razones: Contiene multitud de métodos y ejemplos de propiedades y además es un caso práctico en el que calculo el coste seguridad social empresa de algunos empleados en un determinado caso. Os recomiendo que lo leáis.

El script que os propongo como actualización es el siguiente:

 
async function main(workbook: ExcelScript.Workbook) {
	//asignamos variables para hojas 1 y 2
	let Origen = workbook.getWorksheet("Hoja1");
	let Destino = workbook.getWorksheet("Hoja2");
	//cargamos valores de filas y columnas
	let MiRangoRow = Origen.getUsedRange();
	let MiRangoColumn = Origen.getUsedRange();
	//contamos filas y columnas
	let FinRow = MiRangoRow.getRowCount();
	let FinColumn = MiRangoColumn.getColumnCount();
	let encabezados = Origen.getRangeByIndexes(0, 0, 1, FinColumn);
	let ndatos = Origen.getRangeByIndexes(1, 0, FinRow - 1, FinColumn);
	//asignamos variables para el conjunto de datos y los encabezados
	let MisDatos = ndatos.getValues();
	let MiEncabezado = encabezados.getValues();
	//Pasamos encabezados y datos a hoja Destino
	Destino.getRangeByIndexes(0, 0, 1, FinColumn).setValues(MiEncabezado);
	Destino.getRangeByIndexes(1, 0, FinRow - 1, FinColumn).setValues(MisDatos);
	//Añadimos titulos en columnas 2 y 3
	Destino.getCell(0, 2).setValues([
		["SEG. SOCIAL EMPRESA"]
	]);
	Destino.getCell(0, 3).setValues([
		["TOTAL"]
	]);
	//Obtenemos valores columna 1 y 2
	let Base = Destino.getRangeByIndexes(1, 1, FinRow - 1, 1).getValues();
	let sEmpresa = Destino.getRangeByIndexes(1, 2, FinRow - 1, 1).getValues();
	//Calculamos S.Social empresa y suma columnas 1 y 2
	for (let i = 1; i < FinRow; i++) {
		Destino.activate();
		let nBase = Base[i - 1];
		if (nBase < 
				[48841, 2]
			) {
			Destino.getCell(i, 2).setFormulas([
				["=B" + (i + 1) + "*33.5/100"]
			])
		} else {
			Destino.getCell(i, 2).setFormulas([
				["=" + "48841.2" + " * 33.5 / 100"]
			])
		}
		let MisEmpresa = sEmpresa[i];
		Destino.getCell(i, 3).setFormulas([
			["=B" + (i + 1) + "+" + "C" + (i + 1)]
		])
	}
	Destino.getRangeByIndexes(1, 1, FinRow, 3).setNumberFormatLocal("#.##0,00 €")
	//Calculamos totales
	Destino.getCell(FinRow, 1).setFormulas([
		["=SUM(B2:B" + FinRow + ")"]
	])
	Destino.getCell(FinRow, 2).setFormulas([
		["=SUM(C2:C" + FinRow + ")"]
	])
	Destino.getCell(FinRow, 3).setFormulas([
		["=SUM(D2:D" + FinRow + ")"]
	])
	//Resaltamos totales
	Destino.getRange("B" + (FinRow + 1) + ":" + "D" + (FinRow + 1)).getFormat().getFont().setBold(true);
}

Funciona perfectamente y realiza un cálculo preciso según el modelo que he elegido.

Y esto es todo, espero que sea de utilidad.

¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.

Donate Button with Credit Cards

¡¡Muchas gracias!!

Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies

Comparte este post

Si te ha gustado o tienes alguna duda, puedes dejar aquí tu comentario.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies