Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Proyectos / Control de Stock en Java (Parte 1)

Control de Stock en Java (Parte 1)

Autor jc mouse lunes, septiembre 3, 2012

Un SGA “Sistema de Gestión de Almacenes”  es un programa informático destinado a gestionar las entradas y salidas de productos de un almacén, también es el encargado de gestionar todos los movimientos que se llevan a cabo dentro del almacén, maquinaria, trabajadores, etc . Proviene de la traducción del término inglés “WMS” (Warehouse Management System).

Un “control de stock” o “gestión de stock” como se prefiera llamarlo, es un sistema más simple, más reducido que un SGA, y nos sirve para  organizar, planificar y controlar el conjunto de stocks pertenecientes a una empresa.

No se malinterprete, al llamarlo un sistema simple no quiere decir que sea sencillo de hacer, requiere igual que un SGA de una planificación cuidadosa.

En este tutorial realizaremos una aplicación para gestionar los productos de un “almacén XYZ”, el tipo de producto que se ofrezca no es relevante para este ejemplo, así también se saltaran muchos otros detalles como los impuestos, el tipo de inventario PEPS o UEPS, precios fijo, promedio, descuentos, devoluciones, bonificaciones, etc. Lo que se pretende es diseñar y codificar un sistema reducido que sirva de base para el desarrollo de sistemas mucho más complejos.

Dicho todo esto, comencemos.

Necesitamos.

  • Conocimiento intermedio de Java y Netbeans.
  • Conocimientos del patrón de diseño MVC (Modelo, Vista y Controlador).
  • Conocimientos de MySQL y un servidor MySQL instalado en el equipo.
  • Driver MySQL JDBC
  • Librería JCalendar
¿Que obtendremos como resultado?
Puede ver en el siguiente video el resultado final de este tutorial, la interfaz no esta muy trabajada, ese no es nuestro objetivo. Sin embargo la aplicación hace lo que debe hacer, gestionar productos.
COMENCEMOS
1. Lo primero que necesitamos para comenzar es el diseño de nuestra base de datos, utilizaremos el siguiente esquema:
db inventario
Se puede apreciar que la relación existente entre PRODUCTO-VENTA-CLIENTE es similar por no decir igual a la relación entre PRODUCTO-COMPRA-PROVEEDOR, para optimizar la base de datos se podría hacer uso de una misma tabla tanto para VENTAS como para COMPRAS, este diseño no es fijo, y claro, se puede ampliar con mas campos y optimizar dependiendo de la habilidad del programador, pero por motivos didácticos se prefirió utilizar  las entidades separadas y el mínimo de campos para que el proceso de construcción sea mucho más claro.
Como las relaciones anterior mente mencionadas  son similares, el código para gestionarlas, también lo sera,  así que en este tutorial solo se implementara el código para PRODUCTO-VENTA-CLIENTE junto a su interfaz gráfica, el desarrollo para PRODUCTO-COMPRA-PROVEEDOR, queda en manos de quien quiera aprender más.
Solo las entidades de color naranja tendrán interfaz ya que son las que interactuan directamente con el sistema de gestión de stock.
2. Codigo SQL de la base de datos.
Crea una base de datos en tu servidor, llámalo por ejemplo dbTest. Añade a continuación las tablas siguientes:
TABLA TCATEGORIA
-- 
-- Estructura de tabla para la tabla 'tcategoria'
-- 
CREATE TABLE tcategoria (
  c_id bigint(20) NOT NULL auto_increment,
  c_nombre varchar(32) NOT NULL,
  PRIMARY KEY  (c_id)
);

-- 
-- Volcar la base de datos para la tabla 'tcategoria'
-- 

INSERT INTO tcategoria VALUES (1, 'Categoria A');
INSERT INTO tcategoria VALUES (2, 'Categoria B');
INSERT INTO tcategoria VALUES (3, 'Categoria C');
INSERT INTO tcategoria VALUES (4, 'Categoria D');
INSERT INTO tcategoria VALUES (5, 'Categoria E');
INSERT INTO tcategoria VALUES (6, 'Categoria F');
TABLA TPRODUCTO
-- 
-- Estructura de tabla para la tabla 'tproducto'
-- 

CREATE TABLE tproducto (
  p_id varchar(8) NOT NULL,
  p_descripcion varchar(32) NOT NULL,
  p_preciov float NOT NULL default '0',
  p_stock int(20) NOT NULL default '0',
  id_categoria bigint(20) NOT NULL,
  PRIMARY KEY  (p_id)
);

-- 
-- Volcar la base de datos para la tabla 'tproducto'
-- 
INSERT INTO tproducto VALUES ('PRO-12PO', 'Pildora de semen de toro', 25, 98, 2);
INSERT INTO tproducto VALUES ('PRO-DSFH', 'Condon de latex', 2.8, 180, 5);
INSERT INTO tproducto VALUES ('PRO-7777', 'Pegamento Moco de Gorila', 35.9, 91, 6);
INSERT INTO tproducto VALUES ('PRO-HG65', 'Polystation 3', 120.6, 248, 1);
INSERT INTO tproducto VALUES ('PRO-HY76', 'Frenos marca PATITO', 200, 79, 2);
INSERT INTO tproducto VALUES ('PRO-IO99', 'Lentium 8 hackeado', 15.6, 198, 3);
INSERT INTO tproducto VALUES ('PRO-WIN2', 'Linux 7000', 256.8, 26, 4);
INSERT INTO tproducto VALUES ('PRO-997A', 'Cerveza duff', 2.4, 988, 1);
INSERT INTO tproducto VALUES ('PRO-PP67', 'Seria Chanime Rebuild', 10.5, 32, 2);
INSERT INTO tproducto VALUES ('PRO-T456', 'Mi producto', 2.8, 195, 6);
TABLA TCLIENTE
— 
-- Estructura de tabla para la tabla 'tcliente'
-- 

CREATE TABLE tcliente (
  c_NIT varchar(8) NOT NULL,
  c_nombre varchar(32) NOT NULL,
  c_dir varchar(32) NOT NULL,
  c_fono varchar(12) default NULL,
  PRIMARY KEY  (c_NIT)
);

-- 
-- Volcar la base de datos para la tabla 'tcliente'
-- 
INSERT INTO tcliente VALUES ('12345678', 'Andrés Trozado', 'Avenida Siempre viva #78', NULL);
INSERT INTO tcliente VALUES ('12312312', 'Lola Mento', 'Calle Calama #123', NULL);
INSERT INTO tcliente VALUES ('65732111', 'Paca Garte', 'Calle Nose #44', NULL);
INSERT INTO tcliente VALUES ('88877512', 'Ana Tomía', 'Calle Mela Tocas #100', NULL);
INSERT INTO tcliente VALUES ('65757552', 'Estela Gartija', 'Av. Revernda Perr', NULL);
INSERT INTO tcliente VALUES ('11232178', 'Armando Bronca Segura', 'Av. Hernando Chiles', NULL);
TABLA TVENTA
-- 
-- Estructura de tabla para la tabla 'tventa'
-- 

CREATE TABLE tventa (
  v_id varchar(8) NOT NULL,
  v_fecha datetime NOT NULL,
  v_preciot float default '0',
  v_detalle text,
  v_nit varchar(8) default NULL,
  PRIMARY KEY  (v_id)
);
TABLA RELACION PRODUCTO-VENTA TPV
-- 
-- Estructura de tabla para la tabla 'tpv'
-- 

CREATE TABLE tpv (
  pv_producto varchar(8) NOT NULL,
  pv_venta varchar(8) NOT NULL,
  pv_cantidad bigint(20) NOT NULL,
  pv_precio float NOT NULL,
  PRIMARY KEY  (pv_producto,pv_venta)
);
Eso es todo lo necesario en SQL que nos sirve de base para nuestra aplicación.

 

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Introducción al Diseño Web Adaptable (Responsivo)

Introducción al Diseño Web Adaptable (Responsivo)

El diseño web adaptable (Responsive Web Design) va evolucionando como una filosofía de diseño y desarrollo de paginas we...

Cambiar la Interfaz Gráfica con skin java

Cambiar la Interfaz Gráfica con skin java

La Interfaz Grafica de Usuario en Java nos brinda la posibilidad de cambiar la apariencia de nuestras aplicaciones, ya s...

Cargar fuente TTF

Cargar fuente TTF

Cuando realizamos un proyecto java utilizando fuentes de nuestro sistema, al momento de distribuir el programa y ejecuta...

Shapes y evento click de jquery

Shapes y evento click de jquery

En este tutorial crearemos shapes en tiempo de ejecución y ademas les daremos un poco de movimiento. Para realizar corre...

Tutorial HeidiSQL: Sesion, Base de datos y Tablas

Tutorial HeidiSQL: Sesion, Base de datos y Tablas

HeidiSQL es un software libre y de código abierto que permite conectarse a servidores MySQL, MariaDB, Percona Server, Mi...

Mapas con HTML5 – Funciones de pintado – Parte 5

Mapas con HTML5 – Funciones de pintado – Parte 5

En esta penúltima parte, declaramos las funciones que nos permitirán pintar los shapes en el canvas, vamos al grano que...

9 comentarios en “Control de Stock en Java (Parte 1)”

  1. VIANEY VARGAS dice:

    HOLA AMIGO MOUSE EXCELENTE TUTORIAL AMIGO DE CASUALIDAD NO HAZ PUES TO ESTE PROYECTO PARA BAJARLO??? MUCHAS GRACIAS…. SIGO TUS PASOS..

    1. Mouse dice:

      ta al final :/

  2. Erick Arroyo dice:

    Muy bueno, excelente, es dificil encontrar posto de este tipo en la red, te felicito JC, me han servido mucho tus tutoriales…

  3. Jorge M dice:

    Muy buenos tutoriales y explicaciones para novatos y avanzados

  4. kristian dice:

    hola he visto unos tutoriales tuyos y m puse hacer botones para pantallas touch screen,salio bien

  5. ana dice:

    hola, muy buen programa, tengo una duda, en tu interfaz de inicio tienes tus botones tipo menú, sabes como se puede hacer para que en lugar de presionar el boton con el mouse, solo pulsara alguna tecla F1, por ejemplo y abriera otro de los frames del sistema? ojala puedas ayudarme =) gracias

  6. jack dice:

    bueno

  7. Jonatan dice:

    MUCHAS GRACIAS POR COMPARTIRLO! 🙂

    1. Mouse dice:

      de nada papa

Los comentarios estan cerrados

Comparte lo que sabes

Categorias

Últimas entradas

Netbeans es uno de los entornos de desarrollo integrado (Integrated Development Environment – IDE)  más conocidos...

Geany es un editor de texto para Sistemas Operativos Linux, windows y MAC que utiliza el kit de herramientas GTK+ con ca...

En este post te hablaremos sobre una interesante herramienta para le lectura y edición de metadatos que no te debe de fa...

Java cuenta con la clase java.lang.Math  la cual contiene métodos para realizar operaciones numéricas básicas como las f...

Android Bolivia

MAUS