This repository has been archived on 2024-12-02. You can view files and clone it, but cannot push or open issues or pull requests.
AlonsoYSal_FactuGES/Modulos/Presupuestos/Cliente/uViewPresupuestos.pas

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.