Arreglo de EditorBase para que los detalles de la cabecera realicen tambien un cancelupdates forzado para que no se queden deltas, además de arraglo del el controller de detallesbase, para que beginupdate y endupdate sean publicos y siempre que se realicen cambios en cantidad o importes de los detalles se pongan para forzar al recalculo

git-svn-id: https://192.168.0.254/svn/Proyectos.LuisLeon_FactuGES/trunk@229 c93665c3-c93d-084d-9b98-7d5f4a9c3376
This commit is contained in:
roberto 2008-05-26 14:11:46 +00:00
parent e5a936699e
commit 594d7d2347
13 changed files with 102 additions and 22 deletions

View File

@ -23,6 +23,8 @@ type
procedure Add(ADataTable: IDAStronglyTypedDataTable; TipoConcepto: Variant); procedure Add(ADataTable: IDAStronglyTypedDataTable; TipoConcepto: Variant);
procedure Delete(ADataTable: IDAStronglyTypedDataTable; Posicion: TIntegerArray); procedure Delete(ADataTable: IDAStronglyTypedDataTable; Posicion: TIntegerArray);
procedure Move(ADataTable: IDAStronglyTypedDataTable; Posicion: TIntegerArray; Posiciones: Integer); procedure Move(ADataTable: IDAStronglyTypedDataTable; Posicion: TIntegerArray; Posiciones: Integer);
procedure BeginUpdate(ADataTable: IDAStronglyTypedDataTable);
procedure EndUpdate(ADataTable: IDAStronglyTypedDataTable);
// procedure Copy(SMExport: TSMExportToClipboard); // procedure Copy(SMExport: TSMExportToClipboard);
// procedure Paste; // procedure Paste;
@ -43,8 +45,6 @@ type
procedure Renumerar(DataTable: TDADataTable; LocalizaPosicion: Integer); procedure Renumerar(DataTable: TDADataTable; LocalizaPosicion: Integer);
function DesplazarNPosiciones(DataTable: TDADataTable; NumOrdenIni: Variant; NPosiciones: Variant): Integer; function DesplazarNPosiciones(DataTable: TDADataTable; NumOrdenIni: Variant; NPosiciones: Variant): Integer;
procedure Mover(DataTable: TDADataTable; Posicion: Integer; NumPosiciones: Integer); procedure Mover(DataTable: TDADataTable; Posicion: Integer; NumPosiciones: Integer);
procedure BeginUpdate(ADataTable: IDAStronglyTypedDataTable);
procedure EndUpdate(ADataTable: IDAStronglyTypedDataTable);
//Si en los hijos existen campos a tener en cuenta se sobreescribira este metodo //Si en los hijos existen campos a tener en cuenta se sobreescribira este metodo
procedure validarCampos(DataTable: TDADataTable); virtual; procedure validarCampos(DataTable: TDADataTable); virtual;
@ -71,6 +71,8 @@ type
procedure Add(ADataTable: IDAStronglyTypedDataTable; TipoConcepto: Variant); virtual; procedure Add(ADataTable: IDAStronglyTypedDataTable; TipoConcepto: Variant); virtual;
procedure Delete(ADataTable: IDAStronglyTypedDataTable; Posicion: TIntegerArray); virtual; procedure Delete(ADataTable: IDAStronglyTypedDataTable; Posicion: TIntegerArray); virtual;
procedure Move(ADataTable: IDAStronglyTypedDataTable; Posicion: TIntegerArray; Posiciones: Integer); virtual; procedure Move(ADataTable: IDAStronglyTypedDataTable; Posicion: TIntegerArray; Posiciones: Integer); virtual;
procedure BeginUpdate(ADataTable: IDAStronglyTypedDataTable);
procedure EndUpdate(ADataTable: IDAStronglyTypedDataTable);
// procedure Copy(SMExport: TSMExportToClipboard); // procedure Copy(SMExport: TSMExportToClipboard);
// procedure Paste; // procedure Paste;
@ -348,12 +350,14 @@ end;
procedure TControllerDetallesBase.EndUpdate(ADataTable: IDAStronglyTypedDataTable); procedure TControllerDetallesBase.EndUpdate(ADataTable: IDAStronglyTypedDataTable);
begin begin
Dec(fUpdateCount); Dec(fUpdateCount);
CalcularTotales(True, ADataTable.DataTable);
ADataTable.DataTable.EnableControls;
if fUpdateCount = 0 then if fUpdateCount = 0 then
AvisarObservadores(ADataTable); begin
CalcularTotales(True, ADataTable.DataTable);
AvisarObservadores(ADataTable);
end;
ADataTable.DataTable.EnableControls;
HideHourglassCursor; HideHourglassCursor;
end; end;

View File

@ -116,6 +116,13 @@ begin
dsDataTable.DataTable.CancelUpdates; dsDataTable.DataTable.CancelUpdates;
//No funciona bien al CancelUpdates para las tablas detalle de esta forma le obligamos
dtDetails := dsDataTable.DataTable.GetDetailDataTables;
for i := 0 to dtDetails.Count - 1 do
begin
(TDADataTable(dtDetails.Items[i])).CancelUpdates;
end;
{ Comprobar si el bookmark no es válido cuando estamos cancelando la { Comprobar si el bookmark no es válido cuando estamos cancelando la
inserción de una fila nueva. inserción de una fila nueva.
CUIDADO!! Si no es válido salta una excepción. NO devuelve false!!!} CUIDADO!! Si no es válido salta una excepción. NO devuelve false!!!}

View File

@ -5,7 +5,7 @@ inherited fEditorDBItem: TfEditorDBItem
ClientHeight = 461 ClientHeight = 461
ClientWidth = 652 ClientWidth = 652
ExplicitWidth = 660 ExplicitWidth = 660
ExplicitHeight = 495 ExplicitHeight = 488
PixelsPerInch = 96 PixelsPerInch = 96
TextHeight = 13 TextHeight = 13
inherited JvNavPanelHeader: TJvNavPanelHeader inherited JvNavPanelHeader: TJvNavPanelHeader
@ -46,10 +46,6 @@ inherited fEditorDBItem: TfEditorDBItem
TabOrder = 2 TabOrder = 2
object pagGeneral: TTabSheet object pagGeneral: TTabSheet
Caption = 'General' Caption = 'General'
ExplicitLeft = 0
ExplicitTop = 0
ExplicitWidth = 0
ExplicitHeight = 0
end end
end end
inherited StatusBar: TJvStatusBar inherited StatusBar: TJvStatusBar

View File

@ -8,12 +8,15 @@
<Option Name="GUID">{D1967178-5EBB-46B2-893F-E0CADFEDD466}</Option> <Option Name="GUID">{D1967178-5EBB-46B2-893F-E0CADFEDD466}</Option>
</Option> </Option>
</PersonalityInfo> </PersonalityInfo>
<Default.Personality> <Projects> <Default.Personality>
<Projects>
<Projects Name="DataAbstract_D10.bpl">..\..\DataAbstract_D10\DataAbstract_D10.bdsproj</Projects> <Projects Name="DataAbstract_D10.bpl">..\..\DataAbstract_D10\DataAbstract_D10.bdsproj</Projects>
<Projects Name="Base.bpl">..\..\Base\Base.bdsproj</Projects> <Projects Name="Base.bpl">..\..\Base\Base.bdsproj</Projects>
<Projects Name="ControllerBase.bpl">..\..\Base\ControllerBase\ControllerBase.bdsproj</Projects> <Projects Name="ControllerBase.bpl">..\..\Base\ControllerBase\ControllerBase.bdsproj</Projects>
<Projects Name="GUIBase.bpl">..\..\Base\GUIBase\GUIBase.bdsproj</Projects> <Projects Name="GUIBase.bpl">..\..\Base\GUIBase\GUIBase.bdsproj</Projects>
<Projects Name="Contactos_view.bpl">..\Contactos\Views\Contactos_view.bdsproj</Projects> <Projects Name="Contactos_view.bpl">..\Contactos\Views\Contactos_view.bdsproj</Projects>
<Projects Name="Articulos_controller.bpl">..\Articulos\Controller\Articulos_controller.bdsproj</Projects>
<Projects Name="Articulos_view.bpl">..\Articulos\Views\Articulos_view.bdsproj</Projects> <Projects Name="Articulos_view.bpl">..\Articulos\Views\Articulos_view.bdsproj</Projects>
<Projects Name="AlbaranesProveedor_model.bpl">Model\AlbaranesProveedor_model.bdsproj</Projects> <Projects Name="AlbaranesProveedor_model.bpl">Model\AlbaranesProveedor_model.bdsproj</Projects>
<Projects Name="AlbaranesProveedor_data.bpl">Data\AlbaranesProveedor_data.bdsproj</Projects> <Projects Name="AlbaranesProveedor_data.bpl">Data\AlbaranesProveedor_data.bdsproj</Projects>
@ -23,7 +26,12 @@
<Projects Name="PedProv_AlbProv_relation.bpl">..\Relaciones\Pedidos de proveedor - Albaranes de proveedor\PedProv_AlbProv_relation.bdsproj</Projects> <Projects Name="PedProv_AlbProv_relation.bpl">..\Relaciones\Pedidos de proveedor - Albaranes de proveedor\PedProv_AlbProv_relation.bdsproj</Projects>
<Projects Name="FactuGES.exe">..\..\Cliente\FactuGES.bdsproj</Projects> <Projects Name="FactuGES.exe">..\..\Cliente\FactuGES.bdsproj</Projects>
<Projects Name="FactuGES_Server.exe">..\..\Servidor\FactuGES_Server.bdsproj</Projects> <Projects Name="FactuGES_Server.exe">..\..\Servidor\FactuGES_Server.bdsproj</Projects>
<Projects Name="Targets">DataAbstract_D10.bpl Base.bpl ControllerBase.bpl GUIBase.bpl Contactos_view.bpl Articulos_view.bpl AlbaranesProveedor_model.bpl AlbaranesProveedor_data.bpl AlbaranesProveedor_controller.bpl AlbaranesProveedor_view.bpl AlbaranesProveedor_plugin.bpl PedProv_AlbProv_relation.bpl FactuGES.exe FactuGES_Server.exe</Projects> <Projects Name="PedidosProveedor_controller.bpl">..\Pedidos a proveedor\Controller\PedidosProveedor_controller.bdsproj</Projects>
<Projects Name="AlbProv_FacProv_relation.bpl">..\Relaciones\Albaranes de proveedor - Facturas de proveedor\AlbProv_FacProv_relation.bdsproj</Projects>
<Projects Name="FacturasProveedor_controller.bpl">..\Facturas de proveedor\Controller\FacturasProveedor_controller.bdsproj</Projects>
<Projects Name="Inventario_controller.bpl">..\Inventario\Controller\Inventario_controller.bdsproj</Projects>
<Projects Name="PedidosCliente_controller.bpl">..\Pedidos de cliente\Controller\PedidosCliente_controller.bdsproj</Projects>
<Projects Name="Targets">DataAbstract_D10.bpl Base.bpl ControllerBase.bpl GUIBase.bpl Contactos_view.bpl Articulos_controller.bpl Articulos_view.bpl AlbaranesProveedor_model.bpl AlbaranesProveedor_data.bpl AlbaranesProveedor_controller.bpl AlbaranesProveedor_view.bpl AlbaranesProveedor_plugin.bpl PedProv_AlbProv_relation.bpl FactuGES.exe FactuGES_Server.exe PedidosProveedor_controller.bpl AlbProv_FacProv_relation.bpl FacturasProveedor_controller.bpl Inventario_controller.bpl PedidosCliente_controller.bpl</Projects>
</Projects> </Projects>
<Dependencies/> <Dependencies/>
</Default.Personality> </Default.Personality>

View File

@ -202,6 +202,11 @@ begin
ADetallesController := TDetallesAlbaranProveedorController.Create; ADetallesController := TDetallesAlbaranProveedorController.Create;
AArticulosController := TArticulosController.Create; AArticulosController := TArticulosController.Create;
try try
//OJO IMPORTANTE
//Siempre que vayamos a trabajar con los detalles debemos hacer un beginupdate de los mismos y un endupdate para
//obligarle siempre a recalcular los detalles una sola vez
ADetallesController.BeginUpdate(ADetalles);
AInventarioRecibido.DataTable.First; AInventarioRecibido.DataTable.First;
for i := 0 to AInventarioRecibido.DataTable.RecordCount - 1 do for i := 0 to AInventarioRecibido.DataTable.RecordCount - 1 do
begin begin
@ -217,8 +222,9 @@ begin
ADetallesController.AnadirArticulo(ADetalles, AInventarioRecibido.ID_ARTICULO); ADetallesController.AnadirArticulo(ADetalles, AInventarioRecibido.ID_ARTICULO);
ADetalles.Edit; ADetalles.Edit;
APedido.Detalles.First; APedido.Detalles.First;
//Se cambia porque puede haber articulos del pedido que no tengan referencia de proveedor //Se cambia porque puede haber articulos del pedido que no tengan referencia de proveedor
// if not APedido.Detalles.DataTable.Locate(fld_ArticulosREFERENCIA, ADetalles.REFERENCIA, []) then // if not APedido.Detalles.DataTable.Locate(fld_ArticulosREFERENCIA, ADetalles.REFERENCIA, []) then
if not APedido.Detalles.DataTable.Locate(fld_INVENTARIOID_ARTICULO, ADetalles.ID_ARTICULO, []) then if not APedido.Detalles.DataTable.Locate(fld_INVENTARIOID_ARTICULO, ADetalles.ID_ARTICULO, []) then
raise Exception.Create(Format('No se ha encontrado el artículo del pedido con REFERENCIA %s (CopiarArticulosAAlbaran)', [ADetalles.REFERENCIA])); raise Exception.Create(Format('No se ha encontrado el artículo del pedido con REFERENCIA %s (CopiarArticulosAAlbaran)', [ADetalles.REFERENCIA]));
@ -232,8 +238,8 @@ begin
AInventarioRecibido.Next; AInventarioRecibido.Next;
end; end;
finally finally
ADetallesController.EndUpdate(ADetalles);
ADetallesController := NIL; ADetallesController := NIL;
AArticulosController := NIL; AArticulosController := NIL;
end; end;
@ -241,11 +247,16 @@ begin
else begin else begin
// AInventarioRecibido = NIL // AInventarioRecibido = NIL
// El albarán tiene que venir ya abierto y posicionado donde hay que copiar
ADetalles := AAlbaran.Detalles;
ADetallesController := TDetallesAlbaranProveedorController.Create; ADetallesController := TDetallesAlbaranProveedorController.Create;
AArticulosController := TArticulosController.Create; AArticulosController := TArticulosController.Create;
// El albarán tiene que venir ya abierto y posicionado donde hay que copiar
ADetalles := AAlbaran.Detalles;
//OJO IMPORTANTE
//Siempre que vayamos a trabajar con los detalles debemos hacer un beginupdate de los mismos y un endupdate para
//obligarle siempre a recalcular los detalles una sola vez
ADetallesController.BeginUpdate(ADetalles);
try try
APedido.Detalles.DataTable.First; APedido.Detalles.DataTable.First;
for i := 0 to APedido.Detalles.DataTable.RecordCount - 1 do for i := 0 to APedido.Detalles.DataTable.RecordCount - 1 do
@ -270,10 +281,8 @@ begin
APedido.Detalles.Next; APedido.Detalles.Next;
end; end;
//Obligamos a actualizar los totales para que asi los importes totales de los artículos
//se recalculen y actualicen
ADetallesController.ActualizarTotales(ADetalles);
finally finally
ADetallesController.EndUpdate(ADetalles);
ADetallesController := NIL; ADetallesController := NIL;
AArticulosController := NIL; AArticulosController := NIL;
end; end;

View File

@ -144,6 +144,11 @@ begin
ADetallesController := TDetallesFacturaClienteController.Create; ADetallesController := TDetallesFacturaClienteController.Create;
try try
//OJO IMPORTANTE
//Siempre que vayamos a trabajar con los detalles debemos hacer un beginupdate de los mismos y un endupdate para
//obligarle siempre a recalcular los detalles una sola vez
ADetallesController.BeginUpdate(ADestino);
AOrigen.DataTable.First; AOrigen.DataTable.First;
for i := 0 to AOrigen.DataTable.RecordCount - 1 do for i := 0 to AOrigen.DataTable.RecordCount - 1 do
begin begin
@ -164,6 +169,7 @@ begin
AOrigen.Next; AOrigen.Next;
end; end;
finally finally
ADetallesController.EndUpdate(ADestino);
ADetallesController := NIL; ADetallesController := NIL;
end; end;
end; end;
@ -189,6 +195,11 @@ begin
ADetallesController := TDetallesFacturaClienteController.Create; ADetallesController := TDetallesFacturaClienteController.Create;
try try
//OJO IMPORTANTE
//Siempre que vayamos a trabajar con los detalles debemos hacer un beginupdate de los mismos y un endupdate para
//obligarle siempre a recalcular los detalles una sola vez
ADetallesController.BeginUpdate(ADestino);
AOrigen.DataTable.First; AOrigen.DataTable.First;
for i := 0 to AOrigen.DataTable.RecordCount - 1 do for i := 0 to AOrigen.DataTable.RecordCount - 1 do
begin begin
@ -209,6 +220,7 @@ begin
AOrigen.Next; AOrigen.Next;
end; end;
finally finally
ADetallesController.EndUpdate(ADestino);
ADetallesController := NIL; ADetallesController := NIL;
end; end;
end; end;
@ -303,6 +315,8 @@ begin
// Ya tengo la factura. Le añado los conceptos del albarán // Ya tengo la factura. Le añado los conceptos del albarán
AFacturaActual.Detalles.DataTable.Last; AFacturaActual.Detalles.DataTable.Last;
//Aqui no hace falta BeginUpdate y EndUpdate de los detalles, porque siempre se
//añade una linea en blanco al final que hace que nos recalcule todo
// Añado el título // Añado el título
Self.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_TITULO); Self.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_TITULO);
with AFacturaActual.Detalles do with AFacturaActual.Detalles do

View File

@ -142,6 +142,11 @@ begin
ADetallesController := TDetallesFacturaProveedorController.Create; ADetallesController := TDetallesFacturaProveedorController.Create;
try try
//OJO IMPORTANTE
//Siempre que vayamos a trabajar con los detalles debemos hacer un beginupdate de los mismos y un endupdate para
//obligarle siempre a recalcular los detalles una sola vez
ADetallesController.BeginUpdate(ADestino);
AOrigen.DataTable.First; AOrigen.DataTable.First;
for i := 0 to AOrigen.DataTable.RecordCount - 1 do for i := 0 to AOrigen.DataTable.RecordCount - 1 do
begin begin
@ -162,6 +167,7 @@ begin
AOrigen.Next; AOrigen.Next;
end; end;
finally finally
ADetallesController.EndUpdate(ADestino);
ADetallesController := NIL; ADetallesController := NIL;
end; end;
end; end;
@ -186,6 +192,11 @@ begin
ADetallesController := TDetallesFacturaProveedorController.Create; ADetallesController := TDetallesFacturaProveedorController.Create;
try try
//OJO IMPORTANTE
//Siempre que vayamos a trabajar con los detalles debemos hacer un beginupdate de los mismos y un endupdate para
//obligarle siempre a recalcular los detalles una sola vez
ADetallesController.BeginUpdate(ADestino);
AOrigen.DataTable.First; AOrigen.DataTable.First;
for i := 0 to AOrigen.DataTable.RecordCount - 1 do for i := 0 to AOrigen.DataTable.RecordCount - 1 do
begin begin
@ -206,6 +217,7 @@ begin
AOrigen.Next; AOrigen.Next;
end; end;
finally finally
ADetallesController.EndUpdate(ADestino);
ADetallesController := NIL; ADetallesController := NIL;
end; end;
end; end;
@ -297,6 +309,8 @@ begin
// Ya tengo la factura. Le añado los conceptos del albarán // Ya tengo la factura. Le añado los conceptos del albarán
AFacturaActual.Detalles.DataTable.Last; AFacturaActual.Detalles.DataTable.Last;
//Aqui no hace falta BeginUpdate y EndUpdate de los detalles, porque siempre se
//añade una linea en blanco al final que hace que nos recalcule todo
// Añado el título // Añado el título
Self.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_TITULO); Self.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_TITULO);
with AFacturaActual.Detalles do with AFacturaActual.Detalles do

View File

@ -100,6 +100,11 @@ begin
ADetalles := AAlbaran.Detalles; ADetalles := AAlbaran.Detalles;
ADetallesController := TDetallesAlbaranClienteController.Create; ADetallesController := TDetallesAlbaranClienteController.Create;
try try
//OJO IMPORTANTE
//Siempre que vayamos a trabajar con los detalles debemos hacer un beginupdate de los mismos y un endupdate para
//obligarle siempre a recalcular los detalles una sola vez
ADetallesController.BeginUpdate(ADetalles);
AArticulosPendientes.DataTable.First; AArticulosPendientes.DataTable.First;
for i := 0 to AArticulosPendientes.DataTable.RecordCount - 1 do for i := 0 to AArticulosPendientes.DataTable.RecordCount - 1 do
begin begin
@ -125,6 +130,7 @@ begin
end; end;
end; end;
finally finally
ADetallesController.EndUpdate(ADetalles);
ADetallesController := NIL; ADetallesController := NIL;
end; end;
end; end;
@ -302,6 +308,7 @@ begin
AAlbaranes := AAlbaranesClienteController.Nuevo; AAlbaranes := AAlbaranesClienteController.Nuevo;
InicializarAlbaran(AAlbaranes, ACliente, AArticulos); InicializarAlbaran(AAlbaranes, ACliente, AArticulos);
//Aqui no es necesario BeginUpdate y EndUpdate de los detalles porque siempre añadimos una linea al final.
// Añado el título del pedido ya que siempre tendremos al menos un concepto de pedido // Añado el título del pedido ya que siempre tendremos al menos un concepto de pedido
ADetallesAlbaranesCliController.Add(AAlbaranes.Detalles, TIPO_DETALLE_TITULO); ADetallesAlbaranesCliController.Add(AAlbaranes.Detalles, TIPO_DETALLE_TITULO);
with AAlbaranes.Detalles do with AAlbaranes.Detalles do

View File

@ -122,6 +122,11 @@ begin
APedidoProv.ID_PEDIDO_CLIENTE := APedidoCli.ID; APedidoProv.ID_PEDIDO_CLIENTE := APedidoCli.ID;
end; end;
//OJO IMPORTANTE
//Siempre que vayamos a trabajar con los detalles debemos hacer un beginupdate de los mismos y un endupdate para
//obligarle siempre a recalcular los detalles una sola vez
ADetallesPedidosProvController.BeginUpdate(APedidoProv.Detalles);
ADetallesPedidosProvController.Add(APedidoProv.Detalles, TIPO_DETALLE_CONCEPTO); ADetallesPedidosProvController.Add(APedidoProv.Detalles, TIPO_DETALLE_CONCEPTO);
ADetallesPedidosProvController.AnadirArticulo(APedidoProv.Detalles, AArticulosPend.ID_ARTICULO); ADetallesPedidosProvController.AnadirArticulo(APedidoProv.Detalles, AArticulosPend.ID_ARTICULO);
with APedidoProv.Detalles do with APedidoProv.Detalles do
@ -131,6 +136,8 @@ begin
Post; Post;
end; end;
AArticulosPend.DataTable.Next; AArticulosPend.DataTable.Next;
ADetallesPedidosProvController.EndUpdate(APedidoProv.Detalles);
end; end;
if Assigned(APedidoProv) then if Assigned(APedidoProv) then

View File

@ -97,6 +97,11 @@ begin
ADetalles := AAlbaran.Detalles; ADetalles := AAlbaran.Detalles;
ADetallesController := TDetallesAlbaranProveedorController.Create; ADetallesController := TDetallesAlbaranProveedorController.Create;
try try
//OJO IMPORTANTE
//Siempre que vayamos a trabajar con los detalles debemos hacer un beginupdate de los mismos y un endupdate para
//obligarle siempre a recalcular los detalles una sola vez
ADetallesController.BeginUpdate(ADetalles);
AArticulosPendientes.DataTable.First; AArticulosPendientes.DataTable.First;
for i := 0 to AArticulosPendientes.DataTable.RecordCount - 1 do for i := 0 to AArticulosPendientes.DataTable.RecordCount - 1 do
begin begin
@ -122,6 +127,7 @@ begin
end; end;
end; end;
finally finally
ADetallesController.EndUpdate(ADetalles);
ADetallesController := NIL; ADetallesController := NIL;
end; end;
end; end;

View File

@ -76,6 +76,11 @@ begin
Post; Post;
end; end;
//OJO IMPORTANTE
//Siempre que vayamos a trabajar con los detalles debemos hacer un beginupdate de los mismos y un endupdate para
//obligarle siempre a recalcular los detalles una sola vez
ADetallesController.BeginUpdate(APedido.Detalles);
AOSCOrder.OrderProducts.DataTable.First; AOSCOrder.OrderProducts.DataTable.First;
for i := 0 to AOSCOrder.OrderProducts.DataTable.RecordCount - 1 do for i := 0 to AOSCOrder.OrderProducts.DataTable.RecordCount - 1 do
begin begin
@ -85,11 +90,14 @@ begin
Resultado := ADetallesController.AnadirArticulo(APedido.Detalles, AOSCOrder.OrderProducts.rdx_products_id_local, AOSCOrder.rdx_customers_id_local); Resultado := ADetallesController.AnadirArticulo(APedido.Detalles, AOSCOrder.OrderProducts.rdx_products_id_local, AOSCOrder.rdx_customers_id_local);
APedido.Detalles.Edit; APedido.Detalles.Edit;
APedido.Detalles.CANTIDAD := AOSCOrder.OrderProducts.products_quantity; APedido.Detalles.CANTIDAD := AOSCOrder.OrderProducts.products_quantity;
APedido.Detalles.Post; APedido.Detalles.Post;
Result := Result AND Resultado; Result := Result AND Resultado;
AOSCOrder.OrderProducts.DataTable.Next; AOSCOrder.OrderProducts.DataTable.Next;
end; end;
//Se recalcula todos los detalles
ADetallesController.EndUpdate(APedido.Detalles);
// Guardo el pedido // Guardo el pedido
APedidosController.Guardar(APedido); APedidosController.Guardar(APedido);

View File

@ -16,7 +16,7 @@ BEGIN
VALUE "FileVersion", "2.8.0.0\0" VALUE "FileVersion", "2.8.0.0\0"
VALUE "ProductName", "FactuGES Server\0" VALUE "ProductName", "FactuGES Server\0"
VALUE "ProductVersion", "2.8.0.0\0" VALUE "ProductVersion", "2.8.0.0\0"
VALUE "CompileDate", "jueves, 24 de abril de 2008 19:10\0" VALUE "CompileDate", "lunes, 26 de mayo de 2008 15:50\0"
END END
END END
BLOCK "VarFileInfo" BLOCK "VarFileInfo"

Binary file not shown.