No se si sabréis que me gusta mucho la programación de webs en PHP. Tanto con este lenguaje como en otros te das cuenta que no hay límites. Se puede desarrollar cualquier tipo de web, cualquiera que sea por grande que sea, lo único que hace falta es tiempo. Con la conjunción PHP y MySQL se pueden crear herramientas muy potentes y también sacarles un partido muy interesante.
Una de mis labores que desarrollo en el trabajo en el cual estoy es como lo decimos aqui «sacarle las tripas» a un web. No me refiero a ver el contenido html, ni nada similar. Nos movemos en el mundo de la informática y la empresa en la que estoy tienen una página web, me refiero a una tienda virtual.
Antes de llegar yo, los productos los añadían a la tienda virtual a mano y no todos porque eran demasiados productos. Trabajamos con un programa de gestión como todo el mundo no diré nombres por no hacer publicidad pero tiene la base de datos en dbf (si, arcáico pero lo siguen usando)
Una de mis labores iniciales y dado que me pasaron la pelota de actualizar el web (y además es que me’encanta la optimización del trabajo siempre y cuando se mejore en fiabilidad y se reduzca tiempo) fue por tanto optimizar esa labor. Es muy pesado añadir productos, tener que verificar el stock, que si ya no hay en almacén pues quitarlo del web o ponerlo como que no hay stock, cuando vuelve a venir pues agregarle otra vez stock al web, etc. y más teniendo en cuenta que en informática se trabajan con muchas referencias.
Por tanto mi optimización para esta labor fue desarrollar una sencilla aplicación que cada hora cogiera los datos de las familias que nos interesaran del programa de gestión, y los subiera al web, actualizara además el stock y el precio de forma automática con esa misma subida. Si el programa tiene ficha/foto, que la agregara al web y si no creé una base de datos intermedia para agregar fichas de productos (descripcion, caracteristicas, foto, etc.); de esa forma se tenia el web actualizado con un desfase en tiempo de máximo 1h. muy bueno, pues además se podía hacer alguna tienda virtual especializada en alguna familia y con otros márgenes.
El problema comienza cuando por misterios de la vida que nunca comprenderé los stocks empiezan a descuadrar. Nunca entenderé que si compras 5 unidades de un producto y pasan 2 semanas y vas a ver el stock real físico, ves que queda uno, pero miras en el programa y a lo mejor te dice que quedan 2. Si, debe de tener una explicación como por ejemplo que han vendido 1 unidad y que no la han facturado o que ha desaparecido «misteriosamente», las desapariciones misteriosas puede ocurrir si una empresa es grande, pero esta es pequeña y hay confianza por lo que debe de haber pasado la opción primera. Lo raro es que estos hechos ocurren muy amenudo y no sólo en el sentido explicado, si no que a lo mejor compras 5 unidades de un producto y a las 3 semanas te dispones a vender a público la última unidad y el programa te dice que no hay stock ¿cómo que no hay stock si lo tengo en la mano? pues como que no, y si lo vendes se queda a stock -1. Si, increible, alguien a vendido aire con forma de este producto y lo ha facturado?¿ joder, eso si es un buen vendedor.
Pese a que este problema de productos fantasmas puede parecer raro, el hecho es que pasa en más de una empresa. Aún no he conseguido saber la causa, quizás si algún dia monto yo mi empresa, realmente veré si me pasa a mi o no, pero hasta entonces estaré con la duda de si es el programa, las personas o qué es lo que hace que hayan descuadres tan a menudo de stocks.
Dado que no quería tocar para nada el programa de gestión, la solución a este problema fue crear un campo «regulador de stock». Es decir, si en el programa decía que quedaban 3 unidades de un producto, pero luego yo veía físicamente que quedaban 2. Pues en el campo regulador de stock tenía que poner -1. Así al actualizar los stocks el stock real = stock del programa + stock regulador ( stock real = 3 + -1 = 2) Esto conllevaba controlar el stock de forma física por lo menos de los productos importantes pero eso no era problema pues era rápido y sencillo. Hice un formulario para introducir Código y Stock fisico, y automáticamente se calculaba el regulador de stock.
Hasta aqui todo bien, además cualquier empresa que se precie es interesante poder ofrecer sus productos a internet o incluso como catálogo (sin precios ni carrito de compras), pues si añades o quitas un producto, a la hora tienes el web actualizado sin muchas preocupaciones.
El problema viene cuando en mi empresa y dado que la venta de productos informáticos ha decaido mucho, se opta por stockar menos material (pues algun material se nos quedaba mucho tiempo en tienda y los precios se quedaban obsoletos).
No se puede tener una tienda virtual de informática con 1 CPU, 2 placas base, 3 módulos, etc. (por poner un ejemplo), de esta forma entramos en
La segunda fase
Esta es la fase de la que quería hablar, y estoy bastante especializado (por decirlo de alguna forma). Los tengo ya todo bastante automatizado. (me encanta automatizar, me’ncanta)
La solución a este problema (tener una tienda virtual con una amplia variedad de productos) era poner productos directos del proveedor y aprovechar los tiempos que hay desde que un cliente realiza un pedido hasta que paga para solicitar el producto al proveedor y realizar el envio al cliente o incluso enviarlos directamente desde el proveedor.
Por tanto, empecé a especializarme y de esta forma cree una base de datos de proveedores y de productos.
Con una serie de scripts en PHP, puedo integrar miles de productos en la tienda virtual en una mañana con información en tiempo real (o casi para no saturar el servidor -cada 4 horas-)
De esta forma, si el proveedor tiene una buena página web «le saco las tripas», es decir, que chupo todos los productos del proveedor, los pongo en mi base de datos superguay y desde esta superbase de datos, actualizo la tienda/s.
Lo primero es analizar el excel directamente o csv con php directamente del proveedor.
Un script se encarga de bajarlo del proveedor, analizarlo, separar los campos y agregar/actualizar los productos (codigo, nombre,familia,stock,precio,etc.) Esto se hace cada 4 u 8 horas, o una vez al día para tener el precio, disponibilidad y stock muy actualizado (a diario) de miles de productos sin mover un dedo.
Otro script diferente se encarga de visitar las fichas del proveedor y extraer foto y descripción del producto. El script se conecta al web como si fuera un visitante y analiza el html extrayendo los campos pertinentes, así como descargandose la foto a nuestro servidor. Todo esto también de forma automática. En caso que todas los productos de ese proveedor ya tengan ficha no hace nada para no saturar el servidor remoto. En caso que el proveedor agrege nuevos productos, el script los detecta y descarga su ficha.
Tenemos de este modo una base de datos de todo un proveedor de productos, con fotos, descripciones, precios y stock actualizado a diario y listas para ser enviadas a nuestra tienda virtual
Si a esto le añadimos que podemos trabajar con tantos proveedores como querramos, pues tenemos una gran base de datos actualizada a diario donde el fallo de stock es mínimo, el tiempo de servicio es rápido y las fichas de producto están actualizadas.
Una maravilla
Esto se puede aplicar tanto al campo de productos informáticos como a cualquier otro campo donde el proveedor de esos productos esté medianamente informatizado.
Saludos a todos y espero que se entienda