Tengo un procedimiento almacenado en MySQL que me saca un detalle de una tabla sumando las entradas y salidas ordenados por fecha y hora, el problema esta en que la sumatoria esta bien pero lo muestra desordenado. Si se dan cuenta en la imagen en la columna saldo del grid empieza con 10 a la segunda fila deberia ser 87 y luego 139 pero por alguna razon lo saca mal, pero en otras registros si lo saca bien.
BEGIN
SET @lnSaldo := 0.00;
SELECT CajaID, 0 CorteID, '' OrigenID, DATE(Fecha) Fecha, DATE_FORMAT(Fecha, '%h:%i %p') Hora, 'INICIAL' Concepto, '' Glosa, '' DocumentoID,
'' NumDocumento, 0 Importe, '' UniqueID, '' Tipo, 0 TipoPagoID, '' TipoPago, 0 Estado, TRUNCATE(@lnSaldo := Inicial, 3) Saldo, Fecha Registro
FROM cajas
WHERE CajaID = tnCajaID
UNION ALL
SELECT a.CajaID, a.CorteID, a.OrigenID, DATE(a.Fecha) Fecha, DATE_FORMAT(a.Fecha, '%h:%i %p') Hora, a.Concepto, a.Glosa, a.DocumentoID,
a.NumDocumento, a.Importe, a.UniqueID, a.Tipo, a.TipoPagoID, b.TipoPago, a.Estado,
TRUNCATE(@lnSaldo := @lnSaldo + IF(a.Tipo = 'E', a.Importe, -a.Importe) * IF(a.Estado = 1, 0, 1), 3) Saldo, a.Fecha Registro
FROM cajas_lineas a
LEFT JOIN tipopago b ON a.TipoPagoID = b.TipoPagoID
WHERE a.CajaID = tnCajaID
ORDER BY Registro ASC;
END