AbetoDesign_FactuGES2/Source/Modulos/Contabilidad/Views/uEditorExtractoMovimientos.pas

265 lines
8.9 KiB
ObjectPascal

unit uEditorExtractoMovimientos;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uEditorBase, ToolWin, ComCtrls, JvExControls, JvComponent,
JvNavigationPane, uViewDiario, uBizAsientos, ActnList, DBActns, uViewGrid,
Menus, uDataModuleBase, ImgList, PngImageList, TB2Dock, TB2Toolbar, TBX,
TB2Item, StdActns, TB2ExtItems, TBXExtItems, TB2MRU, DB, uDADataTable,
JvFormAutoSize, uDAScriptingProvider, uDACDSDataTable, JvAppStorage,
JvAppRegistryStorage, JvFormPlacement, ExtCtrls, uCustomView, uViewBase,
uViewBarraSeleccion, pngimage, uEditorGridBase, JvComponentBase, uViewGridBase,
uAsientosController, JvExComCtrls, JvStatusBar, uDAInterfaces, uViewEpigrafes,
uBizDiario, dxGDIPlusClasses, uViewExtractoMovimientos, uIEditorExtractoMovimientos;
type
TfEditorExtractoMovimientos = class(TfEditorGridBase, IEditorExtractoMovimientos)
frViewExtractoMovimientos1: TfrViewExtractoMovimientos;
actPuntear: TAction;
TBXItem38: TTBXItem;
actCerrarCaja: TAction;
TBXItem39: TTBXItem;
TBXSeparatorItem17: TTBXSeparatorItem;
actSetBancoDePago: TAction;
TBXItem40: TTBXItem;
TBXSeparatorItem18: TTBXSeparatorItem;
procedure FormShow(Sender: TObject);
procedure actModificarUpdate(Sender: TObject);
procedure actEliminarUpdate(Sender: TObject);
procedure actPuntearExecute(Sender: TObject);
procedure actPuntearUpdate(Sender: TObject);
procedure actNuevoUpdate(Sender: TObject);
procedure actCerrarCajaExecute(Sender: TObject);
procedure actSetBancoDePagoExecute(Sender: TObject);
private
FDiario: IBizDiario;
FController : IAsientosController;
protected
function GetDiario: IBizDiario;
procedure SetDiario(const Value: IBizDiario);
procedure OnExtractoChanged(Sender: TObject);
function GetController : IAsientosController; virtual;
procedure SetController (const Value : IAsientosController); virtual;
procedure NuevoInterno; override;
procedure EliminarInterno; override;
procedure ModificarInterno; override;
procedure PrevisualizarInterno; override;
procedure ImprimirInterno; override;
public
procedure PonerTitulos(const ATitulo: string = ''); override;
property Diario: IBizDiario read GetDiario write SetDiario;
property Controller : IAsientosController read GetController write SetController;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
implementation
uses
uFactuGES_App, uBizEjercicios, uBizApuntes, uSubCuentasController;
{$R *.dfm}
{
****************************** TfEditorAsientos *******************************
}
procedure TfEditorExtractoMovimientos.FormShow(Sender: TObject);
begin
inherited;
if not Assigned(ViewGrid) then
raise Exception.Create('No hay ninguna vista asignada');
if not Assigned(Diario) then
raise Exception.Create('No hay ningún Diario asignado');
if (AppFactuGES.UsuarioActivo.ID_PERFIL = CTE_PERFIL_ADMINISTRADOR)
or (AppFactuGES.UsuarioActivo.ID_PERFIL = CTE_PERFIL_GERENCIA) then
begin
actSetBancoDePago.Enabled := True;
actSetBancoDePago.Visible := True;
end
else
begin
actSetBancoDePago.Enabled := False;
actSetBancoDePago.Visible := False;
end;
//Para que coja el ancho automático
actAnchoAuto.Execute;
end;
function TfEditorExtractoMovimientos.GetDiario: IBizDiario;
begin
Result := FDiario;
end;
procedure TfEditorExtractoMovimientos.ImprimirInterno;
begin
inherited;
end;
function TfEditorExtractoMovimientos.GetController: IAsientosController;
begin
Result := FController;
end;
procedure TfEditorExtractoMovimientos.ModificarInterno;
begin
inherited;
FController.Ver(FController.Buscar(Diario.ID_ASIENTO));
actRefrescar.Execute;
end;
procedure TfEditorExtractoMovimientos.NuevoInterno;
begin
inherited;
FController.Ver(FController.Anadir(frViewExtractoMovimientos1.cxGrid.ActiveLevel.Tag));
actRefrescar.Execute;
end;
procedure TfEditorExtractoMovimientos.OnExtractoChanged(Sender: TObject);
begin
Diario := frViewExtractoMovimientos1.Diario;
end;
procedure TfEditorExtractoMovimientos.PonerTitulos(const ATitulo: string);
var
FTitulo : String;
begin
FTitulo := 'Cajas / Bancos - ' + AppFactuGES.EmpresaActiva.NOMBRE + ' - ' + AppFactuGES.EjercicioActivo.NOMBRE + ' (' + AppFactuGES.EjercicioActivo.ESTADO + ')';
inherited PonerTitulos(FTitulo);
end;
procedure TfEditorExtractoMovimientos.PrevisualizarInterno;
begin
inherited;
end;
procedure TfEditorExtractoMovimientos.SetDiario(const Value: IBizDiario);
begin
FDiario := Value;
if Assigned(FDiario) then
dsDataTable.DataTable := FDiario.DataTable;
end;
procedure TfEditorExtractoMovimientos.SetController(const Value: IAsientosController);
begin
FController := Value;
if Assigned(FController) and Assigned(ViewGrid) then
(ViewGrid as IViewExtractoMovimientos).Controller := FController;
end;
destructor TfEditorExtractoMovimientos.Destroy;
begin
frViewExtractoMovimientos1.OnExtractoChange := Nil;
FDiario := Nil;
inherited;
end;
procedure TfEditorExtractoMovimientos.EliminarInterno;
begin
if (Application.MessageBox('¿Está seguro que desea borrar el asiento seleccionado?', 'Atención', MB_YESNO) = IDYES) then
begin
inherited;
if FController.Eliminar(Diario.ID_ASIENTO) then
actRefrescar.Execute;
end;
end;
procedure TfEditorExtractoMovimientos.actPuntearExecute(Sender: TObject);
begin
inherited;
FController.Puntear(Diario);
end;
procedure TfEditorExtractoMovimientos.actPuntearUpdate(Sender: TObject);
begin
if HayDatos and Assigned(ViewGrid) then
(Sender as TAction).Enabled := not (dsDataTable.DataTable.State in dsEditModes)
and not ViewGrid.IsEmpty
and ViewGrid.esSeleccionCeldaDatos
else
(Sender as TAction).Enabled := False;
if (Sender as TAction).Enabled then
(Sender as TAction).Enabled := (AppFactuGES.EjercicioActivo.ESTADO = CTE_ABIERTO);
end;
procedure TfEditorExtractoMovimientos.actSetBancoDePagoExecute(Sender: TObject);
begin
inherited;
if (frViewExtractoMovimientos1.SubCuentas.Locate('ID', frViewExtractoMovimientos1.cxGrid.ActiveLevel.Tag,[])) then
begin
if (frViewExtractoMovimientos1.SubCuentas.REF_CUENTA = inttostr(CTE_CUENTASCAJA)) then
showmessage('No es posible poner una caja como cuenta de pago para transferencias por defecto')
else
begin
FController.SetBancoPorDefecto(frViewExtractoMovimientos1.SubCuentas.ID_EJERCICIO, frViewExtractoMovimientos1.SubCuentas.ID);
frViewExtractoMovimientos1.RefrescarSubcuentas(frViewExtractoMovimientos1.SubCuentas.ID);
end;
end;
end;
procedure TfEditorExtractoMovimientos.actCerrarCajaExecute(Sender: TObject);
begin
inherited;
if FController.CerrarCajaBanco(frViewExtractoMovimientos1.cxGrid.ActiveLevel.Tag) then
actRefrescar.Execute;
ViewGrid.GotoFirst;
end;
procedure TfEditorExtractoMovimientos.actEliminarUpdate(Sender: TObject);
begin
inherited;
//No se podrá eliminar un asiento si es automático por factura, si el ejercicio esta cerrado o el asiento esta punteado
if (Sender as TAction).Enabled then
if Assigned(Diario) then
(Sender as TAction).Enabled := (ViewGrid._FocusedView.Controller.SelectedRowCount = 1)
and Diario.ID_FACTURAIsNull
and Diario.ID_PAGOIsNull
and (Diario.ESTADO = CTE_ABIERTO)
and (Diario.PUNTEADO = CTE_NO_PUNTEADO);
end;
procedure TfEditorExtractoMovimientos.actModificarUpdate(Sender: TObject);
begin
inherited;
//No se podrá modificar un asiento si es automático por factura, si el ejercicio esta cerrado o el asiento esta punteado
if (Sender as TAction).Enabled then
if Assigned(Diario) then
(Sender as TAction).Enabled := (ViewGrid._FocusedView.Controller.SelectedRowCount = 1)
and Diario.ID_FACTURAIsNull
and Diario.ID_PAGOIsNull
and (Diario.ESTADO = CTE_ABIERTO)
and (Diario.PUNTEADO = CTE_NO_PUNTEADO);
end;
procedure TfEditorExtractoMovimientos.actNuevoUpdate(Sender: TObject);
begin
inherited;
if (Sender as TAction).Enabled then
if Assigned(Diario) then
(Sender as TAction).Enabled := AppFactuGES.EjercicioActivo.ESTADO = CTE_ABIERTO;
end;
constructor TfEditorExtractoMovimientos.Create(AOwner: TComponent);
begin
inherited;
ViewGrid := frViewExtractoMovimientos1;
//Se establece este evento porque el control sobre el objeto de negocio recae en las vista ya que cambia
//en función de la pestaña en la que se encuentre
frViewExtractoMovimientos1.OnExtractoChange := OnExtractoChanged;
end;
end.