Tecsitel_FactuGES2/Source/Modulos/Pedidos a proveedor/Views/uViewPedidosProveedor.pas

264 lines
9.1 KiB
ObjectPascal
Raw Normal View History

unit uViewPedidosProveedor;
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,
uBizPedidosProveedor, cxCurrencyEdit, Forms, uViewFiltroBase, ActnList,
TB2Item, TBX, TB2Toolbar, TBXDkPanels, TB2Dock, dxPgsDlg, uDAInterfaces;
type
IViewPedidosProveedor = interface(IViewGrid)
['{DF3B0989-5449-4F3A-8EF3-69CE35A62AAA}']
function GetPedidos: IBizPedidoProveedor;
procedure SetPedidos(const Value: IBizPedidoProveedor);
property Pedidos: IBizPedidoProveedor read GetPedidos write SetPedidos;
end;
TfrViewPedidosProveedor = class(TfrViewGrid, IViewPedidosProveedor)
cxGridDBTableView1: TcxGridDBTableView;
cxGridLevel1: TcxGridLevel;
cxGridLevel2: TcxGridLevel;
cxGridLevel3: TcxGridLevel;
PngImageList: TPngImageList;
cxGridViewCODIGO: TcxGridDBColumn;
cxGridViewREFERENCIA: TcxGridDBColumn;
cxGridViewINCIDENCIASACTIVAS: TcxGridDBColumn;
cxGridViewNOMBRE: TcxGridDBColumn;
cxGridViewFECHA_PEDIDO: TcxGridDBColumn;
cxGridViewFECHA_CONFIRMACION: TcxGridDBColumn;
cxGridViewFECHA_ENTREGA: TcxGridDBColumn;
cxGridViewCALLE: TcxGridDBColumn;
cxGridViewPOBLACION: TcxGridDBColumn;
cxGridViewPROVINCIA: TcxGridDBColumn;
cxGridViewCODIGO_POSTAL: TcxGridDBColumn;
cxGridViewPERSONA_CONTACTO: TcxGridDBColumn;
cxGridViewTELEFONO: TcxGridDBColumn;
cxGridViewFECHA_ENVIO: TcxGridDBColumn;
cxGridViewNOMBRE_ALMACEN: TcxGridDBColumn;
cxGridViewREF_PED_CLIENTE: TcxGridDBColumn;
cxGridViewSITUACION: TcxGridDBColumn;
cxStylePendientes: TcxStyle;
cxStyleParciales: TcxStyle;
cxStyleRecibidos: TcxStyle;
cxGridViewIMPORTE_TOTAL: TcxGridDBColumn;
actProveedor: TAction;
actAlmacen: TAction;
TBXItem2: TTBXItem;
TBXSeparatorItem1: TTBXSeparatorItem;
TBXItem3: TTBXItem;
TBXSeparatorItem2: TTBXSeparatorItem;
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 actProveedorExecute(Sender: TObject);
procedure actProveedorUpdate(Sender: TObject);
procedure actAlmacenExecute(Sender: TObject);
procedure actAlmacenUpdate(Sender: TObject);
procedure cxGridViewMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
//Filtros relativos a la vista
procedure AnadirFiltroSituaciones;
procedure AnadirFiltroFechas;
protected
FPedidos: IBizPedidoProveedor;
function GetPedidos: IBizPedidoProveedor;
procedure SetPedidos(const Value: IBizPedidoProveedor);
public
procedure AnadirOtrosFiltros; override;
property Pedidos: IBizPedidoProveedor read GetPedidos write SetPedidos;
end;
implementation
uses SysUtils, variants, windows, uDataModulePedidosProveedor, schPedidosProveedorClient_Intf;
{$R *.dfm}
procedure TfrViewPedidosProveedor.actAlmacenExecute(Sender: TObject);
begin
if (cxGridViewNOMBRE_ALMACEN.GroupIndex < 0) then
begin
cxGridViewNOMBRE_ALMACEN.GroupIndex := cxGridView.GroupedColumnCount;
cxGridViewNOMBRE_ALMACEN.Visible := False;
end
else
begin
cxGridViewNOMBRE_ALMACEN.GroupIndex := -1;
cxGridViewNOMBRE_ALMACEN.Visible := True;
end;
end;
procedure TfrViewPedidosProveedor.actAlmacenUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Checked := not (cxGridViewNOMBRE_ALMACEN.GroupIndex < 0);
end;
procedure TfrViewPedidosProveedor.actProveedorExecute(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 TfrViewPedidosProveedor.actProveedorUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Checked := not (cxGridViewNOMBRE.GroupIndex < 0);
end;
procedure TfrViewPedidosProveedor.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 TfrViewPedidosProveedor.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_PARCIAL, SITUACION_PEDIDO_PARCIAL);
3 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_PEDIDO_RECIBIDO, SITUACION_PEDIDO_RECIBIDO);
end;
end;
procedure TfrViewPedidosProveedor.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 TfrViewPedidosProveedor.cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel);
begin
inherited;
RefrescarFiltro;
end;
procedure TfrViewPedidosProveedor.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 TfrViewPedidosProveedor.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_PedidosProveedorINCIDENCIAS_ACTIVAS).Index)
and (Rec.Selected)
and (Pedidos.DataTable.FieldByName(fld_PedidosProveedorINCIDENCIAS_ACTIVAS).AsInteger = 1) then begin
sNewHint := Pedidos.DataTable.FieldByName(fld_PedidosProveedorINCIDENCIAS).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 TfrViewPedidosProveedor.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_PedidosProveedorSITUACION).Index;
ASituacion := UPPERCASE(VarToStr(ARecord.DisplayTexts[IndiceCol]));
if (ASituacion = SITUACION_PEDIDO_PENDIENTE) then
AStyle := cxStylePendientes
else if (ASituacion = SITUACION_PEDIDO_PARCIAL) then
AStyle := cxStyleParciales
else if (ASituacion = SITUACION_PEDIDO_RECIBIDO) then
AStyle := cxStyleRecibidos;
end;
end;
function TfrViewPedidosProveedor.GetPedidos: IBizPedidoProveedor;
begin
Result := FPedidos;
end;
procedure TfrViewPedidosProveedor.SetPedidos(const Value: IBizPedidoProveedor);
begin
FPedidos := Value;
if Assigned(FPedidos) then
dsDataSource.DataTable := FPedidos.DataTable;
end;
end.