No tengo tiempo para iniciarme en Velneo

Hace unos días realicé una encuesta a los suscriptores para saber cual era su principal problema a la hora de desarrollar con la plataforma. Uno de los problemas mas repetidos era “No tengo tiempo para iniciarme en Velneo“.

Resulta curioso que el principal problema no sea como crear vistas de datos, como lanzar las búsquedas o como utilizar los enlaces indirectos.

El principal problema es el tiempo.

 

iniciarme en velneo

La verdad es que no se como me sorprende.

En esta sociedad en la que vivimos se da una paradoja muy interesante en las empresas de programación:

el principal bien que tenemos es el tiempo… y nos dedicamos a programar a toda prisa nuevas funcionalidades en nuestras aplicaciones sin pararnos a pensar si el desarrollo que estamos realizando es realmente necesario para nuestros clientes.

Me pasa incluso a mi. Llevo queriendo sacar tiempo para empezar a desarrollar en QML ya ni me acuerdo desde cuando… y la semana pasada tampoco lo conseguí.

Si no lo habéis hecho todavía, os aconsejo leer este post de Alfonso Gutiérrez. Es para pensar y reflexionar sobre ello.

Causas de la “escasez de tiempo”

La gran mayoría de los que desarrollamos en Velneo somos pequeñas empresas o autónomos. No tenemos grandes departamentos en nuestra empresa de ventas, contabilidad ni de programación.

Estoy convencido de que una de las principales causas de la escasez de tiempo que impide “iniciarme en Velneo” es el “síndrome del hombre orquesta“: como voy a dejar que otro haga esto.. si yo soy el que mejor lo hace.

Gran error.

Yo facturo, yo vendo, yo me encargo de la contabilidad, yo programo, yo hago las nóminas, etc etc etc. y al final no tengo tiempo para lo importante.

Tener tiempo para pensar que vamos a desarrollar en las aplicaciones para hacer rentables nuestras empresas.

Si te sirvo de ejemplo, te voy a contar 4 medidas que he tomado para “ganar tiempo”:

  • Contratar una asesora: Lo siento no soy contable ni asesor fiscal. En España hay demasiados trámites burocráticos y cada 3 meses hay que presentar impuestos. Susana se encarga de todo esto. Es lo primero que hice cuando me decidí a ser autónomo hace ya algunos años. No me arrepiento en absoluto… es mas cada 3 meses me compadezco de ella.
  • Contratar un diseñador para la web: la primera versión de la web la desarrolle, la instalé y la configuré yo. Cuando decidí que era hora de actualizarla por completo (con el aspecto que ves ahora) lo primero que decidí es que no la iba a hacer yo (y se hacerlo puesto que ya lo había sufrido una vez). Otra decisión acertada. En este caso fue mi amigo Dan quien se encargó de ello.
  • Aprender a decir NO y rechazar algunos trabajos: antes decía a todos los trabajos que me llegaban que si. No me preocupaba si “eran rentables” sólo me preocupaba “poder facturar“. Si te fijas acabo de hacer una comparación muy sutil pero bastante importante “rentabilidad vs facturación“. Ahora sólo cojo trabajos que van a ser rentables.
  • Externalizar todos los trabajos mecánicos que tengas en tu empresa. El tiempo que ganarás compensará con creces la inversión que tengas que realizar.

La cuenta es muy sencilla. Ponte un precio/hora (el precio que quieres ganar por tu trabajo). Mira las horas que inviertes en trabajos mecánicos o trabajos que podrías delegar. Multiplica tu precio hora por esas horas que empleas en trabajos que podrías delegar. Y ahora mira cuanto te costaría delegar esos trabajos. ¿Te compensa? A mi te aseguro que si.

Consejos para “iniciarme en Velneo”

El primer consejo que te daría es que comiences poco a poco (vamos, que no quieras desarrollar un ERP el primer día… ni siquiera el segundo jejeje) y sobre todo que te comprometas.

Trata tu formación en Velneo como si de un proyecto de unos de tus clientes se tratase. Resérvate horas en tu planificación semanal. Será la única forma de que avances.

Puedes comenzar con estos post que he seleccionado para “Comenzar con el desarrollo en Velneo“.

Después puedes realizar algún curso online gratutio como este o de pago como el programa formativo “Despega con Velneo V7“.

Por último si no consigues comprometerte con la formación, lo mejor que puedes hacer es un curso presencial. De esta forma te comprometes si o si.

Repite conmigo “voy a iniciarme en Velneo”.

¿Qué medidas vas a tomar para conseguirlo?

Cuéntamelas dejándome un comentario mas abajo.

 

La entrada No tengo tiempo para iniciarme en Velneo aparece primero en AyudaVelneo.

Comienza el curso escolar 2017/2018

La verdad es que estoy como los niños cuando empiezan el nuevo curso escolar: con mucha ilusión por reencontrarme con los “amigos virtuales” ( o sea tu) y deseando hacer cosas nuevas en el blog.

curso escolarEste 2017 no está siendo como yo esperaba a nivel personal.

Cuando estaba a punto de irme de vacaciones para olvidar mis problemas de salud, (y cuando digo a punto de salir, quiero decir la noche antes con las maletas ya preparadas) tuvimos que llevar a mi hijo mayor al hospital: operación de apendicitis y cancelación de las vacaciones.

Tampoco me puedo quejar. Todo se ha cogido a tiempo y no deja de ser ya una “anécdota” familiar.

Siendo sinceros… alguna asignatura pendiente me ha quedado.

De mis propósitos de año nuevo, algunas asignaturas me han quedado pendientes para “septiembre”:

  • Todavía no he logrado crear un sistema de ingresos recurrentes.
  • Creación de un nuevo curso de iniciación.
  • Escribir artículos con mas regularidad. Esto está muy relacionado con el punto 1… si no logro ingresos recurrentes, tengo que intercambiar tiempo por ingresos… y ahí salgo perdiendo.

Prometo aplicarme para “aprobar” estas asignaturas.

¿Y este nuevo curso escolar qué?

La verdad es que estoy muy ilusionado con el proyecto ayudavelneo.

Sentir que con los artículos ayudo a los desarrolladores que se están iniciando en Velneo a ser mas productivos y a obtener beneficios desde el minuto uno, me produce una gran satisfacción.

Además gracias al blog cada vez mas a menudo me llegan propuestas de trabajo: desarrollos, cursos online, cursos presenciales así como ofertas de trabajo en empresas.

Esta última opción, de momento está descartada.

Como te he comentado anteriormente, he prometido aplicarme para “recuperar” las asignaturas que llevo suspensas.

En esta última parte del año, he decidido emprender las siguientes acciones:

  • Publicar un post todos los martes. Si además hay post de algún invitado, se publicarán los jueves.
  • Crear un nuevo curso de iniciación en Velneo para todos aquellos de vosotros que estáis empezando a desarrollar con la plataforma.
  • Enviar un boletín o newsletter los viernes a todos los suscriptores del blog,  con las novedades y artículos interesantes que aparezcan relacionados con Velneo. Si no te has suscrito todavía, puedes hacerlo al pie de este post.
  • Como los grandes clubes de futbol (quitando al Barcelona este año… jejeje), yo también he “fichado” a un nuevo colaborador para el blog: El “profesor vBacterio“. Algún experimento interesante mezclando Velneo y vJavaScript ya he visto que saldrá de su laboratorio.

Además durante el verano he recibido algunos e-mails en los que me preguntábais si los “Cursos Online” relacionados con QML iban a volver a estar disponibles.

Aunque en un principio había decidido no volver a ponerlos a la venta, al final he recapacitado y vuelven a estar disponibles:

También están disponibles en el menú superior de la web (opción “Cursos”)

De momento esto es todo lo que tenía que contarte..

¿Qué te han parecido mis “medidas” para aprobar en septiembre? ¿Acertadas?

¿Prefieres recibir la newsletter el fin de semana?

Déjame un comentario mas abajo y comenzamos el debate.

La entrada Comienza el curso escolar 2017/2018 aparece primero en AyudaVelneo.

¿Es difícil utilizar PaaSOS para mis desarrollos?

La semana pasada contactó conmigo un viejo amigo que quería conocer mas en profundidad el Proyecto PaaSOS. Organicé una reunión con Jorge Hontoria y antes de llegar a los postres mi amigo nos preguntó: “Realmente, ¿es difícil utilizar PaaSOS para mis desarrollos?”

Jorge y yo discrepamos… ¿quieres saber cuales fueron nuestras opiniones?

utilizar PaaSOS

 

Yo argumentaba que utilizar PaaSOS, para alguien que se está iniciando en el desarrollo con Velneo, es demasiado complejo mientras que Jorge opinaba que no es tan difícil de utilizar.

Te voy a contar los argumentos de cada uno.

Conociendo la plataforma PaaSOS

De entrada, PaaSOS asusta.

Si descargas toda la plataforma PaaSOS y ves su estructura, lo cierras y no lo vuelves a abrir.

utilizar PaaSOS

¡Que no cunda el pánico!

Yo lo he abierto unas cuantas veces… y aquí sigo.

También es verdad que hay que diferenciar 3 partes bien diferenciadas

  • Plataforma completa: el árbol que te he enseñado anteriormente es de la versión 1.6… creo que la versión 1.7 trae mas novedades.
  • PaaSOS CORE: verdadero corazón de la plataforma. Este módulo da la funcionalidad común a toda la plataforma y simplemente por heredarlo en tus desarrollos, también la tendrás a tu disposición.PaaSOS Core
  • Módulos de PaaSOS: módulos con funcionalidades específicas. Generalmente están formados por un proyecto de datos y uno de aplicación y suelen funcionar de manera autónoma  (heredando PaaSOS CORE).
    • Cartera de cobros y pagos
    • GTD.
    • Rutas.
    • Redes sociales.
    • etc.

PaaSOS EAC

Mi opinión: Utilizar PaaSOS para mis desarrollos es COMPLICADO

Siendo sincero yo, en este caso, parto con alguna desventaja.

Llevo involucrado en el proyecto casi desde el principio, por lo que me ha tocado desarrollar o modificar alguna de las partes complejas de la plataforma.

Al realizar mi afirmación, yo no diferenciaba entre “utilizar PaaSOS” y “modificar PaaSOS” puesto que he tenido que realizar las dos operaciones.

Una de las mayores dificultades a las que se enfrenta un desarrollador al intentar comprender el CORE de PaaSOS es que se hace un uso intensivo tanto de constantes como de funciones (se puede dar el caso de que desde un manejador se llame a un proceso que ejecute una función… que llame a otra función (en este ejemplo se recalculan los calendarios al realizar una repetición de una actividad).

 

Función PaaSOS

Una de las dificultades añadidas por lo menos para mi) es que TODA la plataforma esta en la lengua de “chespir”, es decir, en Inglés (menos mal que los textos explicativos están en castellano).

Si eres como yo que toda la vida he estudiado francés… pues todavía es mas complicado.

El sistema de conexiones es complejo… pero a la vez muy potente. Permite conectar unos registros con otros sin necesidad de enlaces entre las tablas.

La opinión de Jorge: Utilizar PaaSOS para mis desarrollos es SENCILLO

Jorge argumentaba, y con razón, que hay que diferenciar “utilizar PaaSOS para mis desarrollos” de “modificar el CORE de PaaSOS para mis desarrollos”.

Como te he comentado anteriormente, simplemente por el hecho de heredar “PaaSOS CORE“, podrás:

  • Etiquetar y categorizar cualquier registro.
  • Actividades con repetición de las mismas.
  • Posibilidad de adjuntar ficheros.
  • Realizar anotaciones.
  • Calendario de serie.
  • E-mails.
  • etc.

Es cierto que el código está “mimado” hasta la última coma. Cualquier proceso o función se detalla exhaustivamente (como has podido ver anteriormente).

Otra de las ventajas que señalaba Jorge es que la estructura de cualquiera de los proyectos es la misma:

Módulo PaaSOS

Otra de las ventajas que le veía Jorge es el potente sistema de plantillas disponible según el módulo que tengas que desarrollar:

  • Maestro.
  • Maestro arbolado.
  • Maestro con plural.
  • Maestro con sistema de conexiones.
  • Maestro sin sistema de conexiones.
  • etc.

En este punto le tengo que dar la razón.

Después de un tiempo sin trabajar con PaaSOS, desarrollé un par de módulos para la plataforma, PaaSOS GTD y PaaSOS EAC (cobros y pagos) y no me costó demasiado gracias a estas plantillas.

Cobros y pagos

 

Conclusiones finales

Es cierto que PaaSOS es complejo… muy complejo pero a la vez es potente… muy potente.

Yo te animaría a utilizar PaaSOS para tus desarrollos en Velneo.

Te animaría a “conocer” PaaSOS CORE y a desarrollar tu primera aplicación con PaaSOS.

 

¿Has utilizado PaaSOS en tus desarrollos Velneo? ¿Te ha parecido complejo de utilizar? ¿Te ha parecido sencillo?

Déjame un comentario mas abajo y comenzamos el debate.

La entrada ¿Es difícil utilizar PaaSOS para mis desarrollos? aparece primero en AyudaVelneo.

Consultorio Velneo: ¡Actualizaciones al poder!

Muy interesante la pregunta que me hace David Cueva desde Juarez (México) y que creo que se puede resolver mediante la creación de 3 campos y 1 actualización ¿no te lo crees?.. Sigue leyendo.

Actualizaciones al poder

La pregunta en cuestión es la siguiente:

Tengo un formulario de mantenimiento a x unidad…en el tengo datos de la unidad a servir, fecha, y un boleano que me indicara cuando el mantenimiento actual..esta terminado….abajo….una vista de datos donde esta la rejilla de lineas de mantenimiento (editable)…donde tengo el servicio a dar…y entre otras cosas un campo de finalizado…..
lo que no puedo lograr es que al momento que todas las lineas (servcios), esten en finalizado si….en ese instante me habilite el campo Terninado en el formulario…si hay algun servicio sin terminar…debe permanecer deshabilitado…
Mediante control de evento y eventos….lo hace..pero a destiempo…no en tiempo real…..
Antes de continuar, es muy recomendable que, si no lo has hecho ya, leas este artículo acerca de las actualizaciones.

Definiendo el problema

Básicamente David tiene un registro (maestro) en el que hay que cambiar un campo de tipo booleano en función de si todas sus líneas (plural) están en estado terminado o no (te recomiendo leer también este otro post sobre las relaciones entre tablas).

David lo ha conseguido mediante maneadores de evento pero el problema es que no consigue que el valor del campo booleano se actualice en tiempo real.

Siempre digo que todo lo que podamos hacer en el proyecto de datos, es recomendable hacerlo ahí. Velneo se encargará de realizar las operaciones necesarias para actualizar los registros.

Pues vamos a ello…

Creando los campos necesarios

Para aplicar la solución, en el registro del mantenimiento vamos a crear dos campos de tipo numérico:

  • NUM_LIN_TOT: iremos acumulando en este campo el número de líneas que tiene el registro en cuestión.
  • NUM_LIN_TER: iremos acumulando en este campo el número de líneas que estén terminadas.

Además vamos a modificar el contenido inicial del campo booleano (le llamaremos B_TER) que nos indica si el mantenimiento está terminado o no:

  • choose(#NUM_LIN_TOT= #NUM_LIN_TER, 1, 0)

De esta forma conseguiremos que el campo se marque como “Terminado” cuando el nº de líneas terminadas sea igual al nº de líneas totales.

Velneo se encarga del resto: Actualizaciones al poder

Ahora sólo nos falta que los campos para el número de líneas se vayan actualizando de forma automática.
Para ello vamos a crear una actualización en la tabla de líneas de mantenimiento que actualice el maestro de mantenimientos.
Una vez creada, vamos a dar de alta dos componentes:
Nº de líneas totales
Actualización sencilla… cada vez que demos de alta una línea del mantenimiento… se acumula 1 en el campo NUM_LIN_TOT.

Nº de líneas terminadas

Mediante este componente de actualización, iremos añadiendo 1 al nº de líneas terminadas pero solamente cuando la línea esté terminada (la condicionamos a que el campo B_TER esté a 1).

Conclusión

Pues si esperabas algo mas de dificultad… lo dejaremos para otro día. Con estas sencillas instrucciones, David conseguirá lo que se propone.

Cuando el valor del campo NUM_LIN_TER sea igual al del campo NUM_LIN_TOT, querrá decir que todas las líneas estarán terminadas y por tanto el campo booleano B_TER se marcará a 1.

Ya sabes que si tienes alguna duda sobre Velneo, puedes hacérmela llegar a través del formulario de contacto e intentaré responderla.

Déjame un comentario mas abajo y comenzamos el debate.

La entrada Consultorio Velneo: ¡Actualizaciones al poder! aparece primero en AyudaVelneo.

Consultorio Velneo: Relaciones entre tablas

Nace hoy en el blog la sección “Consultorio Velneo” orientada a resolver las dudas que podáis tener sobre la plataforma Velneo®. El blog sigue aumentando tanto en lectores como en suscriptores y cada vez son más las consultas que me hacéis, sobre todo por e-mail.

He pensado que, quizá, puede ser útil para muchos de vosotros leer mis respuestas, en lugar de enviar el e-mail sólo al desarrollador que tenía la duda.

Además también intentaré responder a cuestiones aparecidas en el foro de Velneo, como es el caso de este post “Relaciones entre tablas“.

El usuario Franpino planteaba en este hilo una cuestión muy interesante y esencial a la hora de desarrollar con Velneo: la relación entre tablas de la aplicación. Si estás comenzando a desarrollar con la plataforma, es muy importante que domines los conceptos de maestro y plural y que sepas diferenciarlos claramente.

Para explicar dicha relación, he seleccionado una serie de tablas de vErp y he creado un esquema a modo de ejemplo:

Relación entre tablas

Antes de comenzar a relacionar las tablas para poder conseguir este esquema, no estaría de mas que refrescases tu conocimiento sobre los distintos tipos de tabla de los que disponemos en Velneo.

Comenzando la relación entre tablas sin tocar Velneo

Lo primero que debemos plantearnos es cómo queremos que se comporte nuestra aplicación en cuanto a los datos se refiere. Voy a comenzar explicando como sería la relación entre las tablas del ejemplo que he planteado sin tocar Velneo:

  • Tabla Contactos: Un contacto puede tener varias direcciones y podemos hacerle varios presupuestos (con lo cual puede tener múltiples líneas de presupuesto en las que le habremos asignado varios artículos). Además sólo tendrá una forma de pago.
  • Tabla Direcciones: Cada dirección SOLO pertenece a un contacto.
  • Tabla Formas de Pago: Ya hemos dicho que un contacto SOLO puede tener una forma de pago, pero la misma forma de pago puede estas asignada a varios clientes. Además en el presupuesto vamos a poder modificar la forma de pago asignada por defecto al contacto. Imaginemos que un contacto siempre paga a 30 días pero un día quiere pagar al contado. Sería absurdo cambiar la forma de pago en la ficha del contacto, hacer el presupuesto y volver a cambiar la forma de pago.
  • Tabla Presupuestos de Venta: Siguiendo con la lógica, un presupuesto estará asignado a un contacto y podrá tener varias líneas de presupuesto. Además un presupuesto sólo tendrá una forma de pago.
  • Tabla Líneas de Presupuesto de Venta: una línea de presupuesto SOLO puede pertenecer a un presupuesto. Además a cada una de las líneas SOLO se le puede asignar un artículo y estará asignada a un contacto (por lo general al contacto del presupuesto de venta).
  • Tabla Artículos: para finalizar el planteamiento, un artículo estará incluido en una línea de presupuesto pero el mismo artículo puede estar en múltiples líneas.

Ya hemos “diseccionado” como queremos que sea nuestra aplicación en nuestra mente (o en un papel). Vamos a ver como podemos responder a la siguiente cuestión: ¿Como relacionamos las tablas en Velneo?.

Realizándonos las preguntas correctas en Velneo para obtener las relaciones entre tablas

Hay dos preguntas básicas a las que deberemos responder para obtener las relaciones entre tablas:

  • “El/La (Tabla_1) del (Tabla_2)”: En este caso, la “Tabla_1” será maestro de la “Tabla_2”.
  • “Los/Las (Tabla_1) del (Tabla_2)”: En este caso, la “Tabla_1” será plural de la “Tabla_2”.

Vamos a verlo contestando a las preguntas con las tablas de nuestro ejemplo:

  • Relación Contactos-Direcciones: “El contacto de la dirección” sería la pregunta correcta a resolver y no “Los contactos de la dirección” puesto que hemos definido que cada dirección sólo tendrá un contacto. Además también se cumple la segunda pregunta “Las direcciones del contacto“. Parece claro pues que contactos será maestra de direcciones y que direcciones será plural de contactos.
  • Relación Contactos-Presupuestos: “El contacto del presupuesto” sería la pregunta correcta a resolver y no “Los contactos del presupuesto” puesto que hemos definido que cada presupuesto sólo tendrá un contacto. Además también se cumple la segunda pregunta “Los presupuestos del contacto“. Parece claro pues que contactos será maestra de presupuestos y que presupuestos será plural de contactos.
  • Relación Contactos-Formas de pago: “La forma de pago del contacto” sería la pregunta correcta a resolver y no “Las formas de pago del contactos” puesto que hemos definido que cada contacto sólo tendrá una forma de pago. Además también se cumple la segunda pregunta “Los contactos de la forma de pago“. Parece claro pues que forma de pago será maestra de contactos y que contactos será plural de forma de pago.
  • Relación Presupuestos-Líneas de presupuesto: “El presupuesto de la línea del presupuesto” sería la pregunta correcta a resolver y no “Los presupuesto de la línea” puesto que hemos definido que cada línea de presupuesto sólo pertenecerá a un presupuesto concreto. Además también se cumple la segunda pregunta “Las líneas del presupuesto“. Parece claro pues que presupuestos será maestra de líneas de presupuesto y que líneas de presupuesto será plural de presupuestos”.

A partir de responder a estas simples preguntas, podéis ir construyendo la relación entre tablas en vuestra aplicación, creando los enlaces a maestro en las tablas correspondientes.

Velneo se encargará de crear el índice correspondiente al campo creado y los enlaces al plural. ¡¡ OJO !! si copiamos el campo de otra tabla, no se creará el indice.

Por ejemplo, en la tabla de presupuestos de venta hemos creado, entre otros, los siguientes enlaces a maestro:

Relación entre tablas: maestros

 

Espero que respondiendo a estas simples preguntas, seas capaz de montar las relaciones entre tablas de tu aplicación.

Ya sabes que si tienes alguna duda sobre Velneo, puedes hacérmela llegar a través del formulario de contacto e intentaré responderla.

Déjame un comentario mas abajo y comenzamos el debate.

La entrada Consultorio Velneo: Relaciones entre tablas aparece primero en AyudaVelneo.

Las 3 únicas formas de ampliar las funcionalidades de Velneo vErp

Hay una pregunta recurrente en los clientes que contratan tanto el “Bono de 10 horas de desarrollo” como el “Servicio de desarrollo online“:

“¿Cuál es la mejor forma de ampliar las funcionalidades de Velneo vErp para mis desarrollos?”

Las 3 únicas formas de ampliar las funcionalidades de Velneo vErp

 

Además de responder a esta pregunta, surgen otras cuestiones no menos importantes:

  • Si modifico directamente la plantilla, ¿qué pasa cuando Velneo saque una nueva versión?
  • Si heredo la plantilla, ¿cómo integro mis desarrollos?
  • Si parto de una versión de vErp y la modifico según mis necesidades, cuando Velneo saque alguna funcionalidad interesante en posteriores versiones, ¿podré adaptarla a mi vErp?

Vamos a intentar responder a todas estas cuestiones viendo los pros y los contras de cada una de las formas.

Opción 1: Ampliar las funcionalidades de velneo vErp modificando directamente la plantilla

La solución “aparentemente” mas fácil… pero con matices.

Todos los objetos que creemos para añadir las funcionalidades de velneo vErp (o modificarlas), irán en los mismos proyecto de la plantilla.

Si trabajamos con este método, tendremos que tener algún mecanismo para que cuando Velneo lance una nueva versión, podamos añadir las nuevas funcionalidades incluidas sin borrar toda nuestra personalización.

Lo que se hace normalmente es crear una una carpeta (tanto en el proyecto de datos como en el proyecto de aplicación) llamada, por ejemplo, “Personalización”.

Cada objeto que modifiquemos (ya sea del proyecto de datos o del proyecto de aplicación), tendremos que moverlo a esta carpeta “Personalización” ¡sin cambiarle el identificador al objeto!.

Cada objeto nuevo tendremos que moverlo también dentro de esta carpeta.

¿Cómo actuar cuando Velneo lance una nueva versión de vErp?

Tendremos que realizar los siguientes pasos cada vez que Velneo lance una actualización de la plantilla:

  • Abrir 2 vDevelop:
    • En uno tendremos nuestro vErp modificado.
    • En el otro tendremos la nueva versión de vErp.
  • Eliminaremos de la nueva versión todos los objetos que tengamos en nuestra carpeta “Personalización” (tanto en el proyecto de datos como en el de aplicación)
  • Copiaremos nuestra carpeta “Personalización” a la nueva versión de Velneo vErp.
  • Creamos un .vin con la nueva versión y la instalaremos en nuestro servidor de producción.

Sencillo… si tenemos cuidado.

Ventajas

Solución + cómoda técnicamente.

Evitamos el uso de herencia (con otras soluciones) y herencia inversa. + sencillo para los desarrolladores que os estáis iniciando en la plataforma.

Podemos modificar a nuestro antojo los triggers y las actualizaciones de las tablas.

Inconvenientes

Exige un mantenimiento cada vez que salga una nueva versión.

Mayor riesgo de cometer errores. Sobre todo en borrado de objetos

Opción 2: Ampliar las funcionalidades de velneo vErp heredando la plantilla

Solución algo mas compleja que la anterior.

Tendremos que crear una nueva solución que “herede” de Velneo vErp.

En esta nueva solución crearemos todos los objetos necesarios para ampliar las funcionalidades de Velneo vErp.

Ampliar las funcionalidades de velneo vErp heredando la plantilla

Si queremos modificar alguno de los objetos del proyecto de aplicación incluidos en Velneo vErp, tendremos que “subirlo” a nuestra solución (en este caso al proyecto vCrm_app 1.0):

Personalización de vErp

Como podéis ver, he creado una carpeta llamada “Personalización de vErp” en la que voy “subiendo” los objetos que quiero modificar de la plantilla vErp.

Si hay que ampliar la funcionalidad de las tablas de vErp, tendremos que crear “Tablas de extensión” en nuestro nuevo proyecto de datos.

¿Cómo actuar cuando Velneo lance una nueva versión de vErp?

Al no haber tocado ningún objeto de la plantilla Velneo vErp, simplemente instalamos el nuevo .vin y a funcionar.

Ventajas

Solución + sencilla de mantener.

Menor riesgo de cometer errores.

Inconvenientes

Mayor dominio de la plataforma al usar herencia inversa.

No podemos modificar ni ampliar las funcionalidades de los trigger y actualizaciones de las tablas incluidas en Velneo vErp puesto que Velneo no permite herencia inversa en tablas.

Opción 3: Ampliar las funcionalidades de velneo vErp partiendo de una versión de la plantilla

Partimos de una versión de la plantilla vErp y a partir de ahí nos olvidamos de dicha plantilla.

Con esta opción ya podemos jugar con diversas variantes.

A mi personalmente la opción que mas me gusta es tener un “Core” o “Núcleo” común para todos mis desarrollos y a partir de ahí, utilizar de nuevo la “Opción 2” pero con mi “Core” para las distintas personalizaciones sectoriales o de distintos clientes.

Con esta opción modifico y amplío las funcionalidades de mi “Core” sin depender de otras empresas.

¿Cómo actuar cuando Velneo lance una nueva versión de vErp?

Cuando Velneo lance una nueva versión de la plantilla, tendremos que integrar manualmente las funcionalidades que nos sean útiles o necesarias que vengan incluidas en vErp.

Ventajas

Solución completamente adaptada a nuestras necesidades.

No dependemos de Velneo para la corrección de errores o ampliación de nuevas funcionalidades.

Inconvenientes

Perdemos la integración con el ecosistema de aplicaciones de velneo vErp.

Integración manual de nuevas funcionalidades incluidas en la plantilla.

 

¿Con cuál de las 3 formas de ampliar las funcionalidades de vErp te quedas? 

Déjame un comentario mas abajo y comenzamos el debate.

La entrada Las 3 únicas formas de ampliar las funcionalidades de Velneo vErp aparece primero en AyudaVelneo.

Cómo ir al médico el día de los inocentes puede hacer cambiar un modelo de negocio

A finales del año pasado y después de un par de semanas con una gripe que se negaba a abandonarme, decidí llamar al médico para pedir cita.

No sabía que esa visita iba a cambiar por completo el modelo de negocio de Ayudavelneo….

¿Quieres saber  el porqué?

Sigue leyendo 

Me dieron cita para el día 28 de diciembre de 2016 ¡Día de los Santos Inocentes!

La verdad es que ya me sonó mal viendo lo que me ocurrió ese mismo día del 2015Tenía que haber visto la señal…

Pero…. al final fui.

¿Puede una visita al médico cambiar un modelo de negocio?

Pivotando de cursos a servicios

Le solté al médico la “chapa” de la gripe y “posyaque” siiiiii le hice un “posyaque” al médico (me sentí como un usuario cuando te dice la mítica frase de: “Posyaque” estás aquí me podrías hacer este cambio en la aplicación que a ti te cuesta 5 minutitos y a mi generar estos informe son horas”… y al final, las horas te las comes tu), se me ocurrió decirle que además, tenía problemas en el estomago desde hacía tiempo…

Me recetó las medicinas para la gripe y me mando al especialista en digestivo.

Los que me seguís desde hace tiempo, sabéis que en 2015 estuve impartiendo y organizando cursos tanto presenciales como online (unas veces los daba yo y otras algún miembro de la comunidad especialista en el tema a impartir).

En 2016 esto cambió y me centré en el servicio de desarrollo online

La verdad es que llevaba un tiempo bastante cansado y lo achacaba a que había vuelto a retomar una de mis pasiones (el running) y a que dicho servicio estaba funcionando muy bien y tenía bastante trabajo.

Conclusión Nº 1: Las empresas de la comunidad Velneo necesitan desarrolladores.

Vender tu tiempo por dinero es vender tu alma al diablo

Después de unas cuantas visitas mas al médico para otras tantas pruebas (obviamente en horario laboral), el diagnóstico fue un pólipo en el intestino (que al final resultaron ser dos). Había que operar.

Análisis de sangre y ¡ohhh sorpresa! el nivel de la Gamma GT (que indica problemas en el hígado) aparece por las nubes.

Mas pruebas médicas, recordad que son en horario laboral, y mi cansancio seguía en aumento.

Antes de continuar con el relato, quiero dar las gracias a todos los que habéis confiado en mi externalizando vuestros desarrollos a través del servicio de desarrollo online

En el modelo de negocio de venta de servicios, si lo que vendes son tus horas, en el momento en el que tengas algún problema (en este caso médico), estas jodido.

Los proyectos se retrasan y el tiempo es lo único que no podemos recuperar.

No trabajas no cobras. Así de sencillo.

Conclusión Nº 2: El modelo de negocio de venta de horas no es escalable.

Al final todo ha quedado en un susto

La última semana de marzo todo llegó a su fin.

Por un lado, el diagnóstico relacionado con la Gamma GT ha sido “hígado graso” (podía haber sido peor… la otra opción era hepatitis autoinmune), además de pre-diabetes y el depósito de hierro bajo mínimos.

Nada que no cure una buena dieta (la cuál ya me han puesto) y algún medicamento que otro.

También me han operado (el pasado jueves) y todo ha salido bien (quitando otros 3/4 días sin poder hacer nada).

En estos días he recibido unos cuantos e-mails solicitando servicios de formación o cursos online para avanzar en el conocimiento de la plataforma.

La verdad es que me encanta dar formación, disfruto con ella. Y sobre todo me gusta ver como mis alumnos avanzan en el conocimiento de la plataforma. Eso es lo que mas me llena.

Conclusión Nº 3: Los desarrolladores de Velneo tienen necesidad de formarse.

Y en el futuro ¿qué modelo de negocio elegir?

Lo primero, hacer caso a las señales que envía tu cuerpo. Y si el cuerpo pide descanso… habrá que descansar.

Lo segundo, como dice la famosa frase: “no meter todos los huevos en la misma cesta”.

Si:

  • Las empresas de la comunidad Velneo necesitan desarrolladores.
  • El modelo de negocio de venta de horas no es escalable.
  • Los desarrolladores de Velneo tienen necesidad de formarse.

Lo mas idóneo es un modelo de negocio mixto.

Seguir ofreciendo el servicio de desarrollo online para las empresas de la comunidad mientras ayudo a otros desarrolladores con su formación en la plataforma Velneo.

Si eres desarrollador y estas comenzando con la plataforma

¿cuál es tu problema Nº 1 a la hora de programar?

¿Qué curso te gustaría recibir? 

Déjame un comentario mas abajo sobre ambas cuestiones.

La entrada Cómo ir al médico el día de los inocentes puede hacer cambiar un modelo de negocio aparece primero en AyudaVelneo.

¿Sabes cómo ampliar la información de tus tablas sin tocar su estructura? La solución se llama maestro de extensión.

Comienzas a utilizar Velneo para tus desarrollos y decides utilizar como base de tus aplicaciones, por ejemplo, la open app vErp. Quieres aumentar sus prestaciones sin tocar la base… y comienzan los sudores fríos ¿ahora qué? ¿cómo lo hago? Tranquilo… La solución está en el maestro de extensión.

Maestro de extensión

Al final lo que nosotros queremos es crear nuevos módulos para resolver nuestras necesidades a partir de apps de otras empresas o desarrolladores, sin tocar su estructura, para beneficiarnos de futuras actualizaciones.

La idea es heredar esa app en nuestra solución y utilizar los mecanismos que nos proporciona Velneo para ampliar las funcionalidades que “vienen de serie” en dichas apps.

A nivel de proyectos de aplicación lo tenemos solucionado gracias a la herencia inversa mediante los puntos de inserción y las inserciones de ficha.

A nivel de proyectos de datos tenemos la solución gracias al maestro de extensión.

Pero ¿qué es un maestro de extensión?

El maestro de extensión no es mas que otro tipo de tabla de las que disponemos en Velneo, con unas ciertas particularidades:

  • Es una tabla maestra que necesita de una tabla padre ampliando su información.
  • Sólo se puede crear una tabla maestro de extensión de tablas de tipo maestro normal con clave numérica o maestro normal con clave arbolada. En esta versión (Velneo 20.1) no es posible crear tablas de extensión de tablas submaestras ni históricas ni de otros maestros de extensión.
  • El campo ID del maestro de extensión es un campo de tipo enlace a maestra. Una tabla padre podremos verla como la suma de sus campos y de los que contienen la o las tablas de extensión asociadas.
  • Cuando creamos una tabla de extensión de una tabla padre, Velneo creará en la tabla padre un campo puntero automático hacia el registro del maestro de extensión que compartirá el mismo código (Valor del campo ID). A través de estos podemos obtener los datos de las tablas de extensión de la misma forma que lo hacemos con los punteros a maestro.
  • Al crear la tabla a través del asistente, se generarán los índices complejos NAME, WORDS Y PARTS para poder buscar registros de esta tabla de extensión por los índices correspondientes de la tabla de datos padre.
  • Las tablas de extensión se comportan a nivel de base de datos como una extensión de la tabla padre, por ese motivo Velneo automáticamente añade al maestro de extensión los enlaces plurales de la tabla a la que extiende. Esto permite que podamos navegar directamente a registros históricos de la tabla padre desde la tabla de extensión sin necesidad de realizar una navegación intermedia. En la versión actual (Velneo 20.1) la navegación directa desde el maestro de extensión a los plurales de la tabla padre solamente es funcional cuando la tabla padre y el maestro de extensión están en el mismo proyecto. Si están en proyectos diferentes, para hacer la navegación tendremos que leer el maestro y desde allí cargar los plurales. (Nota extraída de la ayuda de Velneo)

Utilidades del maestro de extensión.

Hay tres situaciones en las que nos puede venir de perlas hacer uso de una tabla de tipo maestro de extensión:

  • Añadir campos a una tabla de una Open App: es el ejemplo típico y mas conocido para el uso de este tipo de tablas. He heredado una open app y no quiero tocar su estructura para beneficiarme de futuras actualizaciones. Es el ejemplo que veremos mas abajo, ampliar la información de la tabla “Contactos” de vErp con datos para un CRM.
  • Reducir el tamaño del registro de una tabla: en algunas ocasiones puede que nos resulte útil crear un maestro de extensión de alguna de nuestras tablas (situada en el mismo proyecto de datos o no). Si la longitud del registro es elevada (recuerda que es una propiedad de la tabla) o si la tabla en cuestión tiene muchos campos que no se usan habitualmente una buena práctica es crear un maestro de extensión.
  • Tablas polimórficas: no es un tipo de tabla como tal. Imaginad que tenemos en una tabla de contactos diferentes tipos: clientes, proveedores, vendedores, transportistas, etc. En lugar de añadir en la tabla de contactos campos específicos para cada uno de los tipos (que no se usarán a no ser que se marque que es de un determinado tipo), podemos crear tablas de extensión para cada uno de los tipos con sus campos específicos.

Ya sabes… no sólo sirven para ampliar la información de una open app.

Creando una tabla maestro de extensión.

Vamos a ver un ejemplo de cómo crear un maestro de extensión en una solución vCrm que hereda de vErp.

Para el ejemplo vamos a crear una tabla que extienda la información de la tabla “Contactos” de vErp añadiéndole campos específicos para el módulo CRM.

  • Pulsamos sobre el asistente de creación de tablas, le asignamos el nombre singular y plural y le indicamos que es de tipo “Maestro de extensión.

Asistente de maestro de extensión I

  • En en siguiente formulario del asistente le indicamos la tabla a la que extiende y además tenemos la posibilidad de marcar si queremos que nos cree los índices complejos NAME, WORDS Y PARTS.

Asistente maestro de extensión II

  • Los dos siguientes formularios del asistente son los típicos para la creación de una tabla maestra: si queremos añadirle los campos estándar y si queremos enlazar con alguna tabla maestra.
  • Sólo faltaría añadir en la tabla los campos que necesitamos para ampliar la información de la tabla de “Contactos” de vErp. En mi caso, he añadido los siguientes campos:

Maestro de extensión vCrm

En esta imagen podéis ver los enlaces plurales que ha creado Velneo automáticamente a la hora de dar de alta el maestro de extensión.

Ya sólo nos faltaría ponerlo en práctica y crear los objetos visuales para mostrar los datos del maestro de extensión…. pero eso lo dejamos para un próximo artículo

¿Has creado ya maestros de extensión en tus aplicaciones?

¿No?

Y a qué esperas para hacerlo, ¿te siguen quedando dudas?

Déjame un comentario mas abajo e intentaré resolverlas.

La entrada ¿Sabes cómo ampliar la información de tus tablas sin tocar su estructura? La solución se llama maestro de extensión. aparece primero en AyudaVelneo.

Vista de datos: el poder de Velneo al alcance de tus listas

Velneo se define como “Plataforma de desarrollo de aplicaciones empresariales”. Al final el usuario quiere ver datos. Estos datos se muestran a través de listas de registros… y aquí es donde se muestra el poder de nuestro control vista de datos.

Vista de datos listas al alcance de tu mano

En post anteriores vimos como podíamos utilizar el control “vista de datos” para mostrar registros dentro de un menú o cómo optimizar la carga de registros en una vista de datos.

Hoy nos vamos a centrar en el propio control “vista de datos”.

Según la definición de Velneo, la vista de datos es un:

Control de Contenedores que permite incluir dentro de un formulario una acción, desde la que podremos disparar objetos de vista de datos, como por ejemplo, rejilla, formulario, multivista, etc.

 En esta definición aparecen dos de los conceptos fundamentales de Velneo:

  • Concepto de flujo (ya vimos este concepto aquí).
  • Concepto de abstracción o diferenciar el qué del cómo es decir, qué queremos mostrar (lista de registros) de cómo lo queremos mostrar (rejilla, formulario multivista, etc).

Vamos a ver como se aplican estos conceptos.

Crear la vista de datos en nuestro formulario

Hemos visto anteriormente, en la definición de la vista de datos, que éste es un control de los que podemos incluir dentro de un formulario.

Antes de crear los objetos necesarios para mostrar los registros, también deberemos tener en cuenta el flujo. Como ya sabemos, un formulario puede pertenecer a una tabla o ser un formulario sin origen. Por lo tanto deberemos tener en cuenta dónde nos encontramos y qué queremos mostrar.

Generalmente necesitaremos dos objetos para mostrar los registros en nuestra vista de datos:

Control vista de datos

  • En la propiedad “Objeto 1” indicaremos qué queremos mostrar (en este caso los registros que devuelve una búsqueda), por lo tanto una lista de registros: n registros, 1 o ninguno, dependiendo de la búsqueda.
  • En la propiedad “Objeto 2” le indicaremos cómo queremos mostrar esos registros. En este caso al ser la salida del “Objeto 1” una lista de registros, podemos seleccionar cualquier objeto de tipo lista de la tabla a la que hace referencia la búsqueda de dicho objeto.

Esta sería la manera mas sencilla de mostrar los registros de una tabla en una vista de datos… pero Velneo tiene sus peculiaridades.

Consejos antes de crear la vista de datos en nuestro formulario

Algunos consejos antes de crear vistas de datos a lo loco.

  • Si tu aplicación va a ser heredada por otras, nunca vas a saber donde se van a utilizar tus formularios… por lo tanto cuidado con la carga de registros.
  • Velneo carga todos los objetos incluidos en un formulario al crearlo. Es decir si tienes un formulario en el que muestras la ficha de un cliente y en ese formulario tienes un separador de pestañas en el que tienes los plurales de pedidos, albaranes y facturas de dicho cliente… todos esos datos, se cargarán al entrar en la ficha… por lo tanto cuidado con la carga de registros.
  • Si tienes un formulario sin origen que actúa como menú y en dicho formulario cargas n vistas de datos con miles de registros y cada una de ellas se resuelve con una búsqueda de varios componentes, también se cargarán todos los registros al entrar al formulario… por lo tanto cuidado con la carga de registros.
  • Siempre hemos dicho que las búsquedas (o procesos que cargan búsquedas), mejor resolverlas en tercer plano (es decir, en el servidor). Hay una salvedad. Si la búsqueda en cuestión es por un único componente, no vamos a notar diferencia de carga entre lanzarla en primer plano o lanzarla en tercer plano. Para todos los demás casos hay que lanzarlas siempre en el servidor.
  • Siempre que podamos utilizaremos la señal “on-show” del formulario para cargar los registros en la vista de datos mediante un manejador de evento.

Espero que con estos simples consejos no tengáis ningún retardo a la hora de mostrar los registros al usuario.

Utilización del control vista de datos a través de ejemplos prácticos

Particularmente siempre he tenido una “guerra” con los usuarios de mis aplicaciones a la hora de mostrar los registros de un determinado módulo. Están (mal)acostumbrados a que a la hora de entrar, por ejemplo en el módulo de clientes (sirve cualquier otro módulo que se te ocurra) a ver la lista de TODOS los clientes…

  • Si no ven la rejilla con datos… parece que no hay datos.
  • Si al final vas a seleccionar uno en concreto… ¿para que mostrar todos?
  • ¿no será mejor que selecciones primero el rango de los que quieran visualizar?

Como los caminos del Señor son infinitos, vamos a ver varios ejemplos con estas casuísticas.

1.- Mostrar en la vista de datos todos los registros de una tabla al entrar en el formulario que hace de menú.

Lo mas sencillo es hacerlo de la siguiente manera:

Hemos creado un proceso sin origen (ya que el formulario era sin origen) y con destino la lista de la tabla que queremos mostrar en la vista de datos.

Las instrucciones que tenemos en el proceso son:

  • Cargar lista de la tabla por el índice que mas nos interese
  • Añadir lista a la salida (el siguiente objeto en el flujo, recogerá la lista devuelta por el proceso).

Lo único que tendremos que hacer ahora es crear la vista de datos. Como “Objeto 1” pondremos este proceso, y como “Objeto 2” cualquiera de los de tipo lista de la tabla asociada. En este caso “Tareas”

2.- No mostrar en la vista de datos ningún registro de una tabla al entrar en el formulario que hace de menú.

Mi opción preferida… sólo mostramos registros cuando el usuario los seleccione.

En este caso, el proceso no vamos a necesitar igualmente… en el flujo, el “Objeto 2” de la vista de datos tiene que saber que mostrar. La única diferencia es que el proceso asociado no tendrá ninguna línea.

Vista de datos, sin datos

 

Parece increible pero si,  en velneo tenemos procesos que no hacen absolutamente nada… por lo menos aparentemente.

De esta forma, al entrar en el menú no aparecerá ningún registros y será al pulsar sobre un botón cuando se lance la búsqueda que devolverá los registros a la vista de datos.

Tienes el ejemplo completo aquí.

3.- Mostrar en un subformulario de una ficha, un plural (sin optimizar)

En esta caso, ya vamos a estar situados en una ficha, por lo tanto tenemos que tener cuidado con el flujo a la hora de crear los objetos asociados a la vista de datos.

Vista de datos con origen ficha

El montaje es similar a los casos anteriores.

Si recordáis, en uno de los consejos que hemos visto antes os decía que Velneo carga todos los objetos al entrar en este formulario. Por lo tanto los registros que existan en el plural “Desglose de horas” también se cargarán al entrar en la ficha… si tuviésemos 10 plurales mas (sin optimizar) también se cargarían y dependiendo del número de registros que tengamos en cada uno de ellos, es probable que la visualización de la ficha en cuestión se retarde… Y puede además que el usuario sólo quiera ver las “Horas presupuestadas”.

En este caso, lo más sencillo es esto:

Vista de datos de un plural sin optimizar

 

Lo primero es declarar el flujo del proceso, es decir de un origen ficha (de la tabla en la que nos encontremos) queremos mostrar una lista de la tabla destino.

La instrucción para conseguir esto en el proceso es:

  • Cargar el plural que nos interese de la ficha
  • Añadir lista a la salida (invertir lista es para que aparezcan los registros mas recientes al principio de la lista).

Este proceso será el “Objeto 1” de nuestra vista de datos y como “Objeto 2” podremos seleccionar cualquiera de tipo lista del plural en cuestión.

4.- Mostrar en un subformulario de una ficha, un plural (optimizado)

Vamos a realizar algún pequeño cambio para que este montaje esté optimizado y solamente se carguen los plurales al entrar en la pestaña en cuestión.

Vista de datos plural sin datos

 

El flujo del proceso será el mismo… sólo que no le incluiremos ninguna instrucción. De esta forma al entrar en la ficha no se cargará el plural correspondiente.

Ahora tendremos que conseguir que al entrar en la pestaña del plural se carguen en la vista de datos los registros existentes.

Para ello crearemos un “Manejador de evento” en el formulario con las siguientes instrucciones:

Manejador vista de datos

Crearemos una cesta local de la tabla plural que hará de “puente” entre los registros que devuelva el plural y nuestra vista de datos (los registros encontrados se guardarán en dicha cesta).

Con la instrucción “Interfaz: Procesar” accederemos a nuestra vista de datos añadiéndole los registros devueltos por el plural y guardados temporalmente en nuestra cesta con la instrucción “Cesta: Agregar a la lista en curso”.

Sólo nos faltará crear una “Conexión de evento” en el formulario con la señal “On-show” y disparar el manejador que acabamos de crear.

Con este montaje sólo se cargaran los datos de los distintos plurales al acceder a cada una de las pestañas.

 

Espero que a partir de ahora el control vista de datos ya no tenga ningún secreto para ti.

En un próximo artículo veremos todas las instrucciones de proceso que podemos utilizar con este control.

 

¿Alguna duda con respecto al control vista de datos? Si es así, déjame tu pregunta mas abajo en los comentarios.

La entrada Vista de datos: el poder de Velneo al alcance de tus listas aparece primero en AyudaVelneo.

Creación de un menú arbolado paso a paso

Cuando nos acercamos a probar una nueva plataforma de desarrollo, lo primero que queremos es ejecutar algún ejemplo para “ver” como quedaría nuestra aplicación en ese nuevo entorno.

A los desarrolladores que se acercan a Velneo les ocurre lo mismo. Para ello cuentan con el menú arbolado.

menú arbolado

Este planteamiento tiene un problema: quieren “copiar” su aplicación en la nueva plataforma. Idéntica. Mismos menús con las típicas opciones de:

  • Alta de registros
  • Editar registros
  • Eliminar registros
  • Buscar registros
  • Imprimir informes

Os estaréis preguntando el porqué de esta reflexión.

Todo lo anterior viene por este post del foro en el que Carlos dice:

Quiero hacer una app que tiene a la izquierda un dock con opciones arboladas (treeview) al pulsar una rama se contrae o despliega, y al pulsar una hoja ejecuta una acción que abre un formulario. Esta es la base de cualquier sistema pero no me sale. O lo que lei no es -life is soft-. Ejemplo que en access me llevaría 1 hora (ya se que lo domino).

Velneo tiene sus peculiaridades y es verdad que al principio, sobre todo si no has cambiado el “chip”, puede que no descubras todo su potencial… y te des por vencido.

Ya he hablado de ello en “17 errores que te impiden arrancar con Velneo V7“.

En los cursos que he realizado, siempre digo que en Velneo hay que comenzar por el final, es decir por el resultado que queremos obtener:

  • Si quiero lanzar un localizador, primero tendré que tener creada la rejilla a incrustar en dicho localizador y antes el formulario a mostrar al seleccionar un registro. Después crearé el localizador y por último la acción a disparar.
  • Si quiero mostrar un registro desde una búsqueda, primero tendré que crear el formulario de edición de la ficha, después crearé la rejilla (a la que asociaré el formulario creado anteriormente) y por último la búsqueda y la acción.

Pues con las opciones de los menús pasa exactamente lo mismo.

Pasos previos a la creación del menú arbolado

En Velneo lo mas “natural” es tener una única opción de menú para realizar todo el mantenimiento de un módulo… Ya se lo que estaréis pensando “¡sacrílego como es eso posible!”: con el uso de un formulario que “actúa” como menú al que dotamos de toda la funcionalidad que el usuario va a necesitar.

Si no te lo crees te invito a leer antes de continuar “Destripando un formulario menú de vErp” o “Sincronizar vistas de datos en un formulario sin origen“.

¿Ya los has leído?… Pues continuemos.

Con este montaje en el que sólo utilizamos un formulario, logramos simplificar nuestro menú arbolado.

Siguiendo la lógica que te acabo de explicar, el siguiente paso será crear las distintas acciones que vamos a disparar desde nuestro menú.

Montando nuestro menú arbolado

Una vez que hemos montado nuestro formulario que actuará de menú, ha llegado la hora de crear los objetos necesarios para lanzarlo desde el menú arbolado.

Vamos a suponer que queremos montar algo como lo de la siguiente imagen:

Opciones del menú arbolado

Tendremos que crear un árbol de opciones con:

  • Maestros
    • Opciones del menú maestros
  • Oportunidades
    • Tareas
    • Oportunidades
    • Resumen de oportunidades
  • Control de horas
    • Opciones del menú control de horas

Vamos a crear los objetos necesarios para el menú de oportunidades.

Creando las acciones

Necesitamos 3 acciones:

  • TAR_CRM_MEN: lanzará el menú de tareas
  • OPO_CRM_MEN: lanzará el menú de oportunidades
  • RES_OPO_CRM_MEN: lanzará el menú de resumen de oportunidades.

Cada una de las acciones debe quedar como esta de la imagen:

 

Acción oportunidades

Lo importante de la acción son las siguientes propiedades:

  • Comando: en este caso “Disparar objetos”.
  • Objeto 1: objeto a disparar. En este caso el formulario OPO_CRM_MEN que es el que hemos visto en la imagen anterior.

La estructura de las demás acciones será la misma que esta, cambiando las propiedades por los otros módulos a crear.

Por ejemplo la acción de “Tareas” quedaría así:

Acción tareas

Una vez definidas todas las acciones, ha llegado el momento de crear los menús.

Creando los menús

Vamos a crear 4 objetos menú para montar nuestro árbol:

  • MEN_MAE_CRM: para mostrar las opciones de maestros.
  • MEN_OPO_CRM: para mostrar las opciones de oportunidades. En este caso, incluiremos las siguientes acciones:
    • TAR_CRM_MEN
    • OPO_CRM_MEN
    • RES_OPO_CRM_MEN
  • MEN_RES_CRM: para mostrar las opciones de resumen de horas.
  • MEN_GEN: menú que incluirá, en lugar de acciones, los tres menús anteriores.

El menú de oportunidades, quedará como el de la imagen inferior:

Menú oportunidades

Ya tenemos casi construido nuestro “lego”. Nos falta poder visualizar nuestro menú de opciones.

Visualizando el menú arbolado

Como diría un amigo mío, “ya está todo prácticamente a medias”. Tenemos los objetos creados pero todavía no podemos visualizar nuestro menú arbolado.

Para poder hacerlo, vamos a crear un formulario… ¡siiiiiii! vamos a  visualizar nuestro menú arbolado dentro de un formulario.

Menú general vCrm

Si os fijáis en el formulario, la propiedad “Tabla asociada” está vacía… es un formulario sin origen.

Dentro del formulario hemos creado un control de tipo “Menú arbolado” cuyas propiedades son:

Propiedades menú arboladoi

En la propiedad “Estilo“, le indicamos que sólo queremos una rama abierta y que con el simple click, dispara la acción.

En la propiedad “Objeto“, le indicamos el menú que queremos mostrar… en este caso “MEN_GEN”, que es el que incluía los otros tres menús de opciones.

Ya estamos terminando nuestro montaje. Sólo nos falta decidir desde donde vamos a lanzar nuestro formulario “Menú arbolado”.

Modificando el marco “Autoexec”

Para ello, en nuestro marco “Autoexec”, vamos a crear un nuevo subobjeto, en este caso un “Dock”:

Dock menú arbolado

  • En la propiedad “Objeto“, le indicamos el objeto a incluir. En este caso nuestro formulario “MEN_GEN”.
  • En la propiedad “Posición” le indicamos dónde queremos mostrarlo. En este caso a la izquierda.

Y ahora si… por fin podemos ejecutar nuestra aplicación y nos aparecerá un maravilloso menú arbolado a la izquierda de la misma.

¿Has comenzado a cambiar ya el “chip” Déjame tu opinión mas abajo en los comentarios.

La entrada Creación de un menú arbolado paso a paso aparece primero en AyudaVelneo.