Hoy vengo a presentar un software para realizar cotizaciones o presupuestos, el cual es totalmente gratuito de usar en la nube; así como open source. Es decir, aparte de que puedes usarlo en mi sitio, puedes descargarlo y modificarlo.

Sistema web para cotizaciones y presupuestos

Sistema web para cotizaciones y presupuestos

Características del software

No es la gran cosa, pero entre sus principales características encontramos las siguientes:

  • Realizar cotizaciones o presupuestos
  • Estimar el costo requerido, el cual se configura por cada servicio
  • Calcular tiempo requerido por cada servicio
  • Describir características y/o condiciones del trabajo
  • Agregar clientes para ligarlos a las cotizaciones
  • Imprimir la cotización o guardarla como PDF (esto depende del navegador la mayoría de veces)
  • Multiusuario: cualquier usuario puede registrarse y usarlo, así de simple. Eso sí, las cotizaciones, servicios y características son separadas por usuario
  • Totalmente open source
  • Escrito con PHP, utiliza PDO para interactuar con la base de datos
  • Base de datos MySQL
  • Lado del cliente con Vue.JS y Bootstrap
  • Mensaje de agradecimiento, presentación y pie totalmente configurables

Se me ocurre que puede servir tanto como para estudiantes que tienen que entregar un proyecto con PHP simple, así como para personas que necesitan un software como estos.

Voy a explicar cómo fue creado, en dónde se puede probar y también dónde se puede leer el código fuente.

Una introducción técnica

Este sistema está creado con PHP utilizando PDO para conectar con MySQL. Usé lo mismo que explico en Introducción a PHP con PDO y MySQL, o en la creación de un pequeño sistema de ventas.

En el lado del cliente utiliza a Bootstrap 4 y Vue.Js en su versión 2. Para convertir los minutos a un tiempo legible por los humanos, utilizo lo que se vio aquí. Por otro lado, para formatear el dinero utilizo la función que convierte números a dinero que publiqué anteriormente (lo puse rápidamente como filtro gracias a la simplicidad de Vue).

La sesión de PHP es manejada por un, valga la redundancia, manejador o handler propio de sesiones, el cual utiliza MySQL para la persistencia y que publiqué hace algún tiempo.

Ah, olvido decir que no se utiliza ningún framework para PHP; es el lenguaje en su simplicidad absoluta.

Hablando de las contraseñas, las cifro con bcrypt (mira este tutorial para hashear en PHP) pero antes de ello las convierto en una cadena de longitud fija con md5 (para evitar poner un límite en la longitud de las mismas). Así, aunque MD5 es rompible por un ataque de diccionario, bcrypt no, porque usa sal.

Sobre la seguridad puedo decir que utilizo un token CSRF para evitar ataques CSRF, y para comprobar el token utilizo hash_equals en lugar de una simple comparación; todo esto para mitigar ataques de temporización.

Demostración y pruebas del software

Puedes probar la aplicación web haciendo click aquí o entrando en bit.ly/cotizaciones_app. Funciona perfectamente; regístrate con tu correo electrónico y luego inicia sesión.

El software es web, y por lo tanto multiplataforma. Puedes acceder a él desde una tableta, teléfono o computadora desde cualquier parte del mundo. Aparte de eso, gracias al diseño responsivo se adapta a cualquier pantalla.

La siguiente captura es de mi teléfono:

App web para cotizaciones, presupuestos y costos en un teléfono Android

App web para cotizaciones, presupuestos y costos en un teléfono Android

Un PDF que fue generado (la impresión sale casi idéntica) es el que se puede ver aquí.

Hablar es de mal gusto, muéstrame el código

Bueno, ya hablé mucho. El código fuente está en GitHub bajo la licencia MIT. En resumen puedes hacer lo que quieras con el software, incluso venderlo. Eso sí, no te doy garantía de nada; pero bueno, si quieres ver la licencia puedes leerla en el repositorio.

Motivación

Lo que me motivó a hacerlo es que ya estaba harto de usar Microsoft Word; porque aunque hay plantillas excelentes ninguna es una herramienta ad-hoc (o como se les diga, no sé si es el término correcto).

Aparte de ello, no podía acceder a la plantilla si no tenía mi computadora presente, y sobre todo, no calculaba cosas automáticamente.

El futuro

Conforme pase el tiempo, lo iré puliendo un poco más (me ayudarías si lo compartes y usas).

Eres libre de dejar comentarios para mejorarlo, o reportar errores. Encontrarás más información en la página Acerca de del sistema.

No te vayas sin seguirme en Twitter, Facebook y GitHub, así me motivas a escribir más posts.
Igualmente te invito a suscribirte en la parte superior derecha escribiendo tu correo en el formulario.
Si tienes dudas déjalas en un comentario


parzibyte

He trabajado por más de 4 años en el desarrollo de software con experiencia en Java, PHP, JavaScript, HTML, Node.JS, Python, Android y Go. También he trabajado con bases de datos SQL como MySQL y SQLite, así como con bases de datos NoSQL usando MongoDB. Soy bueno utilizando algunos frameworks y herramientas como Firebase, jQuery, AngularJS, VueJS, CodeIgniter, Laravel, BulmaCSS, Bootstrap y Electron. Otros términos que conozco son: Arduino, GraphQL, API's, REST, AJAX, PouchDB, CouchDB, Experiencia de usuario, buenas prácticas de programación, Webpack, NPM, Administración de servidores y programación de scripts La plataforma en la que tengo más experiencia es la web, pero en mis ratos libres realizo unos pequeños ejercicios en C# y C. Estoy aquí para ayudarte a resolver tus problemas de programación y depuración :-)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

A %d blogueros les gusta esto: