MySQL - Administrar precios de productos en inventario de acuerdo a su presentación por medio de MYSQL

 
Vista:

Administrar precios de productos en inventario de acuerdo a su presentación por medio de MYSQL

Publicado por Jackobh (1 intervención) el 23/05/2017 18:36:17
Hey que tal, les comento, tengo el siguiente problema.

He estado desarrollando un sistema que administre el inventario de una bodega distribuidora de papelería. Me encuentro en detalles a la hora de administrar el stock con el que se cuenta ya que dicha bodega maneja diversas presentaciones en cada uno de sus productos, ejemplo:

Producto: Hojas blancas t/c.

A la hora de recibir el material en bodega se realizará la captura de dicho producto en inventario (stock), en este caso sería 1 caja de hojas que contiene 5000 piezas (hojas) tomando esto como punto de partida se pretende dividir la existencia de inventario (stock) en las siguientes presentaciones para su posterior venta:

Presentación 1: 1 hoja equivalente a una pieza o unidad. (De antemano sabemos que contamos con 5000 piezas u hojas).
Presentación 2: Medio ciento (Equivalente a 50 hojas).
Presentación 3: Un ciento (Equivalente a 100 hojas).
Presentación 4: 1 paquete con 500 hojas.
Presentación 2: Medio ciento (Equivalente a 50 hojas).
Presentación 5: Una caja con 10 paquetes (5000 hojas).

En cada presentación va a variar el precio del producto de acuerdo al tipo de cliente que se esté atendiendo.

Lo siguiente es la estructura de mis tablas para dar soporte a la administración de inventario:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
CREATE TABLE tbl_presentaciones(
  id_presentacion INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
  clave_presentacion TEXT NOT NULL,
  nombre_presentacion TEXT NOT NULL
);
 
CREATE TABLE tbl_productos (
  id_producto INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
  id_departamento_producto INTEGER NOT NULL,
  id_marca_producto INTEGER NOT NULL,
  nombre TEXT NOT NULL,
  precio_producto REAL NOT NULL,
  precio_producto_impuestos REAL NOT NULL,
  ruta_imagen TEXT NOT NULL,
  fecha_registro DATETIME DEFAULT CURRENT_TIMESTAMP,
  status INTEGER NOT NULL,
  FOREIGN KEY(id_departamento_producto) REFERENCES tbl_departamentos_productos(id_departamento_producto),
  FOREIGN KEY(id_marca_producto) REFERENCES tbl_marcas_productos(id_marca_producto)
);
 
CREATE TABLE tbl_presentacion_producto(
	id_presentacion_producto INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
	id_producto INTEGER NOT NULL,
	id_presentacion INTEGER NOT NULL,
	cantidad INTEGER NOT NULL,
	clave TEXT NOT NULL,
	codigo_barras TEXT NOT NULL,
	precio_oferta REAL NOT NULL,
	precio_normal REAL NOT NULL,
	precio_distribuidor REAL NOT NULL,
	precio_mayoreo REAL NOT NULL,
	precio_gobierno REAL NOT NULL,
	status INTEGER NOT NULL,
	FOREIGN KEY(id_producto) REFERENCES tbl_productos(id_producto),
	FOREIGN KEY(id_presentacion) REFERENCES tbl_presentaciones(id_presentacion)
);
 
CREATE TABLE tbl_stock(
  id_stock INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
  id_producto INTEGER NOT NULL,
  stock_real INTEGER NOT NULL,
  stock_minimo INTEGER NOT NULL,
  stock_demanda INTEGER NOT NULL,
  fecha_entrada DATETIME NOT NULL,
  stock_entrada INTEGER NOT NULL
);

Lo anterior mostrado es la estructura que de mis tabas. Pero de acuerdo a mi análisis no alcanzo los objetivos deseados a la hora de administrar las presentaciones de cada producto.

¿Cuáles son los objetivos?

Poder registrar cada uno de los productos en sus diversas presentaciones y a su vez establecer el precio a cada una de esas presentaciones. Para con ello tener un stock bien administrador en inventario.

Espero poder contar con su ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 953
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Administrar precios de productos en inventario de acuerdo a su presentación por medio de MYSQL

Publicado por leonardo_josue (414 intervenciones) el 24/05/2017 19:10:05
Hola Jackobh:

En realidad no hay una "mejor" o "peor" forma de modelar una BD's, dependerá completamente de las necesidades que tengas, es decir, de la lógica de negocio que manejes... en realidad veo varios "inconvenientes" de tratar de administrar la información de acuerdo a lo que planteas, pero que dependerá insisto de la lógica del negocio...

El problema que planteas es de hecho uno de los que más conflicto presenta y va de acuerdo insisto a la lógica de negocio imagina que tienes el siguiente Stock

1
2
3
4
5
6
7
8
9
10
11
+------------+--------+
|presentación|cantidad|
+------------+--------+
|Medio ciento|       0|
+------------+--------+
|Un ciento   |      10|
+------------+--------+
|1 paquete   |      10|
+------------+--------+
|Una caja    |       0|
+------------+--------+

Si una persona viene y quiere comprar 4 medio ciento de hojas o 1 caja en realidad ¿qué procede? en realidad en STOCK no hay esas presentaciones... por lo tanto una primer opción sería NO REALIZAR LA VENTA,

pero veamos, si una caja tiene 10 paquetes de hojas y en stock hay 10 paquetes de hojas entonces, ¿se puede o no se puede hacer la venta?... y lo mismo pasa con los 4 medios cientos, en realidad podrías vender 2 cientos...

peor aun, al manejar precios distintos entonces puede ser que 1 caja te cueste $1,000, pero 10 paquetes (que en teoría es lo mismo) te cueste $1,100 entonces cómo cobrarías esta venta, como 1 caja o como 10 paquetes???

Entonces, volviendo lo que comentas, debes primero determinar cuál va a ser la política de STOCK para la empresa, y qué reglas de deben cumplir para hacer órdenes de compra...

Y vuelvo a insistir, no hay una mejor o peor forma de hacer las cosas. sé que esto puede que no ayude en nada, es sólo un punto de vista.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar