martes, 1 de enero de 2019

Dolibarr 8: Lecciones aprendidas #2

(Este artículo es continuación del anterior, por lo que algunos elementos ya fueron configurados según los aspectos planteados allí)

Ya dimos de alta clientes con la cuenta del vendedor, por un lado, y con la del administrador, por el otro.
Un punto interesante es que si no se configura al representante de ventas, realmente el vendedor no puede ver los Third Parties generados por el administrador. Esto, que parece trivial, es un punto de fallas notable en otros CRM's ó ERP's. Bien por Dolibarr...
Otro punto interesante es que se puede cambiar el estado del cliente respecto del nivel de contacto que se mantuvo, entre "Do not contact", "To be contacted", "Contact in progress" y "Contact done". También se le puede enviar desde la misma plataforma un mail al cliente, seleccionando a nombre de quién sale, a quién le llegará, el o los documentos asociados, y demás. Los permisos que hemos brindado hasta el momento permiten al vendedor hacer eso mismo.



Ahora que ya tenemos los clientes cargados, debemos hacer algo con ellos. Propuestas, proyectos, y demás. Todo eso lo vamos a desarrollar en las siguientes líneas, viendo también qué módulos debemos activar para cada cosa.

Nuevo módulo: Projects/Opportunities/Leads
Para poder asignar oportunidades, o proyectos a los clientes, debemos activar el módulo adecuado. Entonces yendo a Home -> Setup -> Modules/Applications -> Projects/Collaborative Work -> Projects/Opprtunities/Leads -> botón de activación, lo dejaremos listo para ser usado.
Sólo activaremos una opción extra en la sección "Project reports document model", llamada "timespent", que nos servirá para tener una idea del tiempo utilizado por las tareas que conformen cada uno de los proyectos. Eso lo haremos clickeando el ícono de "Setup" que está al costado derecho del botón de activación del módulo.
Veremos que se activa un nuevo módulo en el menú superior, correspondiente a lo que hemos configurado:



Para que nuestro vendedor tenga acceso al módulo, y pueda cargar las oportunidades y proyectos que detecte en los clientes, debemos ir a Home -> Users & Groups -> List of Groups -> Ventas -> Group Permissions -> Sección "Projects/Opportunities/Leads" -> Botón "+" al lado de "Create/modify projects". Eso activa "Read projects and tasks" también.
Nuestro vendedor ingresa y comienza a generar el primer proyecto. Presionará el botón "Projects" en la sección superior de la pantalla, y seleccionará el link "New Project". El sistema asignará un códugo de proyecto, y nos pedirá que completemos sus campos.
Puntos importantes:
  • En la sección "Visibility", podemos elegir "Project Contacts", o "Everybody". No hace falta explicar mucho más. Es importante que sepamos quién podrá ver los detalles de este proyecto. En nuestro ejemplo, "Project Contacts" es la opción adecuada.  
  • "Opportunity Status" cambia el porcentaje de la oportunidad, en nuestro caso vamos a configurar sólo "Qualification" para que llegue al 20%.
  • Podemos dejar la fecha de inicio y de fín abiertas, no es necesario que se fije fecha de inicio. 
  • Al finalizar la carga del proyecto, su aspecto será el siguiente: 


  • Nótese que si no hemos configurado contactos para el cliente, no podremos asignar tareas que deban ser ejecutadas por él. Si lo hemos configurado, y es asignado automáticamente, podemos removerlo en el caso de no ser necesario, yendo al tab "Project contacts", seleccionando el botón estilo "unlink": 


Hermoso proyecto, pero aún no tiene tareas. Hacia allá vamos ahora, seleccionando el tab "Tasks".
Presionamos el botón "Create task" que se encuentra en la sección "List of Tasks", a la derecha:




Entonces completremos los campos, tal y como lo hemos hecho con el proyecto anteriormente:


Haremos lo mismo para todas las tareas que consideremos en este caso. Nótese que no hemos agregado fecha inicial ni final, pero sí la carga de horas que calculamos para cada tarea.
También, y como consejo, no asignemos personal a las tareas para evitar que, hasta que no esté confirmado, no carguen horas a tareas. Luego tendremos tiempo para modificar esto, y agregar al personal que sea necesario para cada tarea.
Con todo lo anterior, nuestro proyecto tendrá una lista de tareas como la siguiente:



Nótese que si vamos a una vista del tipo Gantt, como no hemos considerado fechas de inicio y fín de cada tarea, tendremos algo de este estilo:

Algunos detalles que espero poder ver antes de morir de viejo:
  • Los nombres de las tareas debieran poder expandirse para estar completas.
  • El proyecto debiera permitir generar hitos, no sólo tareas con una duración determinada. 
  • Se debiera poder considerar el uso de un baseline, con dependencias, y luego, al agregar la fecha inicial, que todas las fechas se modifiquen automáticamente. 
  • Sí se puede configurar una fecha inicial, y fechas de cada una de las tareas, y luego modificar la fecha inicial, con lo que se podrían mover todas las fechas iniciales de las tareas asociadas, desde la página principal del proyecto, seleccionando "Change task dates according to new project start date": 


Por ahora, nos sirve, si bien un PM podría ponerse bastante nervioso al ver este estilo de proyecto.
En este punto podríamos sacar un documento en formato PDF del proyecto y sus tareas de este estilo, que como digo antes, pondría los pelos de punta de más de un PM que se digne de serlo:


Si a las tareas les ponemos fecha de inicio, pero no de fín, en la vista Gantt nos va a quedar de esta forma:

Tenemos una descripción como si cada tareas comenzar en el mismo momento en el que terminan, aún cuando la carga de trabajo sea de 40 horas, como en este ejemplo. Por ello, lo ideal es colocar la fecha de final también, con lo cual quedará de esta forma:


Bueno, algo mejor...ya parece un proyecto y todo.
NOTA: Si se configuró la fecha de inicio de cada tarea, pero no la del proyecto, y luego uno decide configurarla, se borran todas las fechas y horas de las tareas que se hayan configurado antes, por lo que el Gantt volverá a fojas cero. No está bueno eso, debiera existir alguna opción para hacer coincidir la fecha de inicio del proyecto con las tareas...al menos la opción. Si uno tiene tres tareas locas no molesta, pero si son cientos de tareas, puede ser insoportable, y ni hablar de estar mirando el calendario para entender cuándo empezaría y terminaría cada tarea.
Si uno terminó de configurar todo esto, y decide mover la fecha de inicio del proyecto una semana, por ejemplo:

...las tareas sí se mueven de fecha de inicio. Entonces, una de las famosas lecciones aprendidas es la siguiente:
SIEMPRE HAY QUE CONFIGURAR UNA FECHA DE INICIO DEL PROYECTO, AÚN CUANDO NO SEA REALISTA. Si no se hace, luego el proceso de modificación puede ser lo más cercano a una patada en el estómago...de Maradona en su mejor época.

NOTA2: Si se generan tareas, al menos mientras estamos en el modo draft, las mismas no se pueden eliminar. El botón de "Delete" está grisado. Al menos no se puede con los permisos que tiene hasta ahora el grupo de ventas.
Para que se puedan eliminar tareas o proyectos, se deben asignar los permisos "Delete projects" dentro de la sección "Projects/Opportunities/Leads" en los permisos del grupo "Ventas". Recomiendo fuertemente que se active esta opción.

NOTA3: Luego de haber hecho la modificación, el PDF resultante está completamente vacío, y no aparecen las tareas ni aún regenerándolo. Otro bug importante que hay que ver en futuras versiones. Validando el proyecto tampoco se regenera el PDF como debe ser, por lo que esta opción aún es bastante inestable, no sirve para mandarle un PDF a los clientes.

Un punto importante, es que el proyecto aún sigue en modo draft, hay que validarlo con el botón "Validate" para que se considere o marque como listo para ser ejecutado.

Para que se puedan cargar horas en el proyecto, se deberán asignar recursos a cada tarea. Atención, recordemos que el grupo "Staff" no tiene aún permisos para cargar horas en ningún lado, por lo que primero, como el usuario supervisor, llegaremos a Home -> Users & Groups -> List of Groups -> Staff -> Group permissions -> Sección "Projects/Opportunities/Leads" -> Opción "Read projects and tasks" (presionamos el "+").

Ahora sí, ingresamos bien como el supervisor, bien como el vendedor, y asignamos a cada tarea uno o más miembros del grupo Staff para que puedan cargar horas. Primero hay que agregar miembros al proyecto en general, como "Project Contacts", y luego a cada tarea como "Task Contacts". Esto me parece bastante acertado, ya que permite que no se deba recorrer, en el caso de empresas que tienen cientos de empleados, todos los nombres para cada tarea, sino sólo una vez, para un proyecto en particular.

Desde ese momento, el miembro de Staff puede ver que hay un proyecto abierto, y puede cargar horas cuando selecciones "Time spent".

Ahora bien, el miembro de Staff puede autoasignarse tareas, tanto con el rol de colaborador o de ejecutivo. Esta capacidad no está bien que pueda ser autoasignable, ya que en cierta forma sobreescribe los permisos que hemos dado al usuario, y de hecho, su asignación. Este punto también considero que debe ser revisado en futuras versiones del sistema. No puedo decir por el momento si se debe crear un atributo extra, o qué, pero esto no debiera existir de forma predeterminada.

Otra cosa que se debe mejorar es que no importa si una tarea tiene una determinada fecha de inicio, el sistema permite que se carguen horas antes o después de dicha fecha. Mínimamente, se debiera al menos poder solicitar el permiso de carga de horas, ya que puede ser una fea sorpresa que eso aparezca así porque sí en un timecard de un proyecto. Acá, un ejemplo donde una tarea debiera comenzar en marzo, y se le pueden cargar horas en enero:



El método de borrado de estas horas cargadas no es de lo más intuitivo, ya que hay que ingresar por el proyecto, luego por las tareas, luego por los contactos de la tarea, para finalmente eliminar los records erróneos, pero al menos se puede.

Ahora que ya tenemos proyectos creados, y personal que puede cargar horas, podemos quedarnos en paz por un tiempo, al menos desde este punto de vista.