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.
Noviseda_FactuGES2/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.pas
roberto f2c4e7954f #408: Informe de comisiones de vendedor ordenar por referencia de factura
#409: Sacar en pedidos de cliente y albaranes de cliente la provincia
#410: Sacar nombre comercial en etiquetas y albaranes y pedidos
#411: Cuando sea un abono que salga en grande en el informe
#412: Cuando una factura es más de dos hojas que no repita el pie de importes
#413: Poder filtrar por provincia en todos los documentos
Version 1.0.8

git-svn-id: https://192.168.0.254/svn/Proyectos.Noviseda_FactuGES2/trunk@134 f33bb606-9f5c-448d-9c99-757f00063c96
2010-07-12 15:44:32 +00:00

342 lines
11 KiB
ObjectPascal

unit uViewFacturasCliente;
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, uBizFacturasCliente, cxGridCustomPopupMenu,
cxGridPopupMenu, cxCalendar, cxCurrencyEdit, uViewFiltroBase, TB2Item, SpTBXItem,
TB2Toolbar, SpTBXDkPanels, TB2Dock, dxPgsDlg, uDAInterfaces, uCustomView,
uViewBase, cxLookAndFeels, cxLookAndFeelPainters, dxPSPDFExportCore,
dxPSPDFExport, cxDrawTextUtils, dxPSPrVwStd, dxPSPrVwAdv,
dxPScxEditorProducers, dxPScxExtEditorProducers, dxPScxPageControlProducer;
type
IViewFacturasCliente = interface(IViewGrid)
['{927A005F-5D71-4C37-B9E7-10292F9D467C}']
function GetFacturas: IBizFacturaCliente;
procedure SetFacturas(const Value: IBizFacturaCliente);
property Facturas: IBizFacturaCliente read GetFacturas write SetFacturas;
end;
TfrViewFacturasCliente = class(TfrViewGrid, IViewFacturasCliente)
PngImageList: TPngImageList;
cxGridViewNOMBRE: TcxGridDBColumn;
cxGridViewREFERENCIA: TcxGridDBColumn;
cxGridViewFECHA_FACTURA: TcxGridDBColumn;
cxGridViewSITUACION: TcxGridDBColumn;
cxGridViewBASE_IMPONIBLE: TcxGridDBColumn;
cxGridViewIMPORTE_DESCUENTO: TcxGridDBColumn;
cxGridViewDESCUENTO: TcxGridDBColumn;
cxGridViewIMPORTE_IVA: TcxGridDBColumn;
cxGridViewIMPORTE_TOTAL: TcxGridDBColumn;
cxGridViewIVA: TcxGridDBColumn;
cxGridViewNIF_CIF: TcxGridDBColumn;
cxGridViewCALLE: TcxGridDBColumn;
cxGridViewPROVINCIA: TcxGridDBColumn;
cxGridViewCODIGO_POSTAL: TcxGridDBColumn;
cxGridViewPOBLACION: TcxGridDBColumn;
cxStylePagada: TcxStyle;
cxGridPendientes: TcxGridLevel;
cxGridParcial: TcxGridLevel;
cxStyleAbono: TcxStyle;
cxGridPagadas: TcxGridLevel;
cxGridViewREFERENCIA_COMISION: TcxGridDBColumn;
cxStylePendientes: TcxStyle;
cxStyleParciales: TcxStyle;
actCliente: TAction;
actProvincia: TAction;
TBXItem2: TSpTBXItem;
TBXSeparatorItem1: TSpTBXSeparatorItem;
TBXItem3: TSpTBXItem;
TBXSeparatorItem2: TSpTBXSeparatorItem;
cxGridViewTIPO: TcxGridDBColumn;
cxGridViewRE: TcxGridDBColumn;
cxGridViewIMPORTE_RE: TcxGridDBColumn;
procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView;
ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem;
out AStyle: TcxStyle);
procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel);
procedure actClienteExecute(Sender: TObject);
procedure actProvinciaExecute(Sender: TObject);
procedure actProvinciaUpdate(Sender: TObject);
procedure actClienteUpdate(Sender: TObject);
procedure cxGridViewDataControllerCompare(
ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2,
AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer);
procedure OnFiltroListaPropertiesChange(Sender: TObject);
procedure OnFiltroListaPropertiesInitPopup(Sender: TObject);
procedure CustomViewShow(Sender: TObject);
procedure CustomViewDestroy(Sender: TObject);
procedure CustomViewCreate(Sender: TObject);
private
//Filtros relativos a la vista
procedure AnadirFiltroSituaciones;
procedure AnadirFiltroFechas;
procedure AnadirFiltroProvincia;
protected
FProvincias : TStringList;
FFacturas: IBizFacturaCliente;
function GetFacturas: IBizFacturaCliente;
procedure SetFacturas(const Value: IBizFacturaCliente);
procedure CargarProvincias;
public
procedure AnadirOtrosFiltros; override;
property Facturas: IBizFacturaCliente read GetFacturas write SetFacturas;
end;
implementation
uses
uDataModuleFacturasCliente, DateUtils, uViewGridBase, uReferenciasUtils,
cxVariants, uProvinciasPoblacionesController, uStringsUtils;
{$R *.dfm}
{ TfrViewFacturasCliente }
procedure TfrViewFacturasCliente.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 TfrViewFacturasCliente.actClienteUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Checked := not (cxGridViewNOMBRE.GroupIndex < 0);
end;
procedure TfrViewFacturasCliente.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 TfrViewFacturasCliente.actProvinciaUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Checked := not (cxGridViewPROVINCIA.GroupIndex < 0);
end;
procedure TfrViewFacturasCliente.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_FACTURA');
FFiltro.AddItem(Columna, foBetween, varArrayOf([Fecha1, Fecha2]), VarToStr(Fecha1) + ' and ' + VarToStr(Fecha2));
end;
end;
procedure TfrViewFacturasCliente.AnadirFiltroProvincia;
var
FFiltro : TcxFilterCriteriaItemList;
begin
//Solo se aplica este filtro en el caso de tener activo el panel de detalle de filtro
//y sobre la lista de pedidos
if frViewFiltroBase1.Visible then
begin
if (VarToStr(frViewFiltroBase1.eLista.EditValue) <> 'Todos') then
begin
FFiltro := AddFilterGrid(fboAnd);
FFiltro.AddItem(cxGridViewPROVINCIA, foEqual, VarToStr(frViewFiltroBase1.eLista.EditValue), VarToStr(frViewFiltroBase1.eLista.EditValue));
end;
end;
end;
procedure TfrViewFacturasCliente.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_PARCIAMENTE_PAGADA, CTE_PARCIAMENTE_PAGADA);
3 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, CTE_PAGADA, CTE_PAGADA);
end;
end;
procedure TfrViewFacturasCliente.AnadirOtrosFiltros;
begin
inherited;
AnadirFiltroSituaciones;
AnadirFiltroFechas;
AnadirFiltroProvincia;
//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 TfrViewFacturasCliente.CargarProvincias;
var
i : integer;
begin
with TProvinciasPoblacionesController.Create do
try
FProvincias := DarListaProvincias;
with frViewFiltroBase1.eLista.Properties.Items do
begin
BeginUpdate;
try
Clear;
Add('Todos'); //Case 0
for i := 0 to FProvincias.Count - 1 do
Add(FProvincias.Names[i]);
frViewFiltroBase1.eLista.ItemIndex := 0;
finally
EndUpdate;
end;
end;
finally
Free;
end;
end;
procedure TfrViewFacturasCliente.CustomViewCreate(Sender: TObject);
begin
inherited;
FProvincias := NIL;
end;
procedure TfrViewFacturasCliente.CustomViewDestroy(Sender: TObject);
begin
frViewFiltroBase1.eLista.Properties.OnChange := Nil;
frViewFiltroBase1.eLista.Properties.OnInitPopup := Nil;
if Assigned(FProvincias) then
FreeANDNIL(FProvincias);
inherited;
end;
procedure TfrViewFacturasCliente.CustomViewShow(Sender: TObject);
begin
inherited;
frViewFiltroBase1.eLista.Properties.OnChange := OnFiltroListaPropertiesChange;
frViewFiltroBase1.eLista.Properties.OnInitPopup := OnFiltroListaPropertiesInitPopup;
end;
procedure TfrViewFacturasCliente.cxGridActiveTabChanged(Sender: TcxCustomGrid;
ALevel: TcxGridLevel);
begin
inherited;
RefrescarFiltro;
end;
procedure TfrViewFacturasCliente.cxGridViewDataControllerCompare(
ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2,
AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer);
begin
inherited;
if ((AItemIndex = cxGridViewREFERENCIA.Index) or
(AItemIndex = cxGridViewREFERENCIA_COMISION.Index)) and
(VarType(V1) = VarType(V2)) and (VarType(V1) = varString) then
Compare := CompararReferencias(V1, V2)
else
Compare := VarCompare(V1, V2);
end;
procedure TfrViewFacturasCliente.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 := VarToStr(ARecord.DisplayTexts[IndiceCol]);
if (ASituacion = CTE_PAGADA) then
AStyle.TextColor := cxStylePagada.TextColor
else if (ASituacion = CTE_PENDIENTE) then
AStyle.TextColor := cxStylePendientes.TextColor
else if (ASituacion = CTE_PARCIAMENTE_PAGADA) then
AStyle.TextColor := cxStyleParciales.TextColor;
IndiceCol := cxGridViewIMPORTE_TOTAL.Index;
if (Pos('-', ARecord.DisplayTexts[IndiceCol]) > 0) then
AStyle.TextColor := cxStyleAbono.TextColor;
end;
end;
function TfrViewFacturasCliente.GetFacturas: IBizFacturaCliente;
begin
Result := FFacturas;
end;
procedure TfrViewFacturasCliente.OnFiltroListaPropertiesChange(Sender: TObject);
begin
inherited;
RefrescarFiltro;
end;
procedure TfrViewFacturasCliente.OnFiltroListaPropertiesInitPopup(Sender: TObject);
begin
inherited;
ShowHourglassCursor;
try
if not Assigned(FProvincias) then
CargarProvincias;
finally
HideHourglassCursor;
end;
end;
procedure TfrViewFacturasCliente.SetFacturas(const Value: IBizFacturaCliente);
begin
FFacturas := Value;
if Assigned(FFacturas) then
dsDataSource.DataTable := FFacturas.DataTable;
end;
end.