bueno en si lo que he pensado es lo siguiente hablando propiamente de tablas, una tabla para almacenar las transacciones y el detalle de esta
Código Delphi
[-]`Id` int(10) NOT NULL auto_increment,
`IdDoc` smallint(5) unsigned default NULL,
`NroDoc` char(20) default NULL,
`Fecha` datetime default NULL,
`Estado` char(12) default 'normal',
`IdLocal` tinyint(3) unsigned default NULL,
`IdCliente` mediumint(8) unsigned default NULL COMMENT 'solo para ventas',
`IdProveedor` int(11) default NULL COMMENT 'solo para compras',
`IgvRate` float unsigned default NULL,
`Total` float unsigned default NULL,
`Dcto` float unsigned default '0',
`Contado` char(1) default 's',
`Entregado` char(1) default 's',
`IdAlmacen` tinyint(3) unsigned default NULL COMMENT 'Almacén en el que se origina la operación',
`IdEmpleado` smallint(5) unsigned default NULL,
`Evento` char(3) default NULL COMMENT 'ENTrada SALida COMpra VENta TRAnslado'
donde almaceno el moviemiento que puede ser compra venta o traslado de un almacen a otro esto lo especifico en el campo evento
Código Delphi
[-] `p_transdet` (
`Id` int(11) NOT NULL auto_increment,
`IdTrans` int(10) NOT NULL,
`Movimiento` char(1) default NULL,
`IdProd` smallint(5) unsigned default NULL,
`Cantidad` int(10) unsigned default NULL,
`Costo` float unsigned default NULL,
`Presente` char(1) default NULL,
PRIMARY KEY (`Id`),
KEY `p_transdet_fk` (`IdTrans`),
KEY `p_transdet_fk1` (`IdProd`),
CONSTRAINT `p_transdet_fk` FOREIGN KEY (`IdTrans`) REFERENCES `p_trans` (`Id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `p_transdet_fk1` FOREIGN KEY (`IdProd`) REFERENCES `e_productos` (`id`)
aqui almaceno el detalle de la transaccion, por supuesto tengo las tablas clientes, productos, proveedores asi como las auxiliares, pero todo gira en torno a las tablas de transacciones y detalle de transacciones de donde saco el reporte de compras ventas almacen y el stock lo calculo a travez de un triguer en la tabla detalle de transaccion que cada vez que hay una entrada salida o lo que sea calcula el saldo del producto y lo pone en la tabla productos creo sin embargo que la estructura esta como muy centralizada que podria ser de manera mas eficiente o de repente el planteamiento seria de otro modo de cualquier forma dejo el script de mi base de datos que esta en mysql 5