1. Objetivo:

Se adjunta un archivo XLSX en el que se encuentran los datos de un presupuesto de obra.

El archivo está en el formato de XLSX de Quercusoft. Se adjunta la especificación.

El objetivo es generar un script que permita transformar los datos de dicho archivo en un nuevo archivo XLSX para presentar el presupuesto.

Generar el script de tal forma que permita copiarlo y guardarlo externamente, así se puede volver a ejecutar posteriormente.

Una vez generado el script, ejecutarlo para generar el archivo resultado.

2. Archivo fuente:

El archivo adjunto tiene tres hojas: Conceptos, Relaciones y Monedas.

La primera fila de cada hoja corresponde a los títulos de las columnas.

2.1. Hoja Conceptos

Los conceptos son los capítulos (o rubros), tareas (o actividades) y recursos que componen el presupuesto.

Ejemplos: el capítulo "Trabajos preliminares", la tarea "Limpieza y nivelación del terreno" o el recurso "Ayudante".

Las columnas del formato utilizadas son:

IDCONCEPTO, Tipo concepto, Código, Descripción, Unidad, Moneda, Precio moneda base.

2.2. Hoja Relaciones

Las relaciones establecen el vínculo entre un concepto superior y un concepto inferior.

Ejemplos: el capítulo "Trabajos preliminares" como inferior del concepto raíz del presupuesto, la tarea "Limpieza y nivelación del terreno" dentro del capítulo "Trabajos preliminares" o el recurso "Ayudante" dentro de la tarea "Limpieza y nivelación del terreno".

Las columnas del formato utilizadas son: IDSUPERIOR, IDINFERIOR, Cantidad total, Orden.

2.3. Hoja Monedas

Son las monedas que se utilizan para expresar los precios de los conceptos en el presupuesto.

Las columnas del formato utilizadas son: Nombre, Tasa de cambio, Es moneda base.

3. Archivo resultado

El archivo que se va a generar debe tener 3 hojas: "Presupuesto", "Análisis" y "Recursos".

3.1. Hoja Recursos

Debe tener las siguientes columnas:

Tipo: corresponde a la columna "Tipo concepto" de la hoja "Conceptos" del archivo fuente.
Código: corresponde a la columna "Código" de la hoja "Conceptos" del archivo fuente.
Descripción: corresponde a la columna "Descripción" de la hoja "Conceptos" del archivo fuente.
Unidad: corresponde a la columna "Unidad" de la hoja "Conceptos" del archivo fuente.
Precio: corresponde a la columna "Precio moneda base" de la hoja "Conceptos" del archivo fuente.

La primera fila debe tener los títulos de columna.

Los valores se deben tomar mediante el script desde la hoja "Conceptos" del archivo fuente.

Ordenar las filas por la columna "Tipo" y luego por la columna "Descripción".

En esta tabla se deben cargar únicamente los conceptos que sean inferiores de una tarea (ítem) principal (ver 3.1.2).

3.1.1. Formato

Fuente títulos: Arial, 10, Bold.
Fuente recursos: Arial, 10.
Borde exterior del rango: Delgado
Borde interior del rango: Delgado
El rango abarca los títulos de columna y las celdas con los valores de los recursos.

3.1.2. "Tarea (ítem) principal"

Un concepto cuyo "Tipo concepto" no sea "Rubro" y que sea inferior de un concepto cuyo "Tipo concepto" sea "Rubro" o sea inferior del concepto raíz (ver 3.1.3).

3.1.3. El concepto raíz no aparece en la hoja "Conceptos", en la hoja "Relaciones" del archivo fuente se identifica con "IDSUPERIOR" = 1.

3.2. Hoja Análisis

En esta hoja se van a mostrar los análisis de precios unitarios de las tareas (ítems) principales uno seguido del otro. Dejar 2 filas vacías entre cada análisis.

Ordenarlos alfabéticamente por su código.

Cada análisis está compuesto por 3 secciones: encabezado, grupos de recursos, costo directo.

3.2.1. Encabezado

Los datos del encabezado se deben mostrar de la siguiente forma.

Primera fila de encabezado. Columna A: etiqueta "Código".
Primera fila de encabezado. Columna B: el valor de "Código" de la tarea.
Primera fila de encabezado. Columna E: etiqueta "Unidad".
Primera fila de encabezado. Columna F: el valor de "Unidad" de la tarea.
Segunda fila de encabezado. Columna A: etiqueta "Descripción".
Segunda fila de encabezado. Columna B: el valor de "Descripción" de la tarea.

Dejar una fila vacía después del encabezado.

3.2.1.1. Formato Encabezado

Borde exterior del rango: Mediano, extender el rango del borde hasta la columna F.
Borde interior del rango: Ninguno.
Fuente etiquetas: Arial, 10, Bold.
Fuente valores: Arial, 10.

3.2.2. Grupos de recursos

Los conceptos inferiores directos de la tarea se deben mostrar agrupados por el valor del campo "Tipo concepto" de la hoja "Conceptos" del archivo fuente.

Se deben mostrar 5 grupos de recursos en este orden: Mano de obra, Equipos, Materiales, Subcontratos, Otros.

Si un grupo no tiene recursos, no se debe mostrar.

Cada grupo de recursos está compuesto por 4 secciones: encabezado, títulos de columna, recursos, total.

Dejar una fila vacía entre cada grupo y también entre el total del último grupo y la fila del costo directo.

3.2.2.1. Encabezado

Como nombre de los grupos se va a usar el plural de cada "Tipo concepto".

En la columna A, mostrar el nombre del grupo.

3.2.2.1.1. Formato

Fuente: Arial, 10, Bold.

3.2.2.2. Títulos de columna

Las columnas se deben mostrar en el siguiente orden: Código, Descripción, Unidad, Precio, Cantidad, Valor parcial.

3.2.2.2.1. Formato

Fuente: Arial, 10, Bold.
Borde exterior del rango: Mediano
Borde interior del rango: Delgado

3.2.2.3. Recursos

Los valores para cada columna son los siguientes.

Código: se debe ingresar el texto en la celda desde la columna "Código" de la hoja "Conceptos" del archivo fuente.
Descripción: se debe obtener el valor de la columna "Descripción" mediante fórmula desde la hoja "Recursos" del archivo generado buscándolo por "Código".
Unidad: se debe obtener valor de la columna "Unidad" mediante fórmula desde la hoja "Recursos" del archivo generado buscándolo por "Código".
Precio: se debe obtener valor de la columna "Precio" mediante fórmula desde la hoja "Recursos" del archivo generado buscándolo por "Código".
Cantidad: se debe ingresar el valor en la celda desde la columna "Cantidad total" de la hoja "Relaciones" del archivo fuente.
Valor parcial: se debe ingresar la fórmula "Precio" por "Cantidad" de la fila.

3.2.2.3.1. Formato

Fuente: Arial, 10.
Borde exterior del rango: Mediano
Borde interior del rango: Delgado

3.2.2.4. Total

En la columna correspondiente a "Cantidad" escribir el texto: "Total " + el nombre del grupo de recursos.
En la columna correspondiente a "Valor parcial": ingresar fórmula que sume los valores de "Valor parcial" de los recursos del grupo.

3.2.2.4.1. Formato

Fuente: Arial, 10, Bold.
Borde exterior del rango: Mediano
Borde interior del rango: Delgado
El rango abarca solamente las celdas de la etiqueta y el valor.

3.2.3. Costo directo

En la columna correspondiente a "Cantidad" escribir el texto: "Costo directo".
En la columna correspondiente a "Valor parcial": ingresar fórmula que sume los totales de los grupos de recursos.

3.2.3.1. Formato

Fuente: Arial, 10, Bold.
Borde exterior del rango: Mediano
Borde interior del rango: Delgado
El rango abarca solamente las celdas de la etiqueta y el valor.

3.3. Hoja Presupuesto

En esta hoja se va a mostrar el desglose de capítulos y tareas del presupuesto.

3.3.1. Títulos de columna

Las columnas se deben mostrar en el siguiente orden: Código, Descripción, Unidad, Precio, Cantidad, Valor parcial.

3.3.1.1. Formato

Fuente: Arial, 10, Bold.
Borde exterior del rango: Delgado
Borde interior del rango: Delgado
El rango abarca solamente las celdas de los títulos de columna.

3.3.2. Desglose

Los valores para cada columna son los siguientes:

Código: se debe ingresar el texto en la celda desde la columna "Código" de la hoja "Conceptos" del archivo fuente.
Descripción: en el caso de los capítulos, se debe ingresar el texto en la celda desde la columna "Descripción" de la hoja "Conceptos" del archivo fuente. En el caso de las tareas, se debe obtener mediante fórmula el valor de "Descripción" del encabezado del análisis correspondiente en la hoja "Análisis" del archivo generado.
Unidad: en el caso de los capítulos, se debe ingresar el texto en la celda desde la columna "Unidad" de la hoja "Conceptos" del archivo fuente. En el caso de las tareas, se debe obtener mediante fórmula el valor de "Unidad" del encabezado del análisis correspondiente en la hoja "Análisis" del archivo generado.
Precio: en el caso de los capítulos, obtener mediante fórmula sumando los valores parciales de sus inferiores directos (subcapítulos o tareas). En el caso de las tareas, se debe obtener mediante fórmula el valor de la celda "Costo directo" del análisis correspondiente en la hoja "Análisis".
Cantidad: se debe ingresar el valor en la celda desde la columna "Cantidad total" de la hoja "Relaciones" del archivo fuente.
Valor parcial: obtener mediante fórmula, multiplicando la celda de "Precio" por la de "Cantidad".

3.3.2.1. Orden del desglose

Ordenar las relaciones según el campo "Orden" de la relación en la hoja "Relaciones" del archivo fuente.

Por cada inferior directo del concepto raíz:

- Si es capítulo, cargar sus datos en la tabla y luego cargar sus inferiores. Hacer este proceso recursivamente con los capítulos.
- Si es una tarea, cargar sus datos en la tabla y no cargar sus inferiores.

Por cada inferior directo de un capítulo:

- Si es capítulo, cargar sus datos en la tabla y luego cargar sus inferiores. Hacer este proceso recursivamente con los capítulos.
- Si es una tarea, cargar sus datos en la tabla y no cargar sus inferiores.

3.3.2.2. Formato

Fuente capítulos: Arial, 10, Bold.
Fuente tareas: Arial, 10.
Borde exterior del rango: Delgado
Borde interior del rango: Delgado

3.3.3. Total del presupuesto

Al final de la tabla, en la columna "Cantidad" ingresar el texto "Total" y en la columna "Valor parcial" ingresar la fórmula para sumar los inferiores directos del concepto raíz.

3.3.3.1. Formato

Fuente: Arial, 10, Bold.
Borde exterior del rango: Delgado
Borde interior del rango: Delgado
El rango abarca solamente las celdas de la etiqueta y el valor.

3.4. General

Los códigos en algunos casos pueden tener valores que en XLSX se interpretarían como números o fechas. Para evitar esto, especificar que el tipo de dato de estas celdas es texto.

No crear hojas auxiliares ocultas. Si no se puede generar el archivo de esta forma, por favor avisar.

En las fórmulas que obtienen textos desde otra hoja en el archivo generado, tener en cuenta que la celda de origen puede estar vacía; en ese caso, el resultado no debe mostrar 0.