AlonsoYSal_FactuGES2/Source/Modulos/Contratos de cliente/Views/uViewContratosCliente.pas

376 lines
14 KiB
ObjectPascal

unit uViewContratosCliente;
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, uBizContratosCliente, cxCurrencyEdit, Forms, uViewFiltroBase, ActnList, TB2Item,
TBX, TB2Toolbar, TBXDkPanels, TB2Dock, dxPgsDlg, uDAInterfaces, Windows,
uCustomView, uViewBase, cxTextEdit;
type
IViewContratosCliente = interface(IViewGrid)
['{89FCCB14-46E9-4B45-BADD-847C881CCE1A}']
function GetContratos: IBizContratoCliente;
procedure SetContratos(const Value: IBizContratoCliente);
property Contratos: IBizContratoCliente read GetContratos write SetContratos;
end;
TfrViewContratosCliente = class(TfrViewGrid, IViewContratosCliente)
cxGridViewREFERENCIA: TcxGridDBColumn;
cxGridViewINCIDENCIASACTIVAS: TcxGridDBColumn;
cxGridViewNOMBRE: TcxGridDBColumn;
cxGridViewSITUACION: TcxGridDBColumn;
cxGridViewFECHA_CONTRATO: TcxGridDBColumn;
cxGridViewIMPORTE_TOTAL: TcxGridDBColumn;
cxGridLevelPendientes: TcxGridLevel;
cxGridLevelAceptados: TcxGridLevel;
cxStylePENDIENTES: TcxStyle;
cxStyleACEPTADO: TcxStyle;
actCocinas: TAction;
TBXSeparatorItem2: TTBXSeparatorItem;
TBXItem3: TTBXItem;
cxGridViewNIF_CIF: TcxGridDBColumn;
cxGridViewINCIDENCIAS: TcxGridDBColumn;
cxStyleRECHAZADO: TcxStyle;
cxGridViewTIPO_CONTRATO: TcxGridDBColumn;
cxGridViewCALLE: TcxGridDBColumn;
cxGridViewPOBLACION: TcxGridDBColumn;
cxGridViewCODIGO_POSTAL: TcxGridDBColumn;
cxGridViewPROVINCIA: TcxGridDBColumn;
cxGridViewVENDEDOR: TcxGridDBColumn;
cxGridViewReferenciaContenido: TcxGridDBColumn;
cxGridViewLISTA_NOMBRES: TcxGridDBColumn;
cxGridLevelRechazados: TcxGridLevel;
cxGridViewFECHA_DECISION: TcxGridDBColumn;
cxGridViewFACTURA_ASOCIADA: TcxGridDBColumn;
cxGridViewFECHA_PREVISTA_MONTAJE: TcxGridDBColumn;
cxGridViewCAMPO_LIBRE: TcxGridDBColumn;
cxGridViewLOPD: TcxGridDBColumn;
actBanos: TAction;
actElectrodomesticos: TAction;
actVarios: TAction;
TBXItem2: TTBXItem;
TBXItem4: TTBXItem;
TBXItem5: TTBXItem;
TBXSeparatorItem1: TTBXSeparatorItem;
TBXSeparatorItem3: TTBXSeparatorItem;
TBXSeparatorItem4: TTBXSeparatorItem;
cxGridViewPROCEDENCIA_CLIENTE: TcxGridDBColumn;
cxGridViewDESCUENTO: TcxGridDBColumn;
cxGridViewIMPORTE_DESCUENTO: TcxGridDBColumn;
cxGridViewIMPORTE_NETO: TcxGridDBColumn;
cxGridViewFECHA_ULT_PRESENTACION_CLIENTE: TcxGridDBColumn;
procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel:
TcxGridLevel);
procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView;
ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out
AStyle: TcxStyle);
procedure actCocinasExecute(Sender: TObject);
procedure actCocinasUpdate(Sender: TObject);
procedure cxGridViewICONOCustomDrawCell(Sender: TcxCustomGridTableView;
ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo;
var ADone: Boolean);
procedure cxGridViewINCIDENCIASACTIVASGetCellHint(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
ACellViewInfo: TcxGridTableDataCellViewInfo; const AMousePos: TPoint;
var AHintText: TCaption; var AIsHintMultiLine: Boolean;
var AHintTextRect: TRect);
procedure cxGridViewDataControllerCompare(
ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2,
AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer);
procedure frViewFiltroBase1actQuitarFiltroExecute(Sender: TObject);
procedure actQuitarAgrupacionesUpdate(Sender: TObject);
procedure actQuitarAgrupacionesExecute(Sender: TObject);
procedure CustomViewShow(Sender: TObject);
procedure actBanosExecute(Sender: TObject);
procedure actBanosUpdate(Sender: TObject);
procedure actElectrodomesticosExecute(Sender: TObject);
procedure actElectrodomesticosUpdate(Sender: TObject);
procedure actVariosExecute(Sender: TObject);
procedure actVariosUpdate(Sender: TObject);
private
FTipoContrato: String;
//Filtros relativos a la vista
procedure AnadirFiltroSituaciones;
procedure AnadirFiltroFechas;
procedure AnadirFiltroTipo;
protected
FContratos: IBizContratoCliente;
function GetContratos: IBizContratoCliente;
procedure SetContratos(const Value: IBizContratoCliente);
public
procedure AnadirOtrosFiltros; override;
property Contratos: IBizContratoCliente read GetContratos write SetContratos;
end;
implementation
uses
SysUtils, variants, uDataModuleContratosCliente, schContratosClienteClient_Intf,
uViewGridBase, uPresupuestosClienteController,
//uReferenciasUtils,
cxVariants;
{$R *.dfm}
procedure TfrViewContratosCliente.actBanosExecute(Sender: TObject);
begin
inherited;
FTipoContrato := CTE_BANO;
RefrescarFiltro
end;
procedure TfrViewContratosCliente.actBanosUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := (FTipoContrato <> CTE_BANO);
end;
procedure TfrViewContratosCliente.actCocinasExecute(Sender: TObject);
begin
FTipoContrato := CTE_COCINA;
RefrescarFiltro
end;
procedure TfrViewContratosCliente.actCocinasUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := (FTipoContrato <> CTE_COCINA);
end;
procedure TfrViewContratosCliente.actElectrodomesticosExecute(Sender: TObject);
begin
inherited;
FTipoContrato := CTE_ELECTRODOMESTICO;
RefrescarFiltro
end;
procedure TfrViewContratosCliente.actElectrodomesticosUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := (FTipoContrato <> CTE_ELECTRODOMESTICO);
end;
procedure TfrViewContratosCliente.actQuitarAgrupacionesExecute(Sender: TObject);
begin
inherited;
FTipoContrato := '';
RefrescarFiltro
end;
procedure TfrViewContratosCliente.actQuitarAgrupacionesUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := (FTipoContrato <> '');
end;
procedure TfrViewContratosCliente.actVariosExecute(Sender: TObject);
begin
inherited;
FTipoContrato := CTE_VARIOS;
RefrescarFiltro
end;
procedure TfrViewContratosCliente.actVariosUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := (FTipoContrato <> CTE_VARIOS);
end;
procedure TfrViewContratosCliente.AnadirFiltroFechas;
var
Columna: TcxGridDBColumn;
Fecha1, Fecha2: Variant;
FechaDecision1, FechaDecision2: Variant;
FechaMontaje1, FechaMontaje2: Variant;
FFiltro : TcxFilterCriteriaItemList;
begin
Fecha1 := frViewFiltroBase1.edtFechaIniFiltro.EditValue;
Fecha2 := frViewFiltroBase1.edtFechaFinFiltro.EditValue;
FechaDecision1 := frViewFiltroBase1.edtFecha2IniFiltro.EditValue;
FechaDecision2 := frViewFiltroBase1.edtFecha2FinFiltro.EditValue;
FechaMontaje1 := frViewFiltroBase1.edtFecha3IniFiltro.EditValue;
FechaMontaje2 := frViewFiltroBase1.edtFecha3FinFiltro.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_CONTRATO');
FFiltro.AddItem(Columna, foBetween, varArrayOf([Fecha1, Fecha2]), VarToStr(Fecha1) + ' and ' + VarToStr(Fecha2));
end;
if not VarIsNull(FechaDecision1)
and not VarIsNull(FechaDecision2) then
begin
cxGridView.DataController.Filter.Options := [fcoCaseInsensitive, fcoSoftCompare];
FFiltro := AddFilterGrid(fboAnd);
Columna := (cxGridView as TcxGridDBTableView).GetColumnByFieldName('FECHA_DECISION');
FFiltro.AddItem(Columna, foBetween, varArrayOf([FechaDecision1, FechaDecision2]), VarToStr(FechaDecision1) + ' and ' + VarToStr(FechaDecision2));
end;
if not VarIsNull(FechaMontaje1)
and not VarIsNull(FechaMontaje2) then
begin
cxGridView.DataController.Filter.Options := [fcoCaseInsensitive, fcoSoftCompare];
FFiltro := AddFilterGrid(fboAnd);
Columna := (cxGridView as TcxGridDBTableView).GetColumnByFieldName('FECHA_PREVISTA_MONTAJE');
FFiltro.AddItem(Columna, foBetween, varArrayOf([FechaMontaje1, FechaMontaje2]), VarToStr(FechaMontaje1) + ' and ' + VarToStr(FechaMontaje2));
end;
end;
procedure TfrViewContratosCliente.AnadirFiltroSituaciones;
var
FFiltro : TcxFilterCriteriaItemList;
begin
FFiltro := AddFilterGrid(fboAnd);
case cxGrid.ActiveLevel.Index of
1 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_CONTRATO_PENDIENTE, SITUACION_CONTRATO_PENDIENTE);
2 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_CONTRATO_ACEPTADO, SITUACION_CONTRATO_ACEPTADO);
3 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_CONTRATO_RECHAZADO, SITUACION_CONTRATO_RECHAZADO);
end;
end;
procedure TfrViewContratosCliente.AnadirFiltroTipo;
var
FFiltro : TcxFilterCriteriaItemList;
begin
FFiltro := AddFilterGrid(fboAnd);
if (FTipoContrato <> '') then
if (FTipoContrato = CTE_COCINA) then FFiltro.AddItem(cxGridViewTIPO_CONTRATO, foEqual, CTE_COCINA, CTE_COCINA)
else if (FTipoContrato = CTE_BANO) then FFiltro.AddItem(cxGridViewTIPO_CONTRATO, foEqual, CTE_BANO, CTE_BANO)
else if (FTipoContrato = CTE_ELECTRODOMESTICO) then FFiltro.AddItem(cxGridViewTIPO_CONTRATO, foEqual, CTE_ELECTRODOMESTICO, CTE_ELECTRODOMESTICO)
else if (FTipoContrato = CTE_VARIOS) then FFiltro.AddItem(cxGridViewTIPO_CONTRATO, foEqual, CTE_VARIOS, CTE_VARIOS)
end;
procedure TfrViewContratosCliente.AnadirOtrosFiltros;
begin
inherited;
AnadirFiltroSituaciones;
AnadirFiltroFechas;
AnadirFiltroTipo;
//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 TfrViewContratosCliente.CustomViewShow(Sender: TObject);
begin
inherited;
FTipoContrato := '';
end;
procedure TfrViewContratosCliente.cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel);
begin
inherited;
RefrescarFiltro;
end;
procedure TfrViewContratosCliente.cxGridViewDataControllerCompare(
ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2,
AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer);
begin
inherited;
{
if (AItemIndex = cxGridViewREFERENCIA.Index) and
(VarType(V1) = VarType(V2)) and (VarType(V1) = varString) then
Compare := CompararReferencias(V1, V2)
else
Compare := VarCompare(V1, V2);
}
end;
procedure TfrViewContratosCliente.cxGridViewICONOCustomDrawCell(
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(GridPNGImageList, R.Left + 2, R.Top + 2, 1)
else
ACanvas.DrawImage(GridPNGImageList, R.Left + 2, R.Top + 2, 2);
ADone := True;}
end;
procedure TfrViewContratosCliente.cxGridViewINCIDENCIASACTIVASGetCellHint(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
ACellViewInfo: TcxGridTableDataCellViewInfo; const AMousePos: TPoint;
var AHintText: TCaption; var AIsHintMultiLine: Boolean;
var AHintTextRect: TRect);
begin
inherited;
if (ARecord.DisplayTexts[Sender.Index] <> 'Sin incidencias') then
begin
AIsHintMultiLine := True;
if not VarIsNull(ARecord.Values[cxGridViewINCIDENCIAS.Index]) then
AHintText := ARecord.Values[cxGridViewINCIDENCIAS.Index];
end;
end;
procedure TfrViewContratosCliente.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_ContratosClienteSITUACION).Index;
ASituacion := VarToStr(ARecord.DisplayTexts[IndiceCol]);
if ASituacion = SITUACION_CONTRATO_PENDIENTE then
AStyle.TextColor := cxStylePENDIENTES.TextColor
else if ASituacion = SITUACION_CONTRATO_ACEPTADO then
AStyle.TextColor := cxStyleACEPTADO.TextColor
else if ASituacion = SITUACION_CONTRATO_RECHAZADO then
AStyle.TextColor := cxStyleRECHAZADO.TextColor
end;
end;
procedure TfrViewContratosCliente.frViewFiltroBase1actQuitarFiltroExecute(Sender: TObject);
begin
frViewFiltroBase1.txtFiltroTodo.Clear;
end;
function TfrViewContratosCliente.GetContratos: IBizContratoCliente;
begin
Result := FContratos;
end;
procedure TfrViewContratosCliente.SetContratos(const Value: IBizContratoCliente);
begin
FContratos := Value;
if Assigned(FContratos) then
dsDataSource.DataTable := FContratos.DataTable;
end;
end.