git-svn-id: https://192.168.0.254/svn/Proyectos.AlonsoYSal_FactuGES2/trunk@6 40301925-124e-1c4e-b97d-170ad7a8785b
296 lines
9.2 KiB
ObjectPascal
296 lines
9.2 KiB
ObjectPascal
unit uViewExtractoMovimientos;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
|
Dialogs, uViewGrid, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
|
|
cxDataStorage, cxEdit, DB, cxDBData, uDADataTable, cxGridLevel,
|
|
cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView,
|
|
cxGridTableView, cxGridDBTableView, cxGrid, uBizDiario, ActnList, Menus,
|
|
cxGridBandedTableView, cxGridDBBandedTableView, JvComponent,
|
|
JvFormAutoSize, PngImageList, ImgList, dxPSGlbl, dxPSUtl, dxPSEngn,
|
|
dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns,
|
|
dxPSEdgePatterns, dxPSCore, dxPScxCommon, dxPScxGrid6Lnk,
|
|
cxGridCustomPopupMenu, cxGridPopupMenu, uViewFiltroBase, TB2Item, TBX,
|
|
TB2Toolbar, TBXDkPanels, TB2Dock, dxPgsDlg, uDAInterfaces, cxCalendar,
|
|
cxImageComboBox, cxTextEdit, cxCurrencyEdit, uBizSubCuentas, uAsientosController,
|
|
uCustomView, uViewBase;
|
|
|
|
type
|
|
IViewExtractoMovimientos = interface(IViewGrid)
|
|
['{5CA170E3-5552-4EF5-A2C0-02E4C9052045}']
|
|
function GetDiario: IBizDiario;
|
|
procedure SetDiario(const Value: IBizDiario);
|
|
property Diario: IBizDiario read GetDiario write SetDiario;
|
|
function GetSubCuentas: IBizSubCuenta;
|
|
procedure SetSubCuentas(const Value: IBizSubCuenta);
|
|
property SubCuentas: IBizSubCuenta read GetSubCuentas write SetSubCuentas;
|
|
function GetController : IAsientosController;
|
|
procedure SetController (const Value : IAsientosController);
|
|
property Controller : IAsientosController read GetController write SetController;
|
|
function GetExtractoChange: TNotifyEvent;
|
|
procedure SetExtractoChange(const Value: TNotifyEvent);
|
|
property OnExtractoChange: TNotifyEvent read GetExtractoChange write SetExtractoChange;
|
|
end;
|
|
|
|
TfrViewExtractoMovimientos = class(TfrViewGrid, IViewExtractoMovimientos)
|
|
cxGridViewCONCEPTO: TcxGridDBColumn;
|
|
cxGridViewREF_SUBCUENTA: TcxGridDBColumn;
|
|
cxGridViewID_ASIENTO: TcxGridDBColumn;
|
|
PngImageList: TPngImageList;
|
|
cxGridViewSUBCUENTA: TcxGridDBColumn;
|
|
cxGridViewDEBE: TcxGridDBColumn;
|
|
cxGridViewHABER: TcxGridDBColumn;
|
|
cxGridViewFECHA_ASIENTO: TcxGridDBColumn;
|
|
cxGridViewORDEN: TcxGridDBColumn;
|
|
cxGridViewID_APUNTE: TcxGridDBColumn;
|
|
cxGridViewID_FACTURA: TcxGridDBColumn;
|
|
cxGridViewID_PAGO: TcxGridDBColumn;
|
|
cxGridViewDOCUMENTO: TcxGridDBColumn;
|
|
cxGridViewSaldo: TcxGridDBColumn;
|
|
cxGridViewTIPO: TcxGridDBColumn;
|
|
cxStyleCierre: TcxStyle;
|
|
cxGridViewPUNTEADO: TcxGridDBColumn;
|
|
procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel);
|
|
|
|
procedure CustomViewShow(Sender: TObject);
|
|
procedure CustomViewDestroy(Sender: TObject);
|
|
procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView;
|
|
ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem;
|
|
out AStyle: TcxStyle);
|
|
procedure cxGridViewICONOCustomDrawCell(Sender: TcxCustomGridTableView;
|
|
ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo;
|
|
var ADone: Boolean);
|
|
|
|
private
|
|
FOnExtractoChange: TNotifyEvent;
|
|
function GetExtractoChange: TNotifyEvent;
|
|
procedure SetExtractoChange(const Value: TNotifyEvent);
|
|
procedure AnadirFiltroFechas;
|
|
protected
|
|
FSubCuentas: IBizSubCuenta;
|
|
FDiario: IBizDiario;
|
|
FController : IAsientosController;
|
|
function GetDiario: IBizDiario; virtual;
|
|
procedure SetDiario(const Value: IBizDiario); virtual;
|
|
function GetSubCuentas: IBizSubCuenta; virtual;
|
|
procedure SetSubCuentas(const Value: IBizSubCuenta); virtual;
|
|
function GetController : IAsientosController; virtual;
|
|
procedure SetController (const Value : IAsientosController); virtual;
|
|
|
|
public
|
|
procedure AnadirOtrosFiltros; override;
|
|
property OnExtractoChange: TNotifyEvent read GetExtractoChange write SetExtractoChange;
|
|
property Diario: IBizDiario read GetDiario write SetDiario;
|
|
property SubCuentas: IBizSubCuenta read GetSubCuentas write SetSubCuentas;
|
|
property Controller : IAsientosController read GetController write SetController;
|
|
end;
|
|
|
|
implementation
|
|
{$R *.dfm}
|
|
|
|
uses
|
|
uSubCuentasController;
|
|
|
|
{ TfrViewDiario }
|
|
|
|
{
|
|
******************************* TfrViewDiario *******************************
|
|
}
|
|
function TfrViewExtractoMovimientos.GetController: IAsientosController;
|
|
begin
|
|
Result := FController;
|
|
end;
|
|
|
|
function TfrViewExtractoMovimientos.GetDiario: IBizDiario;
|
|
begin
|
|
Result := FDiario;
|
|
end;
|
|
|
|
function TfrViewExtractoMovimientos.GetExtractoChange: TNotifyEvent;
|
|
begin
|
|
Result := FOnExtractoChange;
|
|
end;
|
|
|
|
function TfrViewExtractoMovimientos.GetSubCuentas: IBizSubCuenta;
|
|
begin
|
|
Result := FSubCuentas;
|
|
end;
|
|
|
|
procedure TfrViewExtractoMovimientos.SetController(const Value: IAsientosController);
|
|
begin
|
|
FController := Value;
|
|
end;
|
|
|
|
procedure TfrViewExtractoMovimientos.SetDiario(const Value: IBizDiario);
|
|
begin
|
|
FDiario := Value;
|
|
if Assigned(FDiario) then
|
|
dsDataSource.DataTable := FDiario.DataTable;
|
|
|
|
if Assigned(FOnExtractoChange) then
|
|
FOnExtractoChange(Self);
|
|
|
|
FDiario.DataTable.Active := True;
|
|
GotoFirst;
|
|
end;
|
|
|
|
|
|
procedure TfrViewExtractoMovimientos.SetExtractoChange(const Value: TNotifyEvent);
|
|
begin
|
|
FOnExtractoChange := Value;
|
|
end;
|
|
|
|
procedure TfrViewExtractoMovimientos.SetSubCuentas(const Value: IBizSubCuenta);
|
|
var
|
|
Nivel: TcxGridLevel;
|
|
auxb: Boolean;
|
|
|
|
begin
|
|
FSubCuentas := Value;
|
|
if Assigned(FSubCuentas) then
|
|
begin
|
|
if not FSubCuentas.DataTable.Active then
|
|
FSubCuentas.DataTable.Active := True;
|
|
|
|
if FSubCuentas.RecordCount > 0 then
|
|
begin
|
|
with FSubCuentas.DataTable do
|
|
begin
|
|
First;
|
|
auxb:=True;
|
|
while not EOF do
|
|
begin
|
|
if auxb
|
|
//Ponemos la primera cuenta en el nivel ya creado
|
|
then Nivel := cxGridLevel
|
|
//Creamos un nuevo nivel
|
|
else Nivel := cxGrid.Levels.Add;
|
|
|
|
Nivel.Caption := FSubCuentas.DESCRIPCION;
|
|
Nivel.Tag := FSubCuentas.ID;
|
|
Next;
|
|
auxb := False;
|
|
end;
|
|
First;
|
|
end;
|
|
end
|
|
else cxGrid.RootLevelOptions.DetailTabsPosition := dtpNone;
|
|
|
|
// FAsientos.Intervalo := frListaIntervalos.Intervalo;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewExtractoMovimientos.AnadirFiltroFechas;
|
|
var
|
|
Columna: TcxGridDBColumn;
|
|
Fecha1, Fecha2: Variant;
|
|
FFiltro : TcxFilterCriteriaItemList;
|
|
begin
|
|
Fecha1 := frViewFiltroBase1.edtFechaIniFiltro.EditValue;
|
|
Fecha2 := frViewFiltroBase1.edtFechaFinFiltro.EditValue;
|
|
|
|
if not VarIsNull(Fecha1) and not VarIsNull(Fecha2) then
|
|
begin
|
|
_FocusedView.DataController.Filter.Options := [fcoCaseInsensitive, fcoSoftCompare];
|
|
FFiltro := AddFilterGrid(fboAnd);
|
|
|
|
Columna := _FocusedView.GetColumnByFieldName('FECHA_ASIENTO');
|
|
FFiltro.AddItem(Columna, foBetween, varArrayOf([Fecha1, Fecha2]), VarToStr(Fecha1) + ' and ' + VarToStr(Fecha2));
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewExtractoMovimientos.AnadirOtrosFiltros;
|
|
begin
|
|
inherited;
|
|
|
|
AnadirFiltroFechas;
|
|
|
|
//Finalmente activamos el filtro si tenemos algo
|
|
if _FocusedView.DataController.Filter.IsEmpty then
|
|
_FocusedView.DataController.Filter.Active := False
|
|
else
|
|
_FocusedView.DataController.Filter.Active := True;
|
|
cxGrid.ActiveLevel.GridView := _FocusedView;
|
|
end;
|
|
|
|
procedure TfrViewExtractoMovimientos.CustomViewDestroy(Sender: TObject);
|
|
begin
|
|
FSubCuentas := Nil;
|
|
inherited;
|
|
end;
|
|
|
|
procedure TfrViewExtractoMovimientos.CustomViewShow(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
with TSubCuentasController.Create do
|
|
try
|
|
SubCuentas := BuscarCajasBancos;
|
|
finally
|
|
Free;
|
|
end;
|
|
|
|
if Assigned(FController) then
|
|
begin
|
|
Diario := FController.BuscarAsientos(cxGrid.Levels.Items[cxGrid.ActiveLevel.Index].Tag);
|
|
//Por si no lo guarda bien el registro del grid
|
|
cxGridViewFECHA_ASIENTO.SortIndex := 0;
|
|
cxGridViewORDEN.SortIndex := 1;
|
|
cxGridViewFECHA_ASIENTO.SortOrder := soDescending;
|
|
cxGridViewORDEN.SortOrder := soDescending;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewExtractoMovimientos.cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel);
|
|
var
|
|
ACursor: TCursor;
|
|
|
|
begin
|
|
ACursor := Screen.Cursor;
|
|
Screen.Cursor := crHourGlass;
|
|
|
|
inherited;
|
|
|
|
if Assigned(FController) then
|
|
Diario := FController.BuscarAsientos(cxGrid.Levels.Items[ALevel.Index].Tag);
|
|
|
|
cxGrid.Levels.Items[ALevel.Index].GridView := cxGridView;
|
|
Screen.Cursor := ACursor;
|
|
end;
|
|
|
|
procedure TfrViewExtractoMovimientos.cxGridViewICONOCustomDrawCell(
|
|
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
|
|
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
|
|
var
|
|
R : TRect;
|
|
|
|
begin
|
|
inherited;
|
|
R := AViewInfo.ContentBounds;
|
|
ACanvas.FillRect(R);
|
|
ACanvas.DrawImage(GridPNGImageList, R.Left, R.Top, 0);
|
|
ADone := True;
|
|
end;
|
|
|
|
procedure TfrViewExtractoMovimientos.cxGridViewStylesGetContentStyle(
|
|
Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
|
|
AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);
|
|
var
|
|
IndiceCol: Integer;
|
|
ATIPO: string;
|
|
begin
|
|
inherited;
|
|
|
|
if Assigned(ARecord) then
|
|
begin
|
|
|
|
IndiceCol := cxGridViewTIPO.Index;
|
|
ATipo := VarToStr(ARecord.DisplayTexts[IndiceCol]);
|
|
if (ATIPO = 'X') then
|
|
AStyle := cxStyleCierre;
|
|
end;
|
|
end;
|
|
|
|
end.
|