git-svn-id: https://192.168.0.254/svn/Proyectos.AlonsoYSal_FactuGES2/trunk@25 40301925-124e-1c4e-b97d-170ad7a8785b
285 lines
9.8 KiB
ObjectPascal
285 lines
9.8 KiB
ObjectPascal
unit uViewRecibosProveedor;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
|
Dialogs, uViewGrid, uViewPreview, cxStyles, cxCustomData, cxGraphics,
|
|
cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, dxPSGlbl, dxPSUtl,
|
|
dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider,
|
|
dxPSFillPatterns, dxPSEdgePatterns, cxImageComboBox, cxTextEdit, ImgList,
|
|
PngImageList, cxGridCustomTableView, cxGridTableView, cxGridDBTableView,
|
|
dxPSCore, dxPScxCommon, dxPScxGrid6Lnk, ActnList, uDADataTable,
|
|
cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGrid,
|
|
cxImage, Grids, DBGrids, uBizRecibosProveedor, cxGridCustomPopupMenu,
|
|
cxGridPopupMenu, cxCalendar, cxCurrencyEdit, uViewFiltroBase, TB2Item, TBX,
|
|
TB2Toolbar, TBXDkPanels, TB2Dock, dxPgsDlg, uDAInterfaces, uCustomView,
|
|
uViewBase;
|
|
|
|
type
|
|
IViewRecibosProveedor = interface(IViewGrid)
|
|
['{2E26DF6E-CFCD-41CC-AC4C-FCF3AD0AD0D7}']
|
|
function GetRecibos: IBizRecibosProveedor;
|
|
procedure SetRecibos(const Value: IBizRecibosProveedor);
|
|
property Recibos: IBizRecibosProveedor read GetRecibos write SetRecibos;
|
|
|
|
procedure FiltrarPorFechas(const Fecha1, Fecha2: Variant);
|
|
end;
|
|
|
|
TfrViewRecibosProveedor = class(TfrViewGrid, IViewRecibosProveedor)
|
|
PngImageList: TPngImageList;
|
|
cxStylePendientes: TcxStyle;
|
|
cxGridPendientes: TcxGridLevel;
|
|
cxGridPagados: TcxGridLevel;
|
|
cxStylePagadas: TcxStyle;
|
|
cxGridViewREFERENCIA: TcxGridDBColumn;
|
|
cxGridViewSITUACION: TcxGridDBColumn;
|
|
cxGridViewFECHA_VENCIMIENTO: TcxGridDBColumn;
|
|
cxGridViewDESCRIPCION: TcxGridDBColumn;
|
|
cxGridViewIMPORTE: TcxGridDBColumn;
|
|
cxGridViewNOMBRE_PROVEEDOR: TcxGridDBColumn;
|
|
cxGridViewNIF_CIF_PROVEEDOR: TcxGridDBColumn;
|
|
cxGridViewREFERENCIA_REMESA: TcxGridDBColumn;
|
|
cxGridDevueltos: TcxGridLevel;
|
|
cxGridViewOTROS_GASTOS: TcxGridDBColumn;
|
|
cxGridViewIMPORTE_TOTAL: TcxGridDBColumn;
|
|
cxGridViewFECHA_EMISION: TcxGridDBColumn;
|
|
cxStyleDevueltas: TcxStyle;
|
|
actProveedor: TAction;
|
|
TBXItem2: TTBXItem;
|
|
TBXSeparatorItem1: TTBXSeparatorItem;
|
|
cxGridViewREFERENCIA_FACTURA_PROV: TcxGridDBColumn;
|
|
cxGridViewID_RECIBO_COMPENSADO: TcxGridDBColumn;
|
|
cxGridViewREFERENCIA_REC_COMPENSADO: TcxGridDBColumn;
|
|
cxGridViewNOMBRE_COMERCIAL: TcxGridDBColumn;
|
|
cxGridViewFECHA_PAGO: TcxGridDBColumn;
|
|
cxGridViewSUBCUENTA: TcxGridDBColumn;
|
|
procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView;
|
|
ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem;
|
|
out AStyle: TcxStyle);
|
|
procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel);
|
|
procedure cxGridViewIMPORTE_TOTALGetDisplayText(Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
|
|
var AText: string);
|
|
procedure actProveedorExecute(Sender: TObject);
|
|
procedure actProveedorUpdate(Sender: TObject);
|
|
procedure cxGridViewID_RECIBO_COMPENSADOCustomDrawCell(
|
|
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
|
|
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
|
|
|
|
private
|
|
//Filtros relativos a la vista
|
|
procedure AnadirFiltroSituaciones;
|
|
procedure AnadirFiltroFechas;
|
|
|
|
protected
|
|
FRecibos: IBizRecibosProveedor;
|
|
function GetRecibos: IBizRecibosProveedor;
|
|
procedure SetRecibos(const Value: IBizRecibosProveedor);
|
|
procedure AnadirOtrosFiltros; override;
|
|
|
|
public
|
|
property Recibos: IBizRecibosProveedor read GetRecibos write SetRecibos;
|
|
procedure FiltrarPorFechas(const Fecha1, Fecha2: Variant);
|
|
end;
|
|
|
|
|
|
implementation
|
|
|
|
uses
|
|
schRecibosProveedorClient_Intf, uDataModuleRecibosProveedor, DateUtils, uViewGridBase;
|
|
|
|
{$R *.dfm}
|
|
|
|
{ TfrViewRecibosProveedor }
|
|
|
|
procedure TfrViewRecibosProveedor.actProveedorExecute(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
if (cxGridViewNOMBRE_PROVEEDOR.GroupIndex < 0) then
|
|
begin
|
|
cxGridViewNOMBRE_PROVEEDOR.GroupIndex := cxGridView.GroupedColumnCount;
|
|
cxGridViewNOMBRE_PROVEEDOR.Visible := False;
|
|
end
|
|
else
|
|
begin
|
|
cxGridViewNOMBRE_PROVEEDOR.GroupIndex := -1;
|
|
cxGridViewNOMBRE_PROVEEDOR.Visible := True;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewRecibosProveedor.actProveedorUpdate(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
(Sender as TAction).Checked := not (cxGridViewNOMBRE_PROVEEDOR.GroupIndex < 0);
|
|
end;
|
|
|
|
procedure TfrViewRecibosProveedor.AnadirFiltroFechas;
|
|
var
|
|
Columna: TcxGridDBColumn;
|
|
Fecha1, Fecha2: Variant;
|
|
FechaVencimiento1, FechaVencimiento2: Variant;
|
|
FFiltro : TcxFilterCriteriaItemList;
|
|
begin
|
|
Fecha1 := frViewFiltroBase1.edtFechaIniFiltro.EditValue;
|
|
Fecha2 := frViewFiltroBase1.edtFechaFinFiltro.EditValue;
|
|
FechaVencimiento1 := frViewFiltroBase1.edtFecha2IniFiltro.EditValue;
|
|
FechaVencimiento2 := frViewFiltroBase1.edtFecha2FinFiltro.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(fld_RecibosCompensadosProvFECHA_EMISION);
|
|
FFiltro.AddItem(Columna, foBetween, varArrayOf([Fecha1, Fecha2]), VarToStr(Fecha1) + ' and ' + VarToStr(Fecha2));
|
|
end;
|
|
|
|
if not VarIsNull(FechaVencimiento1)
|
|
and not VarIsNull(FechaVencimiento2) then
|
|
begin
|
|
cxGridView.DataController.Filter.Options := [fcoCaseInsensitive, fcoSoftCompare];
|
|
FFiltro := AddFilterGrid(fboAnd);
|
|
|
|
Columna := (cxGridView as TcxGridDBTableView).GetColumnByFieldName(fld_RecibosCompensadosProvFECHA_VENCIMIENTO);
|
|
FFiltro.AddItem(Columna, foBetween, varArrayOf([FechaVencimiento1, FechaVencimiento2]), VarToStr(FechaVencimiento1) + ' and ' + VarToStr(FechaVencimiento2));
|
|
end;
|
|
|
|
end;
|
|
|
|
procedure TfrViewRecibosProveedor.AnadirFiltroSituaciones;
|
|
var
|
|
FFiltro : TcxFilterCriteriaItemList;
|
|
begin
|
|
FFiltro := AddFilterGrid(fboAnd);
|
|
|
|
case cxGrid.ActiveLevel.Index of
|
|
1 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, CTE_PENDIENTE, CTE_PENDIENTE);
|
|
2 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, CTE_PAGADO, CTE_PAGADO);
|
|
3 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, CTE_DEVUELTO, CTE_DEVUELTO);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewRecibosProveedor.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 TfrViewRecibosProveedor.cxGridActiveTabChanged(Sender: TcxCustomGrid;
|
|
ALevel: TcxGridLevel);
|
|
begin
|
|
inherited;
|
|
RefrescarFiltro;
|
|
end;
|
|
|
|
procedure TfrViewRecibosProveedor.cxGridViewID_RECIBO_COMPENSADOCustomDrawCell(
|
|
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
|
|
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
|
|
var
|
|
R : TRect;
|
|
begin
|
|
inherited;
|
|
if not VarIsNull(AViewInfo.Value) then
|
|
begin
|
|
R := AViewInfo.ContentBounds;
|
|
ACanvas.FillRect(R);
|
|
ACanvas.DrawImage(PngImageList, R.Left, R.Top, 2);
|
|
ADone := True;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewRecibosProveedor.cxGridViewIMPORTE_TOTALGetDisplayText(
|
|
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
|
|
var AText: string);
|
|
var
|
|
ImporteTotal : Double;
|
|
begin
|
|
//Se encarga de mostrar el campo calculado de importe total
|
|
ImporteTotal := -1;
|
|
|
|
if not VarIsNull(ARecord.Values[cxGridViewIMPORTE.Index]) then
|
|
if not VarIsNull(ARecord.Values[cxGridViewOTROS_GASTOS.Index]) then
|
|
ImporteTotal := ARecord.Values[cxGridViewIMPORTE.Index] + ARecord.Values[cxGridViewOTROS_GASTOS.Index]
|
|
else
|
|
ImporteTotal := ARecord.Values[cxGridViewIMPORTE.Index];
|
|
|
|
if (ImporteTotal <> -1) then
|
|
begin
|
|
AText := FormatCurr(',0.00 €;-,0.00 €', FloatToCurr(ImporteTotal));
|
|
|
|
ARecord.Values[cxGridViewIMPORTE_TOTAL.Index] := ImporteTotal;
|
|
cxGridViewIMPORTE_TOTAL.EditValue := ImporteTotal;
|
|
cxGridViewIMPORTE_TOTAL.DataBinding.Field.Value := ImporteTotal;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewRecibosProveedor.cxGridViewStylesGetContentStyle(
|
|
Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
|
|
AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);
|
|
var
|
|
IndiceCol: Integer;
|
|
ASituacion: string;
|
|
begin
|
|
inherited;
|
|
|
|
if Assigned(ARecord) then
|
|
begin
|
|
IndiceCol := cxGridViewSITUACION.Index;
|
|
ASituacion := UPPERCASE(VarToStr(ARecord.DisplayTexts[IndiceCol]));
|
|
if (ASituacion = CTE_PENDIENTE) then
|
|
AStyle := cxStylePendientes
|
|
else if (ASituacion = CTE_PAGADO) then
|
|
AStyle := cxStylePagadas
|
|
else if (ASituacion = CTE_DEVUELTO) then
|
|
AStyle := cxStyleDevueltas;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewRecibosProveedor.FiltrarPorFechas(const Fecha1, Fecha2: Variant);
|
|
var
|
|
Columna: TcxGridDBColumn;
|
|
begin
|
|
with cxGridView.DataController.Filter do
|
|
begin
|
|
BeginUpdate;
|
|
try
|
|
Options := [fcoCaseInsensitive, fcoSoftCompare];
|
|
Root.Clear;
|
|
if not VarIsNull(Fecha1)
|
|
and not VarIsNull(Fecha2) then
|
|
begin
|
|
Columna := (cxGridView as TcxGridDBTableView).GetColumnByFieldName(fld_RecibosCompensadosProvFECHA_VENCIMIENTO);
|
|
Root.AddItem(Columna, foBetween, varArrayOf([Fecha1, Fecha2]), VarToStr(Fecha1) + ' and ' + VarToStr(Fecha2));
|
|
Active := True;
|
|
end
|
|
else
|
|
Active := False;
|
|
finally
|
|
EndUpdate;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TfrViewRecibosProveedor.GetRecibos: IBizRecibosProveedor;
|
|
begin
|
|
Result := FRecibos;
|
|
end;
|
|
|
|
procedure TfrViewRecibosProveedor.SetRecibos(const Value: IBizRecibosProveedor);
|
|
begin
|
|
FRecibos := Value;
|
|
if Assigned(FRecibos) then
|
|
dsDataSource.DataTable := FRecibos.DataTable;
|
|
end;
|
|
|
|
end.
|