{ =============================================================================== Copyright (©) 2007. Rodax Software. =============================================================================== Los contenidos de este fichero son propiedad de Rodax Software titular del copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado, en su totalidad o en parte, con el permiso escrito de Rodax Software, o de acuerdo con los términos y condiciones establecidas en el acuerdo/contrato bajo el que se suministra. ----------------------------------------------------------------------------- Web: www.rodax-software.com =============================================================================== Fecha primera versión: Versión actual: 1.0.0 Fecha versión actual: =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- =============================================================================== } unit uEditorRecibosCliente; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, DB, uDADataTable, JvAppStorage, JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList, PngImageList, StdActns, ActnList, ComCtrls, TB2ExtItems, TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls, JvExControls, JvNavigationPane, uViewGrid, pngimage, JvComponentBase, JvExComCtrls, JvStatusBar, uViewBase, uViewBarraSeleccion, uViewGridBase, uEditorGridBase, uCustomView, uBizRecibosCliente, uIEditorRecibosCliente, uRecibosClienteController, uViewRecibosCliente, JSDialog; type TfEditorRecibosCliente = class(TfEditorGridBase, IEditorRecibosCliente) frViewRecibosCliente1: TfrViewRecibosCliente; JsPrevisualizarDialog: TJSDialog; JsImprimirDialog: TJSDialog; actEnviarEMail: TAction; TBXItem38: TTBXItem; procedure FormShow(Sender: TObject); procedure actEnviarEMailExecute(Sender: TObject); procedure actEnviarEMailUpdate(Sender: TObject); procedure OnListaAnosChange(Sender: TObject; const Text: string); private FRecibosCliente: IBizRecibosCliente; FController : IRecibosClienteController; protected function GetRecibosCliente: IBizRecibosCliente; procedure SetRecibosCliente(const Value: IBizRecibosCliente); function GetController : IRecibosClienteController; procedure SetController (const Value : IRecibosClienteController); procedure NuevoInterno; override; procedure EliminarInterno; override; procedure ModificarInterno; override; procedure DuplicarInterno; override; procedure ImprimirInterno; override; procedure PrevisualizarInterno; override; procedure RefrescarInterno; override; public procedure PonerTitulos(const ATitulo: string = ''); override; property RecibosCliente: IBizRecibosCliente read GetRecibosCliente write SetRecibosCliente; property Controller : IRecibosClienteController read GetController write SetController; constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; implementation uses cxControls, uDataModuleRecibosCliente, uDataModuleUsuarios, uGridUtils, uDBSelectionListUtils; {$R *.dfm} { *************************** TfEditorRecibosCliente *************************** } procedure TfEditorRecibosCliente.actEnviarEMailExecute(Sender: TObject); var ARecibos : IBizRecibosCliente; begin inherited; if ViewGrid.NumSeleccionados = 1 then FController.GenerarEmailRecibo(RecibosCliente) else begin ShowHourglassCursor; try SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (RecibosCliente as ISeleccionable).SelectedRecords); ARecibos := (Controller as IRecibosClienteController).ExtraerSeleccionados(RecibosCliente, ViewGrid) as IBizRecibosCliente; if Assigned(ARecibos) then if FController.EnviarEmailREcibos(ARecibos) then RefrescarInterno; finally ARecibos := NIL; HideHourglassCursor; end; end; end; procedure TfEditorRecibosCliente.actEnviarEMailUpdate(Sender: TObject); begin if HayDatos and Assigned(ViewGrid) then (Sender as TAction).Enabled := ViewGrid.esSeleccionCeldaDatos and (ViewGrid.NumSeleccionados > 0) else (Sender as TAction).Enabled := False; end; constructor TfEditorRecibosCliente.Create(AOwner: TComponent); begin inherited; FController := TRecibosClienteController.Create; ViewGrid := frViewRecibosCliente1; // CreateView(TfrViewRecibosCliente) as IViewRecibosCliente; end; destructor TfEditorRecibosCliente.Destroy; begin FRecibosCliente := NIL; FController := NIL; inherited; end; procedure TfEditorRecibosCliente.DuplicarInterno; begin // No se pueden duplicar recibos end; procedure TfEditorRecibosCliente.EliminarInterno; begin // //No se pueden eliminar recibos end; procedure TfEditorRecibosCliente.FormShow(Sender: TObject); begin cbxListaAnos.OnChange := OnListaAnosChange; //OJO SIEMPRE ANTES QUE EL INHERITED inherited; if not Assigned(ViewGrid) then raise Exception.Create('No hay ninguna vista asignada'); if not Assigned(FRecibosCliente) then raise Exception.Create('No hay ningún objeto asignado'); FRecibosCliente.DataTable.Active := True; ViewGrid.GotoFirst; end; function TfEditorRecibosCliente.GetController: IRecibosClienteController; begin Result := FController; end; function TfEditorRecibosCliente.GetRecibosCliente: IBizRecibosCliente; begin Result := FRecibosCliente; end; procedure TfEditorRecibosCliente.ImprimirInterno; var Respuesta : Integer; ARecibosCliente: IBizRecibosCliente; AllItems: Boolean; begin ARecibosCliente := Nil; AllItems := False; if MultiSelect and Assigned(ViewGrid) then AllItems := (ViewGrid.NumSeleccionados > 1); //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 if AllItems then begin SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (RecibosCliente as ISeleccionable).SelectedRecords); ARecibosCliente := (Controller as IRecibosClienteController).ExtraerSeleccionados(RecibosCliente, ViewGrid) as IBizRecibosCliente; end else ARecibosCliente := RecibosCliente; if Assigned(ARecibosCliente) then if FController.Print(ARecibosCliente, AllItems) then RefrescarInterno; end; end; end; end; end; procedure TfEditorRecibosCliente.ModificarInterno; begin inherited; FController.Ver(FRecibosCliente); RefrescarInterno; end; procedure TfEditorRecibosCliente.NuevoInterno; begin // inherited; //No se pueden añadir recibos nuevos end; procedure TfEditorRecibosCliente.OnListaAnosChange(Sender: TObject; const Text: string); begin Controller.FiltrarAno(RecibosCliente, WhereDataTable, Text); if RecibosCliente.DataTable.Active then RefrescarInterno; end; procedure TfEditorRecibosCliente.PonerTitulos(const ATitulo: string); var FTitulo : String; begin FTitulo := 'Lista de recibos de cliente - ' + dmUsuarios.EmpresaActual.NOMBRE; inherited PonerTitulos(FTitulo); end; procedure TfEditorRecibosCliente.PrevisualizarInterno; var Respuesta : Integer; ARecibosCliente: IBizRecibosCliente; AllItems: Boolean; begin ARecibosCliente := Nil; AllItems := False; if MultiSelect and Assigned(ViewGrid) then AllItems := (ViewGrid.NumSeleccionados > 1); //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 if AllItems then begin SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (RecibosCliente as ISeleccionable).SelectedRecords); ARecibosCliente := (Controller as IRecibosClienteController).ExtraerSeleccionados(RecibosCliente, ViewGrid) as IBizRecibosCliente; end else ARecibosCliente := RecibosCliente; if Assigned(ARecibosCliente) then FController.Preview(ARecibosCliente, AllItems); end; end; end; end; end; procedure TfEditorRecibosCliente.RefrescarInterno; begin //Volvemos a cargar los años de las facturas if Assigned(FController) then ListaAnos := FController.DarListaAnosRecibos; inherited; end; procedure TfEditorRecibosCliente.SetController(const Value: IRecibosClienteController); begin FController := Value; if Assigned(FController) then ListaAnos := FController.DarListaAnosRecibos; end; procedure TfEditorRecibosCliente.SetRecibosCliente(const Value: IBizRecibosCliente); begin FRecibosCliente := Value; if Assigned(FRecibosCliente) then begin //Se guarda el where de la sentencia origen, por si el editor tiene filtros que //afecten a este where y en un futuro se desea volver al where origen (filtro de año)) WhereDataTable := FRecibosCliente.DataTable.Where.Clause; dsDataTable.DataTable := FRecibosCliente.DataTable; if Assigned(ViewGrid) then (ViewGrid as IViewRecibosCliente).Recibos := FRecibosCliente; end; end; end.