Aplicaciones

Tutoriales, análisis y trucos de aplicaciones
Aplicaciones que no podemos poner en ninguna de las categorías anteriores. Aplicaciones relacionadas con la tecnología y pymes y pueden ser de interes para nosotros y otras personas.
Aplicaciones de escritorio, aplicaciones web , aplicaciones de movil y otros dispositivos, programas informáticos de interés y muchas veces necesarios para realizar nuestros proyectos.
Aplicaciones de IDES, aplicaciones ofimáticas, controladores de versiones, CRM y mucho mas.
En nuestro proyecto TPVFOX versionamos X.Y.Z
Método de crear versiones (tag)
Esto quiere decir que:
X: Fin de una etapa, ya se terminó de implantar de nuevas funcionalidades.
Y: Añadimos alguna funcionalidad o cambios bastante grandes.
Z: Pequeños cambios y pequeñas mejoras. Este número indicar cuantos commit esta por encima de la última versión (pequeños parches), si eres desarrollador y quieres saber que numero de version ver la respuesta a el punto siguiente , donde te explica como obtener cuando commits esta por encima.
¿Cómo sabemos en versión estamos?
De momento saber cuál es la única forma de saber cuál es la versión en la que estamos es a través de un repositorio de Git y desde la terminal poniendo la siguiente instrucción:
git describe
La respuesta es algo así
▶ git describe
v0.3.0-29-g3266211c
v0.3.0 es el tag, la versión que estamos. 29 indica que la rama actual esta 29 commit por encima de ese tag.
En la rama STABLE no debería indicar ningun numero, ya que no es habitual que estemos encima sin tener versionado. En otras ramas, como MASTER si puede estar por encima, ya que son ramas que estan en constante desarrollo.
Versiones de nuestra Base de Datos
Todos sabemos que los cambios en la estructura de la Base datos implica siempre posibles problemas con el código
Como versionamos nuestra Base de datos
En nuestro proyecto TPVFOX cuando realizamos un cambio en la estructura de la base de datos, lo que hacemos es un fichero con los cambios indicando la versión, este fichero se guarda en el directorio BD/Update con el nombre y sufijo de la versión, como indicamos a continuación:
install_update_vX.Y.[Z]
[Z] Estos al igual que al anterior, nos indica cuantos commits estamos por encima de la rama actual. No tiene por qué existir esa versión con esa terminación, pero sí son correlativas.
En estos ficheros puede encontrar las instrucciones SQL para ejecutar y así actualizar tu Base de Datos.
Siempre que hagamos un cambio en la base datos, generamos un fichero install_update_vX.Y.Z que es realmente el commit que vamos a hacer justo después de crearlo.
Cuando vayamos a actualizar un repositorio, simplemente debemos saber en versión estamos y luego actualizar el repositorio, luego solo tenemos que ejecutar los ficheros superiores a la versión que estábamos.
Por ejemplo, si estamos en la versión v0.2.22 del código, si actualizamos hasta la versión v.0.3.30, debemos ejecutar todos los ficheros que hay con las versiones superiores v0.2.22 en el directorio BD/Update, hasta la versión que vamos a actualizar.
Posibles problemas con Base Datos de backup
Nos podemos encontrar con el problema que cuando tenemos un backup de base de datos, ya que no sabemos en qué versión está esa copia. Y tampoco podemos comprobarlo con el código, puesto que realmente no está en funcionamiento y no tenemos repositorio instalado para ese backup.
Por este motivo, creamos este issue en el proyecto, para poder registrar el número de versión en una tabla de configuración, así de esa forma podemos guardar en esa tabla el número versión de la base de datos y luego simplemente tendríamos que actualizar desde esa versión.
Cada usuario puede seleccionar si quiere o no mostrar botones de las familias en la configuracion en tpv.
Recuerda que para la familia tienes a ver marcado la mostrar en cada familia, hay que tener en cuenta que si una familia padre se muestra, sus hijos se mostraran dentro del padre.
Explicacion general de permisos en tpvfox
La gestión de los permisos es independiente para cada usuario.
En la tabla usuarios tenemos un campo grupo_id que si le ponemos al usuario el valor 9 es como si fuera administrador y tiene todos los permisos.
Aunque los permisos son independiente y se podría quitar o poner permisos distintos a casa usuario.
Lo permisos pueden ser:
- 1 -> tiene acceso
 - 0-> no tiene acceso
 
Los permisos de modulos , vistas o acciones los indicamos en el fichero access.xml de cada modulo pero siempre con jeraquia modulo->vista->accion. Por ejemplo:
- mod_clientes -> tiene permiso
 - vista listado clientes -> tiene un permiso
 - acciones dentro listado clientes -> tiene otro permiso.
 
No podemos crear un permiso una accion fuera de una vista.
¿Donde guardamos los permisos de cada usuario ?
Los permisos de cada usuario los guardamos en tabla permisos
¿ Que son lo permisos del con usuario 0 ?
Son los permisos que tenemos por defecto en los ficheros access.xml de todos los modulos y plugins.
Se utilizan para limpiar permisos y añadir los que faltan a cada usuario, reorganizar permisos.
¿ Donde añado un permiso a un modulo ?
Cuando se crea un modulo , en el fichero acces.xml se indica los permisos por defecto del modulo , de sus vistas y sus acciones.
Cuando en produccion añadimos una accion, entonces los permisos tienes que reorganizar permisos, tambien podermo resetear los permisos.
Lo primero es deciros que esta entrada es un borrador para nosotros los programadores de tpvfox, no es un modelo a seguir, para nada, todo contrario ya que este proyecto empezó con código espagueti y poco a poco lo vamos mejorando.
Si estas interesado continuar mejorando nuestro TPVFOX es interesante que sigas leyendo. No dudes en ponerte en contacto con nosotros para cualquier aclaración o duda.
Un poco teoría y referencias.
Un MVC que precie debería separar la lógica de la aplicación con la vista (lo que muestra), es decir que nos permite separar los componentes de nuestra aplicación según su funcionalidad, que cuando hacemos un cambio en alguna parte de nuestro código, esto no afecte otra parte del mismo, no es una tarea fácil.
Por ejemplo:
En una web un usuario hace una petición en una web , el controlador responde esa petición, ya que es el controlador el se que encarga de la lógica de la web.
El controlador le pide al modelo la información de esa petición. El modelo se encarga de los datos ( consultar la base de datos) , una vez los tenga , se los envía al controlador nuevamente , por ultimo es el controlador el que se los envía a la vista para mostrarlos.
Tengo que decir que todas las referencias que fui leyendo , no siempre los modelos se encargan de los datos, por lo que entiendo que no todas los sistema MVC son iguales.
Algunas de las referencias que encontré MVC :
Funciones y objetivo de TPVFOX
Es una aplicación para gestionar medianas y pequeñas empresas. En la que puedes:
- Gestionar productos: Altas, modificaciones, gestión stock y control de precios.
 - Gestionar Proveedores: Altas y modificaciones.
 - Gestionar Clientes: Altas y modificaciones.
 - Gestión de compras: Pedidos a proveedores, albaranes de entrada , Facturas de proveedores.
 - Gestión de ventas: Tickets-POS, pedidos de clientes, albaranes y facturación-
 
También se puede conectar con una tienda e-comerce (Joomla + Virtuemart ), tiene la posibilidad conectarse otros e-comerce como :
- Prestashop
 - woocommerce
 - ...
 
Estas aun no esta creada la API, te apetece hacerla.
Licencia y código
Esta publico en GITHUB y con licencia GNU General Public License v2.0
Puede utilizarlo, modificarlo y incluso venderlo, lo que no puedes cambiar la licencia, el código debe ser abierto siempre.( leer licencia )
Aunque el proyecto aun esta su fase beta , ya hay varias empresas que la utilizan, si estas interesado en utilizarlo para ti o tu empresa, estaríamos encantados en ayudar.
                        