Tap Forms – Organizer Database App for Mac, iPhone, and iPad › Forums › Script Talk › Script for searching amounts in the tables of every record of a form.
- This topic has 0 replies, 1 voice, and was last updated 8 months, 2 weeks ago by Fernando DS.
-
AuthorPosts
-
April 8, 2024 at 7:33 AM #50676
Fernando DSParticipantHello everyone, I have an amount search script in the table field of all records. But it works for me with some quantities and not with others. And I don’t understand why.
This is the script:// Definiciones de IDs de campos dentro de la tabla
var pagos_cobros_tabla_id = ‘fld-a878bb1af5534101bcfab905279b1180’; // ID del campo Pagos/Cobros dentro de la tabla
var movs_banco_tabla_id = ‘fld-57a5fdcd593e46b298948845321d78ac’; // ID del campo Mvtos. Banco dentro de la tabla
var fecha_id = ‘fld-547c13e982e84d0793b0aba6c220cf76’; // ID del campo de fecha dentro de la tabla
var nombre_id = ‘fld-baf116cd116e4cde9b65e79014a49f28’; // ID del campo de nombre dentro de la tabla
var tabla_id = ‘fld-d8a58dbf35914f3c858c6dfb880c1c48’;
var nota_id = ‘fld-7918261f865b489a8f7672cf733712a9’;
var listado_de_script_id = ‘fld-555622f4bf0344f9b9e92af0806210fc’;
// Reemplazar ‘XXXXXX’ con el ID del campo “Listado de script”// Define el importe a buscar
var buscarImporte = “19.99”; // Ajusta este valor según el importe que desees buscarconsole.log(“”);
console.log(“*************************************”);
console.log(“Importe buscado: ” + buscarImporte);
console.log(“*************************************”);
console.log(“”);// Inicializar el contenido del campo “Listado de script”
var output = “”;// Función para parsear el importe independientemente del formato
function parseImporte(importeStr) {
if (typeof importeStr === ‘string’) {
return parseFloat(importeStr.replace(/[^\d.-]/g, ”)) || 0; // Devolver 0 si el valor no se puede convertir a número
} else {
return parseFloat(importeStr) || 0; // Devolver 0 si el valor no se puede convertir a número
}
}buscarImporte = parseImporte(buscarImporte);
var records = form.getRecords();
for (var i = 0; i < records.length; i++) {
var record = records;
var registrosTabla = record.getFieldValue(‘fld-d8a58dbf35914f3c858c6dfb880c1c48’) || []; // Reemplaza ‘tabla_id’ con el ID del campo de la tabla
var nombre = record.getFieldValue(‘fld-baf116cd116e4cde9b65e79014a49f28’); // Obtener el nombre fuera del bucle de la tabla// Array para almacenar los movimientos correspondientes a cada nombre
var movimientosNombre = [];for (var j = 0; j < registrosTabla.length; j++) {
var registroTabla = registrosTabla[j];
var pagosCobros = parseImporte(registroTabla.getFieldValue(pagos_cobros_tabla_id));
var movsBanco = parseImporte(registroTabla.getFieldValue(movs_banco_tabla_id));
var fechaRaw = new Date(registroTabla.getFieldValue(fecha_id));
var fecha =${('0' + fechaRaw.getDate()).slice(-2)}/${('0' + (fechaRaw.getMonth() + 1)).slice(-2)}/${fechaRaw.getFullYear().toString().substr(-2)}
;
var nota = registroTabla.getFieldValue(nota_id);// Comparar el valor absoluto de los importes
if (Math.abs(pagosCobros) === Math.abs(buscarImporte) || Math.abs(movsBanco) === Math.abs(buscarImporte)) {
movimientosNombre.push({ fecha: fecha, movsBanco: movsBanco, pagosCobros: pagosCobros, nota: nota });
}
}// Mostrar el nombre y luego los movimientos correspondientes
if (movimientosNombre.length > 0) {
output += “\n” + nombre + “\n\n”;
console.log(“” + nombre);
console.log(“”);
for (var k = 0; k < movimientosNombre.length; k++) {
var movimiento = movimientosNombre[k];
output +=${movimiento.fecha}: ${movimiento.movsBanco} | ${movimiento.pagosCobros}\n\n${movimiento.nota}\n
;
console.log(${movimiento.fecha}: ${movimiento.movsBanco} | ${movimiento.pagosCobros}
);
console.log(“” + movimiento.nota);
console.log(“”);
}
}
}// Actualizar el campo “Listado de script” del primer registro con el texto generado
record.setFieldValue(listado_de_script_id, output);// Guardar los cambios en los registros
form.saveAllChanges();Any help will be welcome.
-
AuthorPosts
You must be logged in to reply to this topic.