unit uEditorClientes; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, uEditorContactos, Menus, ImgList, PngImageList, StdActns, ActnList, TB2ExtItems, TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar, JvExControls, JvComponent, JvNavigationPane, DB, uDADataTable, JvFormAutoSize, ComCtrls, uDAScriptingProvider, uDACDSDataTable, StdCtrls, JvAppStorage, JvAppRegistryStorage, JvFormPlacement, uCustomView, uViewBase, uViewBarraSeleccion, ExtCtrls, pngimage, JvComponentBase, uIEditorClientes, uViewGridBase, uViewGrid, uViewContactos, uViewClientes, TBXStatusBars, JvExComCtrls, JvStatusBar, JSDialog; type TfEditorClientes = class(TfEditorContactos, IEditorClientes) frViewClientes1: TfrViewClientes; actGruposCliente: TAction; JsPrevisualizarDialog: TJSDialog; JsImprimirDialog: TJSDialog; JsListaClientesNoEliminados: TJSDialog; procedure actGruposClienteExecute(Sender: TObject); protected procedure EliminarInterno; override; procedure ImprimirInterno; override; procedure PrevisualizarInterno; override; public constructor Create(AOwner: TComponent); override; procedure PonerTitulos(const ATitulo: string = ''); override; end; implementation uses uDataModuleContactos, uDataModuleBase, uEditorGridBase, uBizContactos, uDBSelectionListUtils, uDataModuleUsuarios, uDialogUtils, uClientesController, uGruposClienteController, uBizGruposCliente, uContactosController, uGridUtils; {$R *.dfm} { ******************************* TfEditorClientes ******************************* } procedure TfEditorClientes.actGruposClienteExecute(Sender: TObject); var AGruposController : IGruposClienteController; AGrupos : IBizGrupoCliente; begin AGruposController := TGruposClienteController.Create; try AGrupos := (AGruposController.BuscarTodos as IBizGrupoCliente); AGruposController.VerTodos(AGrupos); finally AGrupos := NIL; AGruposController := NIL; end; end; constructor TfEditorClientes.Create(AOwner: TComponent); begin inherited; ViewGrid := frViewClientes1; //CreateView(TfrViewClientes) as IViewContactos; end; procedure TfEditorClientes.EliminarInterno; var AContactos: IBizContacto; AllItems: Boolean; begin AContactos := Nil; AllItems := False; if MultiSelect and Assigned(ViewGrid) then AllItems := (ViewGrid.NumSeleccionados > 1); if AllItems then begin if (Application.MessageBox('¿Desea borrar los clientes seleccionados?', 'Atención', MB_YESNO) = IDYES) then begin SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Contactos as ISeleccionable).SelectedRecords); AContactos := (Controller as IContactosController).ExtraerSeleccionados(Contactos, ViewGrid) as IBizContacto; end end else begin if (Application.MessageBox('¿Desea borrar el cliente seleccionado?', 'Atención', MB_YESNO) = IDYES) then AContactos := Contactos; end; if Assigned(AContactos) then begin (FController as IClientesController).Eliminar(AContactos, AllItems); if AllItems then begin JsListaClientesNoEliminados.Content.Clear; if (AContactos.DataTable.RecordCount > 0) then begin with AContactos.DataTable do begin First; while not EOF do begin JsListaClientesNoEliminados.Content.Add('Cliente: ' + AContactos.REFERENCIA + ' ' + AContactos.NOMBRE); Next; end; end; JsListaClientesNoEliminados.Execute; end; actRefrescar.Execute; end; end; ViewGrid.GotoFirst; end; procedure TfEditorClientes.ImprimirInterno; var Respuesta : Integer; AContactos: IBizContacto; begin AContactos := Nil; //Si esta agrupado solo podré imprimir la lista de elementos visibles if not ViewGrid.esSeleccionCeldaDatos then inherited else begin Respuesta := JsImprimirDialog.Execute; if Respuesta <> IDCANCEL then begin case JsImprimirDialog.CustomButtonResult of 200 : begin // Lista de elementos visibles inherited; end; 100 : begin // Elemento Seleccionado SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Contactos as ISeleccionable).SelectedRecords); AContactos := (Controller as IContactosController).ExtraerSeleccionados(Contactos, ViewGrid) as IBizContacto; if Assigned(AContactos) then if FController.Print(AContactos) then RefrescarInterno; end; end; end; end; end; procedure TfEditorClientes.PonerTitulos(const ATitulo: string); var FTitulo : String; begin FTitulo := 'Lista de clientes - ' + dmUsuarios.EmpresaActual.NOMBRE; inherited PonerTitulos(FTitulo); end; procedure TfEditorClientes.PrevisualizarInterno; var Respuesta : Integer; AContactos: IBizContacto; begin AContactos := Nil; //Si esta agrupado solo podré imprimir la lista de elementos visibles if not ViewGrid.esSeleccionCeldaDatos then inherited else begin Respuesta := JsPrevisualizarDialog.Execute; if Respuesta <> IDCANCEL then begin case JsPrevisualizarDialog.CustomButtonResult of 200 : begin // Lista de elementos visibles inherited; end; 100 : begin // Elemento Seleccionado SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Contactos as ISeleccionable).SelectedRecords); AContactos := (Controller as IContactosController).ExtraerSeleccionados(Contactos, ViewGrid) as IBizContacto; if Assigned(AContactos) then FController.Preview(AContactos); end; end; end; end; end; end.