From 86536f0809f7d4435a6b2d5fe9131c35be3bab3b Mon Sep 17 00:00:00 2001 From: david Date: Thu, 20 Dec 2007 21:07:01 +0000 Subject: [PATCH] =?UTF-8?q?Repaso=20a=20los=20controladores=20que=20recalc?= =?UTF-8?q?ulan=20importes=20a=20partir=20de=20los=20detalles.=20La=20posi?= =?UTF-8?q?ci=C3=B3n=20en=20la=20tabla=20de=20detalles=20se=20perd=C3=ADa?= =?UTF-8?q?=20y=20siempre=20se=20posicionaba=20en=20la=20primera=20fila=20?= =?UTF-8?q?cuando=20deb=C3=ADa=20conservarse=20su=20posici=C3=B3n.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@195 0c75b7a4-871f-7646-8a2f-f78d34cc349f --- .../Controller/uAlbaranesClienteController.pas | 12 +++++++++++- .../Model/schAlbaranesClienteClient_Intf.pas | 8 ++++---- .../Model/schAlbaranesClienteServer_Intf.pas | 8 ++++---- .../Controller/uAlbaranesProveedorController.pas | 11 ++++++++++- .../Controller/uFacturasClienteController.pas | 12 ++++++++---- .../Controller/uFacturasProveedorController.pas | 11 ++++++++++- .../Controller/uPedidosProveedorController.pas | 11 ++++++++++- 7 files changed, 57 insertions(+), 16 deletions(-) diff --git a/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteController.pas b/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteController.pas index c802ca0b..c55d4bba 100644 --- a/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteController.pas +++ b/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteController.pas @@ -1007,6 +1007,7 @@ end; procedure TAlbaranesClienteController.RecalcularImportes(AAlbaran: IBizAlbaranCliente); var bEnEdicion : Boolean; + ADetallePosAct : Integer; begin if not Assigned(AAlbaran) then raise Exception.Create ('Albarán no asignado (RecalcularImportes)'); @@ -1014,19 +1015,28 @@ begin if AAlbaran.DataTable.Active then AAlbaran.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 := AAlbaran.Detalles.POSICION; + bEnEdicion := (AAlbaran.DataTable.State in dsEditModes); if not bEnEdicion then AAlbaran.Edit; ShowHourglassCursor; - AAlbaran.Edit; try AAlbaran.IMPORTE_NETO := FDetallesController.DarTotalImporteTotal(AAlbaran.Detalles); AAlbaran.IMPORTE_PORTE := FDetallesController.DarTotalPorteTotal(AAlbaran.Detalles); + if not bEnEdicion then AAlbaran.Post; finally HideHourglassCursor; + // Restaurar la posición que teníamos en los detalles. + FDetallesController.LocalizarPosicion(AAlbaran.Detalles, ADetallePosAct); end; end; diff --git a/Source/Modulos/Albaranes de cliente/Model/schAlbaranesClienteClient_Intf.pas b/Source/Modulos/Albaranes de cliente/Model/schAlbaranesClienteClient_Intf.pas index e5aae73b..4803a60a 100644 --- a/Source/Modulos/Albaranes de cliente/Model/schAlbaranesClienteClient_Intf.pas +++ b/Source/Modulos/Albaranes de cliente/Model/schAlbaranesClienteClient_Intf.pas @@ -9,8 +9,8 @@ const { Data table rules ids Feel free to change them to something more human readable but make sure they are unique in the context of your application } - RID_AlbaranesCliente = '{4C4AED7E-9AD2-4F22-B68E-AD7B8F338052}'; - RID_AlbaranesCliente_Detalles = '{1F13B20A-918D-41E3-970E-3AC9E0E6BB9B}'; + RID_AlbaranesCliente = '{4F3DAC26-B5BE-40A1-91BA-40CD8BEE897B}'; + RID_AlbaranesCliente_Detalles = '{B3816F25-6801-4E29-AB34-4AF1CDE62250}'; { Data table names } nme_AlbaranesCliente = 'AlbaranesCliente'; @@ -133,7 +133,7 @@ const type { IAlbaranesCliente } IAlbaranesCliente = interface(IDAStronglyTypedDataTable) - ['{CC452DE4-1563-4ECC-B92C-60D8F9E3350A}'] + ['{80396348-69BF-4369-94DC-07953C3A96E7}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -624,7 +624,7 @@ type { IAlbaranesCliente_Detalles } IAlbaranesCliente_Detalles = interface(IDAStronglyTypedDataTable) - ['{CD3C0BC2-392C-4937-885E-7396FEC8D6CC}'] + ['{BACF8085-2BB1-4129-AB97-303413DC64BD}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); diff --git a/Source/Modulos/Albaranes de cliente/Model/schAlbaranesClienteServer_Intf.pas b/Source/Modulos/Albaranes de cliente/Model/schAlbaranesClienteServer_Intf.pas index 64fa159b..64088c32 100644 --- a/Source/Modulos/Albaranes de cliente/Model/schAlbaranesClienteServer_Intf.pas +++ b/Source/Modulos/Albaranes de cliente/Model/schAlbaranesClienteServer_Intf.pas @@ -9,13 +9,13 @@ const { Delta rules ids Feel free to change them to something more human readable but make sure they are unique in the context of your application } - RID_AlbaranesClienteDelta = '{14AC5B6B-A7CC-4A17-846D-4029E0864BF7}'; - RID_AlbaranesCliente_DetallesDelta = '{A1C938B1-881C-4020-8257-2103E228E798}'; + RID_AlbaranesClienteDelta = '{42ADDC93-7719-4DFF-84AF-D742A6F242D6}'; + RID_AlbaranesCliente_DetallesDelta = '{47F5BC56-134A-4CAA-95BF-D9774DFBBFD1}'; type { IAlbaranesClienteDelta } IAlbaranesClienteDelta = interface(IAlbaranesCliente) - ['{14AC5B6B-A7CC-4A17-846D-4029E0864BF7}'] + ['{42ADDC93-7719-4DFF-84AF-D742A6F242D6}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_EMPRESAValue : Integer; @@ -507,7 +507,7 @@ type { IAlbaranesCliente_DetallesDelta } IAlbaranesCliente_DetallesDelta = interface(IAlbaranesCliente_Detalles) - ['{A1C938B1-881C-4020-8257-2103E228E798}'] + ['{47F5BC56-134A-4CAA-95BF-D9774DFBBFD1}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_ALBARANValue : Integer; diff --git a/Source/Modulos/Albaranes de proveedor/Controller/uAlbaranesProveedorController.pas b/Source/Modulos/Albaranes de proveedor/Controller/uAlbaranesProveedorController.pas index 4a0aa078..afcade01 100644 --- a/Source/Modulos/Albaranes de proveedor/Controller/uAlbaranesProveedorController.pas +++ b/Source/Modulos/Albaranes de proveedor/Controller/uAlbaranesProveedorController.pas @@ -827,6 +827,7 @@ procedure TAlbaranesProveedorController.RecalcularImportes( AAlbaran: IBizAlbaranProveedor); var bEnEdicion : Boolean; + ADetallePosAct : Integer; begin if not Assigned(AAlbaran) then raise Exception.Create ('Albarán no asignado (RecalcularImportes)'); @@ -834,12 +835,18 @@ begin if AAlbaran.DataTable.Active then AAlbaran.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 := AAlbaran.Detalles.POSICION; + bEnEdicion := (AAlbaran.DataTable.State in dsEditModes); if not bEnEdicion then AAlbaran.Edit; ShowHourglassCursor; - AAlbaran.Edit; try AAlbaran.IMPORTE_NETO := FDetallesController.DarTotalImporteTotal(AAlbaran.Detalles); AAlbaran.IMPORTE_PORTE := FDetallesController.DarTotalPorteTotal(AAlbaran.Detalles); @@ -847,6 +854,8 @@ begin AAlbaran.Post; finally HideHourglassCursor; + // Restaurar la posición que teníamos en los detalles. + FDetallesController.LocalizarPosicion(AAlbaran.Detalles, ADetallePosAct); end; end; diff --git a/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas b/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas index f9d6a1dd..b7e6fc91 100644 --- a/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas +++ b/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas @@ -793,6 +793,11 @@ 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); @@ -803,14 +808,13 @@ begin try AFactura.IMPORTE_NETO := FDetallesController.DarTotalImporteTotal(AFactura.Detalles); AFactura.IMPORTE_PORTE := FDetallesController.DarTotalPorteTotal(AFactura.Detalles); - FDetallesController.LocalizarPosicion(AFactura.Detalles, ADetallePosAct); + 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; diff --git a/Source/Modulos/Facturas de proveedor/Controller/uFacturasProveedorController.pas b/Source/Modulos/Facturas de proveedor/Controller/uFacturasProveedorController.pas index 8cecfb06..ec5a422b 100644 --- a/Source/Modulos/Facturas de proveedor/Controller/uFacturasProveedorController.pas +++ b/Source/Modulos/Facturas de proveedor/Controller/uFacturasProveedorController.pas @@ -778,6 +778,7 @@ procedure TFacturasProveedorController.RecalcularImportes( FFactura: IBizFacturaProveedor); var bEnEdicion : Boolean; + ADetallePosAct : Integer; begin if not Assigned(FFactura) then raise Exception.Create ('Factura no asignada (RecalcularImportes)'); @@ -785,12 +786,18 @@ begin if FFactura.DataTable.Active then FFactura.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 := FFactura.Detalles.POSICION; + bEnEdicion := (FFactura.DataTable.State in dsEditModes); if not bEnEdicion then FFactura.Edit; ShowHourglassCursor; - FFactura.Edit; try FFactura.IMPORTE_NETO := FDetallesController.DarTotalImporteTotal(FFactura.Detalles); FFactura.IMPORTE_PORTE := FDetallesController.DarTotalPorteTotal(FFactura.Detalles); @@ -798,6 +805,8 @@ begin FFactura.Post; finally HideHourglassCursor; + // Restaurar la posición que teníamos en los detalles. + FDetallesController.LocalizarPosicion(FFactura.Detalles, ADetallePosAct); end; end; diff --git a/Source/Modulos/Pedidos a proveedor/Controller/uPedidosProveedorController.pas b/Source/Modulos/Pedidos a proveedor/Controller/uPedidosProveedorController.pas index 6e4986b2..873b3a4e 100644 --- a/Source/Modulos/Pedidos a proveedor/Controller/uPedidosProveedorController.pas +++ b/Source/Modulos/Pedidos a proveedor/Controller/uPedidosProveedorController.pas @@ -566,6 +566,7 @@ procedure TPedidosProveedorController.RecalcularImportes( APedido: IBizPedidoProveedor); var bEnEdicion : Boolean; + ADetallePosAct : Integer; begin if not Assigned(APedido) then raise Exception.Create ('Pedido no asignado (RecalcularImportes)'); @@ -573,12 +574,18 @@ begin if APedido.DataTable.Active then APedido.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 := APedido.Detalles.POSICION; + bEnEdicion := (APedido.DataTable.State in dsEditModes); if not bEnEdicion then APedido.Edit; ShowHourglassCursor; - APedido.Edit; try APedido.IMPORTE_NETO := FDetallesController.DarTotalImporteTotal(APedido.Detalles); APedido.IMPORTE_PORTE := FDetallesController.DarTotalPorteTotal(APedido.Detalles); @@ -586,6 +593,8 @@ begin APedido.Post; finally HideHourglassCursor; + // Restaurar la posición que teníamos en los detalles. + FDetallesController.LocalizarPosicion(APedido.Detalles, ADetallePosAct); end; end;