13 años y poco de picar codigo (parte 2)
Como ya anuncié, vamos a ver una serie de herramientas que hice para mi lugar de trabajo, el objetivo era siempre buscar la automatización de tareas, tanto mediante webs que generar un fichero final para trabajar con él, como webs completas y hasta una APP para IOS.
Era buenos tiempos, y empezaba a trabajar mucho con excel, una de mis tareas era hacer inventarios de producto cada día, arduo trabajo ya que implicaba usar un MDE (pistolita lectora de códigos de barras) y esta generaba un CSV que tenia que compara con el Stock. Yo no tenía un acceso directo a las bases de datos del stock de tienda así que ese trabajo era una parte completamente manual y que no podía automatizar, tenia que sacar manualmente el stock por familias, en este caso por ejemplo, un inventario de portátiles debía incluir:
- Portátiles de +15″
- Portátiles de +17″
- Portátiles de -15″
Otros inventarios, por ejemplo por marca, podían incluir hasta 4 o 5 familias distintas (Apple eran las 3 de portátiles, una para los iMac, una para torres (macmini/macpro) y tabletas (ipads)), esos ficheros (CVS también) debian ser generados uno a uno y luego copiados a mano uniéndolos para generar una sola hoja de excel, luego esta hoja se usaba para hacer una tabla dinámica (cosa que tuve que aprender cuando algunos compañeros habían recibido cursos de Excel por la empresa).
Bien, lo que hice fue crear una webapp que simplemente subiendo, un máximo de 4 ficheros, no daría el fichero final, con las columnas deseadas, quitando toda la morralla y lista para poder dinamizar con el fichero generado por el MDE. A esto le sumaba una macro para re-colorear la tabla y tenia una tabla “ready to print” con colores que resaltaban el stock sobrante y el que faltaba. Una herramienta que me ayudo mucho, sinceramente, en meses en que cada día había que hacer inventario y durante un par o tres de años lo estuve usando.
Mas tardes llegaron las redes sociales, la empresa por la que trabajaba, una empresa para mi (y diría que a día de hoy sigue siéndolo) que esta a la cabeza en cuanto a tecnología (o eso pretendía), no entraba en mi cabeza como no estábamos en Facebook y en Twitter! Hice una exposición sobre porque debíamos tener cuentas, al menos en Twitter y al final tome la delantera generando un perfil para la tienda, no es ningún secreto que trabajaba en la tienda de Media Makrt Girona, así que genere el usuario de twitter @mediamarktGRN con el fin de adelantar a que alguien pudiera crear una posible cuenta troll con ese nombre, en ese momento sólo había dos tiendas mediamarkt en españa con twitter, Maquinista y nosotros!
Quise marcar la diferencia realizando twits con enlaces y contenido multimedia (videos o música), pero me surgía la duda, como evito publicidad en las webs de vídeos como youtube, como hago para que al lado de nuestra marca corporativa no aparezca El Corte Inglés? simplemente no diseccionando a la web de youtube, usando una web de puentre creada por mí y que en todo caso solo tragaría un anuncio de vídeo (que antes no existían, por cierto)
Así surgió MMADS (lo que vendria a ser MedaMarkt ADvertiseS) que podéis encontrar en: http://www.kamencesc.com/mmads/
En el acceso directo a la URL siempre nos muestra (creo) el último anuncio publicado, para poder tener un control sobre publicaciones generé una pagina que permitía listarlas a todas: http://www.kamencesc.com/mmads/estads.php
En esta podemos navegar de 20 en 20 por los anuncios generados, si es un vídeo se nos muestra una captura directa desde youtube, al hacer click en la captura vamos directo a la web en que solo muestra el anuncio. Si no recuerdo mal, debería parecer el vídeo, pero con tantos cambios en la API de youtube, ahora no funciona,
He visto que dejé en desarrollo un sistema de logins pero es postureo puro y duro, sin funcionar: http://www.kamencesc.com/mmads/entrar.php
Por último, cree un menú principal para acceder rápidamente a las distintas opciones, incluso el de añadir anuncios: http://www.kamencesc.com/mmads/menuad.php
A parte de la generación de capturas de youtube y ls incrustación del vídeo, que mas tenia? Pues estaba conectado por API a bit.ly para generar urls cortas y la idea era twitter directamente, pero nunca llegué a hacerlo, el trabajo hizo que no dedicara todo lo que quería a las redes sociales de la empresa que años después serian cerradas las cuentas de las tiendas (no todas, algunas resisten) y centralizadas en las cuentas que hay hoy en día.
Pero durante ese periodo de tempo me dí cuenta de que faltaba algo aún, las apps en sistema móviles estaban en crecimiento pero nuestra empresa seguía sin despuntar en este aspecto, no teníamos una app así que puse manos a la obra, xcode en mano, videotutoriales en la otra me dispuse a crear la primera app para (en este caso) la tienda de Media Markt Girona.
En cuanto a la app, en su momento hice un vídeo de presentación, no era mi fuerte ni hacer presentaciones ni programar apps, esta era la primera app que hacía ademas de ir tocando JSON (que no había tocado en mi vida), carga de twitter, maps, etc… ademas de añadir información directamente en la agente del terminal. La demo solo era en IOS puesto que era la plataforma que tenía en casa para probar en hardware real.
Os dejo el video, despues de tanto tiempo lo hago público
Aún con las redes sociales activas, fuí pasado del departamento de ventas a un departamente de servicios, en este caso a lo que se conoce como Post Venta y donde se suelen llevar los productos que no funcionan correctamente para reparar o cambiar si se da el caso. El tiempo que estube allí pude desarrollar un par de macros interesantes y que poco despues de tenerlas funcionando, me darían una buena patadas en la entrepierna quitando el office de forma tajante de todos los ordenadores (ahorrando licencias).
La primera de ellas es la que quizas em sienta mas orgulloso, no ha habido macro mas usada en mi expediente que esa, usada diariamente durante los 3 últimos años.
Como bien dije al principio, mi objetivo era el de automatizar trabajos manuales, y este era un trabajo tedioso, se tenia que generar una lista diaria, esta lista debía ser copiada a mano en un excel, el proceso era imprimir (gasto de papel) y apuntar a mano, malgastar tiempo, ademas de posibilidad de copiar mal los datos y que esto pudiera dar paso a problemas en la entrega de mercancía (que de eso eran las listas, entrega de mercancía a domicilio)
Me llevó un tiempo desenredar los datos del fichero CSV creado por nuestro software interno, realmente tenia MUCHA información sobre la entrega, productos, datos del cliente, datos de dirección de entrega, información sobre la entrega…
Tenía que desgranar y quedarme con lo necesario:
- Nombre y apellidos
- Dirección
- Numero de piezas
- Tipo de servicio (basico, premium o deluxe)
- Telefono
- Información adicional
Lo mas complicado fué filtrar toda la información apra que se mostrar igual en todos los casos, la información no era (y sigue) entrada de la misma forma por los distintos vendedores, por ejemplo el telefono:
- xxx xx xx xx
- xxxxxxxxx
- xxx xxx xxx
Ya todo esto, el uso de puntos (.) o guiones (-) para separar números. El mismo problema con las calles, en algunos casos algunos vendedores usaban signos extraños de puntuación y al interesar solo el numero de la calle, si no se indicaba había el peligro de que el programa se bloqueara (y lo hizo, estuvo un largo periodo de tiempo den debug y aún hoy en día seguramente va a poder fallar en algunos casos, pero, ese ya no es mi problema :) )
El trabajo podría parecer sencillo y así fue, con un poco de tiempo den horas de trabajo y otro mucho mas en casa la macro estaba lista, salia una table perfecta, todo ordenado, la fecha, todos los teléfonos iguales, contaba las piezas y decía el tipo de servicio. Decidí ir a mas, nos podía dar mas información y podría evitar problemas, sobretodo con la llegada del servicio online que el producto era entregado desde la tienda. Siempre trabajábamos con facturas en deposito y que se finalizaban al cobrar la parte restante al entregar el producto o simplemente si estaba pagado, al llegar el camión vacio a la tienda, pero no señores, con las online eran distintas, esas facturas no estaban en deposito pero si se tenían que tener listas para poner en ruta. Mas tarde llegarían las ventas a credito procedentes del departamento de B2B (empresas) y que tendrían el mismo problema, o peor, ya que según el usuario este podría ver o no esos documentos y por lo tanto no podían ser añadidos a la lista.
Eso lo podíamos filtrar, nos indicaba que había una entrega sin haber completado el pago y así podíamos dejar un aviso para que lo revisaran. También hice un mes entero un seguimiento completo de las entregas, por código postal, departamento, incluso si tenían una garantía adicional incluida, algo que desde arriba siempre insistían que era bueno para el cliente y para nosotros (y hasta cierto punto estoy de acuerdo, siempre que todo vaya bien… no entrare en detalles)
Pero amigos, un día un señor decidió recortar las licencias de office, porque no todas eran necesarias así que se dispuso a migrar a openoffice.org o en su defecto a libreoffice y adivinad qué? Las macros al ser VB no funcionan en libreoffice! Pero que alegría, el departamento entro en pánico, a la mañana siguiente todo era suplicas para solucionar el problema.
Me llevó varias semanas reconvertir el código de excel a libreoffice.calc pero lo logré todo volvía a funcionar como la seda, horas de trabajo, pocas, horas fuera del trabajo, muchas… hasta día de hoy pocos fallos han aparecido y han ido siendo corregidos, pero el mantenimiento se ha terminado señores, si falla fallará… y aunque quisiera llevarme ese código tan preciado conmigo… un día libreoffice se actualizará y quizás deje de estar esa macro… ese día cundirá el pánico y seguramente algunos compañeros se acuerden de mí :)
Por último y no menos importante, una utilidad trampa, también estuve en el departamento de devoluciones, arduo y duro trabajo mantener un stock a ralla cuando no cabe nada en las estanterías, cuando el stock que pesa tiene problemas para devolverse y subiendo siempre día a día a un ritmo endemoniado. Los proveedores te piden facturas/tiques para comprobar que el cliente ha devuelto en sus 14 días el producto, pero esos documentos se pierden, no se dejan bien junto al producto o a veces tardas mucho en devolverlos así que toca generar una factura “ficticia”, allí es donde entra en juego esta utilidad trama, generando un texto “creíble” con fecha, caja y número de tique que puedan parecer reales.
- Generar número de tique aleatorio entre 10000 y 99999
- Generar número de caja (antes hasta 10, ahora podría ser hasta 16)
- Generar fecha válida, descarta automáticamente los domingos
Copiar&pegar tan fácil como eso una vez generado el texto, puede generar uno aleatorio a partir de una fecha introducida o generar hasta 20 y seleccionar el que mas guste, a mi no me gustaba que aparecieran números repetidos y algunas fechas. Todo muy simple pero a mí me facilitó el trabajo, cuando lo hacía a mano no me parecían datos reales… valga me de mentir!
Hasta aquí el desarrollo de herramientas para el trabajo, no añado la modificación de cartelera que llevé a cabo antes de que fuera implementada otra en la tienda, descartando datos ya poco necesarios y dándole importancia a otros (por ejemplo la gráfica en los portátiles), fue una modificación de un programa hecho con formularios en Access.
Os espero en la tercera parte y que no se si va a ser la última pero lo que es seguro es que tocaremos el tema Raspberry Pi y Arduino, os espero en esa parte 3!