Tecsitel_FactuGES2/Source/Modulos/Presupuestos de cliente/Views/uViewPresupuestosCliente.pas

281 lines
9.7 KiB
ObjectPascal
Raw Blame History

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, dxPScxGridLnk,
uDADataTable, cxGridLevel, cxClasses, cxControls, cxGridCustomView, Classes,
cxGrid,
uBizPresupuestosCliente, cxCurrencyEdit, Forms, uViewFiltroBase, ActnList, TB2Item,
TBX, TB2Toolbar, TBXDkPanels, TB2Dock, dxPgsDlg, uDAInterfaces;
type
IViewPresupuestosCliente = interface(IViewGrid)
['{96821714-55CF-4BC1-A0C1-16E027B2EF16}']
function GetPedidos: IBizPresupuestoCliente;
procedure SetPedidos(const Value: IBizPresupuestoCliente);
property Pedidos: IBizPresupuestoCliente read GetPedidos write SetPedidos;
end;
TfrViewPresupuestosCliente = class(TfrViewGrid, IViewPresupuestosCliente)
cxGridDBTableView1: TcxGridDBTableView;
PngImageList: TPngImageList;
cxGridViewID: TcxGridDBColumn;
cxGridViewREFERENCIA: TcxGridDBColumn;
cxGridViewINCIDENCIASACTIVAS: TcxGridDBColumn;
cxGridViewNOMBRE: TcxGridDBColumn;
cxGridViewSITUACION: TcxGridDBColumn;
cxGridViewFECHA_PEDIDO: TcxGridDBColumn;
cxGridViewCALLE: TcxGridDBColumn;
cxGridViewCODIGO_POSTAL: TcxGridDBColumn;
cxGridViewPOBLACION: TcxGridDBColumn;
cxGridViewPROVINCIA: TcxGridDBColumn;
cxGridViewPERSONA_CONTACTO: TcxGridDBColumn;
cxGridViewTELEFONO: 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;
cxGridViewTIENDAWEB: TcxGridDBColumn;
cxGridViewFECHA_ENTREGA: 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 cxGridViewTIENDAWEBCustomDrawCell(Sender: TcxCustomGridTableView;
ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo;
var ADone: Boolean);
procedure cxGridViewMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
//Filtros relativos a la vista
procedure AnadirFiltroSituaciones;
procedure AnadirFiltroFechas;
protected
FPedidos: IBizPresupuestoCliente;
function GetPedidos: IBizPresupuestoCliente;
procedure SetPedidos(const Value: IBizPresupuestoCliente);
public
procedure AnadirOtrosFiltros; override;
property Pedidos: IBizPresupuestoCliente read GetPedidos write SetPedidos;
end;
implementation
uses SysUtils, variants, windows, uDataModulePresupuestosCliente, schPedidosClienteClient_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_PEDIDO');
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_PEDIDO_PENDIENTE, SITUACION_PEDIDO_PENDIENTE);
2 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_PEDIDO_ENPROCESO, SITUACION_PEDIDO_ENPROCESO);
3 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_PEDIDO_SERVIDO, SITUACION_PEDIDO_SERVIDO);
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.cxGridViewMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
Site : TcxGridSite;
HitTest : TcxCustomGridHitTest;
Item : TcxCustomGridTableItem;
Rec : TcxCustomGridRecord;
sNewHint : string;
begin
{Este m<>todo desaparecer<65> cuando se migre la aplicaci<63>n, es para sacar la causa de la incidencia sin necesidad de entrar en el documento}
Site := Sender as TcxGridSite;
HitTest := Site.GridView.ViewInfo.GetHitTest(X, Y);
if HitTest is TcxGridRecordCellHitTest then begin
Item := TcxGridRecordCellHitTest(HitTest).Item;
Rec := TcxGridRecordCellHitTest(HitTest).GridRecord;
if (Item.Index = cxGridView.GetColumnByFieldName(fld_PedidosClienteINCIDENCIAS_ACTIVAS).Index)
and (Rec.Selected)
and (Pedidos.DataTable.FieldByName(fld_PedidosClienteINCIDENCIAS_ACTIVAS).AsInteger = 1) then begin
sNewHint := Pedidos.DataTable.FieldByName(fld_PedidosClienteINCIDENCIAS).AsString;
if (cxGrid.Hint <> sNewHint) then begin
cxGrid.ShowHint := false;
cxGrid.Hint := sNewHint;
end
else cxGrid.ShowHint := true;
end
else begin
cxGrid.ShowHint := false;
end;
end;
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_PedidosClienteSITUACION).Index;
ASituacion := VarToStr(ARecord.DisplayTexts[IndiceCol]);
if ASituacion = SITUACION_PEDIDO_PENDIENTE then
AStyle := cxStylePENDIENTES
else if ASituacion = SITUACION_PEDIDO_ENPROCESO then
AStyle := cxStyleENPROCESO
else if ASituacion = SITUACION_PEDIDO_SERVIDO then
AStyle := cxStyleSERVIDOS;
end;
end;
procedure TfrViewPresupuestosCliente.cxGridViewTIENDAWEBCustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
R : TRect;
begin
inherited;
if (AViewInfo.GridRecord.DisplayTexts[cxGridViewTIENDAWEB.Index] <> '') then
begin
R := AViewInfo.ContentBounds;
ACanvas.FillRect(R);
ACanvas.DrawImage(PngImageList, R.Left, R.Top, 4);
ADone := True;
end;
end;
function TfrViewPresupuestosCliente.GetPedidos: IBizPresupuestoCliente;
begin
Result := FPedidos;
end;
procedure TfrViewPresupuestosCliente.SetPedidos(const Value: IBizPresupuestoCliente);
begin
FPedidos := Value;
if Assigned(FPedidos) then
dsDataSource.DataTable := FPedidos.DataTable;
end;
end.