Darse de alta en la web | Recuperar password   
Inicio / Foros / MySQL / sistema de almacen _ suma de registros
2 respuestas recibidas | 130 visitas | Categoría MySQL

sistema de almacen _ suma de registros

Avatar de dantrix
Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2

(Nivel 2 - 29 posts)

#0 Offline dantrix Usuario 19 mar 08 (21:14)  
holas,
retomando el sistema de almacen que lo habia dejado por cuestion de tiempo (estaban peligrando mis cursos en al universidad), me encuentro con algunos porblemas que no habia solucionado.

la parte de movimientos de mercaderia me registra los movimientos en la siguiente tabla:
--
-- Estructura de tabla para la tabla `mov`
--

CREATE TABLE `mov` (
`mov_id` mediumint(8) NOT NULL auto_increment,
`prd_ids` mediumint(6) NOT NULL,
`mov_date` datetime NOT NULL,
`mov_qty` mediumint(6) NOT NULL,
`mov_cto` float NOT NULL,
`mov_flag` tinytext NOT NULL,
`mov_ref` varchar(20) NOT NULL,
PRIMARY KEY (`mov_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='tabla de movimientos' AUTO_INCREMENT=39 ;

registrando el id del producto, la fecha, la cantidad,el costo (unitario), el flag ( I = ingreso,S = salida), y el documento de referencia.
en el index.php el usuario indica el numero de items a mover, y el documento de referencia (mov_ref), el mov_flag se envia, si es ingreso(mov_flag = I) o salida(mov_flag = S)
en mov_ingreso.php / mov_salida.php el usuario elige el producto(prd_ids) desde un select, la cantidad de productos(mov_qty) y el costo(mov_cto). el mov_flag y mov_ref son enviados desde el index,y el mov_date es generado. el mov_id es automatico.

el problema que tengo es:
cuando quiero realizar la consulta del kardex de un producto (documento que indica los movimientos realizados de un producto, además su stock actual y su costo promedio), no he encontrado manera de poder realizarlo.

he encotrado informacion para sumar los datos de una columna, pero yo deseo sumar(cuando son ingresos) y restar(cuando son salidas).

una cosa mas, en la consulta de stock, necesito que se muestre el stock actual de los productos, cosa que seria muy dificultoso, asi que pienso que cuando se realizaen los movimientos de los productos, además de hacer el INSERT INTO enla tabla mov,. tambien realize un UPDATE a la columna cantidad de la tabal productos.
la tabla productos es la siguiente:
-- Estructura de tabla para la tabla `productos`
--

CREATE TABLE `productos` (
`prd_id` mediumint(6) NOT NULL,
`prd_des` varchar(40) NOT NULL,
`cla_id` varchar(20) NOT NULL,
`prs_id` varchar(20) NOT NULL,
`prv_id` varchar(20) NOT NULL,
PRIMARY KEY (`prd_id`),
KEY `busqueda` (`cla_id`,`prv_id`,`prs_id`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='tabla de productos';

en esta tabla agregaria: `prd_qty` int NOT NULL,
la cual amacenaria la actualizacion del stock de los productos.
se esto es factible y recomendable ya no seria necesario realizar la suma y resta de los ingresos y egresos, sino se colocaria los movimentos y en el stock actual se colocaria este campo de la tabla productos (prd_qty)

que me recomiendan?
como puedo solucionar?

la suma y resta de total según ingreso o salida

Avatar de jurena
Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5

(Nivel 5 - 729 posts)

#1 Offline jurena Usuario 20 mar 08 (21:55) Valor Valor  
Algo como esto te permitirá sacar el total, sumando los ingresos y restando las salidas. Lo que haces es condicionar la suma a positivo si el campo mov_flag es ingreso, es decir, I; y a negativo, si no lo es... Tendrás que aplicarlo a tus tablas y nombres de campos, pero creo que te funcionará.
SELECT SUM( IF( mov_flag = "I", cantidad, cantidad * -1 ) ) AS total
FROM productos

Suerte

cerrado

Avatar de dantrix
Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2

(Nivel 2 - 29 posts)

#2 Offline dantrix Usuario 08 abr 08 (19:14)  
post cerrado... problema solucionado

Responder mensaje

Para poder participar debes estar registrado e identificado. Si no estás registrado como usuario de PHP-Hispano, :: Registrar ::
Login / Password   

Web alojada en Zilos

php-hispano.net 2002 - 2008 | XHTML 1.0
Datos Legales | Webmaster