git-svn-id: https://192.168.0.254/svn/Proyectos.Noviseda_FactuGES2/trunk@118 f33bb606-9f5c-448d-9c99-757f00063c96
341 lines
12 KiB
ObjectPascal
341 lines
12 KiB
ObjectPascal
unit uViewPedidosCliente;
|
||
|
||
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,
|
||
uBizPedidosCliente, cxCurrencyEdit, Forms, uViewFiltroBase, ActnList, TB2Item,
|
||
|
||
cxLookAndFeelPainters, dxPSPDFExportCore, dxPSPDFExport, cxDrawTextUtils,
|
||
dxPSPrVwStd, dxPSPrVwAdv, dxPScxEditorProducers, dxPScxExtEditorProducers,
|
||
dxPScxPageControlProducer, uDAInterfaces, SpTBXItem, SpTBXDkPanels,
|
||
uCustomView, uViewBase, cxLookAndFeels, cxTextEdit, TB2Toolbar, TB2Dock;
|
||
|
||
type
|
||
IViewPedidosCliente = interface(IViewGrid)
|
||
['{96821714-55CF-4BC1-A0C1-16E027B2EF16}']
|
||
function GetPedidos: IBizPedidoCliente;
|
||
procedure SetPedidos(const Value: IBizPedidoCliente);
|
||
property Pedidos: IBizPedidoCliente read GetPedidos write SetPedidos;
|
||
end;
|
||
|
||
TfrViewPedidosCliente = class(TfrViewGrid, IViewPedidosCliente)
|
||
cxGridDBTableView1: TcxGridDBTableView;
|
||
PngImageList: TPngImageList;
|
||
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;
|
||
cxGridViewTIENDAWEB: TcxGridDBColumn;
|
||
cxGridViewFECHA_ENTREGA: TcxGridDBColumn;
|
||
cxGridViewNUM_COPIAS: TcxGridDBColumn;
|
||
cxGridViewNUM_CORREOS: 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);
|
||
procedure cxGridViewNUM_CORREOSCustomDrawHeader(Sender: TcxGridTableView;
|
||
ACanvas: TcxCanvas; AViewInfo: TcxGridColumnHeaderViewInfo;
|
||
var ADone: Boolean);
|
||
procedure cxGridViewNUM_COPIASCustomDrawHeader(Sender: TcxGridTableView;
|
||
ACanvas: TcxCanvas; AViewInfo: TcxGridColumnHeaderViewInfo;
|
||
var ADone: Boolean);
|
||
procedure frViewFiltroBase1actQuitarFiltroExecute(Sender: TObject);
|
||
|
||
private
|
||
//Filtros relativos a la vista
|
||
procedure AnadirFiltroSituaciones;
|
||
procedure AnadirFiltroFechas;
|
||
|
||
protected
|
||
FPedidos: IBizPedidoCliente;
|
||
function GetPedidos: IBizPedidoCliente;
|
||
procedure SetPedidos(const Value: IBizPedidoCliente);
|
||
public
|
||
procedure AnadirOtrosFiltros; override;
|
||
property Pedidos: IBizPedidoCliente read GetPedidos write SetPedidos;
|
||
end;
|
||
|
||
implementation
|
||
|
||
uses SysUtils, variants, windows, uDataModulePedidosCliente, schPedidosClienteClient_Intf,
|
||
uViewGridBase;
|
||
|
||
{$R *.dfm}
|
||
|
||
procedure TfrViewPedidosCliente.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 TfrViewPedidosCliente.actClienteUpdate(Sender: TObject);
|
||
begin
|
||
inherited;
|
||
(Sender as TAction).Checked := not (cxGridViewNOMBRE.GroupIndex < 0);
|
||
end;
|
||
|
||
procedure TfrViewPedidosCliente.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 TfrViewPedidosCliente.actProvinciaUpdate(Sender: TObject);
|
||
begin
|
||
inherited;
|
||
(Sender as TAction).Checked := not (cxGridViewPROVINCIA.GroupIndex < 0);
|
||
end;
|
||
|
||
procedure TfrViewPedidosCliente.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 TfrViewPedidosCliente.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 TfrViewPedidosCliente.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 TfrViewPedidosCliente.cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel);
|
||
begin
|
||
inherited;
|
||
RefrescarFiltro;
|
||
end;
|
||
|
||
procedure TfrViewPedidosCliente.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 TfrViewPedidosCliente.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 TfrViewPedidosCliente.cxGridViewNUM_COPIASCustomDrawHeader(
|
||
Sender: TcxGridTableView; ACanvas: TcxCanvas;
|
||
AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean);
|
||
var
|
||
R : TRect;
|
||
begin
|
||
inherited;
|
||
{
|
||
with AViewInfo do
|
||
begin
|
||
LookAndFeelPainter.DrawHeader(ACanvas, Bounds, TextAreaBounds, Neighbors,
|
||
Borders, ButtonState, AlignmentHorz, AlignmentVert, MultiLine,
|
||
False, '', Params.Font, Params.TextColor, Params.Color);
|
||
|
||
R := AViewInfo.ContentBounds;
|
||
ACanvas.FillRect(R);
|
||
ACanvas.DrawImage(PngImageList10, R.Left + 2, R.Top, 0);
|
||
end;
|
||
|
||
ADone := True;
|
||
}
|
||
end;
|
||
|
||
procedure TfrViewPedidosCliente.cxGridViewNUM_CORREOSCustomDrawHeader(
|
||
Sender: TcxGridTableView; ACanvas: TcxCanvas;
|
||
AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean);
|
||
var
|
||
R : TRect;
|
||
begin
|
||
inherited;
|
||
{
|
||
with AViewInfo do
|
||
begin
|
||
LookAndFeelPainter.DrawHeader(ACanvas, Bounds, TextAreaBounds, Neighbors,
|
||
Borders, ButtonState, AlignmentHorz, AlignmentVert, MultiLine,
|
||
False, '', Params.Font, Params.TextColor, Params.Color);
|
||
|
||
R := AViewInfo.ContentBounds;
|
||
ACanvas.FillRect(R);
|
||
ACanvas.DrawImage(PngImageList10, R.Left + 2, R.Top, 1);
|
||
end;
|
||
|
||
ADone := True;
|
||
}
|
||
end;
|
||
|
||
procedure TfrViewPedidosCliente.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 TfrViewPedidosCliente.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;
|
||
|
||
procedure TfrViewPedidosCliente.frViewFiltroBase1actQuitarFiltroExecute(
|
||
Sender: TObject);
|
||
begin
|
||
frViewFiltroBase1.LimpiarCampos;
|
||
end;
|
||
|
||
function TfrViewPedidosCliente.GetPedidos: IBizPedidoCliente;
|
||
begin
|
||
Result := FPedidos;
|
||
end;
|
||
|
||
procedure TfrViewPedidosCliente.SetPedidos(const Value: IBizPedidoCliente);
|
||
begin
|
||
FPedidos := Value;
|
||
if Assigned(FPedidos) then
|
||
dsDataSource.DataTable := FPedidos.DataTable;
|
||
end;
|
||
|
||
end.
|