Recuento clientes e importar excel
						commit
						3f6ff87e88
					
				| @ -0,0 +1,88 @@ | ||||
| // Read Excel file and copy the relevant columns to the main table (with proper column types)
 | ||||
| const codetoNameEquivalences = { | ||||
| 	"AAA": "Hospital Son Espases", | ||||
| 	"70007": "Area de Gestión Almería Norte", | ||||
| 	"70008": "Consejería de Salud de La Rioja", | ||||
| 	"70011": "Jefatura Territorial de Sanidad de Pontevedra", | ||||
| } | ||||
| // CONSTANTS
 | ||||
| 
 | ||||
| const ORIGIN_TABLE_NAME = "BASE DE DATOS"; | ||||
| const ORIGIN_VIEW_NAME = "Default View"; | ||||
| 
 | ||||
| const TARGET_TABLE_NAME = "Brutos" | ||||
| const TARGET_VIEW_NAME = "Default View"; | ||||
| 
 | ||||
| // Helper functions
 | ||||
| const clientCodeToName = (code) => { | ||||
| 	const clientCode = code.toString(); | ||||
| 	let clientName = ""; | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
| const removeDoubleSpace = (str) => { | ||||
| 	if (typeof str !== "string") { | ||||
| 		return str; | ||||
| 	} | ||||
| 	return str.replace(/\s\s+/g, ' '); | ||||
| } | ||||
| 
 | ||||
| // Remove leading and ending spaces in string
 | ||||
| const removeLeadingAndTrailingSpaces = (str) => { | ||||
| 	if (typeof str !== "string") { | ||||
| 		return str; | ||||
| 	} | ||||
| 	return str.trim(); | ||||
| } | ||||
| 
 | ||||
| const matcodeToAbarax = (str) => { | ||||
| 	if (str === 211354) { | ||||
| 		return "50mg"; | ||||
| 	} | ||||
| 	return "100mg"; | ||||
| } | ||||
| 
 | ||||
| // get tables and views
 | ||||
| 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); | ||||
| 
 | ||||
| // List of the columns I want to replicate
 | ||||
| const selectedColumns = [ | ||||
| 	"Material", | ||||
| 	"Solic.", | ||||
| 	"Present.Concentr.", | ||||
| 	"Nom.Solicitante", | ||||
| 	"Nom Dest.", | ||||
| 	"FechaFact.", | ||||
| 	"Cantidad UMB", | ||||
| ] | ||||
| 
 | ||||
| const dataMatrix = [] | ||||
| 
 | ||||
| // Get all rows and create new element with only the selected columns
 | ||||
| const originRows = base.getRows(originTable, originView); | ||||
| 
 | ||||
| originRows.forEach(row => { | ||||
| 
 | ||||
| 	// Create new element with only the selected columns
 | ||||
| 	const element = {}; | ||||
| 	selectedColumns.forEach(column => { | ||||
| 		element[column] = removeLeadingAndTrailingSpaces(row[column]); | ||||
| 		element[column] = removeDoubleSpace(element[column]); | ||||
| 	}); | ||||
| 
 | ||||
| 	// Material to Abarax
 | ||||
| 	element["Material"] = matcodeToAbarax(element["Material"]); | ||||
| 
 | ||||
| 	// Add element to dataMatrix
 | ||||
| 	dataMatrix.push(element); | ||||
| }) | ||||
| 
 | ||||
| console.log(dataMatrix); | ||||
| 
 | ||||
| // Funciones para limpiar los DATOS
 | ||||
| // Remove double space
 | ||||
| //
 | ||||
| @ -0,0 +1,71 @@ | ||||
| // Counts how many times a row value is repeated in a table
 | ||||
| //
 | ||||
| // CONSTANTS
 | ||||
| 
 | ||||
| const ORIGIN_TABLE_NAME = "Brutos"; | ||||
| const ORIGIN_VIEW_NAME = "Default"; | ||||
| 
 | ||||
| const RESULT_TABLE_NAME = "Clientes" | ||||
| const RESULT_VIEW_NAME = "Default"; | ||||
| 
 | ||||
| const originClientColumnName = "Cliente"; | ||||
| const originQuantityColumnName = "Cantidad"; | ||||
| 
 | ||||
| const resultClientColumnName = "Cliente"; | ||||
| const resultCountColumnName = "Pedidos"; | ||||
| const resultQuantityColumnName = "Cantidad"; | ||||
| 
 | ||||
| const originTable = base.getTableByName(ORIGIN_TABLE_NAME); | ||||
| const originView = base.getViewByName(originTable, ORIGIN_VIEW_NAME); | ||||
| const resultTable = base.getTableByName(RESULT_TABLE_NAME); | ||||
| const resultView = base.getViewByName(resultTable, RESULT_VIEW_NAME); | ||||
| 
 | ||||
| // Object to save every reocurring item and its count
 | ||||
| const elements = {}; | ||||
| 
 | ||||
| // Get all items in Origin table
 | ||||
| const originRows = base.getRows(originTable, originView); | ||||
| 
 | ||||
| // Fill elements with every item, count and quantity
 | ||||
| originRows.forEach(row => { | ||||
| 
 | ||||
| 	const clientName = row[originClientColumnName]; | ||||
| 	const quantity = Math.abs(row[originQuantityColumnName]); | ||||
| 	const element = { "count": 0, "quantity": 0 }; | ||||
| 
 | ||||
| 	if (elements[clientName]) { | ||||
| 		element.count = elements[clientName].count; | ||||
| 		element.quantity = elements[clientName].quantity; | ||||
| 		element["count"] += 1; | ||||
| 		element["quantity"] += quantity; | ||||
| 		elements[clientName]["count"] = element.count; | ||||
| 		elements[clientName]["quantity"] = element.quantity; | ||||
| 	} else { | ||||
| 
 | ||||
| 		elements[clientName] = {}; | ||||
| 		elements[clientName].count = 1 | ||||
| 		elements[clientName].quantity = quantity; | ||||
| 	} | ||||
| }); | ||||
| 
 | ||||
| // Create array of arrays from object 'elements'
 | ||||
| clientsList = Object.entries(elements); | ||||
| 
 | ||||
| // If Table is not empty, delete all rows
 | ||||
| const resultRows = base.getRows(resultTable, resultView); | ||||
| if (resultRows.length > 0) { | ||||
| 	const row_ids = resultRows.map(row => row._id); | ||||
| 	row_ids.map(row_id => base.deleteRowById(resultTable, row_id)); | ||||
| } | ||||
| 
 | ||||
| // Add new rows
 | ||||
| clientsList.forEach((client) => { | ||||
| 
 | ||||
| 	clientData = { | ||||
| 		[resultClientColumnName]: client[0], | ||||
| 		[resultCountColumnName]: client[1].count, | ||||
| 		[resultQuantityColumnName]: client[1].quantity | ||||
| 	}; | ||||
| 	base.addRow(resultTable, clientData); | ||||
| 
 | ||||
| }); | ||||
					Loading…
					
					
				
		Reference in New Issue