Estoy en la etapa media de desarrollo de un sistema web de stock en PHP.
¿Por qué en PHP y porque web?
Para reducir al mínimo los costos en materia de infraestructura de software – y por que no, de hardware – .
Respecto al hardware:
El sistema apunta a trabajo en red a modo de web interna, o como suele llamarse: “Intranet”.
De esta forma, y considerando el uso de php, es muy sencillo montar un servidor en una maquina de medianos recursos para servir al resto de las terminales (también de recursos medianos). Si consideramos que para navegar en Internet de manera cómoda, no necesitamos una maquina potente, una Web interna liviana es capaz de aprovechar al máximo las computadoras viejitas. Esto se traduce en ahorro de hardware.
Una pregunta perdida y encontrada: ¿no se cae en riesgo de que las maquinas queden obsoletas?
Al decir verdad no. Una de las caracteristicas de la “tecnología” web es justamente esa: gran capacidad y prestaciones con pocos recursos, en la vanguardia de lo que son los sistemas actuales.
De hecho, si entramos a considerar que los bancos y grandes empresas volcaron hace años todos sus sistemas a la plataforma web, estaríamos en condiciones, mas que sobradas, de implementar un sistema web de stock en una red de computadoras de no tan potentes sin caer en obsolescencia.
Sobre el software:
Por que PHP y no ASP?
- En primer lugar PHP es un lenguaje multiplataforma. Se pueden armar redes con sistemas operativos libres a muy bajo costo.
Traducción= se puede usar tanto con Windows (hay que pagar para usarlo) y con Linux (no hay que pagar). 1er. Punto a favor.
- PHP es libre.
Traducción= no hay que pagar por su uso. Por lo tanto, quien desarrolla en php puede valerse de una infinidad de tutoriales, scripts prearmados (codigos que realizan una tarea especifica) y una comunidad enorme en Internet que lo usa y lo hace día a día mas popular. ASP tiene licenciamiento. Hay que pagar. 2do. Punto a favor.
- Tengo mas conocimiento de PHP que de ASP
Traducción= Nunca me esforcé por aprender a usar ASP en profundidad. De hecho, ASP no me gusta. No se si es a favor o en contra.
Sin necesidad de Windows y con un lenguaje de programación libre, ademas del hardware, ya vamos ahorrando varios miles de pesos.
Sobre el sistema
Ya aclarado algunos puntos preliminares, paso a explicar como funciona un poco la web de stock (aunque prefiero llamarlo sistema, ya que es un conjunto de partes que interactúan para lograr un fin especifico= ordenar y gestionar un almacén)
En principio, el corazón del sistema es una base de datos gestionada a traves de MYSQL. No hay ningún secreto. Esta base de datos está en el servidor (ver lo que escribí mas arriba sobre el Hardware) y se “comparte”, (o le “presta datos”) a las terminales.
La base de datos contiene diferentes tablas que almacenan, por un lado, toda una biblioteca con los codigos de articulos con los que se trabaja.
Otra tabla contiene el stock propiamente dicho. Es decir, es la tabla donde se vincula el codigo de un articulo con su existencia fisica. Sobre esta tabla es en donde mas se trabaja, dado que aquí se generarán los ingresos, egresos y bajas de stock, en definitiva, todos los movimientos relacionados con un almacén.
¿Como facilitar estos movimientos?
A traves del uso de codigos de barras. Es, creo yo, lo mas accesible y eficiente a la hora de realizar tareas como estas. Hay otros sistemas, por ejemplo, de “chips RFID” pero su implementacion es un tanto (por no decir astronómicamente) mas costosa, ya que implica lectores mas complejos y por ende, mas costosos. Un lector laser de mediana calidad ronda los 150 dólares. Lógicamente, hay otros tipos de lectores, los infrarrojos, los CCD. A mi parecer, los láser son los mas eficientes en cuanto a rango, distancia y velocidad de lectura.
De esta manera, el departamento de recepcion, se limita a “flashear” con la pistola lectora los productos que compran y que tienen ingreso al almacen. El codigo de barras se decodifica, se busca en la tabla que articulo es, y se suma 1 al stock de dicho articulo.
Desagregación:
1.- Tener previamente los codigos cargados en el sistema puede ser un tanto engorroso
2.- Ir cargando a medida que ingresan los articulos.
Creo que la opcion 2 es la mas eficiente. No podemos contemplar todo lo que entra a un almacen, aun cuando se tiene pleno conocimiento de lo que se compra y las compras sean reiterativas. De esta forma, lo ideal es contar con una base de datos estandar, con los productos mas frecuentes y en ocasión de ingresar articulos no registrados anteriormente, el sistema brinda la opcion al operador de ingresar las caracteristicas de ese producto.
Ingresados los productos en el almacen y actualizado el stock el resto de las terminales tiene acceso a los mismos y está en condiciones para empezar a realizar moviemientos sobre un producto “X”, sea por ejemplo, el traslado a un departamento especifico, a otra sucursal o bien, la venta. Por lo tanto, en este paso, basta con “flashear” nuevamente en producto para marcar su salida.
El hecho de tener una base de datos centralizada, permite al administrador del almacen desde un solo lugar condicionar un producto para el resto de las terminales. Por ejemplo, realizo un cambio de precio y esto estará disponible instantáneamente en cualquiera de las bocas de expendio. Además, de poder tener acceso a datos importantísimos que hacen al manejo del stock, como ser:
- manejar puntos de re-pedido
- establecer stock minimos, de seguridad, etc.
- automatizar el seguimiento de bienes
- obtener “estadisticas” referidas al movimiento de un producto en particular
Un punto fuerte de este sistema es la conectividad con Internet. En forma casi instantanea el sistema puede tener acceso a la web, y por ejemplo automatizar la tarea de pedido a un proveedor tras alcanzar un punto de reposicion, por ejemplo a traves del envio de un mail.
Posibilidades de implementacion:
1.- Por un lado, esta la posibilidad de implementación tal como lo describí hasta ahora.
Esto implica tener una “mini Internet”, se necesita una computadora que oficie de “servidor”, es decir, que almacene el sistema y provea acceso y proceso de los datos a las terminales. A esta red, se le pueden acoplar tambien otros sistemas sin perder eficiencia, como ser de contabilidad, facturación, etc. etc., siguiendo el principio de desarrollo de este sistema de stock.
Generalmente la mayoría de las empresas cuentan con una red interna que en el 99% de los casos cumple la tarea de proveer Internet a varias computadoras. El sistema es perfectamente adaptable a ella y aprovecha esta infraestructura instalada.
2.- Colocar el sistema en un servidor externo. Esto es lo convencional en Internet. Cuando escribimos www.google.com.ar en el navegador, estamos accediendo a una computadora en quien sabe que lugar del mundo. El sistema web instalado en un servidor externo sigue ese principio, de hecho, el sistema seria como un sitio web convencional.
¿Cualquiera puede acceder a mi sistema si está en Internet?
En principio si. Y esta aparente falta de seguridad es lo que le da tal vez la mayor fortaleza a este desarrollo. Lógicamente que cualquier no podrá acceder y agregar productos. Para ello, y como está previsto también en la versión de “sistema interno” se crean usuarios. El sistema es siempre el mismo, la diferencia es otorgada por la “jerarquia del usuario”.
Cada persona con sus datos de acceso, tendrá la posibilidad de acceder a la parte del sistema para la cual está habilitada. Un ejemplo bastante sencillo seria en donde un cajero, solo tendra habilitada la tarea de dar salida al stock, mientras que el encargado de almacen puede dar entradas y salidas, mientras que el administrador, puede dar ingreso, salida, cambio de precios.
Solo accederá quien tenga los datos de acceso. Y tras registrar su ingreso, tendra acceso solo a la parte que le corresponde.
¿La ventaja de esto?
Puedo acceder a los datos de mi almacen en forma segura desde cualquier computadora del mundo.
¿La desventaja?
No tenemos “fisicamente” el servidor bajo nuestro resguardo dentro de la empresa. Y pueden suscitarse muy aisladamente roblemas de disponibilidad del mismo. Por ejemplo el tipico problema de “No se encuentra disponible la pagina solicitada”.
Lógicamente, este servicio de hospedaje según la empresa que se contrate varia en cuanto a precios y a calidad, incluso hay posibilidades de hospedar este sistema en servidores extranjeros, pero esto ya seria un poco mas costoso.
Algunos datos algo más técnicos
El sistema está desarrollado (está siendo desarrollado) bajo PHP, con gestión de base de datos con MYSQL y corriendo en EASYPHP (es el programa que “transforma” a la computadora en un servidor) que contiene el servidor Apache, el gestor de base de datos mysql y Phpmyadmin.
La gestión de usuarios se realiza a través de sesiones, lógicamente el usuario de mayor jerarquía puede crear usuarios de menor jerarquía, dar y revocar permisos a ciertos módulos.
Todas las terminales pueden tener su lectora de códigos de barras, incluso el sistema mismo incorpora un modulo para generar e imprimir códigos de barra.
El uso de un lector de código de barras no es complicado. Simula ser el teclado de la computadora. Por ejemplo si abrimos el Word y apuntamos a un código de barras, veremos como en el lugar que está situado el cursor se transcribirá una serie de numeros.
Es importante destacar que la pistola, no entiende el código numérico, solo se limita a leer una imagen de una etiqueta, descifrarla y traducirla a números. Por lo tanto, la pistola es solo un dispositivo de entrada. De hecho, el sistema es totalmente funcional con un teclado común, claro está que habrá que estar tapeando los numeritos, con los consiguientes errores y perdida de tiempo que esto conlleva.
De esta manera, el lector de codigos de barras elimina la necesidad de tipear, perder tiempo tipeando, y eliminar los errores.
Que diferencia hay entre los lectores laser, los infrarrojos y los ccd, que tipos de codificacion existen y cuales son las caracteristicas de este sistema:
Para no extenderme mas recomiendo visitar esta pequeña guia: INGRESAR
Para finalizar
Creo que he plasmado las funciones principales y los conceptos mas importantes de lo que estoy desarrollando, lógicamente, luego incorporaré mas material “tecnico” referido a la programación del sistema y seguramente lo que mas interesa, la interfaz para captar los datos desde el lector de codigo de barras.
Feliz 1º de Mayo para todos.
mayo 3rd, 2009
Que tal, me interesa tu proyecto me podrias decir si lo estas comercializando.. o de que manera poder probarlo? gracias
mayo 3rd, 2009
Hola JAOF, lo estoy desarrollando actualmente. La parte de recoleccion de datos con el lector está terminada.
De a poco voy armando el resto de las funciones relacionadas con los movimientos de stock, que es tal vez lo mas complicado, no por el hecho de programar sino que por lograr hacerlo estandar para que sea aplicable en distintas actividades.
Sobre comercializarlo: en realidad empece haciendolo como prueba y para ver como era esto de los codigos de barras.
), y darle la posibilidad a algunas empresas o comercios lograr informatizar este aspecto con muy poco desembolso.
Si sale algo bueno seguramente que lo estaré ofreciendo por unos pocos pesos (por lo menos para cubrir el precio del lector que compre
Iré subiendo las novedades en este mismo sitio a medida que las vaya teniendo.
Saludos y gracias por tu interes.
junio 24th, 2009
Hola Andrés.
Te cuento que actualmente me pidieron desarrollar un sistema como el que estas realizando tu, por el mismo motivo es que quiero pedirte si me puedes mas o menos guiar como lo estas haciendo tu y yo podría indicarte como pretendo realizarlo, osea compartir.
atento a tus comentarios, mi correo ya lo tienes
Saludos
julio 11th, 2009
Hola Andrés, me encargaron el mismo proyecto que a ti y a bAxTEr.
Me gustaria saber cómo haces que el lector lea el código e inmediatamente salgan los datos con respecto a ese código en los demás campos (vamos que cómo haces la consulta SQL sin cambiar de página), como en las máquinas de los supermercados.
espero tu respuesta.
Muchas gracias!
saludos!
julio 11th, 2009
DANIEL: el lector de codigos de barra juega el mismo papel que un teclado. De manera que cuando lo acercas a un codigo éste lo lee y “tipea” en la computadora los numeros que corresponden a cada barrita (en mi caso uso numeros, pueden ser letras tambien, dependiendo el tipo de codigo que uses).
Ahora bien. Los lectores vienen armados de manera que no necesites ningun software adicional, por si solos son capaces de detectar los codigos de barras mas comunes (code 128, code 39, etc. etc.)
Si enchufas un lector a la ficha de tu teclado y abris el bloc de notas y “lees” una etiqueta de barras verás como en el bloc de notas se transcriben los numeros correspondientes.
El secreto esta en editar el campo de texto de tu formulario que recibira la info del codigo de barras.
Ahi, tenes que acudir al evento ONCHANGE de tu campo de texto. ONCHANGE es un evento que corresponde a JAVASCRIPT.
Lo que sigue despues es hacer una funcion, que ante el evento ONCHANGE realice una consulta a la base de datos.
Entonces, mientras el input este vacio no pasa nada, ni bien se ingresen numeros disparará el evento ONCHANGE y la respectiva consulta.
Tenes que tener en cuenta que ONCHANGE se disparará con el primer caracter que lea la pistola, por lo tanto, los restantes te quedarán afuera.
Es decir, si lees el codigo “12345″, el evento ONCHANGE reaccionara con el “1″, y hara una consulta sobre ese valor, quedando afuera “2345″.
Te recomiendo que en el ONCHANGE hagas una verificacion de la longitud a fin de evitar que se “dispare” en el primer caracter.
La consulta a la base de datos es una consulta normal: “select * from tabla where barcode=’$leido’”.
El volcado de los datos en pantalla tambien se hacen a traves de la función que hiciste mas arriba.
De manera que debes armar una funcion que no solo compruebe la longitud del codigo ingresado, sino que ejecute la consulta sql anterior y ademas vuelque los datos en pantalla.
Espero haber sido claro. Saludos
julio 22nd, 2009
gracias , tus datos me han servido para delimitar y encaminar el mismo sistema que tengo en el trabajo.
octubre 8th, 2009
Que tal.. oye se ve que esta chido tu proyecto.. no se si para esta fecha ya lo tengas.. yo necesito uno.. voy a iniciar con el.. para mi negocio. En caso de que ya lo tengas y desees comercializarlo..comunícate a mi mail para ponernos de acuerdo..sale?.. salu2.
octubre 8th, 2009
Hola JOSEX, el soft está terminado, tiene un valor de 400 dólares. El lector de codigos de barra lo tenés que comprar vos. Cuesta alrededor de unos 80 dolares.
octubre 21st, 2009
http://www.elguruprogramador.com.ar/foros/tema/465
enero 6th, 2010
No se si el tema sigue en pie, pero quisiera que le den una mirada a lo q estoy craneando, lo estoy haciendo solo, y me falta tiempo, pero cualquier critica, u oferta de colaboracion sera bienvenida… pueden verlo en http://www.stocksis.com/audiodesign/ usuario demo contrasena demo
marzo 9th, 2010
Hola eric65, Quisiera apoyarte en tu idea, colaborandote en los que se requiera.
Saludos
marzo 9th, 2010
Escribeme y nos ponemos de acuerdo, en lo que se necesita o puedes enviarme los fuentes,actualmente estoy desarrollando una aplicacion para un un negocio de abarrotes donde maneja inventarios y ventas por vendedor.
abril 19th, 2010
hola Andres yo estudio Licenciatura en Analisis de Sistemas y quiero hacer algo como esto en mi seminario, queria saber si me podes dar una mano para algunas dudas que tengo, escribime por favor
mayo 9th, 2010
Hola andres, quiero saber saber como puedo conocer en detalle el soft.
me interesa saludos .
junio 15th, 2010
ES UNA LASTIMA QUE IPHONE NO DEJE CORRER SISTEMAS CON BASE DE DATOS EN EL IPHONE 4 SERIA MUY INTERESANTE SISTEMAS HECHOS CON PHP Y MYSQL PARA ESTE
julio 10th, 2010
Muy interesante el proyecto. Desde aca de colombia les cuento que tenemos desarrollado un sistema en acces que esta funcionando en muchos ssupermercados y puntos de ventas. Pero igual lo queremos migrar a php y mysql. cualquier ayuda amigo seria de gran interes. Felicidades un abrazo.
julio 10th, 2010
Eric565 va muy bien su proyecto. de donde eres. me gustaria contactar contigo. tu email.. jhtl5@hotmail.com
agosto 16th, 2010
Hola, eric565
Se me olvido exponer mi email es ca_martin@mail.com, para ponernos en contacto.
agosto 27th, 2010
eric565 (#) interesante tu soft queria aportar en tu proyecto si quieres ayuda mi mail es
jairo_jair2003@yahoo.es
octubre 14th, 2010
eric565 me interesa tu sistema estoy interesado en el sera que lo hicistes software libre o tiene un costo, amigo contactame ppara ver si podemos hacer algo
diciembre 2nd, 2010
tu proyecto em interesa como puedo contactarte para un posible negocio
agosto 26th, 2011
hola no se si pudieran hecharme la mano del codigo que recoge la informacion de lector de barras
saludos!!
octubre 28th, 2011
Me gustaria contactarte ya que me interesa tu sistema
octubre 31st, 2011
como te quedo el proyecto??? estas con ganas de compartirlo a mi?? jeje saludos.
marzo 23rd, 2012
heyyy me ha servido muchisimo tu post, muchas gracias, ahora puedo encaminarme en un proyecto similar..