Introducción /Introduction
Empezamos a pensar como incluir el inventario de los elemetos que componen una carretera cuando, al echar la vista atrás y ver que todo ello llevaba consigo un segundo trabajo de presupuestación, decidimos cambiar todo para que el objetivo final fuera la realización de presupuestos.
Al contemplar todo lo que habíamos hecho en la versión de escritorio y web empezamos a pensar cual sería más fácil de programar. Esta vez ganó PHP frente a Visual Basic. Por ese motivo empezaremos a explicar como funciona la edición de presupuesto/inventario.
Otro punto fue la discusión de cual sería la mejor base de datos a utilizar. Ésta tenía que ser compatible con la versión web y de escritorio. Finalmente nos decantamos por una pseudo-base de datos (más detalles en: PSBD.pdf). La razón que más motiva esta decisión es la facilidad de su funcionamiento y el hecho de que sólo cuando el número de elementos se dispara más allá de los 10.000 ésta empieza a ser desaconsejable y éste no es el caso. El otro objetivo más mundano es la incompatibilidad entre sistemas. Una base de datos en Access sería adecuada para la aplicación de escritorio pero un tormento en la aplicación del servidor. Una base de datos de tipo MySQL o PostgreSQL sería un bendición en PHP pero el suplicio se volvería en aplicación de escritorio. La pseudo-base de datos es compatible con ambos, requiere sólo un poco más de esfuerzo en la programación pero los datos está a la vista, en un directorio en concreto y se puede utilizar el clásico copia-pega. Además, los datos se puede ver y editar, si se desea, directamente con un simple editor de texto.
We started thinking about how to include the inventory of the elements of a road when, look back and see that all carried a second job of budgeting, we decided to change everything so that the ultimate goal was the realization of budgets.
Looking at all that we had done in the desktop version and web start thinking that would be easier to program. This time, PHP gained versus Visual Basic. For this reason we will begin to explain how it works budget editing / inventory.
Another point was to discuss what would be the best database to use. This had to be compatible with desktop and web version. Finally we opted for a pseudo-database (more details at: PSBD.pdf). The reason for this decision is the operational capacity and the fact that only when the number of elements is greater than 10,000 it begins to be undesirable and that is not the case. The other more mundane goal is the incompatibility between systems. An Access database would be suitable for the desktop application but a torture in the server application. A type database MySQL or PostgreSQL would be a blessing in PHP but the torture would turn desktop application. The pseudo-database is compatible with both, requires only a little more effort in programming but the data is visible in a particular directory and you can use the classic copy-paste. Additionally, data can be viewed and edited, if desired, directly with a simple text editor.
La aplicación web / The web application
Lo primero, es añadir una nueva opción a nuestra aplicación que nos permite ir al futuro editor:
The first thing is to add a new option to our application allows us to go to the future editor:
¿Como funciona? / How does it work?
1º.- Creación de capítulos
2º.- Creación de unidades
After extensive testing and discuss the issue, we find that the easiest way was to incorporate three simple functions, necessary and powerful:
Esta última función se incorporará a la aplicación principal. Con algunas variantes:
This latter function is incorporated into the main application with some variations:
... nos lanza el presupuesto:
... it throws us the budget:
The first thing is to add a new option to our application allows us to go to the future editor:
¿Como funciona? / How does it work?
1º.- Creación de capítulos
En el ejemplo que se muestra se han ido creando los capítulos de Balizamiento y señalización. Se irán creando según sean necesarios, dinámicamente. Si la selección de capítulos nos parece buena para aplicar a otra carretera simplemente se copiará el directorio ../bd en cualquier otra carretera. De esta manera se copiarán no sólo los capítulos sino también las unidades. La creación de un capítulo implica la creación de un directorio. En nuestro ejemplo:
1º.- Creating chapters
The example shows how the chapters have been created for Beaconing and signposting. It will be created as needed, dynamically. If the chapter selection seems good to apply for another road simply copy the folder .. / bd on any other road. In this way not only be copied but also chapters units. Creating a chapter involves creating a directory. In our example:
2º.- Creación de unidades
Igualmente que en el caso anterior se irán creando las unidades. Éstas tendrán dos datos, a saber, la unidad de medida (m3, ml, Kg, ...) y el precio. El aspecto será el siguiente:
2º.- Creating units
Similarly as in the previous case they will be created units. They have two data, namely, the unit of measurement (m3, oz, kg, ...) and price. The appearance is as follows:
3º.- Añadir la medición y en conclusión el presupuesto
Según vamos pasando de pk se irán incorporando mediciones de cada unidad que nos interese. Ésta se unirán en bloque y realizará el presupuesto del entorno del pk afectado.
3º.- Add the measurement and budget
As we are going to KP measurements will be added for each unit that interests us. This will join the block and make KP budget affected.
4º.- Funciones de ayuda a la edición
Después de realizar muchas pruebas y discutir sobre el tema encontramos que la forma más sencilla era la incorporación de 3 funciones simples, necesarias y potentes:- Función de Validación: "Guardar datos de este pk." En algún momento hay que dar por buenos los cambios
- Función de validación y copia al siguiente. "Guarda datos de éste y cópialos al siguiente pk". Idem función al anterior. Además hace lo mismo en el siguiente. Este punto es importante ya que muchas mediciones son constantes, como por ejemplo la pintura blanca de señalización. Ésta función es adecuada para funciones repetitivas.
- Función de no hacer nada: "Pasa y ve al siguiente". No hace nada pero a un golpe de click pasa al siguiente pk. Es útil en tareas de reedición y repaso.
4º.- Help functions for editing
After extensive testing and discuss the issue, we find that the easiest way was to incorporate three simple functions, necessary and powerful:
- Validation Function "Save data from this KP." At some point you have to make changes for good
- Validation and copy function to the next. "Save it and copy data to the next KP". Same as the previous function. Also does the same in the next. This point is important as many measurements are constant, such as white paint. This function is suitable for repetitive functions.
- Function of doing nothing, "Come and see the next." It does nothing but stroke goes to the next KP click. It is useful in tasks reissue and review.
5º.- Funciones de visualización de imagen
Al contemplar la foto nos permite saber que unidades hay en cada pk.
5º.- Image display functions
Looking at the photo lets us know that units in each KP.
6º.- Funciones de visualización de presupuesto
Nos permite ver el presupuesto del pk. Permite ver fallos gordos que se nos pudieran ir "colando".
6º.- Budget display functions
We can see the KP budget. Lets see fat failures that we might have.This latter function is incorporated into the main application with some variations:
7º.- Incorporación de tramos al presupuesto
Nos puede interesar saber cual es el presupuesto del inventario no sólo en este pk sino el sumatorio de los 100 metros siguientes. El programa nos hará una pregunta "¿Dame una distancia? Le respondemos 100 y...
7º.- Adding tranches to the budget.
We may want to know what the inventory budget not only in this KP but the sum of 100 meters below. The program will give a question "Give me a distance? ... We respond 100 and ...... nos lanza el presupuesto:
... it throws us the budget:
7º.- Funciones de exportación
Para rematar le incorporamos la funcionalidad de exportación en formato XLS. También se puede seleccionar la tabla en su conjunto y realizar el clásico copia-pega.
7º.- Export functions
To finish we add the functionality to export in XLS format. You can also select the table as a whole and make the classic copy-paste.La aplicación de escritorio /The desktop application
Después del trabajo realizado en el editor web, repetimos los mismos pasos en nuestra aplicación de escritorio. Para ello la enlazamos con la parte de funciones de eje (ver: http://carreteras-laser-escaner.blogspot.com.es/2013/10/jugando-con-el-eje.html)
After work in the web editor, repeat the same steps in our desktop application. To do this, we will connect with the axis functions (see:http://carreteras-laser-escaner.blogspot.com.es/2013/10/jugando-con-el-eje.html)
Ahora incorporamos una tabla del tipo Flexgrid. De una manera más acorde con el espacio más reducido que el de una aplicación web fuimos incorporando lo elemento de nuevo capítulo, nueva unidad, mediciones y un botón "Cada X metros" que nos permite hacer sumas parciales más amplias del presupuesto. Como la aplicación ya dispone de funcionalidades de edición fotográfica, éstas, se incorporan sin ningún esfuerzo.
Las bases de datos de la aplicación web y de escritorio no son sólo compatibles, en realidad, son la misma.
Now we incorporate a rate table Flexgrid. In a manner more consistent with the smaller space than a web application what element we incorporated new chapter, new unit, measurements and a button "Every X meters" that allows us to partial sums most extensive in the budget. As the application already has photo editing features, they are incorporated without any effort.
The databases of Web and desktop application are more than compatible, in fact, are the same.
Diagrama de flujo del proyecto completo / Flowchart complete project:
Agradecimientos
Ha sido la inestimable ayuda del equipo humano y material de las empresas Enmacosa S.A, Extraco, S.A. y Mixturas, S.A. para la conclusión éste y otros apartados comentados en este blog.
Acknowledgements
It has been the invaluable help of the team and equipment from companies: Enmacosa S.A, Extraco, S.A. y Mixturas, S.A. for the conclusion of this, and other sections discussed in this blog.
No hay comentarios:
Publicar un comentario