This repository has been archived on 2024-11-28. You can view files and clone it, but cannot push or open issues or pull requests.
LuisLeon_FactuGES2/Source/Modulos/Pedidos de cliente/Views/uViewPedidosCliente.pas
roberto 9b50aa673e Tareas #1408: En los informes de agentes antiguos, mirar si se puede poner salto de pagina al acabar con cada agente
Tareas #1410: En presupuestos de cliente y pedidos de cliente poder agrupar por agente

git-svn-id: https://192.168.0.254/svn/Proyectos.LuisLeon_FactuGES2/trunk@239 b2cfbe5a-eba1-4a0c-8b32-7feea0a119f2
2015-10-01 17:11:53 +00:00

327 lines
11 KiB
ObjectPascal

unit uViewPedidosCliente;
interface
uses
Types, 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, TBX, TB2Toolbar, TBXDkPanels, TB2Dock, dxPgsDlg, uDAInterfaces,
uCustomView, uViewBase;
type
IViewPedidosCliente = interface(IViewGrid)
['{EFDC1D9B-2B49-4558-B70C-0DAA39FF99E6}']
function GetPedidos: IBizPedidoCliente;
procedure SetPedidos(const Value: IBizPedidoCliente);
property Pedidos: IBizPedidoCliente read GetPedidos write SetPedidos;
end;
TfrViewPedidosCliente = class(TfrViewGrid, IViewPedidosCliente)
cxGridDBTableView1: TcxGridDBTableView;
cxGridLevel1: TcxGridLevel;
cxGridLevel2: TcxGridLevel;
cxGridViewREFERENCIA: TcxGridDBColumn;
cxGridViewINCIDENCIASACTIVAS: TcxGridDBColumn;
cxGridViewNOMBRE: TcxGridDBColumn;
cxGridViewFECHA_PEDIDO: TcxGridDBColumn;
cxGridViewFECHA_ENTREGA: TcxGridDBColumn;
cxGridViewCALLE: TcxGridDBColumn;
cxGridViewPOBLACION: TcxGridDBColumn;
cxGridViewPROVINCIA: TcxGridDBColumn;
cxGridViewCODIGO_POSTAL: TcxGridDBColumn;
cxGridViewPERSONA_CONTACTO: TcxGridDBColumn;
cxGridViewTELEFONO: TcxGridDBColumn;
cxGridViewREF_TIENDA_WEB: TcxGridDBColumn;
cxGridViewSITUACION: TcxGridDBColumn;
cxStylePendiente: TcxStyle;
cxStyleEnProceso: TcxStyle;
cxStyleServido: TcxStyle;
cxGridViewIMPORTE_TOTAL: TcxGridDBColumn;
actCliente: TAction;
TBXItem3: TTBXItem;
TBXSeparatorItem2: TTBXSeparatorItem;
cxGridViewINCIDENCIAS: TcxGridDBColumn;
cxGridViewNUM_COPIAS: TcxGridDBColumn;
cxGridViewNUM_CORREOS: TcxGridDBColumn;
cxGridViewREFERENCIA_CLIENTE: TcxGridDBColumn;
cxGridViewTIPO_PEDIDO: TcxGridDBColumn;
cxGridViewREFERENCIA_FACTURA_PROFORMA: TcxGridDBColumn;
cxGridViewAgente: TcxGridDBColumn;
actAgente: TAction;
TBXItem2: TTBXItem;
TBXSeparatorItem1: TTBXSeparatorItem;
procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel:
TcxGridLevel);
procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView;
ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out
AStyle: TcxStyle);
procedure actClienteExecute(Sender: TObject);
procedure actClienteUpdate(Sender: TObject);
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 cxGridViewNUM_COPIASCustomDrawHeader(Sender: TcxGridTableView;
ACanvas: TcxCanvas; AViewInfo: TcxGridColumnHeaderViewInfo;
var ADone: Boolean);
procedure cxGridViewNUM_CORREOSCustomDrawHeader(Sender: TcxGridTableView;
ACanvas: TcxCanvas; AViewInfo: TcxGridColumnHeaderViewInfo;
var ADone: Boolean);
procedure cxGridViewREF_TIENDA_WEBCustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
procedure actAgenteExecute(Sender: TObject);
procedure actAgenteUpdate(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,
uReferenciasUtils, cxVariants;
{$R *.dfm}
procedure TfrViewPedidosCliente.actAgenteExecute(Sender: TObject);
begin
if (cxGridViewAGENTE.GroupIndex < 0) then
begin
cxGridViewAGENTE.GroupIndex := cxGridView.GroupedColumnCount;
cxGridViewAGENTE.Visible := False;
end
else
begin
cxGridViewAGENTE.GroupIndex := -1;
cxGridViewAGENTE.Visible := True;
end;
end;
procedure TfrViewPedidosCliente.actAgenteUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Checked := not (cxGridViewAGENTE.GroupIndex < 0);
end;
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.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_ALBARANADO, SITUACION_PEDIDO_ALBARANADO);
// 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.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 TfrViewPedidosCliente.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 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(GridPNGImageList, R.Left + 2, R.Top, 4);
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(GridPNGImageList, R.Left + 2, R.Top, 3);
end;
ADone := True;
end;
procedure TfrViewPedidosCliente.cxGridViewREF_TIENDA_WEBCustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
R : TRect;
begin
inherited;
if (AViewInfo.GridRecord.DisplayTexts[cxGridViewREF_TIENDA_WEB.Index] <> '') then
begin
R := AViewInfo.ContentBounds;
ACanvas.FillRect(R);
ACanvas.DrawImage(GridPNGImageList, R.Left, R.Top, 5);
ADone := True;
end;
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 := UPPERCASE(VarToStr(ARecord.DisplayTexts[IndiceCol]));
if ASituacion = SITUACION_PEDIDO_PENDIENTE then
AStyle := cxStylePENDIENTE
else if ASituacion = SITUACION_PEDIDO_ENPROCESO then
AStyle := cxStyleENPROCESO
else if ASituacion = SITUACION_PEDIDO_SERVIDO then
AStyle := cxStyleSERVIDO
else if ASituacion = SITUACION_PEDIDO_ALBARANADO then
AStyle := cxStyleSERVIDO;
end;
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.