unit uEditorRemesaProveedor; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uEditorDBItem, ToolWin, ComCtrls, JvExControls, JvComponent, uBizRemesasProveedor, JvNavigationPane, ActnList, uEditorBase, StdActns, TB2Dock, TB2Toolbar, TBX, ImgList, PngImageList, TB2Item, uEditorItem, DB, uDADataTable, uEditorDBBase, JvFormAutoSize, uDAScriptingProvider, uDACDSDataTable, StdCtrls, pngimage, ExtCtrls, TBXDkPanels, JvButton, AppEvnts, uCustomView, uViewBase, JvAppStorage, JvAppRegistryStorage, JvFormPlacement, JvComponentBase, cxCustomData, uViewRemesasProveedor, uIEditorRemesaProveedor, uRemesasProveedorController, JvExComCtrls, JvStatusBar, dxLayoutLookAndFeels, uViewGridBase, uViewGrid, uViewRecibosRemesaProveedor, uViewTotales, uViewDetallesGenerico, uViewRemesaProveedor, uDAInterfaces, cxControls, cxContainer, cxEdit, cxLabel; type TfEditorRemesaProveedor = class(TfEditorDBItem, IEditorRemesaProveedor) dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList; dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel; frViewTotales1: TfrViewTotales; actVolcarDisco: TAction; TBXSubmenuItem2: TTBXSubmenuItem; TBXItem7: TTBXItem; TBXItem33: TTBXItem; TBXSeparatorItem6: TTBXSeparatorItem; frViewRecibosRemesaProveedor1: TfrViewRecibosRemesaProveedor; frViewRemesaProveedor1: TfrViewRemesaProveedor; procedure FormShow(Sender: TObject); procedure CustomEditorClose(Sender: TObject; var Action: TCloseAction); procedure actAnadirRecibosExecute(Sender: TObject); procedure actEliminarReciboExecute(Sender: TObject); procedure JvFormStorageRestorePlacement(Sender: TObject); procedure JvFormStorageSavePlacement(Sender: TObject); procedure frViewRecibosRemesaProveedor1cxGridViewDataControllerSummaryAfterSummary( ASender: TcxDataSummary); procedure actVolcarDiscoUpdate(Sender: TObject); procedure actVolcarDiscoExecute(Sender: TObject); private procedure OnRecibosChanged(Sender: TObject); protected FController : IRemesasProveedorController; FRemesaProveedor: IBizRemesaProveedor; FViewRemesaProveedor : IViewRemesaProveedor; function GetController : IRemesasProveedorController; procedure SetController (const Value : IRemesasProveedorController); virtual; function GetRemesaProveedor: IBizRemesaProveedor; virtual; procedure SetRemesaProveedor(const Value: IBizRemesaProveedor); virtual; function GetViewRemesaProveedor: IViewRemesaProveedor; procedure SetViewRemesaProveedor(const Value: IViewRemesaProveedor); property ViewRemesaProveedor: IViewRemesaProveedor read GetViewRemesaProveedor write SetViewRemesaProveedor; procedure GuardarInterno; override; procedure EliminarInterno; override; procedure PrevisualizarInterno; override; procedure ImprimirInterno; override; procedure CerrarInterno; override; procedure PonerTitulos(const ATitulo: string = ''); override; function GetModified: Boolean; override; function PuedoImprimir: Boolean; override; public property RemesaProveedor: IBizRemesaProveedor read GetRemesaProveedor write SetRemesaProveedor; constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; implementation {$R *.dfm} uses uDataTableUtils, uDataModuleUsuarios, uDialogUtils, uCustomEditor, uDataModuleRemesasProveedor, uDataModuleBase, uBizFamilias, uFamiliasController, uFactuGES_App; // uBancaElectronicaController; { ******************************* TfEditorRemesaProveedor ******************************* } function TfEditorRemesaProveedor.GetRemesaProveedor: IBizRemesaProveedor; begin Result := FRemesaProveedor; end; function TfEditorRemesaProveedor.GetController: IRemesasProveedorController; begin Result := FController; end; function TfEditorRemesaProveedor.GetModified: Boolean; var bCambiado : Boolean; begin bCambiado := inherited GetModified; //Si no hay cambios miramos que no los halla en la lista de recibos if not bCambiado then bCambiado := frViewRecibosRemesaProveedor1.Modified; Result := bCambiado; end; function TfEditorRemesaProveedor.PuedoImprimir: Boolean; begin Result := inherited PuedoImprimir and (not RemesaProveedor.Recibos.IDIsNull); end; function TfEditorRemesaProveedor.GetViewRemesaProveedor: IViewRemesaProveedor; begin Result := FViewRemesaProveedor; end; procedure TfEditorRemesaProveedor.GuardarInterno; var bEsNuevo : Boolean; begin inherited; ShowHourglassCursor; frViewRecibosRemesaProveedor1.OnViewModified := Nil; //frViewDetallesFacturaProveedor1.SaveGridStatus; // Para guardar estado del grid // frViewDetallesFacturaProveedor1.BeginUpdate; // Para que no se mueva el foco try bEsNuevo := FRemesaProveedor.EsNuevo; FController.Guardar(FRemesaProveedor); finally // frViewDetallesFacturaProveedor1.EndUpdate; // frViewDetallesFacturaProveedor1.RestoreGridStatus; HideHourglassCursor; end; if bEsNuevo then ShowInfoMessage('La remesa de pago se ha dado de alta con el código ' + FRemesaProveedor.REFERENCIA); Modified := False; frViewRecibosRemesaProveedor1.Modified := False; frViewRecibosRemesaProveedor1.OnViewModified := OnRecibosChanged; end; procedure TfEditorRemesaProveedor.ImprimirInterno; begin inherited; FController.Print(FRemesaProveedor); end; procedure TfEditorRemesaProveedor.JvFormStorageRestorePlacement(Sender: TObject); begin inherited; //frViewRecibosRemesaProveedor1.RestoreFromRegistry(JvAppRegistryStorage.Root); end; procedure TfEditorRemesaProveedor.JvFormStorageSavePlacement(Sender: TObject); begin inherited; //frViewRecibosRemesaProveedor1.StoreToRegistry(JvAppRegistryStorage.Root); end; procedure TfEditorRemesaProveedor.OnRecibosChanged(Sender: TObject); begin ActualizarEstadoEditor; end; procedure TfEditorRemesaProveedor.PonerTitulos(const ATitulo: string); var FTitulo : String; begin FTitulo := ATitulo; if (FTitulo = '') and Assigned(RemesaProveedor) then begin if RemesaProveedor.EsNuevo then FTitulo := 'Nueva remesa de pago' else FTitulo := 'Remesa de pago'; end; inherited PonerTitulos(FTitulo); Self.Caption := FTitulo + ' (' + AppFactuGES.EmpresaActiva.NOMBRE + ')'; end; procedure TfEditorRemesaProveedor.PrevisualizarInterno; begin inherited; FController.Preview(FRemesaProveedor); end; procedure TfEditorRemesaProveedor.SetRemesaProveedor(const Value: IBizRemesaProveedor); begin FRemesaProveedor := Value; if Assigned(FRemesaProveedor) then begin dsDataTable.DataTable := FRemesaProveedor.DataTable; frViewRecibosRemesaProveedor1.RemesaProveedor := FRemesaProveedor; frViewRecibosRemesaProveedor1.OnViewModified := OnRecibosChanged; end else begin dsDataTable.DataTable := Nil; frViewRecibosRemesaProveedor1.RemesaProveedor := Nil; frViewRecibosRemesaProveedor1.OnViewModified := Nil; end; if Assigned(FViewRemesaProveedor) then FViewRemesaProveedor.RemesaProveedor := FRemesaProveedor; frViewTotales1.DADataSource.DataTable := dsDataTable.DataTable; end; procedure TfEditorRemesaProveedor.SetController(const Value: IRemesasProveedorController); begin FController := Value; if Assigned(FController) then begin (ViewRemesaProveedor as IViewRemesaProveedor).Controller := (FController as IRemesasProveedorController); frViewRecibosRemesaProveedor1.Controller := (FController as IRemesasProveedorController); end; end; procedure TfEditorRemesaProveedor.SetViewRemesaProveedor(const Value: IViewRemesaProveedor); begin FViewRemesaProveedor := Value; if Assigned(FViewRemesaProveedor) and Assigned(RemesaProveedor) then begin FViewRemesaProveedor.RemesaProveedor := RemesaProveedor; FViewRemesaProveedor.Controller := (FController as IRemesasProveedorController); end; end; procedure TfEditorRemesaProveedor.FormShow(Sender: TObject); begin inherited; if not Assigned(FViewRemesaProveedor) then raise Exception.Create('No hay ninguna vista asignada'); if not Assigned(RemesaProveedor) then raise Exception.Create('No hay ningún almacén asignado'); RemesaProveedor.DataTable.Active := True; //Falla si lo hacemos por dfm frViewRecibosRemesaProveedor1.cxGridView.OptionsSelection.MultiSelect := False; end; procedure TfEditorRemesaProveedor.frViewRecibosRemesaProveedor1cxGridViewDataControllerSummaryAfterSummary(ASender: TcxDataSummary); Var AImporteTotal: Currency; begin inherited; if VarIsNull(ASender.FooterSummaryValues[0]) then AImporteTotal := 0 else AImporteTotal := ASender.FooterSummaryValues[0]; if Assigned(RemesaProveedor) then begin if (RemesaProveedor.IMPORTE_TOTAL <> AImporteTotal) then begin if not RemesaProveedor.DataTable.Editing then begin RemesaProveedor.Edit; RemesaProveedor.IMPORTE_TOTAL := AImporteTotal; RemesaProveedor.Post; end; end; end; end; destructor TfEditorRemesaProveedor.Destroy; begin // Utilizar mejor OnClose; inherited; end; procedure TfEditorRemesaProveedor.actAnadirRecibosExecute(Sender: TObject); begin inherited; // HayCambios := FController.ElegirRecibosProveedor(RemesaProveedor) OR HayCambios; end; procedure TfEditorRemesaProveedor.actEliminarReciboExecute(Sender: TObject); begin inherited; // FController.EliminarReciboProveedor(RemesaProveedor); // HayCambios := True; end; procedure TfEditorRemesaProveedor.actVolcarDiscoExecute(Sender: TObject); //var // ABancaController : IBancaElectronicaController; begin { inherited; ABancaController := TBancaElectronicaController.Create; try ABancaController.GenerarFicheroNorma19(FRemesaProveedor.ID); finally ABancaController := NIL; end; } end; procedure TfEditorRemesaProveedor.actVolcarDiscoUpdate(Sender: TObject); begin // (Sender as TAction).Enabled := HayDatos and (not FRemesaProveedor.EsNuevo); end; procedure TfEditorRemesaProveedor.CerrarInterno; begin frViewRecibosRemesaProveedor1.OnViewModified := Nil; inherited; end; constructor TfEditorRemesaProveedor.Create(AOwner: TComponent); begin inherited; pgPaginas.ActivePageIndex := 0; FViewRemesaProveedor := frViewRemesaProveedor1; end; procedure TfEditorRemesaProveedor.CustomEditorClose(Sender: TObject; var Action: TCloseAction); begin inherited; dsDataTable.DataTable := NIL; FViewRemesaProveedor := NIL; FRemesaProveedor := NIL; end; procedure TfEditorRemesaProveedor.EliminarInterno; begin if (Application.MessageBox('¿Desea borrar esta remesa de pago?', 'Atención', MB_YESNO) = IDYES) then begin inherited; if not FController.Eliminar(FRemesaProveedor) then actRefrescar.Execute; end; end; end.