diff --git a/Build/Build.fbl6 b/Build/Build.fbl6 index 46e01ab..7108404 100644 Binary files a/Build/Build.fbl6 and b/Build/Build.fbl6 differ diff --git a/Source/Base/Base.dproj b/Source/Base/Base.dproj index 43a4e67..305ee45 100644 --- a/Source/Base/Base.dproj +++ b/Source/Base/Base.dproj @@ -58,63 +58,63 @@
DataModuleImpresiones
TDataModule - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DataModuleRegistroCorreos
TDataModule
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
fConfigurarConexion
TForm diff --git a/Source/Modulos/Pedidos de cliente/Controller/PedidosCliente_controller.drc b/Source/Modulos/Pedidos de cliente/Controller/PedidosCliente_controller.drc index f9dbe0c..49f8c42 100644 --- a/Source/Modulos/Pedidos de cliente/Controller/PedidosCliente_controller.drc +++ b/Source/Modulos/Pedidos de cliente/Controller/PedidosCliente_controller.drc @@ -13,4 +13,4 @@ BEGIN END /* C:\Codigo\Source\Modulos\Pedidos de cliente\Controller\PedidosCliente_controller.RES */ -/* c:\temp\dtf8F.tmp */ +/* c:\temp\dtf8A.tmp */ diff --git a/Source/Modulos/Pedidos de cliente/Data/PedidosCliente_data.drc b/Source/Modulos/Pedidos de cliente/Data/PedidosCliente_data.drc index 8dd0f0e..d960457 100644 --- a/Source/Modulos/Pedidos de cliente/Data/PedidosCliente_data.drc +++ b/Source/Modulos/Pedidos de cliente/Data/PedidosCliente_data.drc @@ -14,4 +14,4 @@ END /* C:\Codigo\Source\Modulos\Pedidos de cliente\Data\uDataModulePedidosCliente.dfm */ /* C:\Codigo\Source\Modulos\Pedidos de cliente\Data\PedidosCliente_data.RES */ -/* c:\temp\dtf8D.tmp */ +/* c:\temp\dtf88.tmp */ diff --git a/Source/Modulos/Pedidos de cliente/Model/PedidosCliente_model.drc b/Source/Modulos/Pedidos de cliente/Model/PedidosCliente_model.drc index e8f7825..58a74c3 100644 --- a/Source/Modulos/Pedidos de cliente/Model/PedidosCliente_model.drc +++ b/Source/Modulos/Pedidos de cliente/Model/PedidosCliente_model.drc @@ -13,4 +13,4 @@ BEGIN END /* C:\Codigo\Source\Modulos\Pedidos de cliente\Model\PedidosCliente_model.RES */ -/* c:\temp\dtf8B.tmp */ +/* c:\temp\dtf86.tmp */ diff --git a/Source/Modulos/Pedidos de cliente/Plugin/PedidosCliente_plugin.drc b/Source/Modulos/Pedidos de cliente/Plugin/PedidosCliente_plugin.drc index 0693d1e..2843f9c 100644 --- a/Source/Modulos/Pedidos de cliente/Plugin/PedidosCliente_plugin.drc +++ b/Source/Modulos/Pedidos de cliente/Plugin/PedidosCliente_plugin.drc @@ -14,4 +14,4 @@ END /* C:\Codigo\Source\Modulos\Pedidos de cliente\Plugin\uPluginPedidosCliente.dfm */ /* C:\Codigo\Source\Modulos\Pedidos de cliente\Plugin\PedidosCliente_plugin.RES */ -/* c:\temp\dtfF3.tmp */ +/* c:\temp\dtfF2.tmp */ diff --git a/Source/Modulos/Pedidos de cliente/Views/PedidosCliente_view.drc b/Source/Modulos/Pedidos de cliente/Views/PedidosCliente_view.drc index e55e62f..4d912bb 100644 --- a/Source/Modulos/Pedidos de cliente/Views/PedidosCliente_view.drc +++ b/Source/Modulos/Pedidos de cliente/Views/PedidosCliente_view.drc @@ -26,4 +26,4 @@ END /* C:\Codigo\Source\Modulos\Pedidos de cliente\Views\uEditorElegirArticulosPedidoCliente.dfm */ /* C:\Codigo\Source\Modulos\Pedidos de cliente\Views\uEditorDireccionEntregaPedidoCliente.dfm */ /* C:\Codigo\Source\Modulos\Pedidos de cliente\Views\PedidosCliente_view.RES */ -/* c:\temp\dtfF1.tmp */ +/* c:\temp\dtfF0.tmp */ diff --git a/Source/Modulos/Tienda web/Controller/Utiles/uActualizarClientesUtils.pas b/Source/Modulos/Tienda web/Controller/Utiles/uActualizarClientesUtils.pas index f69e164..bb6d292 100644 --- a/Source/Modulos/Tienda web/Controller/Utiles/uActualizarClientesUtils.pas +++ b/Source/Modulos/Tienda web/Controller/Utiles/uActualizarClientesUtils.pas @@ -348,9 +348,9 @@ var i : Integer; j : Integer; - //ADlg : TJSDialog; +// ADlg : TJSDialog; Resultado : Boolean; - s : String; +// s : String; ACustomerList : TIntegerList; AIndex : Integer; @@ -364,8 +364,8 @@ begin AOSCCustomerController := TOscCustomersController.Create; ACustomerList := TIntegerList.Create; - - {ADlg := TJSDialog.Create(Application); + +{ ADlg := TJSDialog.Create(Application); with ADlg do begin Title := 'Actualización de clientes'; @@ -378,7 +378,7 @@ begin Expando.ShowInFooter := True; Expando.ShowText := 'Ver más detalles...'; Expando.HideText := 'Ocultar detalles...'; - Progress.Max := 100; + Progress.Max := 100; end;} AClientes := (AClientesController.BuscarTodosTiendaWeb as IBizCliente); @@ -389,11 +389,11 @@ begin AOSCCustomers.DataTable.Active := True; AOSCCustomers.DataTable.First; - {if AClientes.DataTable.RecordCount > 0 then +{ if AClientes.DataTable.RecordCount > 0 then ADlg.Progress.Max := AClientes.DataTable.RecordCount; - ADlg.Execute; - } + ADlg.Execute;} + {s := ''; AOSCCustomers.DataTable.First; @@ -407,7 +407,7 @@ begin for I := 0 to AClientes.DataTable.RecordCount - 1 do begin Application.ProcessMessages; - {with ADlg do +{ with ADlg do begin Content.Text := Format('Progreso: %d%%', [Progress.Position*100 div ADlg.Progress.Max]); UpdateProgress; @@ -416,28 +416,28 @@ begin if not AOSCCustomerController.Localizar(AOSCCustomers, AClientes.ID) then begin - s := Format('Añadiendo %s... ', [AClientes.NOMBRE]); + //s := Format('Añadiendo %s... ', [AClientes.NOMBRE]); Resultado := AnadirOSCCustomer(AOSCCustomers, AClientes); - if Resultado then + {if Resultado then s := s + 'OK' else - s := s + 'Fallo'; + s := s + 'Fallo';} end else begin if HayCambiosPendientes(AClientes, AOSCCustomers, ATiendaWeb.ULTIMA_ACTUALIZACION) then begin - s := Format('Actualizando %s... ', [AClientes.NOMBRE]); + //s := Format('Actualizando %s... ', [AClientes.NOMBRE]); Resultado := ActualizarOSCCustomer(AOSCCustomers, AClientes); - if Resultado then + {if Resultado then s := s + 'OK' else - s := s + 'Fallo'; + s := s + 'Fallo';} end - else - s := Format('%s sin cambios', [AClientes.NOMBRE]); + {else + s := Format('%s sin cambios', [AClientes.NOMBRE]);} end; - //ADlg.Expando.Lines.Add(s); +// ADlg.Expando.Lines.Add(s); ACustomerList.Add(AClientes.ID); AClientes.DataTable.Next; end; @@ -449,8 +449,8 @@ begin Application.ProcessMessages; if not ACustomerList.Find(AOSCCustomers.rdx_customers_id_local, AIndex) then begin - s := Format('Eliminado %s... ', [AOSCCustomers.customers_firstname]); - //ADlg.Expando.Lines.Add(s); + //s := Format('Eliminado %s... ', [AOSCCustomers.customers_firstname]); +// ADlg.Expando.Lines.Add(s); AOSCCustomers.Delete; end; AOSCCustomers.Prior; @@ -461,7 +461,7 @@ begin Application.ProcessMessages; Result := True; finally - {ADlg.Close; +{ ADlg.Close; FreeAndNIL(ADlg);} FreeAndNIL(ACustomerList); diff --git a/Source/Modulos/Tienda web/Controller/Utiles/uActualizarProveedoresUtils.pas b/Source/Modulos/Tienda web/Controller/Utiles/uActualizarProveedoresUtils.pas index 9b7bf73..bad41ad 100644 --- a/Source/Modulos/Tienda web/Controller/Utiles/uActualizarProveedoresUtils.pas +++ b/Source/Modulos/Tienda web/Controller/Utiles/uActualizarProveedoresUtils.pas @@ -108,7 +108,7 @@ var //ADlg : TJSDialog; Resultado : Boolean; - s : String; +// s : String; AManufacturerList : TIntegerList; AIndex : Integer; @@ -164,25 +164,25 @@ begin if not AOSCManufacturerController.Localizar(AOSCManufacturers, AProveedores.ID) then begin - s := Format('Añadiendo %s... ', [AProveedores.NOMBRE]); + //s := Format('Añadiendo %s... ', [AProveedores.NOMBRE]); Resultado := AnadirOSCManufacturer(AOSCManufacturers, AProveedores); - if Resultado then + {if Resultado then s := s + 'OK' else - s := s + 'Fallo'; + s := s + 'Fallo';} end else begin if HayCambiosPendientes(AProveedores, ATiendaWeb.ULTIMA_ACTUALIZACION) then begin - s := Format('Actualizando %s... ', [AProveedores.NOMBRE]); + //s := Format('Actualizando %s... ', [AProveedores.NOMBRE]); Resultado := ActualizarOSCManufacturer(AOSCManufacturers, AProveedores); - if Resultado then + {if Resultado then s := s + 'OK' else - s := s + 'Fallo'; + s := s + 'Fallo';} end - else - s := Format('%s sin cambios', [AProveedores.NOMBRE]); +{ else + s := Format('%s sin cambios', [AProveedores.NOMBRE]);} end; //ADlg.Expando.Lines.Add(s); @@ -205,7 +205,7 @@ begin Application.ProcessMessages; if not AManufacturerList.Find(AOSCManufacturers.rdx_manufacturers_id_local, AIndex) then begin - s := Format('Eliminado %s... ', [AOSCManufacturers.manufacturers_name]); + //s := Format('Eliminado %s... ', [AOSCManufacturers.manufacturers_name]); //ADlg.Expando.Lines.Add(s); AOSCManufacturers.Delete; end; @@ -220,7 +220,6 @@ begin FreeAndNIL(ADlg); Application.ProcessMessages;} - FreeAndNIL(AManufacturerList); AProveedores.DataTable.Active := False; diff --git a/Source/Modulos/Tienda web/Controller/uOscCustomersController.pas b/Source/Modulos/Tienda web/Controller/uOscCustomersController.pas index 2b72dfa..33ce6b7 100644 --- a/Source/Modulos/Tienda web/Controller/uOscCustomersController.pas +++ b/Source/Modulos/Tienda web/Controller/uOscCustomersController.pas @@ -376,12 +376,13 @@ begin begin ShowHourglassCursor; try - if AOscCustomers.EsNuevo then + {if AOscCustomers.EsNuevo then NuevoID := FDataModule.GetNextIDOSC('customers') else NuevoID := AOscCustomers.customers_id; - AsignarID(AOscCustomers, NuevoID); + AsignarID(AOscCustomers, NuevoID);} + AOscCustomers.DataTable.ApplyUpdates; Result := True; diff --git a/Source/Modulos/Tienda web/Controller/uOscManufacturersController.pas b/Source/Modulos/Tienda web/Controller/uOscManufacturersController.pas index 6866b32..26cc4f1 100644 --- a/Source/Modulos/Tienda web/Controller/uOscManufacturersController.pas +++ b/Source/Modulos/Tienda web/Controller/uOscManufacturersController.pas @@ -375,10 +375,10 @@ begin try { if AOscManufacturers.EsNuevo then NuevoID := FDataModule.GetNextID(AOscManufacturers.DataTable.LogicalName) - else} + else NuevoID := AOscManufacturers.manufacturers_id; - AsignarID(AOscManufacturers, NuevoID); + AsignarID(AOscManufacturers, NuevoID);} AOscManufacturers.DataTable.ApplyUpdates; Result := True; diff --git a/Source/Modulos/Tienda web/Controller/uOscOrdersController.pas b/Source/Modulos/Tienda web/Controller/uOscOrdersController.pas index 99c96fc..c93c1ab 100644 --- a/Source/Modulos/Tienda web/Controller/uOscOrdersController.pas +++ b/Source/Modulos/Tienda web/Controller/uOscOrdersController.pas @@ -354,13 +354,13 @@ begin begin ShowHourglassCursor; try - if AOscOrders.EsNuevo then +{ if AOscOrders.EsNuevo then NuevoID := FDataModule.GetNextIDOSC('customers') else NuevoID := AOscOrders.customers_id; AsignarID(AOscOrders, NuevoID); - showmessage('voy a applyupdates'); + showmessage('voy a applyupdates');} AOscOrders.DataTable.ApplyUpdates; Result := True; diff --git a/Source/Modulos/Tienda web/Controller/uTiendaWebController.pas b/Source/Modulos/Tienda web/Controller/uTiendaWebController.pas index ce551c5..40c81a4 100644 --- a/Source/Modulos/Tienda web/Controller/uTiendaWebController.pas +++ b/Source/Modulos/Tienda web/Controller/uTiendaWebController.pas @@ -39,12 +39,7 @@ type function Buscar(const ID_Empresa: Integer): IBizTiendaWeb; function Ver(ATiendaWeb: IBizTiendaWeb) : Integer; - function HayConexionConTienda: Boolean; - - {function HayConexionConTienda(ATiendaWeb : IBizTiendaWeb): Boolean; overload; - function HayConexionConTienda(const ABDServer : String; - const ABDName : String; const ABDUser : String; - const ABDPass : String): Boolean; overload;} + function HayConexionConTienda: Boolean; function ActualizarTienda(ATiendaWeb : IBizTiendaWeb): Boolean; function DescargarPedidos(ATiendaWeb : IBizTiendaWeb): Boolean; @@ -73,11 +68,7 @@ type function Buscar(const ID_Empresa: Integer): IBizTiendaWeb; function Ver(ATiendaWeb: IBizTiendaWeb) : Integer; - function HayConexionConTienda: Boolean; - {function HayConexionConTienda(ATiendaWeb : IBizTiendaWeb): Boolean; overload; - function HayConexionConTienda(const ABDServer : String; - const ABDName : String; const ABDUser : String; - const ABDPass : String): Boolean; overload;} + function HayConexionConTienda: Boolean; function ActualizarTienda(ATiendaWeb : IBizTiendaWeb): Boolean; function DescargarPedidos(ATiendaWeb : IBizTiendaWeb): Boolean; @@ -449,14 +440,8 @@ begin begin ShowHourglassCursor; try - if ATiendaWeb.EsNuevo then - NuevoID := FDataModule.GetNextID(ATiendaWeb.DataTable.LogicalName) - else - NuevoID := ATiendaWeb.ID; - - AsignarID(ATiendaWeb, NuevoID); ATiendaWeb.DataTable.ApplyUpdates; - + Result := True; finally HideHourglassCursor; @@ -470,62 +455,5 @@ begin Result := FDataModule.HayConexionConTienda; end; -{function TTiendaWebController.HayConexionConTienda( - ATiendaWeb: IBizTiendaWeb): Boolean; -begin - if not Assigned(ATiendaWeb) then - raise Exception.Create ('TiendaWeb no asignada'); - - with ATiendaWeb do - begin - DataTable.Active := True; - Result := Self.HayConexionConTienda(BDSERVER, BDNAME, BDUSER, BDPASS); - end; -end; - -function TTiendaWebController.HayConexionConTienda( - const ABDServer : String; const ABDName : String; - const ABDUser : String; const ABDPass : String): Boolean; -var - SQLConnection1: TSQLConnection; -begin - SQLConnection1 := TSQLConnection.Create(nil); - try - with SQLConnection1 do - begin - Name := 'SQLConnection1'; - ConnectionName := 'MySQLConnection'; - DriverName := 'MySQL'; - GetDriverFunc := 'getSQLDriverMYSQL'; - LibraryName := 'dbxmys30.dll'; - LoginPrompt := False; - with Params do - begin - Clear; - Add('BlobSize=-1'); - Add('DriverName=MySQL'); - Add('ErrorResourceFile='); - Add('LocaleCode=0000'); - Add('Compressed=True'); - Add('Encrypted=True'); - Add('Database=' + ABDName); - Add('HostName=' + ABDServer); - Add('User_Name=' + ABDUser); - Add('Password=' + ABDPass); - end; - VendorLib := 'LIBMYSQL.dll'; - - try - Connected := True; - Result := True; - Connected := False; - except - Result := False; - end; - end; - finally - FreeAndNIL(SQLConnection1); - end; -end;} end. diff --git a/Source/Modulos/Tienda web/Data/TiendaWeb_data.drc b/Source/Modulos/Tienda web/Data/TiendaWeb_data.drc index 6a07b2b..ac2569a 100644 --- a/Source/Modulos/Tienda web/Data/TiendaWeb_data.drc +++ b/Source/Modulos/Tienda web/Data/TiendaWeb_data.drc @@ -12,6 +12,6 @@ STRINGTABLE BEGIN END -/* C:\Codigo\Source\Modulos\Tienda web\Data\uDataModuleTiendaWeb.dfm */ +/* C:\Codigo\Source\Modulos\Tienda web\Data\uDataModuleTiendaWeb.DFM */ /* C:\Codigo\Source\Modulos\Tienda web\Data\TiendaWeb_data.res */ -/* c:\temp\dtfA5.tmp */ +/* C:\Codigo\Source\Modulos\Tienda web\Data\TiendaWeb_data.drf */ diff --git a/Source/Modulos/Tienda web/Data/uDataModuleTiendaWeb.dfm b/Source/Modulos/Tienda web/Data/uDataModuleTiendaWeb.dfm index ef250d3..9d87bb0 100644 --- a/Source/Modulos/Tienda web/Data/uDataModuleTiendaWeb.dfm +++ b/Source/Modulos/Tienda web/Data/uDataModuleTiendaWeb.dfm @@ -40,7 +40,7 @@ inherited DataModuleTiendaWeb: TDataModuleTiendaWeb Fields = < item Name = 'address_book_id' - DataType = datInteger + DataType = datAutoInc Description = #161#161#161#161#161#161' ESTE CAMPO TIENE QUE SER AUTOINC PARA QUE FUNCIONE !!!!!' ServerAutoRefresh = True InPrimaryKey = True @@ -285,7 +285,7 @@ inherited DataModuleTiendaWeb: TDataModuleTiendaWeb Fields = < item Name = 'orders_id' - DataType = datInteger + DataType = datAutoInc Description = #161#161#161#161#161#161' ESTE CAMPO TIENE QUE SER AUTOINC PARA QUE FUNCIONE !!!!!' ServerAutoRefresh = True InPrimaryKey = True diff --git a/Source/Modulos/Tienda web/Data/uDataModuleTiendaWeb.pas b/Source/Modulos/Tienda web/Data/uDataModuleTiendaWeb.pas index e8072e7..4ac6971 100644 --- a/Source/Modulos/Tienda web/Data/uDataModuleTiendaWeb.pas +++ b/Source/Modulos/Tienda web/Data/uDataModuleTiendaWeb.pas @@ -61,12 +61,9 @@ type ds_osc_Products: TDADataSource; procedure DAClientDataModuleCreate(Sender: TObject); protected - function DarNombreGenerador(DataSetName: String): String; virtual; - function _GetOSCAddressBook: IBizOscAddressBook; function _GetOSCOrderProducts: IBizOSCOrderProducts; public - function GetNextID(const DataSetName : String) : Integer; function GetItems: IBizTiendaWeb; function GetItem(const ID_Empresa : Integer) : IBizTiendaWeb; function NewItem : IBizTiendaWeb; @@ -83,8 +80,6 @@ type function GetOSCProduct(const IDLocal : Integer): IBizOSCProduct; function NewOSCProduct : IBizOSCProduct; - function GetNextIDOSC(const DataSetName : String) : Integer; - function GetOSCOrders: IBizOscOrder; function GetOSCOrder(const IDLocal : Integer): IBizOscOrder; @@ -114,26 +109,6 @@ begin RORemoteService.Message := dmConexion.Message; end; -function TDataModuleTiendaWeb.DarNombreGenerador(DataSetName: String): String; -begin - Result := ''; - if DataSetName = nme_TiendaWeb then - Result := 'GEN_TIENDA_WEB_ID' -end; - -function TDataModuleTiendaWeb.GetNextID(const DataSetName: String): Integer; -var - aGeneratorName : String; -begin - aGeneratorName := DarNombreGenerador(DataSetName); - Result := (RORemoteService as IsrvTiendaWeb).GetNextAutoInc(aGeneratorName) -end; - -function TDataModuleTiendaWeb.GetNextIDOSC(const DataSetName: String): Integer; -begin - Result := (RORemoteService as IsrvTiendaWeb).GetNextAutoIncOSC(DataSetName); -end; - function TDataModuleTiendaWeb._GetOSCAddressBook: IBizOscAddressBook; var AAddressBook : TDAMemDataTable; diff --git a/Source/Modulos/Tienda web/Model/Data/uIDataModuleTiendaWeb.pas b/Source/Modulos/Tienda web/Model/Data/uIDataModuleTiendaWeb.pas index d0e5d48..b93103b 100644 --- a/Source/Modulos/Tienda web/Model/Data/uIDataModuleTiendaWeb.pas +++ b/Source/Modulos/Tienda web/Model/Data/uIDataModuleTiendaWeb.pas @@ -33,7 +33,6 @@ type IDataModuleTiendaWeb = interface ['{E1208D47-C342-4DE1-879A-20F7689AB00A}'] function GetItems: IBizTiendaWeb; - function GetNextID(const DataSetName : String) : Integer; function GetItem(const ID_Empresa : Integer) : IBizTiendaWeb; function NewItem : IBizTiendaWeb; @@ -52,9 +51,7 @@ type function GetOSCOrders: IBizOscOrder; function GetOSCOrder(const IDLocal : Integer): IBizOscOrder; - function GetNextIDOSC(const DataSetName : String) : Integer; - - function HayConexionConTienda : Boolean; + function HayConexionConTienda : Boolean; end; implementation diff --git a/Source/Modulos/Tienda web/Model/uBizOscAddressBookServer.pas b/Source/Modulos/Tienda web/Model/uBizOscAddressBookServer.pas index 09a1e7e..1e10349 100644 --- a/Source/Modulos/Tienda web/Model/uBizOscAddressBookServer.pas +++ b/Source/Modulos/Tienda web/Model/uBizOscAddressBookServer.pas @@ -11,13 +11,6 @@ const type TBizOscAddressBookServer = class(Tosc_CustomersBusinessProcessorRules) - - protected - procedure AfterProcessChange(Sender: TDABusinessProcessor; - aChange: TDADeltaChange; Processed: Boolean; - var CanRemoveFromDelta: Boolean); override; - - end; implementation @@ -28,28 +21,6 @@ uses { TBizOscAddressBookServer } -procedure TBizOscAddressBookServer.AfterProcessChange(Sender: TDABusinessProcessor; - aChange: TDADeltaChange; Processed: Boolean; var CanRemoveFromDelta: Boolean); -var - ASchema : TDASchema; - ACurrentConn : IDAConnection; - ADataset : IDADataset; -begin - ASchema := Sender.Schema; - ACurrentConn := GetBusinessProcessorConnection(Sender); - - inherited; - - case aChange.ChangeType of - ctInsert: begin - ADataSet := ASchema.NewDataset(ACurrentConn, 'GetLastID', [], [], True); - aChange.NewValueByName[fld_osc_AddressBookaddress_book_id] := ADataSet.FieldByName('last_id').AsInteger; - end; - end; - - CanRemoveFromDelta := False; -end; - initialization RegisterBusinessProcessorRules(BIZ_SERVER_OSC_ADDRESSBOOK, TBizOscAddressBookServer); diff --git a/Source/Modulos/Tienda web/Model/uBizOscCustomerServer.pas b/Source/Modulos/Tienda web/Model/uBizOscCustomerServer.pas index 2c6302e..20df63e 100644 --- a/Source/Modulos/Tienda web/Model/uBizOscCustomerServer.pas +++ b/Source/Modulos/Tienda web/Model/uBizOscCustomerServer.pas @@ -25,10 +25,6 @@ type aChangeType: TDAChangeType; aChange: TDADeltaChange; const aCommand: IDASQLCommand; var CanRemoveFromDelta: Boolean; Error: Exception); override; - - procedure GenerateSQL(Sender: TDABusinessProcessor; - ChangeType: TDAChangeType; const ReferencedStatement: TDAStatement; - const aDelta: IDADelta; var SQL: string); override; end; implementation @@ -41,23 +37,11 @@ uses procedure TBizOscCustomerServer.AfterProcessChange(Sender: TDABusinessProcessor; aChange: TDADeltaChange; Processed: Boolean; var CanRemoveFromDelta: Boolean); -var - ASchema : TDASchema; - ACurrentConn : IDAConnection; - ADataset : IDADataset; begin - ASchema := Sender.Schema; - ACurrentConn := GetBusinessProcessorConnection(Sender); - inherited; case aChange.ChangeType of - ctInsert: begin - ADataSet := ASchema.NewDataset(ACurrentConn, 'GetLastID', [], [], True); - aChange.NewValueByName[fld_osc_Customerscustomers_id] := ADataSet.FieldByName('last_id').AsInteger; - Insert_Customers_Info(aChange); - end; - + ctInsert: Insert_Customers_Info(aChange); ctUpdate: Update_Customers_Info(aChange); ctDelete: Delete_Customers_Info(aChange); end; @@ -86,13 +70,6 @@ begin end; end; -procedure TBizOscCustomerServer.GenerateSQL(Sender: TDABusinessProcessor; - ChangeType: TDAChangeType; const ReferencedStatement: TDAStatement; - const aDelta: IDADelta; var SQL: string); -begin - inherited; -// fServerForm.Memo1.Lines.Add(SQL); -end; procedure TBizOscCustomerServer.Insert_Customers_Info(aChange: TDADeltaChange); var diff --git a/Source/Modulos/Tienda web/Model/uBizOscManufacturerServer.pas b/Source/Modulos/Tienda web/Model/uBizOscManufacturerServer.pas index 89ee4e6..f991b1a 100644 --- a/Source/Modulos/Tienda web/Model/uBizOscManufacturerServer.pas +++ b/Source/Modulos/Tienda web/Model/uBizOscManufacturerServer.pas @@ -36,23 +36,10 @@ uses procedure TBizOscManufacturerServer.AfterProcessChange(Sender: TDABusinessProcessor; aChange: TDADeltaChange; Processed: Boolean; var CanRemoveFromDelta: Boolean); -var - ASchema : TDASchema; - ACurrentConn : IDAConnection; - ADataset : IDADataset; begin - ASchema := Sender.Schema; - ACurrentConn := GetBusinessProcessorConnection(Sender); - inherited; - case aChange.ChangeType of - ctInsert: begin - ADataSet := ASchema.NewDataset(ACurrentConn, 'GetLastID', [], [], True); - aChange.NewValueByName[fld_osc_Manufacturersmanufacturers_id] := ADataSet.FieldByName('last_id').AsInteger; - Insert_Manufacturers_Info(aChange); - end; - + ctInsert: Insert_Manufacturers_Info(aChange); ctUpdate: Update_Manufacturers_Info(aChange); ctDelete: Delete_Manufacturers_Info(aChange); end; diff --git a/Source/Modulos/Tienda web/Model/uBizOscOrderServer.pas b/Source/Modulos/Tienda web/Model/uBizOscOrderServer.pas index 4827a55..7df6fe9 100644 --- a/Source/Modulos/Tienda web/Model/uBizOscOrderServer.pas +++ b/Source/Modulos/Tienda web/Model/uBizOscOrderServer.pas @@ -37,23 +37,11 @@ uses procedure TBizOscOrderServer.AfterProcessChange(Sender: TDABusinessProcessor; aChange: TDADeltaChange; Processed: Boolean; var CanRemoveFromDelta: Boolean); -var - ASchema : TDASchema; - ACurrentConn : IDAConnection; - ADataset : IDADataset; begin - ASchema := Sender.Schema; - ACurrentConn := GetBusinessProcessorConnection(Sender); - inherited; case aChange.ChangeType of - ctInsert: begin - ADataSet := ASchema.NewDataset(ACurrentConn, 'GetLastID', [], [], True); - aChange.NewValueByName[fld_osc_Ordersorders_id] := ADataSet.FieldByName('last_id').AsInteger; - Insert_Orders_Info(aChange); - end; - + ctInsert: Insert_Orders_Info(aChange); ctUpdate: Update_Orders_Info(aChange); ctDelete: Delete_Orders_Info(aChange); end; diff --git a/Source/Modulos/Tienda web/Model/uBizOscProductServer.pas b/Source/Modulos/Tienda web/Model/uBizOscProductServer.pas index 1da24ab..c05dc48 100644 --- a/Source/Modulos/Tienda web/Model/uBizOscProductServer.pas +++ b/Source/Modulos/Tienda web/Model/uBizOscProductServer.pas @@ -43,20 +43,11 @@ const procedure TBizOscProductServer.AfterProcessChange(Sender: TDABusinessProcessor; aChange: TDADeltaChange; Processed: Boolean; var CanRemoveFromDelta: Boolean); -var - ASchema : TDASchema; - ACurrentConn : IDAConnection; - ADataset : IDADataset; begin - ASchema := Sender.Schema; - ACurrentConn := GetBusinessProcessorConnection(Sender); - inherited; case aChange.ChangeType of ctInsert: begin - ADataSet := ASchema.NewDataset(ACurrentConn, 'GetLastID', [], [], True); - aChange.NewValueByName[fld_osc_Productsproducts_id] := ADataSet.FieldByName('last_id').AsInteger; Insert_Products_Description(aChange); Insert_Products_to_categories(aChange); end; diff --git a/Source/Modulos/Tienda web/Model/uBizTiendaWebServer.pas b/Source/Modulos/Tienda web/Model/uBizTiendaWebServer.pas index f6eb147..2ff87a5 100644 --- a/Source/Modulos/Tienda web/Model/uBizTiendaWebServer.pas +++ b/Source/Modulos/Tienda web/Model/uBizTiendaWebServer.pas @@ -11,7 +11,6 @@ const type TBizTiendaWebServer = class(TTiendaWebBusinessProcessorRules) - procedure BeforeProcessChange(Sender: TDABusinessProcessor; aChangeType: TDAChangeType; aChange: TDADeltaChange; var ProcessChange: boolean); override; end; implementation @@ -20,19 +19,8 @@ uses Dialogs, SysUtils, Variants, uDataModuleServer, uDAClasses, DARemoteService_Impl, schTiendaWebClient_Intf, uBusinessUtils, uROClasses; -{ TBizRemesasClienteServer } - { TBizTiendaWebServer } -procedure TBizTiendaWebServer.BeforeProcessChange(Sender: TDABusinessProcessor; - aChangeType: TDAChangeType; aChange: TDADeltaChange; - var ProcessChange: boolean); -begin - inherited; - showMessage('Hola'); - -end; - initialization RegisterBusinessProcessorRules(BIZ_SERVER_TIENDA_WEB, TBizTiendaWebServer); diff --git a/Source/Modulos/Tienda web/Plugin/uPluginTiendaWeb.pas b/Source/Modulos/Tienda web/Plugin/uPluginTiendaWeb.pas index 3c89e60..e179d18 100644 --- a/Source/Modulos/Tienda web/Plugin/uPluginTiendaWeb.pas +++ b/Source/Modulos/Tienda web/Plugin/uPluginTiendaWeb.pas @@ -66,8 +66,7 @@ end; procedure TPluginTiendaWeb.actActualizarTiendaUpdate(Sender: TObject); begin //La tienda solo estará activa para la empresa Luis León Representaciones - if (Sender as TAction).Enabled then - (Sender as TAction).Enabled := (AppFactuGES.EmpresaActiva.ID = 1) + (Sender as TAction).Enabled := (AppFactuGES.EmpresaActiva.ID = 1) end; procedure TPluginTiendaWeb.actConfigurarTiendaExecute(Sender: TObject); @@ -83,8 +82,7 @@ end; procedure TPluginTiendaWeb.actConfigurarTiendaUpdate(Sender: TObject); begin //La tienda solo estará activa para la empresa Luis León Representaciones - if (Sender as TAction).Enabled then - (Sender as TAction).Enabled := (AppFactuGES.EmpresaActiva.ID = 1) + (Sender as TAction).Enabled := (AppFactuGES.EmpresaActiva.ID = 1) end; procedure TPluginTiendaWeb.actRecogerPedidosExecute(Sender: TObject); @@ -101,8 +99,7 @@ procedure TPluginTiendaWeb.actRecogerPedidosUpdate(Sender: TObject); begin inherited; //La tienda solo estará activa para la empresa Luis León Representaciones - if (Sender as TAction).Enabled then - (Sender as TAction).Enabled := (AppFactuGES.EmpresaActiva.ID = 1) + (Sender as TAction).Enabled := (AppFactuGES.EmpresaActiva.ID = 1) end; constructor TPluginTiendaWeb.Create(AOwner: TComponent); diff --git a/Source/Modulos/Tienda web/Servidor/srvTiendaWeb_Impl.dfm b/Source/Modulos/Tienda web/Servidor/srvTiendaWeb_Impl.dfm index 21a08b1..8a2842e 100644 --- a/Source/Modulos/Tienda web/Servidor/srvTiendaWeb_Impl.dfm +++ b/Source/Modulos/Tienda web/Servidor/srvTiendaWeb_Impl.dfm @@ -7,8 +7,6 @@ object srvTiendaWeb: TsrvTiendaWeb ServiceDataStreamer = Bin2DataStreamer ExportedDataTables = <> BeforeGetDatasetData = DataAbstractServiceBeforeGetDatasetData - ValidateDatasetAccess = DataAbstractServiceValidateDatasetAccess - ValidateCommandExecution = DataAbstractServiceValidateCommandExecution Height = 377 Width = 583 object schTiendaWeb: TDASchema @@ -137,10 +135,12 @@ object srvTiendaWeb: TsrvTiendaWeb item Name = 'date_account_created' DataType = datDateTime + ReadOnly = True end item Name = 'date_account_last_modified' DataType = datDateTime + ReadOnly = True end> end item @@ -250,7 +250,7 @@ object srvTiendaWeb: TsrvTiendaWeb Fields = < item Name = 'address_book_id' - DataType = datInteger + DataType = datAutoInc Description = #161#161#161#161#161#161' ESTE CAMPO TIENE QUE SER AUTOINC PARA QUE FUNCIONE !!!!!' ServerAutoRefresh = True InPrimaryKey = True @@ -805,7 +805,7 @@ object srvTiendaWeb: TsrvTiendaWeb Fields = < item Name = 'orders_id' - DataType = datInteger + DataType = datAutoInc Description = #161#161#161#161#161#161' ESTE CAMPO TIENE QUE SER AUTOINC PARA QUE FUNCIONE !!!!!' ServerAutoRefresh = True InPrimaryKey = True @@ -1115,6 +1115,90 @@ object srvTiendaWeb: TsrvTiendaWeb Name = 'comments' DataType = datMemo end> + end + item + IsPublic = False + Params = <> + Statements = < + item + Connection = 'MySQL' + SQL = 'SELECT last_insert_id() as customers_id'#10 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'customers_id' + TableField = 'customers_id' + end> + end> + Name = 'osc_Customers-Refresh' + Fields = < + item + Name = 'customers_id' + DataType = datLargeInt + end> + end + item + IsPublic = False + Params = <> + Statements = < + item + Connection = 'MySQL' + SQL = 'SELECT last_insert_id() as address_book_id'#10 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'address_book_id' + TableField = 'address_book_id' + end> + end> + Name = 'osc_AddressBook-Refresh' + Fields = < + item + Name = 'address_book_id' + DataType = datLargeInt + end> + end + item + IsPublic = False + Params = <> + Statements = < + item + Connection = 'MySQL' + SQL = 'SELECT last_insert_id() as manufacturers_id'#10 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'manufacturers_id' + TableField = 'manufacturers_id' + end> + end> + Name = 'osc_Manufacturers-Refresh' + Fields = < + item + Name = 'manufacturers_id' + DataType = datLargeInt + end> + end + item + IsPublic = False + Params = <> + Statements = < + item + Connection = 'MySQL' + SQL = 'SELECT last_insert_id() as products_id'#10 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'products_id' + TableField = 'products_id' + end> + end> + Name = 'osc_Products-Refresh' + Fields = < + item + Name = 'products_id' + DataType = datLargeInt + end> end> JoinDataTables = <> UnionDataTables = <> @@ -2872,22 +2956,22 @@ object srvTiendaWeb: TsrvTiendaWeb end object bp_osc_Customers: TDABusinessProcessor Schema = schTiendaWeb - InsertCommandName = 'Insert_Customers' DeleteCommandName = 'Delete_Customers' UpdateCommandName = 'Update_Customers' + RefreshDatasetName = 'osc_Customers-Refresh' ReferencedDataset = 'osc_Customers' - ProcessorOptions = [poAutoGenerateRefreshDataset, poPrepareCommands] + ProcessorOptions = [poAutoGenerateInsert, poPrepareCommands] UpdateMode = updWhereKeyOnly Left = 384 Top = 22 end object bp_osc_AddressBook: TDABusinessProcessor Schema = schTiendaWeb - InsertCommandName = 'Insert_AddressBook' DeleteCommandName = 'Delete_AddressBook' UpdateCommandName = 'Update_AddressBook' + RefreshDatasetName = 'osc_AddressBook-Refresh' ReferencedDataset = 'osc_AddressBook' - ProcessorOptions = [poAutoGenerateRefreshDataset, poPrepareCommands] + ProcessorOptions = [poAutoGenerateInsert, poPrepareCommands] UpdateMode = updWhereKeyOnly Left = 384 Top = 86 @@ -2897,8 +2981,9 @@ object srvTiendaWeb: TsrvTiendaWeb InsertCommandName = 'Insert_osc_Manufacturers' DeleteCommandName = 'Delete_osc_Manufacturers' UpdateCommandName = 'Update_osc_Manufacturers' + RefreshDatasetName = 'osc_Manufacturers-Refresh' ReferencedDataset = 'osc_Manufacturers' - ProcessorOptions = [poAutoGenerateRefreshDataset, poPrepareCommands] + ProcessorOptions = [poPrepareCommands] UpdateMode = updWhereKeyOnly Left = 496 Top = 22 @@ -2908,19 +2993,20 @@ object srvTiendaWeb: TsrvTiendaWeb InsertCommandName = 'Insert_osc_Products' DeleteCommandName = 'Delete_osc_Products' UpdateCommandName = 'Update_osc_Products' + RefreshDatasetName = 'osc_Products-Refresh' ReferencedDataset = 'osc_Products' - ProcessorOptions = [poAutoGenerateRefreshDataset, poPrepareCommands] + ProcessorOptions = [poPrepareCommands] UpdateMode = updWhereKeyOnly Left = 496 Top = 86 end object bp_osc_Orders: TDABusinessProcessor - OnBeforeProcessDelta = bp_osc_OrdersBeforeProcessDelta Schema = schTiendaWeb DeleteCommandName = 'Delete_osc_Orders' UpdateCommandName = 'Update_osc_Orders' + RefreshDatasetName = 'osc_Orders-Refresh' ReferencedDataset = 'osc_Orders' - ProcessorOptions = [poAutoGenerateRefreshDataset, poPrepareCommands] + ProcessorOptions = [poPrepareCommands] UpdateMode = updWhereKeyOnly Left = 48 Top = 166 diff --git a/Source/Modulos/Tienda web/Servidor/srvTiendaWeb_Impl.pas b/Source/Modulos/Tienda web/Servidor/srvTiendaWeb_Impl.pas index 51d24b3..12515d0 100644 --- a/Source/Modulos/Tienda web/Servidor/srvTiendaWeb_Impl.pas +++ b/Source/Modulos/Tienda web/Servidor/srvTiendaWeb_Impl.pas @@ -13,7 +13,7 @@ uses {vcl:} Classes, SysUtils, {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, {Ancestor Implementation:} DataAbstractService_Impl, - {Used RODLs:} DataAbstract4_Intf, + {Used RODLs:} DataAbstract4_Intf, {Generated:} uDABusinessProcessor, uDABin2DataStreamer, uDADataStreamer, uDAScriptingProvider, uDAClasses, uDADelta, FactuGES_Intf, uDAInterfaces, uDABinAdapter; @@ -40,23 +40,10 @@ type const aDataset: IDADataset; const aIncludeSchema: Boolean; const aMaxRecords: Integer); procedure DataAbstractServiceCreate(Sender: TObject); - procedure DataAbstractServiceValidateDatasetAccess(Sender: TObject; - const aConnection: IDAConnection; const aDatasetName: string; - const aParamNames: array of string; const aParamValues: array of Variant; - aSchema: TDASchema; var Allowed: Boolean); - procedure DataAbstractServiceValidateCommandExecution(Sender: TObject; - const aConnection: IDAConnection; const aDatasetName: string; - const aParamNames: array of string; const aParamValues: array of Variant; - aSchema: TDASchema; var Allowed: Boolean); - procedure bp_osc_OrdersBeforeProcessDelta(Sender: TDABusinessProcessor; - const aDelta: IDADelta); private procedure AsignarConexion (const AConnectionName: string); - + function GetConnectionForObject(const aName: string): IDAConnection; override; protected - function GetNextAutoInc(const GeneratorName: AnsiString): Integer; - function GetNextAutoIncOSC(const TableName: AnsiString): Integer; -// function UpdateDataOSC(const Delta: Binary): Binary; function HayConexionConTienda: Boolean; end; @@ -83,7 +70,7 @@ procedure TsrvTiendaWeb.AsignarConexion(const AConnectionName: string); begin // En el caso de conexión MySQL también solicito otra conexión nueva // para evitar problemas. - if (AConnectionName <> Self.ConnectionName) or (AConnectionName = 'MySQL') then + if (AConnectionName <> Self.ConnectionName) then begin if Connection.InTransaction then Connection.CommitTransaction; @@ -93,19 +80,10 @@ begin end; end; -procedure TsrvTiendaWeb.bp_osc_OrdersBeforeProcessDelta( - Sender: TDABusinessProcessor; const aDelta: IDADelta); -begin -// AsignarConexion('MySQL'); -end; - procedure TsrvTiendaWeb.DataAbstractServiceBeforeGetDatasetData( aSender: TObject; const aDataset: IDADataset; const aIncludeSchema: Boolean; const aMaxRecords: Integer); begin - if aDataSet.Name = nme_TiendaWeb then - AsignarConexion('IBX'); - { Aquí se asegura que el usuario sólo accede a los RemesasCliente de las empresas a las que tiene permiso para acceder filtrando DataSet por ID_EMPRESA. } @@ -125,78 +103,15 @@ begin bp_osc_Orders.BusinessRulesID := BIZ_SERVER_OSC_ORDER; end; -procedure TsrvTiendaWeb.DataAbstractServiceValidateCommandExecution( - Sender: TObject; const aConnection: IDAConnection; const aDatasetName: string; - const aParamNames: array of string; const aParamValues: array of Variant; - aSchema: TDASchema; var Allowed: Boolean); -var - i: integer; - ConName: string; +function TsrvTiendaWeb.GetConnectionForObject( + const aName: string): IDAConnection; begin - ConName := ''; + if aName = nme_TiendaWeb then + AsignarConexion('IBX') + else + AsignarConexion('MySQL'); - for i := 0 to aSchema.Datasets.Count - 1 do - if AnsiSameText(aSchema.Datasets[i].Name, aDatasetName) then begin - ConName := aSchema.Datasets[i].Statements[0].Connection; - break; - end; - - if not AnsiSameText(ConName, aConnection.Name) then begin - Connection := aSchema.ConnectionManager.NewConnection(ConName); - -{ for i := 0 to aSchema.ConnectionManager.Connections.Count - 1 do - aSchema.ConnectionManager.Connections[i].Default := - AnsiSameText(aSchema.ConnectionManager.Connections[i].Name, ConName); -} - end; -end; - -procedure TsrvTiendaWeb.DataAbstractServiceValidateDatasetAccess( - Sender: TObject; const aConnection: IDAConnection; const aDatasetName: string; - const aParamNames: array of string; const aParamValues: array of Variant; - aSchema: TDASchema; var Allowed: Boolean); -var - i: integer; - ConName: string; -begin - ConName := ''; - - for i := 0 to aSchema.Datasets.Count - 1 do - if AnsiSameText(aSchema.Datasets[i].Name, aDatasetName) then begin - ConName := aSchema.Datasets[i].Statements[0].Connection; - break; - end; - - if not AnsiSameText(ConName, aConnection.Name) then begin - Connection := aSchema.ConnectionManager.NewConnection(ConName); - -{ for i := 0 to aSchema.ConnectionManager.Connections.Count - 1 do - aSchema.ConnectionManager.Connections[i].Default := - AnsiSameText(aSchema.ConnectionManager.Connections[i].Name, ConName); -} - end; -end; - -function TsrvTiendaWeb.GetNextAutoInc(const GeneratorName: AnsiString): Integer; -begin - Result := uDatabaseUtils.GetNextAutoInc(GeneratorName) -end; - -function TsrvTiendaWeb.GetNextAutoIncOSC(const TableName: AnsiString): Integer; -var - vConn : IDAConnection; - ds: IDADataset; -begin - vConn := dmServer.ConnectionManager.NewConnection('MySQL'); - vConn.BeginTransaction; - try - ds := vConn.NewDataset(Format('SHOW TABLE STATUS WHERE NAME=''%s''', [TableName])); - ds.Open; - Result := ds.FieldByName('Auto_increment').AsInteger; - finally - vConn.CommitTransaction; - ds := NIL; - end; + Result := inherited GetConnectionForObject(aName); end; function TsrvTiendaWeb.HayConexionConTienda: Boolean; diff --git a/Source/Modulos/Tienda web/Views/TiendaWeb_view.RES b/Source/Modulos/Tienda web/Views/TiendaWeb_view.RES index 1641339..8b251f3 100644 Binary files a/Source/Modulos/Tienda web/Views/TiendaWeb_view.RES and b/Source/Modulos/Tienda web/Views/TiendaWeb_view.RES differ diff --git a/Source/Modulos/Tienda web/Views/uEditorActualizarTiendaWeb.dfm b/Source/Modulos/Tienda web/Views/uEditorActualizarTiendaWeb.dfm index bfeddd4..2db9e49 100644 --- a/Source/Modulos/Tienda web/Views/uEditorActualizarTiendaWeb.dfm +++ b/Source/Modulos/Tienda web/Views/uEditorActualizarTiendaWeb.dfm @@ -19,8 +19,8 @@ inherited fEditorActualizarTiendaWeb: TfEditorActualizarTiendaWeb inherited pnlBotones: TPanel Top = 235 Width = 474 - ExplicitTop = 383 - ExplicitWidth = 638 + ExplicitTop = 235 + ExplicitWidth = 474 inherited btnAceptar: TButton Left = 312 ExplicitLeft = 312 @@ -32,7 +32,7 @@ inherited fEditorActualizarTiendaWeb: TfEditorActualizarTiendaWeb end inherited pnlHeader: TPanel Width = 474 - ExplicitWidth = 638 + ExplicitWidth = 474 inherited lblInstruccion: TLabel Width = 424 Caption = 'Elija el contenido a actualizar' @@ -50,8 +50,8 @@ inherited fEditorActualizarTiendaWeb: TfEditorActualizarTiendaWeb inherited pnlCuerpo: TPanel Width = 474 Height = 167 - ExplicitWidth = 638 - ExplicitHeight = 315 + ExplicitWidth = 474 + ExplicitHeight = 167 object Label1: TLabel Left = 69 Top = 55 @@ -60,16 +60,17 @@ inherited fEditorActualizarTiendaWeb: TfEditorActualizarTiendaWeb Caption = 'Actualiza los clientes con acceso permitido a la tienda web' end object Image1: TImage - Left = 110 - Top = 29 + Left = 133 + Top = 33 Width = 16 - Height = 20 + Height = 16 + AutoSize = True Picture.Data = { 0B546478504E47496D61676589504E470D0A1A0A0000000D4948445200000010 0000001008060000001FF3FF61000000017352474200AECE1CE9000000046741 4D410000B18F0BFC6105000000206348524D00007A26000080840000FA000000 80E8000075300000EA6000003A98000017709CBA513C00000009704859730000 - 17110000171101CA26F33F000001CD49444154384FA593CB4B546118C6C73FA0 + 17100000171001186111DB000001CD49444154384FA593CB4B546118C6C73FA0 95FB961384B7390B571564428BC490C88C460261A02090A845EDDCB81235BCB4 481D8E32CE98055E20C20CAD598897C60B72B0D4F188979A066FD974D4D3E82F BF0F66F2C310725E78E083EF3CBFF7795FBE93063852AA9E418354E410E644C5 @@ -86,18 +87,20 @@ inherited fEditorActualizarTiendaWeb: TfEditorActualizarTiendaWeb ECFC716C9EC191393581789A62A6FF55F2298BC369E510BF732AFA030F32BF8A 1940D9410000000049454E44AE426082} Transparent = True + Visible = False end object Image2: TImage Left = 133 Top = 86 - Width = 17 - Height = 19 + Width = 16 + Height = 16 + AutoSize = True Picture.Data = { 0B546478504E47496D61676589504E470D0A1A0A0000000D4948445200000010 0000001008060000001FF3FF61000000017352474200AECE1CE9000000046741 4D410000B18F0BFC6105000000206348524D00007A26000080840000FA000000 80E8000075300000EA6000003A98000017709CBA513C00000009704859730000 - 17110000171101CA26F33F000001C949444154384FA593CD4B545118C6A73FC0 + 17100000171001186111DB000001C949444154384FA593CD4B545118C6A73FC0 FF205AEA66D469C45C079A0BC1905083460461A02090B085EEDCB412952C5B68 0E373F6614C1C64584159A2EC4514713B968E974C58F1A074DB3F19AD7D15F73 0ECCE841116C5EF8C181739FE77DDE9773AF01B6946A704427156C429CA86864 @@ -114,18 +117,19 @@ inherited fEditorActualizarTiendaWeb: TfEditorActualizarTiendaWeb 5A6624B0A426104F53CC7455924F591CFE179BF89D53E11F96DABFE183CE91E1 0000000049454E44AE426082} Transparent = True + Visible = False end object Label3: TLabel Left = 69 Top = 113 - Width = 289 + Width = 280 Height = 13 Caption = 'Actualizar los proveedores de la tienda web y sus art'#237'culos' end object cbClientes: TCheckBox Left = 50 Top = 32 - Width = 55 + Width = 77 Height = 17 Caption = 'Clientes' Checked = True diff --git a/Source/Servicios/FactuGES.RODL b/Source/Servicios/FactuGES.RODL index 5a0654b..59312a0 100644 --- a/Source/Servicios/FactuGES.RODL +++ b/Source/Servicios/FactuGES.RODL @@ -1026,22 +1026,6 @@ - - - - - - - - - - - - - - - - diff --git a/Source/Servicios/FactuGES_Intf.pas b/Source/Servicios/FactuGES_Intf.pas index b6852da..60f0638 100644 --- a/Source/Servicios/FactuGES_Intf.pas +++ b/Source/Servicios/FactuGES_Intf.pas @@ -930,8 +930,6 @@ type { IsrvTiendaWeb } IsrvTiendaWeb = interface(IDataAbstractService) ['{A0C6D311-18C5-4851-AA96-02B3CA95BE75}'] - function GetNextAutoInc(const GeneratorName: AnsiString): Integer; - function GetNextAutoIncOSC(const TableName: AnsiString): Integer; function HayConexionConTienda: Boolean; end; @@ -945,8 +943,6 @@ type protected function __GetInterfaceName:string; override; - function GetNextAutoInc(const GeneratorName: AnsiString): Integer; - function GetNextAutoIncOSC(const TableName: AnsiString): Integer; function HayConexionConTienda: Boolean; end; @@ -2988,38 +2984,6 @@ begin result := 'srvTiendaWeb'; end; -function TsrvTiendaWeb_Proxy.GetNextAutoInc(const GeneratorName: AnsiString): Integer; -begin - try - __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GetNextAutoInc'); - __Message.Write('GeneratorName', TypeInfo(AnsiString), GeneratorName, []); - __Message.Finalize; - - __TransportChannel.Dispatch(__Message); - - __Message.Read('Result', TypeInfo(Integer), result, []); - finally - __Message.UnsetAttributes(__TransportChannel); - __Message.FreeStream; - end -end; - -function TsrvTiendaWeb_Proxy.GetNextAutoIncOSC(const TableName: AnsiString): Integer; -begin - try - __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GetNextAutoIncOSC'); - __Message.Write('TableName', TypeInfo(AnsiString), TableName, []); - __Message.Finalize; - - __TransportChannel.Dispatch(__Message); - - __Message.Read('Result', TypeInfo(Integer), result, []); - finally - __Message.UnsetAttributes(__TransportChannel); - __Message.FreeStream; - end -end; - function TsrvTiendaWeb_Proxy.HayConexionConTienda: Boolean; begin try diff --git a/Source/Servicios/FactuGES_Invk.pas b/Source/Servicios/FactuGES_Invk.pas index 02536ee..cda6d77 100644 --- a/Source/Servicios/FactuGES_Invk.pas +++ b/Source/Servicios/FactuGES_Invk.pas @@ -352,8 +352,6 @@ type public constructor Create; override; published - procedure Invoke_GetNextAutoInc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); - procedure Invoke_GetNextAutoIncOSC(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); procedure Invoke_HayConexionConTienda(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); end; @@ -2602,46 +2600,6 @@ begin FAbstract := False; end; -procedure TsrvTiendaWeb_Invoker.Invoke_GetNextAutoInc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); -{ function GetNextAutoInc(const GeneratorName: AnsiString): Integer; } -var - GeneratorName: AnsiString; - lResult: Integer; -begin - try - __Message.Read('GeneratorName', TypeInfo(AnsiString), GeneratorName, []); - - lResult := (__Instance as IsrvTiendaWeb).GetNextAutoInc(GeneratorName); - - __Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvTiendaWeb', 'GetNextAutoIncResponse'); - __Message.Write('Result', TypeInfo(Integer), lResult, []); - __Message.Finalize; - __Message.UnsetAttributes(__Transport); - - finally - end; -end; - -procedure TsrvTiendaWeb_Invoker.Invoke_GetNextAutoIncOSC(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); -{ function GetNextAutoIncOSC(const TableName: AnsiString): Integer; } -var - TableName: AnsiString; - lResult: Integer; -begin - try - __Message.Read('TableName', TypeInfo(AnsiString), TableName, []); - - lResult := (__Instance as IsrvTiendaWeb).GetNextAutoIncOSC(TableName); - - __Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvTiendaWeb', 'GetNextAutoIncOSCResponse'); - __Message.Write('Result', TypeInfo(Integer), lResult, []); - __Message.Finalize; - __Message.UnsetAttributes(__Transport); - - finally - end; -end; - procedure TsrvTiendaWeb_Invoker.Invoke_HayConexionConTienda(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); { function HayConexionConTienda: Boolean; } var diff --git a/Source/Servicios/RODLFile.res b/Source/Servicios/RODLFile.res index 0e1643a..660fe2c 100644 Binary files a/Source/Servicios/RODLFile.res and b/Source/Servicios/RODLFile.res differ diff --git a/Source/Servidor/FactuGES_Server.RES b/Source/Servidor/FactuGES_Server.RES index cfdb471..a45acf6 100644 Binary files a/Source/Servidor/FactuGES_Server.RES and b/Source/Servidor/FactuGES_Server.RES differ diff --git a/Source/Servidor/FactuGES_Server.dproj b/Source/Servidor/FactuGES_Server.dproj index 7ed2175..e879b12 100644 --- a/Source/Servidor/FactuGES_Server.dproj +++ b/Source/Servidor/FactuGES_Server.dproj @@ -1,392 +1,392 @@ - + - - {ebdcd25d-40d7-4146-91ec-a0ea4aa1dcd1} - FactuGES_Server.dpr - Debug - AnyCPU - DCC32 - ..\..\Output\Debug\Servidor\FactuGES_Server.exe - vcl;rtl;vclx;vclactnband;dbrtl;vcldb;vcldbx;bdertl;dsnap;dsnapcon;teeUI;teedb;tee;adortl;vclib;ibxpress;dbxcds;dbexpress;DbxCommonDriver;IndyCore;IndySystem;IndyProtocols;VclSmp;vclie;webdsnap;xmlrtl;inet;inetdbbde;inetdbxpress;RemObjects_BPDX_D11;RemObjects_RODX_D11;RemObjects_Indy_D11;RemObjects_Synapse_D11;RemObjects_WebBroker_D11;DataAbstract_Core_D11;DataAbstract_DBXDriver_D11;DataAbstract_IDE_D11;DataAbstract_Scripting_D11;DataAbstract_SDACDriver_D11;sdac105;dac105;DataAbstract_SQLiteDriver_D11;cxEditorsD10;cxLibraryD10;dxThemeD10;cxDataD10;cxExtEditorsD10;cxGridD10;cxPageControlD10;cxSchedulerD10;cxTreeListD10;cxVerticalGridD10;dxBarD10;dxComnD10;dxBarDBNavD10;dxBarExtDBItemsD10;dxBarExtItemsD10;dxDockingD10;dxLayoutControlD10;dxNavBarD10;dxPSCoreD10;dxsbD10;dxPScxCommonD10;dxPSLnksD10;vclshlctrls;dxPScxExtCommonD10;dxPScxGridLnkD10;dxPScxPCProdD10;dxPScxScheduler2LnkD10;dxPScxTLLnkD10;dxPSdxLCLnkD10;dxPsPrVwAdvD10;pckMD5;pckUCDataConnector;pckUserControl_RT;PluginSDK_D10R;PNG_D10;PngComponentsD10;tb2k_d10;tbx_d10;JclVcl;Jcl;JvXPCtrlsD11R;JvCoreD11R;JvSystemD11R;JvStdCtrlsD11R;JvAppFrmD11R;JvBandsD11R;JvDBD11R;JvDlgsD11R;JvBDED11R;JvCmpD11R;JvCryptD11R;JvCtrlsD11R;JvCustomD11R;JvDockingD11R;JvDotNetCtrlsD11R;JvEDID11R;JvGlobusD11R;JvHMID11R;JvInterpreterD11R;JvJansD11R;JvManagedThreadsD11R;JvMMD11R;JvNetD11R;JvPageCompsD11R;JvPluginD11R;JvPrintPreviewD11R;JvRuntimeDesignD11R;JvTimeFrameworkD11R;JvUIBD11R;JvValidatorsD11R;JvWizardD11R;pckUCADOConn;pckUCBDEConn;pckUCIBXConn;pckUCMidasConn;cxIntlPrintSys3D10;cxExportD10;cxIntl5D10;GUISDK_D11R;ccpackD11;JSDialog100;fsTee11;fs11;frx11;frxADO11;frxBDE11;frxDB11;frxDBX11;frxe11;frxIBX11;frxTee11;fsADO11;fsBDE11;fsDB11;fsIBX11;websnap;soaprtl;IntrawebDB_90_100;Intraweb_90_100 - - - 7.0 - False - False - 0 - 3 - ..\..\Output\Release\Servidor - RELEASE - - - 7.0 - 3 - ..\..\Output\Debug\Servidor - DEBUG; - True - True - True - C:\jcl\lib\d11\debug;C:\JCL\lib\d11\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10 - C:\jcl\lib\d11\debug;C:\JCL\lib\d11\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10 - C:\jcl\lib\d11\debug;C:\JCL\lib\d11\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10 - C:\jcl\lib\d11\debug;C:\JCL\lib\d11\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10 - - - Delphi.Personality - - -FalseTrueFalse/standaloneTrueFalse1830FalseFalseFalseFalseFalse308212521.8.3.01.8.3.0jueves, 24 de junio de 2010 13:44 - ExpressPrinting System by Developer Express Inc. - FactuGES_Server.dpr - - - - - MainSource - - - - - -
srvEmpresas
- TDARemoteService -
- -
srvProvinciasPoblaciones_Impl
- TDataModule -
- - - -
srvUsuarios
- TDataAbstractService -
- - - - - - - -
RptAlbaranesCliente
- TDataModule -
- -
RptWordAlbaranCliente
- TDataModule -
- -
srvAlbaranesCliente
- TDataAbstractService -
- - - - -
RptAlbaranesProveedor
- TDataModule -
- -
RptWordAlbaranProveedor
- TDataModule -
- -
srvAlbaranesProveedor
- TDataAbstractService -
- - - -
srvAlmacenes
- TDARemoteService -
- - - - -
srvArticulos
- TDARemoteService -
- - - - -
RptComisiones
- TDataModule -
- -
srvComisiones
- TDataAbstractService -
- - - - - - - - -
RptEtiquetasContacto
- TDataModule -
- -
RptFichasEmpleado
- TDataModule -
- -
srvContactos
- TDARemoteService -
- - - -
srvFabricantes
- TDataAbstractService -
- - - - -
RptFacturasCliente
- TDataModule -
- -
RptWordFacturaCliente
- TDataModule -
- -
srvFacturasCliente
- TDataAbstractService -
- - - - -
RptFacturasProveedor
- TDataModule -
- -
srvFacturasProveedor
- TDataAbstractService -
- - - -
srvFamilias
- TDataAbstractService -
- - - -
srvFormasPago
- TDataAbstractService -
- -
srvGestorDocumentos
- TDataAbstractService -
- -
srvGestorInformes
- TDataAbstractService -
- - - -
srvHistoricoMovimientos
- TDataAbstractService -
- - - -
srvImpresiones
- TDARemoteService -
- - - -
srvInventario
- TDataAbstractService -
- - - - -
srvObras
- TDataAbstractService -
- - - - -
RptPedidosProveedor
- TDataModule -
- -
RptWordPedidoProveedor
- TDataModule -
- -
srvPedidosProveedor
- TDataAbstractService -
- - - - -
RptPedidosCliente
- TDataModule -
- -
srvPedidosCliente
- TDataAbstractService -
- - - - -
RptPresupuestosCliente
- TDataModule -
- -
RptWordCertificadoTrabajo
- TDataModule -
- -
RptWordPresupuestoCliente
- TDataModule -
- -
srvPresupuestosCliente
- TDataAbstractService -
- - - -
RptRecibosCliente
- TDataModule -
- -
srvRecibosCliente
- TDataAbstractService -
- - - -
RptRecibosProveedor
- TDataModule -
- -
srvRecibosProveedor
- TDataAbstractService -
- - - -
srvReferencias
- TDataAbstractService -
- -
srvRegistroCorreos
- TDataAbstractService -
- - - - -
RptRemesasCliente
- TDataModule -
- -
srvRemesasCliente
- TDataAbstractService -
- - - - -
RptRemesasProveedor
- TDataModule -
- -
srvRemesasProveedor
- TDataAbstractService -
- - - - - - - - - -
srvTiendaWeb
- TDataAbstractService -
- - - -
srvTiposIVA
- TDataAbstractService -
- - - -
srvUnidadesMedida
- TDataAbstractService -
- - - -
srvConfiguracion
- TDataAbstractService -
- -
frConexionBD
- TFrame -
- -
frConexionOSC
- TFrame -
- -
frConfGeneral
- TFrame -
- -
fConfiguracion
- TForm -
- -
FrameConfiguracion
- TFrame -
- -
srvLogin
- TDARemoteService -
- -
fAcercaDe
-
- -
dmServer
- TDataModule -
- -
fServerForm
-
- - - - - - - - - - - -
+ + {ebdcd25d-40d7-4146-91ec-a0ea4aa1dcd1} + FactuGES_Server.dpr + Debug + AnyCPU + DCC32 + ..\..\Output\Debug\Servidor\FactuGES_Server.exe + vcl;rtl;vclx;vclactnband;dbrtl;vcldb;vcldbx;bdertl;dsnap;dsnapcon;teeUI;teedb;tee;adortl;vclib;ibxpress;dbxcds;dbexpress;DbxCommonDriver;IndyCore;IndySystem;IndyProtocols;VclSmp;vclie;webdsnap;xmlrtl;inet;inetdbbde;inetdbxpress;RemObjects_BPDX_D11;RemObjects_RODX_D11;RemObjects_Indy_D11;RemObjects_Synapse_D11;RemObjects_WebBroker_D11;DataAbstract_Core_D11;DataAbstract_DBXDriver_D11;DataAbstract_IDE_D11;DataAbstract_Scripting_D11;DataAbstract_SDACDriver_D11;sdac105;dac105;DataAbstract_SQLiteDriver_D11;cxEditorsD10;cxLibraryD10;dxThemeD10;cxDataD10;cxExtEditorsD10;cxGridD10;cxPageControlD10;cxSchedulerD10;cxTreeListD10;cxVerticalGridD10;dxBarD10;dxComnD10;dxBarDBNavD10;dxBarExtDBItemsD10;dxBarExtItemsD10;dxDockingD10;dxLayoutControlD10;dxNavBarD10;dxPSCoreD10;dxsbD10;dxPScxCommonD10;dxPSLnksD10;vclshlctrls;dxPScxExtCommonD10;dxPScxGridLnkD10;dxPScxPCProdD10;dxPScxScheduler2LnkD10;dxPScxTLLnkD10;dxPSdxLCLnkD10;dxPsPrVwAdvD10;pckMD5;pckUCDataConnector;pckUserControl_RT;PluginSDK_D10R;PNG_D10;PngComponentsD10;tb2k_d10;tbx_d10;JclVcl;Jcl;JvXPCtrlsD11R;JvCoreD11R;JvSystemD11R;JvStdCtrlsD11R;JvAppFrmD11R;JvBandsD11R;JvDBD11R;JvDlgsD11R;JvBDED11R;JvCmpD11R;JvCryptD11R;JvCtrlsD11R;JvCustomD11R;JvDockingD11R;JvDotNetCtrlsD11R;JvEDID11R;JvGlobusD11R;JvHMID11R;JvInterpreterD11R;JvJansD11R;JvManagedThreadsD11R;JvMMD11R;JvNetD11R;JvPageCompsD11R;JvPluginD11R;JvPrintPreviewD11R;JvRuntimeDesignD11R;JvTimeFrameworkD11R;JvUIBD11R;JvValidatorsD11R;JvWizardD11R;pckUCADOConn;pckUCBDEConn;pckUCIBXConn;pckUCMidasConn;cxIntlPrintSys3D10;cxExportD10;cxIntl5D10;GUISDK_D11R;ccpackD11;JSDialog100;fsTee11;fs11;frx11;frxADO11;frxBDE11;frxDB11;frxDBX11;frxe11;frxIBX11;frxTee11;fsADO11;fsBDE11;fsDB11;fsIBX11;websnap;soaprtl;IntrawebDB_90_100;Intraweb_90_100 + + + 7.0 + False + False + 0 + 3 + ..\..\Output\Release\Servidor + RELEASE + + + 7.0 + 3 + ..\..\Output\Debug\Servidor + DEBUG; + True + True + True + C:\jcl\lib\d11\debug;C:\JCL\lib\d11\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10 + C:\jcl\lib\d11\debug;C:\JCL\lib\d11\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10 + C:\jcl\lib\d11\debug;C:\JCL\lib\d11\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10 + C:\jcl\lib\d11\debug;C:\JCL\lib\d11\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10 + + + Delphi.Personality + + + FalseTrueFalse/standaloneTrueFalse1830FalseFalseFalseFalseFalse308212521.8.3.01.8.3.0jueves, 24 de junio de 2010 13:44 + ExpressPrinting System by Developer Express Inc. + FactuGES_Server.dpr + + + + + MainSource + + + + + +
srvEmpresas
+ TDARemoteService +
+ +
srvProvinciasPoblaciones_Impl
+ TDataModule +
+ + + +
srvUsuarios
+ TDataAbstractService +
+ + + + + + + +
RptAlbaranesCliente
+ TDataModule +
+ +
RptWordAlbaranCliente
+ TDataModule +
+ +
srvAlbaranesCliente
+ TDataAbstractService +
+ + + + +
RptAlbaranesProveedor
+ TDataModule +
+ +
RptWordAlbaranProveedor
+ TDataModule +
+ +
srvAlbaranesProveedor
+ TDataAbstractService +
+ + + +
srvAlmacenes
+ TDARemoteService +
+ + + + +
srvArticulos
+ TDARemoteService +
+ + + + +
RptComisiones
+ TDataModule +
+ +
srvComisiones
+ TDataAbstractService +
+ + + + + + + + +
RptEtiquetasContacto
+ TDataModule +
+ +
RptFichasEmpleado
+ TDataModule +
+ +
srvContactos
+ TDARemoteService +
+ + + +
srvFabricantes
+ TDataAbstractService +
+ + + + +
RptFacturasCliente
+ TDataModule +
+ +
RptWordFacturaCliente
+ TDataModule +
+ +
srvFacturasCliente
+ TDataAbstractService +
+ + + + +
RptFacturasProveedor
+ TDataModule +
+ +
srvFacturasProveedor
+ TDataAbstractService +
+ + + +
srvFamilias
+ TDataAbstractService +
+ + + +
srvFormasPago
+ TDataAbstractService +
+ +
srvGestorDocumentos
+ TDataAbstractService +
+ +
srvGestorInformes
+ TDataAbstractService +
+ + + +
srvHistoricoMovimientos
+ TDataAbstractService +
+ + + +
srvImpresiones
+ TDARemoteService +
+ + + +
srvInventario
+ TDataAbstractService +
+ + + + +
srvObras
+ TDataAbstractService +
+ + + + +
RptPedidosProveedor
+ TDataModule +
+ +
RptWordPedidoProveedor
+ TDataModule +
+ +
srvPedidosProveedor
+ TDataAbstractService +
+ + + + +
RptPedidosCliente
+ TDataModule +
+ +
srvPedidosCliente
+ TDataAbstractService +
+ + + + +
RptPresupuestosCliente
+ TDataModule +
+ +
RptWordCertificadoTrabajo
+ TDataModule +
+ +
RptWordPresupuestoCliente
+ TDataModule +
+ +
srvPresupuestosCliente
+ TDataAbstractService +
+ + + +
RptRecibosCliente
+ TDataModule +
+ +
srvRecibosCliente
+ TDataAbstractService +
+ + + +
RptRecibosProveedor
+ TDataModule +
+ +
srvRecibosProveedor
+ TDataAbstractService +
+ + + +
srvReferencias
+ TDataAbstractService +
+ +
srvRegistroCorreos
+ TDataAbstractService +
+ + + + +
RptRemesasCliente
+ TDataModule +
+ +
srvRemesasCliente
+ TDataAbstractService +
+ + + + +
RptRemesasProveedor
+ TDataModule +
+ +
srvRemesasProveedor
+ TDataAbstractService +
+ + + + + + + + + +
srvTiendaWeb
+ TDataAbstractService +
+ + + +
srvTiposIVA
+ TDataAbstractService +
+ + + +
srvUnidadesMedida
+ TDataAbstractService +
+ + + +
srvConfiguracion
+ TDataAbstractService +
+ +
frConexionBD
+ TFrame +
+ +
frConexionOSC
+ TFrame +
+ +
frConfGeneral
+ TFrame +
+ +
fConfiguracion
+ TForm +
+ +
FrameConfiguracion
+ TFrame +
+ +
srvLogin
+ TDARemoteService +
+ +
fAcercaDe
+
+ +
dmServer
+ TDataModule +
+ +
fServerForm
+
+ + + + + + + + + + + +