You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
1.9 KiB
JavaScript

//
// CONSTANTS
const ORIGIN_TABLE_NAME = "BASE DE DATOS";
const ORIGIN_VIEW_NAME = "Default View";
const TARGET_TABLE_NAME = "Solicitantes"
const TARGET_VIEW_NAME = "Default View";
const originTable = base.getTableByName(ORIGIN_TABLE_NAME);
const originView = base.getViewByName(originTable, ORIGIN_VIEW_NAME);
const targetTable = base.getTableByName(TARGET_TABLE_NAME);
const targetView = base.getViewByName(targetTable, TARGET_VIEW_NAME);
const clientList = {};
const originRows = base.getRows(originTable, originView);
originRows.forEach((row) => {
const solicitCode = row["Solic"];
const solicitorName = row["Nom.Solicitante"];
const clientName = row["Nom.Cl.Final"];
const items = {
"solName": new Set(),
"cliName": new Set(),
};
items["solName"].add(solicitorName);
items["cliName"].add(clientName);
//
// Si es nuevo, añadir tal cual
if (clientList[solicitCode] === undefined) {
clientList[solicitCode] = {
solName: items["solName"],
cliName: items["cliName"]
}
}
// Si es repetido, añadir los nombres al array
if (clientList[solicitCode]) {
clientList[solicitCode].solName.add(solicitorName);
// console.log(clientList[solicitCode]);
clientList[solicitCode].cliName.add(clientName);
}
});
Object.keys(clientList).forEach((key) => {
if (clientList[key].solName.size === 1 && clientList[key].cliName.size === 1) {
const rowData = {
"Code": key,
"Nombre": clientList[key].solName.values().next().value,
"Name": clientList[key].cliName.values().next().value
}
base.addRow(targetTable, rowData);
} else {
clientList[key].solName.forEach((name) => {
const rowData = {
"Code": key,
"Nombre": name,
}
base.addRow(targetTable, rowData);
});
clientList[key].cliName.forEach((name) => {
const rowData = {
"Code": key,
"Name": name,
}
base.addRow(targetTable, rowData);
})
}
})