Tecsitel_FactuGES2/Source/Modulos/Presupuestos de cliente/Views/uViewPresupuestosCliente.pas
david 9d458fb678 Repaso a presupuestos:
- Activado duplicar por que ya duplica los registros del contenido.
- Arreglado un problema de autorefresco en el grid.

git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@208 0c75b7a4-871f-7646-8a2f-f78d34cc349f
2008-01-08 10:31:12 +00:00

281 lines
9.7 KiB
ObjectPascal

unit uViewPresupuestosCliente;
interface
uses
uViewGrid, cxStyles, cxCustomData, cxGraphics, cxFilter,
cxData, cxDataStorage, cxEdit, DB, cxDBData, dxPSGlbl, dxPSUtl, dxPSEngn,
dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns,
dxPSEdgePatterns, cxImageComboBox, ImgList, Controls, PngImageList,
cxGridCustomTableView, cxGridTableView, cxGridDBTableView,
cxGridCustomPopupMenu, cxGridPopupMenu, dxPSCore, dxPScxCommon, dxPScxGrid6Lnk,
uDADataTable, cxGridLevel, cxClasses, cxControls, cxGridCustomView, Classes,
cxGrid,
uBizPresupuestosCliente, cxCurrencyEdit, Forms, uViewFiltroBase, ActnList, TB2Item,
TBX, TB2Toolbar, TBXDkPanels, TB2Dock, dxPgsDlg, uDAInterfaces, Windows;
type
IViewPresupuestosCliente = interface(IViewGrid)
['{96821714-55CF-4BC1-A0C1-16E027B2EF16}']
function GetPresupuestos: IBizPresupuestoCliente;
procedure SetPresupuestos(const Value: IBizPresupuestoCliente);
property Presupuestos: IBizPresupuestoCliente read GetPresupuestos write SetPresupuestos;
end;
TfrViewPresupuestosCliente = class(TfrViewGrid, IViewPresupuestosCliente)
cxGridDBTableView1: TcxGridDBTableView;
PngImageList: TPngImageList;
cxGridViewID: TcxGridDBColumn;
cxGridViewREFERENCIA: TcxGridDBColumn;
cxGridViewINCIDENCIASACTIVAS: TcxGridDBColumn;
cxGridViewNOMBRE: TcxGridDBColumn;
cxGridViewSITUACION: TcxGridDBColumn;
cxGridViewFECHA_PRESUPUESTO: TcxGridDBColumn;
cxGridViewCLIENTE_FINAL: TcxGridDBColumn;
cxGridViewFACTURA: TcxGridDBColumn;
cxGridViewIMPORTE_TOTAL: TcxGridDBColumn;
cxGridLevelPendientes: TcxGridLevel;
cxGridLevelEnProceso: TcxGridLevel;
cxGridLevelServidor: TcxGridLevel;
cxStylePENDIENTES: TcxStyle;
cxStyleENPROCESO: TcxStyle;
cxStyleSERVIDOS: TcxStyle;
actCliente: TAction;
actProvincia: TAction;
TBXItem2: TTBXItem;
TBXSeparatorItem1: TTBXSeparatorItem;
TBXSeparatorItem2: TTBXSeparatorItem;
TBXItem3: TTBXItem;
cxGridViewFECHA_DECISION: TcxGridDBColumn;
cxGridViewNIF_CIF: TcxGridDBColumn;
cxGridViewINCIDENCIAS: TcxGridDBColumn;
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 actClienteExecute(Sender: TObject);
procedure actClienteUpdate(Sender: TObject);
procedure actProvinciaExecute(Sender: TObject);
procedure actProvinciaUpdate(Sender: TObject);
procedure cxGridViewIDCustomDrawCell(Sender: TcxCustomGridTableView;
ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo;
var ADone: Boolean);
procedure cxGridViewIDGetCellHint(Sender: TcxCustomGridTableItem;
ARecord: TcxCustomGridRecord; ACellViewInfo: TcxGridTableDataCellViewInfo;
const AMousePos: TPoint; var AHintText: TCaption;
var AIsHintMultiLine: Boolean; var AHintTextRect: TRect);
procedure cxGridViewIDGetDisplayText(Sender: TcxCustomGridTableItem;
ARecord: TcxCustomGridRecord; var AText: string);
private
//Filtros relativos a la vista
procedure AnadirFiltroSituaciones;
procedure AnadirFiltroFechas;
protected
FPresupuestos: IBizPresupuestoCliente;
function GetPresupuestos: IBizPresupuestoCliente;
procedure SetPresupuestos(const Value: IBizPresupuestoCliente);
public
procedure AnadirOtrosFiltros; override;
property Presupuestos: IBizPresupuestoCliente read GetPresupuestos write SetPresupuestos;
end;
implementation
uses
SysUtils, variants, uDataModulePresupuestosCliente, schPresupuestosClienteClient_Intf,
uViewGridBase;
{$R *.dfm}
procedure TfrViewPresupuestosCliente.actClienteExecute(Sender: TObject);
begin
if (cxGridViewNOMBRE.GroupIndex < 0) then
begin
cxGridViewNOMBRE.GroupIndex := cxGridView.GroupedColumnCount;
cxGridViewNOMBRE.Visible := False;
end
else
begin
cxGridViewNOMBRE.GroupIndex := -1;
cxGridViewNOMBRE.Visible := True;
end;
end;
procedure TfrViewPresupuestosCliente.actClienteUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Checked := not (cxGridViewNOMBRE.GroupIndex < 0);
end;
procedure TfrViewPresupuestosCliente.actProvinciaExecute(Sender: TObject);
begin
{
if (cxGridViewPROVINCIA.GroupIndex < 0) then
begin
cxGridViewPROVINCIA.GroupIndex := cxGridView.GroupedColumnCount;
cxGridViewPROVINCIA.Visible := False;
end
else
begin
cxGridViewPROVINCIA.GroupIndex := -1;
cxGridViewPROVINCIA.Visible := True;
end;
}
end;
procedure TfrViewPresupuestosCliente.actProvinciaUpdate(Sender: TObject);
begin
{
inherited;
(Sender as TAction).Checked := not (cxGridViewPROVINCIA.GroupIndex < 0);
}
end;
procedure TfrViewPresupuestosCliente.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('FECHA_Presupuesto');
FFiltro.AddItem(Columna, foBetween, varArrayOf([Fecha1, Fecha2]), VarToStr(Fecha1) + ' and ' + VarToStr(Fecha2));
end;
end;
procedure TfrViewPresupuestosCliente.AnadirFiltroSituaciones;
var
FFiltro : TcxFilterCriteriaItemList;
begin
FFiltro := AddFilterGrid(fboAnd);
case cxGrid.ActiveLevel.Index of
1 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_PRESUPUESTO_PENDIENTE, SITUACION_PRESUPUESTO_PENDIENTE);
2 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_PRESUPUESTO_ACEPTADO, SITUACION_PRESUPUESTO_ACEPTADO);
3 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_PRESUPUESTO_ANULADO, SITUACION_PRESUPUESTO_ANULADO);
end;
end;
procedure TfrViewPresupuestosCliente.AnadirOtrosFiltros;
begin
inherited;
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 TfrViewPresupuestosCliente.cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel);
begin
inherited;
RefrescarFiltro;
end;
procedure TfrViewPresupuestosCliente.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 TfrViewPresupuestosCliente.cxGridViewIDCustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
R : TRect;
begin
inherited;
R := AViewInfo.ContentBounds;
ACanvas.FillRect(R);
if (cxGridView.DataController.DisplayTexts[AViewInfo.GridRecord.RecordIndex,
cxGridViewINCIDENCIASACTIVAS.Index] = 'Sin incidencias') then
ACanvas.DrawImage(PngImageList, R.Left, R.Top, 0)
else
ACanvas.DrawImage(PngImageList, R.Left, R.Top, 1);
ADone := True;
end;
procedure TfrViewPresupuestosCliente.cxGridViewIDGetCellHint(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
ACellViewInfo: TcxGridTableDataCellViewInfo; const AMousePos: TPoint;
var AHintText: TCaption; var AIsHintMultiLine: Boolean;
var AHintTextRect: TRect);
begin
inherited;
if (cxGridView.DataController.DisplayTexts[ARecord.Index, cxGridViewINCIDENCIASACTIVAS.Index] <> 'Sin incidencias') then
begin
AIsHintMultiLine := True;
AHintText := cxGridView.DataController.DisplayTexts[ARecord.RecordIndex, cxGridViewINCIDENCIAS.Index];
end;
end;
procedure TfrViewPresupuestosCliente.cxGridViewIDGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: string);
begin
inherited;
AText := '';
end;
procedure TfrViewPresupuestosCliente.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_PresupuestosClienteSITUACION).Index;
ASituacion := VarToStr(ARecord.DisplayTexts[IndiceCol]);
if ASituacion = SITUACION_PRESUPUESTO_PENDIENTE then
AStyle := cxStylePENDIENTES
else if ASituacion = SITUACION_PRESUPUESTO_ACEPTADO then
AStyle := cxStyleENPROCESO
else if ASituacion = SITUACION_PRESUPUESTO_ANULADO then
AStyle := cxStyleSERVIDOS;
end;
end;
function TfrViewPresupuestosCliente.GetPresupuestos: IBizPresupuestoCliente;
begin
Result := FPresupuestos;
end;
procedure TfrViewPresupuestosCliente.SetPresupuestos(const Value: IBizPresupuestoCliente);
begin
FPresupuestos := Value;
if Assigned(FPresupuestos) then
dsDataSource.DataTable := FPresupuestos.DataTable;
end;
end.