From 80cf052f337b3fdda1a0bdbf5a082d26c5d66147 Mon Sep 17 00:00:00 2001 From: david Date: Wed, 2 Jan 2008 14:28:55 +0000 Subject: [PATCH] Facturas de cliente: Arreglado error de posicionamiento al realizar el recorrido de los detalles para calcular el total de la factura. git-svn-id: https://192.168.0.254/svn/Proyectos.Acana_FactuGES2/trunk@87 f4e31baf-9722-1c47-927c-6f952f962d4b --- .../Controller/uFacturasClienteController.pas | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas b/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas index e298db0a..9ac81f46 100644 --- a/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas +++ b/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas @@ -786,6 +786,7 @@ procedure TFacturasClienteController.RecalcularImportes( AFactura: IBizFacturaCliente); var bEnEdicion : Boolean; + ADetallePosAct : Integer; begin if not Assigned(AFactura) then raise Exception.Create ('Factura no asignado (RecalcularImportes)'); @@ -793,19 +794,28 @@ begin if AFactura.DataTable.Active then AFactura.DataTable.Active := True; + { Hay que guardar la posición en la que estamos en los detalles por que + la asignación de valores a los campos IMPORTE_NETO e IMPORTE_PORTE + (ver más adelante) colocan el puntero en la tabla detalle al principio. + No he encontrado la razón por la que mueve el puntero. } + + ADetallePosAct := AFactura.Detalles.POSICION; + bEnEdicion := (AFactura.DataTable.State in dsEditModes); if not bEnEdicion then AFactura.Edit; ShowHourglassCursor; - AFactura.Edit; try AFactura.IMPORTE_NETO := FDetallesController.DarTotalImporteTotal(AFactura.Detalles); AFactura.IMPORTE_PORTE := FDetallesController.DarTotalPorteTotal(AFactura.Detalles); + if not bEnEdicion then AFactura.Post; finally HideHourglassCursor; + // Restaurar la posición que teníamos en los detalles. + FDetallesController.LocalizarPosicion(AFactura.Detalles, ADetallePosAct); end; end; @@ -1095,4 +1105,4 @@ begin end; end. - \ No newline at end of file + \ No newline at end of file