git-svn-id: https://192.168.0.254/svn/Proyectos.AlonsoYSal_FactuGES/trunk@37 9a1d36f3-7752-2d40-8ccb-50eb49674c68
300 lines
9.9 KiB
ObjectPascal
300 lines
9.9 KiB
ObjectPascal
unit uViewPresupuestos;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
|
Dialogs, uViewGrid, uViewPreview, frxClass, frxPreview, cxStyles,
|
|
cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB,
|
|
cxDBData, ActnList, uDADataTable, cxGridLevel, cxClasses, cxControls,
|
|
cxGridCustomView, cxGridCustomTableView, cxGridTableView,
|
|
cxGridDBTableView, cxGrid, uBizPresupuestosCliente, StdCtrls, ExtCtrls,
|
|
cxLabel, dxPSGlbl, dxPSUtl, dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev,
|
|
dxPSCompsProvider, dxPSFillPatterns, dxPSEdgePatterns, cxIntlPrintSys3,
|
|
dxPSCore, dxPScxCommon, dxPScxGridLnk, cxImage, cxImageComboBox, ImgList,
|
|
PngImageList, cxTextEdit, Grids, DBGrids, cxCurrencyEdit, uViewFiltroBase,
|
|
TB2Item, TBX, TB2Toolbar, TBXDkPanels, TB2Dock;
|
|
|
|
type
|
|
IViewPresupuestos = interface(IViewGrid)
|
|
['{8C0A5647-E0E7-40CD-80EC-88DD46383368}']
|
|
function GetPresupuestos: IBizPresupuestos;
|
|
procedure SetPresupuestos(const Value: IBizPresupuestos);
|
|
property Presupuestos: IBizPresupuestos read GetPresupuestos write
|
|
SetPresupuestos;
|
|
end;
|
|
|
|
TfrViewPresupuestos = class(TfrViewGrid, IViewPresupuestos)
|
|
cxGridDBTableView1: TcxGridDBTableView;
|
|
cxGridLevel1: TcxGridLevel;
|
|
cxGridLevel2: TcxGridLevel;
|
|
cxGridLevel3: TcxGridLevel;
|
|
cxGridViewCODIGO: TcxGridDBColumn;
|
|
cxGridViewICONO: TcxGridDBColumn;
|
|
cxGridViewFECHAPRESUPUESTO: TcxGridDBColumn;
|
|
cxGridViewIMPORTETOTAL: TcxGridDBColumn;
|
|
cxGridViewNOMBRE: TcxGridDBColumn;
|
|
cxGridViewREFERENCIA: TcxGridDBColumn;
|
|
cxGridViewSITUACION: TcxGridDBColumn;
|
|
cxGridViewVIGENCIAPRESUPUESTO: TcxGridDBColumn;
|
|
PngImageList: TPngImageList;
|
|
cxStyleRechazado: TcxStyle;
|
|
cxStyleAceptado: TcxStyle;
|
|
cxGridViewTIPO: TcxGridDBColumn;
|
|
cxGridViewALBARAN: TcxGridDBColumn;
|
|
cxGridViewOPCION: TcxGridDBColumn;
|
|
TBXItem2: TTBXItem;
|
|
TBXItem3: TTBXItem;
|
|
TBXItem4: TTBXItem;
|
|
actCocinas: TAction;
|
|
actBanos: TAction;
|
|
actArreglosC: TAction;
|
|
TBXSeparatorItem1: TTBXSeparatorItem;
|
|
TBXSeparatorItem2: TTBXSeparatorItem;
|
|
TBXSeparatorItem3: TTBXSeparatorItem;
|
|
actArreglosB: TAction;
|
|
actIncidencias: TAction;
|
|
TBXItem6: TTBXItem;
|
|
TBXItem7: TTBXItem;
|
|
TBXSeparatorItem4: TTBXSeparatorItem;
|
|
TBXSeparatorItem5: TTBXSeparatorItem;
|
|
procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel);
|
|
procedure cxGridViewCODIGOCustomDrawCell(Sender: TcxCustomGridTableView;
|
|
ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var
|
|
ADone: Boolean);
|
|
procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView;
|
|
ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out
|
|
AStyle: TcxStyle);
|
|
procedure actCocinasExecute(Sender: TObject);
|
|
procedure actBanosExecute(Sender: TObject);
|
|
procedure actArreglosCExecute(Sender: TObject);
|
|
procedure actQuitarAgrupacionesExecute(Sender: TObject);
|
|
procedure actQuitarAgrupacionesUpdate(Sender: TObject);
|
|
procedure actCocinasUpdate(Sender: TObject);
|
|
procedure actBanosUpdate(Sender: TObject);
|
|
procedure actArreglosCUpdate(Sender: TObject);
|
|
procedure actArreglosBExecute(Sender: TObject);
|
|
procedure actIncidenciasExecute(Sender: TObject);
|
|
procedure actArreglosBUpdate(Sender: TObject);
|
|
procedure actIncidenciasUpdate(Sender: TObject);
|
|
private
|
|
FTipoPresupuesto: String;
|
|
//Filtros relativos a la vista
|
|
procedure AnadirFiltroSituaciones;
|
|
procedure AnadirFiltroFechas;
|
|
procedure AnadirTipoPresupuestos;
|
|
|
|
protected
|
|
FPresupuestos: IBizPresupuestos;
|
|
function GetPresupuestos: IBizPresupuestos;
|
|
procedure SetPresupuestos(const Value: IBizPresupuestos);
|
|
procedure AnadirOtrosFiltros; override;
|
|
|
|
public
|
|
property Presupuestos: IBizPresupuestos read GetPresupuestos write
|
|
SetPresupuestos;
|
|
end;
|
|
|
|
var
|
|
frViewPresupuestos: TfrViewPresupuestos;
|
|
|
|
implementation
|
|
|
|
uses uDataModulePresupuestos, schPresupuestosClient_Intf;
|
|
|
|
{$R *.dfm}
|
|
|
|
procedure TfrViewPresupuestos.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
|
|
cxGridView.DataController.Filter.Options := [fcoCaseInsensitive, fcoSoftCompare];
|
|
FFiltro := AddFilterGrid(fboAnd);
|
|
|
|
Columna := (cxGridView as TcxGridDBTableView).GetColumnByFieldName('FECHAPRESUPUESTO');
|
|
FFiltro.AddItem(Columna, foBetween, varArrayOf([Fecha1, Fecha2]), VarToStr(Fecha1) + ' and ' + VarToStr(Fecha2));
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewPresupuestos.AnadirFiltroSituaciones;
|
|
var
|
|
FFiltro : TcxFilterCriteriaItemList;
|
|
begin
|
|
FFiltro := AddFilterGrid(fboAnd);
|
|
|
|
case cxGrid.ActiveLevel.Index of
|
|
1 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_PENDIENTE, SITUACION_PENDIENTE);
|
|
2 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_ACEPTADO, SITUACION_ACEPTADO);
|
|
3 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_RECHAZADO, SITUACION_RECHAZADO);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewPresupuestos.cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel);
|
|
begin
|
|
inherited;
|
|
RefrescarFiltro;
|
|
end;
|
|
|
|
procedure TfrViewPresupuestos.cxGridViewCODIGOCustomDrawCell(Sender:
|
|
TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo:
|
|
TcxGridTableDataCellViewInfo; var ADone: Boolean);
|
|
var
|
|
R: TRect;
|
|
begin
|
|
inherited;
|
|
R := AViewInfo.ContentBounds;
|
|
ACanvas.FillRect(R);
|
|
ACanvas.DrawImage(PngImageList, R.Left, R.Top, 2);
|
|
ADone := True;
|
|
end;
|
|
|
|
procedure TfrViewPresupuestos.cxGridViewStylesGetContentStyle(Sender:
|
|
TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem:
|
|
TcxCustomGridTableItem; out AStyle: TcxStyle);
|
|
var
|
|
IndiceCol: Integer;
|
|
ASituacion: string;
|
|
begin
|
|
inherited;
|
|
if Assigned(ARecord) then
|
|
begin
|
|
IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_PresupuestosSITUACION).Index;
|
|
ASituacion := VarToStr(ARecord.DisplayTexts[IndiceCol]);
|
|
if ASituacion = SITUACION_ACEPTADO then
|
|
AStyle := cxStyleAceptado
|
|
else if ASituacion = SITUACION_RECHAZADO then
|
|
AStyle := cxStyleRechazado;
|
|
end;
|
|
end;
|
|
|
|
function TfrViewPresupuestos.GetPresupuestos: IBizPresupuestos;
|
|
begin
|
|
Result := FPresupuestos;
|
|
end;
|
|
|
|
procedure TfrViewPresupuestos.AnadirOtrosFiltros;
|
|
begin
|
|
inherited;
|
|
|
|
AnadirTipoPresupuestos;
|
|
AnadirFiltroSituaciones;
|
|
AnadirFiltroFechas;
|
|
|
|
//Finalmente activamos el filtro si tenemos algo
|
|
if cxGridView.DataController.Filter.IsEmpty
|
|
then cxGridView.DataController.Filter.Active := False
|
|
else cxGridView.DataController.Filter.Active := True;
|
|
cxGrid.ActiveLevel.GridView := cxGridView;
|
|
end;
|
|
|
|
procedure TfrViewPresupuestos.SetPresupuestos(const Value: IBizPresupuestos);
|
|
begin
|
|
FTipoPresupuesto:= '';
|
|
FPresupuestos := Value;
|
|
if Assigned(FPresupuestos) then
|
|
DADataSource.DataTable := FPresupuestos.DataTable;
|
|
end;
|
|
|
|
procedure TfrViewPresupuestos.AnadirTipoPresupuestos;
|
|
var
|
|
FFiltro : TcxFilterCriteriaItemList;
|
|
begin
|
|
FFiltro := AddFilterGrid(fboAnd);
|
|
|
|
if (FTipoPresupuesto <> '') then
|
|
if (FTipoPresupuesto = TIPO_COCINA) then FFiltro.AddItem(cxGridViewTIPO, foEqual, TIPO_COCINA, TIPO_COCINA)
|
|
else if (FTipoPresupuesto = TIPO_BANO) then FFiltro.AddItem(cxGridViewTIPO, foEqual, TIPO_BANO, TIPO_BANO)
|
|
else if (FTipoPresupuesto = TIPO_ARREGLO_C) then FFiltro.AddItem(cxGridViewTIPO, foEqual, TIPO_ARREGLO_C, TIPO_ARREGLO_C)
|
|
else if (FTipoPresupuesto = TIPO_ARREGLO_B) then FFiltro.AddItem(cxGridViewTIPO, foEqual, TIPO_ARREGLO_B, TIPO_ARREGLO_B)
|
|
else if (FTipoPresupuesto = TIPO_INCIDENCIA) then FFiltro.AddItem(cxGridViewTIPO, foEqual, TIPO_INCIDENCIA, TIPO_INCIDENCIA);
|
|
end;
|
|
|
|
procedure TfrViewPresupuestos.actCocinasExecute(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
FTipoPresupuesto := TIPO_COCINA;
|
|
RefrescarFiltro
|
|
end;
|
|
|
|
procedure TfrViewPresupuestos.actBanosExecute(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
FTipoPresupuesto := TIPO_BANO;
|
|
RefrescarFiltro
|
|
end;
|
|
|
|
procedure TfrViewPresupuestos.actArreglosCExecute(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
FTipoPresupuesto := TIPO_ARREGLO_C;
|
|
RefrescarFiltro
|
|
end;
|
|
|
|
procedure TfrViewPresupuestos.actQuitarAgrupacionesExecute(
|
|
Sender: TObject);
|
|
begin
|
|
inherited;
|
|
FTipoPresupuesto := '';
|
|
RefrescarFiltro
|
|
end;
|
|
|
|
procedure TfrViewPresupuestos.actQuitarAgrupacionesUpdate(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
(Sender as TAction).Enabled := (FTipoPresupuesto <> '');
|
|
end;
|
|
|
|
procedure TfrViewPresupuestos.actCocinasUpdate(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
(Sender as TAction).Enabled := (FTipoPresupuesto <> TIPO_COCINA);
|
|
end;
|
|
|
|
procedure TfrViewPresupuestos.actBanosUpdate(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
(Sender as TAction).Enabled := (FTipoPresupuesto <> TIPO_BANO);
|
|
end;
|
|
|
|
procedure TfrViewPresupuestos.actArreglosCUpdate(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
(Sender as TAction).Enabled := (FTipoPresupuesto <> TIPO_ARREGLO_C);
|
|
end;
|
|
|
|
procedure TfrViewPresupuestos.actArreglosBExecute(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
FTipoPresupuesto := TIPO_ARREGLO_B;
|
|
RefrescarFiltro
|
|
end;
|
|
|
|
procedure TfrViewPresupuestos.actIncidenciasExecute(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
FTipoPresupuesto := TIPO_INCIDENCIA;
|
|
RefrescarFiltro
|
|
end;
|
|
|
|
procedure TfrViewPresupuestos.actArreglosBUpdate(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
(Sender as TAction).Enabled := (FTipoPresupuesto <> TIPO_ARREGLO_B);
|
|
end;
|
|
|
|
procedure TfrViewPresupuestos.actIncidenciasUpdate(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
(Sender as TAction).Enabled := (FTipoPresupuesto <> TIPO_INCIDENCIA);
|
|
end;
|
|
|
|
end.
|