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.
Miguelo_FactuGES/Clientes/ListadoPagosCliente.pas
2007-06-25 15:19:31 +00:00

476 lines
16 KiB
ObjectPascal

{
===============================================================================
Copyright (©) 2002. Rodax Software.
===============================================================================
Los contenidos de este fichero son propiedad de Rodax Software titular del
copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado,
en su totalidad o en parte, con el permiso escrito de Rodax Software, o de
acuerdo con los términos y condiciones establecidas en el acuerdo/contrato
bajo el que se suministra.
-----------------------------------------------------------------------------
Web: www.rodax-software.com
===============================================================================
Fecha primera versión: 16-11-2002
Versión actual: 1.0.1
Fecha versión actual: 02-04-2004
===============================================================================
Modificaciones:
Fecha Comentarios
---------------------------------------------------------------------------
02-04-2004 Se ha eliminado el atributo SERIE (P8 MULTIEMPRESA)
===============================================================================
}
unit ListadoPagosCliente;
interface
uses
Windows, Db, StdCtrls, RdxMemo, RdxCampos, RdxTitulos, Forms, RdxPaneles,
RdxBotones, Controls, ExtCtrls, RdxBarras, Classes, RdxFrameComisiones,
RdxFrame, RXDBCtrl, RxMemDS, ComCtrls, cxDBEdit, cxMaskEdit, cxButtonEdit,
Configuracion, cxControls, cxContainer, cxEdit, cxTextEdit, cxMemo, AdvPanel,
cxSpinEdit, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDBData,
cxGridLevel, cxClasses, cxGridCustomView, cxGridCustomTableView,
cxGridTableView, cxGridDBTableView, cxGrid, cxDropDownEdit, cxCalendar,
InformeComisionesVendedores, vistaPrevia,
RdxDBFrame, RdxFrameListadoPagosCliente, InformeListadoPagosCliente,
InformeListadoPagosClientes, RdxPageControl, IBCustomDataSet, IBDatabase,
RdxEmpresaActiva, cxDataStorage, Entidades;
type
TfrListadoPagosCliente = class(TRdxFrameListadoPagosCliente)
brSimple: TRdxBarraInferior;
dsFacturas: TDataSource;
Titulo: TRdxPanelTituloOperacion;
pnlCuerpo: TPanel;
dsPagos: TDataSource;
bVistaPrevia: TRdxBoton;
bImprimir: TRdxBoton;
bCancelar: TRdxBoton;
dsClientesPagos: TDataSource;
Paginas: TRdxPagesControl;
pagPagosClientes: TTabSheet;
pagPagosCliente: TTabSheet;
pnlDatos: TAdvPanel;
Panel3: TPanel;
eCodigoCliente: TLabel;
eNIFCIF: TLabel;
eNombre: TLabel;
CodCliente: TcxButtonEdit;
NIFCIF: TcxTextEdit;
Nombre: TcxTextEdit;
Panel2: TPanel;
ImportePendiente: TLabel;
Panel1: TPanel;
Splitter1: TSplitter;
gridPagosPendClientes: TcxGrid;
gridPagosPendClientescxGridDBTableView1: TcxGridDBTableView;
gridPagosPendClientescxGridLevel1: TcxGridLevel;
TablaClientesPagosAux: TIBDataSet;
TablaClientesPagosAuxDEBE: TIBBCDField;
TablaClientesPagosAuxCODIGOCLIENTE: TIBStringField;
TablaClientesPagosAuxNOMBRE: TIBStringField;
TablaClientesPagosAuxTOTALFACTURAS: TIBBCDField;
TablaClientesPagosAuxTOTALPAGOS: TIBBCDField;
Panel4: TPanel;
Panel5: TPanel;
Panel6: TPanel;
Panel7: TPanel;
Panel8: TPanel;
gridFacturas: TcxGrid;
cxGridDBTableView1: TcxGridDBTableView;
cxGridLevel1: TcxGridLevel;
Panel9: TPanel;
gridPagos: TcxGrid;
gridPagosDBTableView1: TcxGridDBTableView;
gridPagosLevel1: TcxGridLevel;
eTituloGrid1: TLabel;
eTituloGrid2: TLabel;
procedure bCancelarClick(Sender: TObject);
procedure bImprimirClick(Sender: TObject);
procedure bVistaPreviaClick(Sender: TObject);
procedure CodClientePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
procedure Panel1Resize(Sender: TObject);
procedure IBDataSet1CalcFields(DataSet: TDataSet);
procedure PaginasChange(Sender: TObject);
procedure gridPagosPendClientescxGridDBTableView1DblClick(Sender: TObject);
procedure gridFacturasDBTableView1CustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
procedure cxGridDBTableView1DataControllerSummaryAfterSummary(ASender: TcxDataSummary);
private
FInformeListadoPagosCliente : TdmInformeListadoPagosCliente;
FInformeListadoPagosClientes : TdmInformeListadoPagosClientes;
FPagos : Double;
FDebe : Double;
FTotal : Double;
property Pagos: Double read FPagos write FPagos;
property Debe: Double read FDebe write FDebe;
property Total: Double read FTotal write FTotal;
procedure Filtrar;
protected
procedure ActivarModoConsultar; override;
procedure RecargarDatos; override;
procedure FreeContenido; override;
procedure BuscarFacturas;
procedure BuscarPagos;
public
constructor Create (AOwner : TComponent); override;
destructor Destroy; override;
published
procedure activarFacturasCobrosCliente;
end;
var
frListadoPagosCliente: TfrListadoPagosCliente;
implementation
{$R *.DFM}
uses
Mensajes, IB, Colores, BaseDatos, Sysutils, Constantes,
StrFunc, TablaPoblaciones, Excepciones, IBErrorCodes,
Variants, NumFunc, Literales, TablaFacturasCliente,
TablaPagosCliente, DateFunc, cxCheckBox, cxDateUtils, Graphics,
Clientes, RdxFrameClientes, TablaClientes, TablaEmpresas;
procedure TfrListadoPagosCliente.ActivarModoConsultar;
begin
Visible := True;
end;
procedure TfrListadoPagosCliente.BuscarFacturas;
begin
if Transaccion = NIL then
Exit;
try
TablaFacturas.Close;
// Buscar la fila a tratar si es necesario
if not EsCadenaVacia(CodigoCliente) then begin
TablaFacturas.ParamByName('CODIGOCLIENTE').AsString := CodigoCliente;
TablaFacturas.ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
end;
TablaFacturas.Prepare;
TablaFacturas.Open;
dmTablaFacturasCliente.InicializarTablaFacturas(@TablaFacturas);
gridFacturas.ActiveView.DataController.GotoFirst;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrListadoPagosCliente.BuscarPagos;
begin
if Transaccion = NIL then
Exit;
try
TablaPagos.Close;
// Buscar la fila a tratar si es necesario
if not EsCadenaVacia(CodigoCliente) then begin
TablaPagos.ParamByName('CODIGOCLIENTE').AsString := CodigoCliente;
TablaPagos.ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
end;
TablaPagos.Prepare;
TablaPagos.Open;
dmTablaPagosCliente.InicializarTablaPagosClientes(@TablaPagos);
gridPagos.ActiveView.DataController.GotoFirst;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
constructor TfrListadoPagosCliente.Create (AOwner : TComponent);
var
Columna : TcxGridDBColumn;
begin
inherited Create(AOwner);
FInformeListadoPagosCliente := TdmInformeListadoPagosCliente.Create(Self);
FInformeListadoPagosClientes := TdmInformeListadoPagosClientes.Create(Self);
Entidad := entListadoPagosCliente;
Pagos := 0;
Debe := 0;
Total := 0;
BaseDatos := dmBaseDatos.BD;
Transaccion := dmBaseDatos.Transaccion;
TablaClientesPagos := TablaClientesPagosAux;
TablaFacturas := TIBDataSet.Create(Self);
TablaPagos := TIBDataSet.Create(Self);
dsClientesPagos.DataSet := TablaClientesPagos;
dsFacturas.DataSet := TablaFacturas;
dsPagos.DataSet := TablaPagos;
with TablaClientesPagos do
begin
Database := BaseDatos;
Transaction := Transaccion;
SelectSQL.Assign(dmTablaPagosCliente.sqlGridPagosPendCliente);
RefreshSQL.Assign(dmTablaPagosCliente.sqlGridPagosPendCliente);
AutoCalcFields := True;
OnCalcFields := IBDataSet1CalcFields;
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
Prepare;
Open;
end;
with TablaFacturas do
begin
Database := BaseDatos;
Transaction := Transaccion;
SelectSQL.Assign(dmTablaFacturasCliente.sqlConsultarGridFacturasCliente);
RefreshSQL.Assign(dmTablaFacturasCliente.sqlConsultarGridFacturasCliente);
end;
with TablaPagos do
begin
Database := BaseDatos;
Transaction := Transaccion;
SelectSQL.Assign(dmTablaPagosCliente.sqlGridPagosCliente);
RefreshSQL.Assign(dmTablaPagosCliente.sqlGridPagosCliente);
end;
dmTablaPagosCliente.InicializarGridPagosPendClientes(gridPagosPendClientescxGridDBTableView1);
dmTablaPagosCliente.InicializarTablaPagosPendClientes(@TablaClientesPagos);
gridPagosPendClientescxGridDBTableView1.DataController.Summary.OnAfterSummary := cxGridDBTableView1DataControllerSummaryAfterSummary;
gridPagosPendClientes.ActiveView.DataController.GotoFirst;
dmTablaFacturasCliente.InicializarGridListadoFacturasCliente(gridFacturas);
dmTablaPagosCliente.InicializarTablaPagosPendClientes(@TablaClientesPagos);
dmTablaPagosCliente.InicializarGridListadoPagosCliente(gridPagos);
cxGridDBTableView1.DataController.Summary.OnAfterSummary := cxGridDBTableView1DataControllerSummaryAfterSummary;
gridPagosDBTableView1.DataController.Summary.OnAfterSummary := cxGridDBTableView1DataControllerSummaryAfterSummary;
Filtrar;
if VarIsNull(TablaClientesPagos.FieldByName('CODIGOCLIENTE').AsVariant)
then CodigoCliente := dmTablaClientes.DarCodCliMin
else CodigoCliente := TablaClientesPagos.FieldByName('CODIGOCLIENTE').AsVariant;
Paginas.ActivePageIndex := 0;
end;
destructor TfrListadoPagosCliente.Destroy;
begin
FInformeListadoPagosCliente.Free;
FInformeListadoPagosClientes.Free;
TablaClientesPagos.Close;
TablaClientesPagos.UnPrepare;
TablaClientesPagos.Free;
TablaFacturas.Close;
TablaFacturas.UnPrepare;
TablaFacturas.Free;
TablaPagos.Close;
TablaPagos.UnPrepare;
TablaPagos.Free;
inherited;
end;
procedure TfrListadoPagosCliente.bImprimirClick(Sender: TObject);
begin
if (Paginas.ActivePageIndex = 0) then
begin
FInformeListadoPagosClientes.Preview := nil;
FInformeListadoPagosClientes.Imprimir;
end
else begin
FInformeListadoPagosCliente.CodigoCliente := CodCliente.Text;
FInformeListadoPagosCliente.NIFCIFCliente := NIFCIF.Text;
FInformeListadoPagosCliente.NombreCliente := Nombre.Text;
FInformeListadoPagosCliente.Pagos := Pagos;
FInformeListadoPagosCliente.Debe := Debe;
FInformeListadoPagosCliente.Total := Total;
FInformeListadoPagosCliente.Preview := nil;
FInformeListadoPagosCliente.Imprimir;
end;
end;
procedure TfrListadoPagosCliente.bCancelarClick(Sender: TObject);
begin
CloseFrame;
end;
procedure TfrListadoPagosCliente.bVistaPreviaClick(Sender: TObject);
var
FVistaPrevia : TfrVistaPrevia;
begin
if (Paginas.ActivePageIndex = 0) then
begin
FVistaPrevia := TfrVistaPrevia.Create(Self);
FInformeListadoPagosClientes.Preview := FVistaPrevia.Preview;
FInformeListadoPagosClientes.Previsualizar;
CaptionModal := 'Informe de listado de pagos de clientes';
end
else begin
FInformeListadoPagosCliente.CodigoCliente := CodCliente.Text;
FInformeListadoPagosCliente.NIFCIFCliente := NIFCIF.Text;
FInformeListadoPagosCliente.NombreCliente := Nombre.Text;
FInformeListadoPagosCliente.Pagos := Pagos;
FInformeListadoPagosCliente.Debe := Debe;
FInformeListadoPagosCliente.Total := Total;
FVistaPrevia := TfrVistaPrevia.Create(Self);
FInformeListadoPagosCliente.Preview := FVistaPrevia.Preview;
FInformeListadoPagosCliente.Previsualizar;
CaptionModal := 'Informe de listado de pagos de cliente';
end;
WidthModal := 800;
HeightModal := 600;
ModoModal := Consultar;
EntidadModal := entListadoPagosCliente;
ContenidoModal := FVistaPrevia;
end;
procedure TfrListadoPagosCliente.gridFacturasDBTableView1CustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
IndiceCol : Integer;
begin
IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName('DEBE').Index;
if (IndiceCol = AViewInfo.Item.Index) then
begin
if Copy(Trim(AViewInfo.GridRecord.DisplayTexts[IndiceCol]), 1, 1) = '-' then
begin
ACanvas.Canvas.Font.Color := $00385937;
end
else
begin
ACanvas.Canvas.Font.Color := $000000CC;
end;
end;
end;
procedure TfrListadoPagosCliente.CodClientePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
ContenidoModal := TfrClientes.Create(Self);
end;
procedure TfrListadoPagosCliente.FreeContenido;
begin
if (ContenidoModal is TRdxFrameClientes) then
CodigoCliente := (ContenidoModal as TRdxFrameClientes).CodigoCliente;
inherited FreeContenido;
end;
procedure TfrListadoPagosCliente.RecargarDatos;
var
DatosCliente : TDatosCliente;
begin
if not gridPagosPendClientescxGridDBTableView1.DataController.LocateByKey(CodigoCliente) then
gridPagosPendClientescxGridDBTableView1.DataController.GotoFirst;
DatosCliente := TDatosCliente.Create(CodigoCliente);
CodCliente.Text := DatosCliente.Codigo;
NIFCIF.Text := DatosCliente.NIFCIF;
Nombre.Text := DatosCliente.Nombre;
DatosCliente.Free;
BuscarFacturas;
BuscarPagos;
if (not varIsNull(gridPagos.ActiveView.DataController.Summary.FooterSummaryValues[0])) then
Pagos := gridPagos.ActiveView.DataController.Summary.FooterSummaryValues[0];
if (not varIsNull(gridFacturas.ActiveView.DataController.Summary.FooterSummaryValues[0])) then
Debe := gridFacturas.ActiveView.DataController.Summary.FooterSummaryValues[0];
Total := Debe - Pagos;
ImportePendiente.Caption := 'El importe pendiente del cliente es: ' + FormatFloat('#,##0.00 €', Total) + ' ';
end;
procedure TfrListadoPagosCliente.Panel1Resize(Sender: TObject);
begin
gridFacturas.Width := (Panel1.ClientWidth - Splitter1.Width) div 2;
gridPagos.Width := gridFacturas.Width;
end;
procedure TfrListadoPagosCliente.IBDataSet1CalcFields(DataSet: TDataSet);
begin
with DataSet do
begin
if VarIsNull(FieldByName('TOTALPAGOS').AsVariant) then
FieldByName('TOTALPAGOS').AsFloat := 0;
if VarIsNull(FieldByName('TOTALFACTURAS').AsVariant) then
FieldByName('TOTALFACTURAS').AsFloat := 0;
FieldByName('DEBE').AsFloat := FieldByName('TOTALFACTURAS').AsFloat - FieldByName('TOTALPAGOS').AsFloat;
end;
end;
procedure TfrListadoPagosCliente.PaginasChange(Sender: TObject);
begin
if (Paginas.ActivePageIndex = 1) then
CodigoCliente := TablaClientesPagos.FieldByName('CODIGOCLIENTE').AsString;
end;
procedure TfrListadoPagosCliente.gridPagosPendClientescxGridDBTableView1DblClick(Sender: TObject);
begin
CodigoCliente := TablaClientesPagos.FieldByName('CODIGOCLIENTE').AsString;
Paginas.ActivePageIndex := 1;
end;
procedure TfrListadoPagosCliente.Filtrar;
var
Columna : TcxGridDBColumn;
AItemList: TcxFilterCriteriaItemList;
begin
with gridPagosPendClientes.ActiveView.DataController.Filter do
begin
BeginUpdate;
try
Root.Clear;
Columna := (gridPagosPendClientes.ActiveView as TcxGridDBTableView).GetColumnByFieldName('DEBE');
AItemList := Root.AddItemList(fboOr);
AItemList.AddItem(Columna, foGreater, EmpresaActiva.IntervaloPagosCli, 'Mayor');
AItemList.AddItem(Columna, foLess, - EmpresaActiva.IntervaloPagosCli, 'Menor');
Active := True;
finally
EndUpdate;
gridPagosPendClientes.ActiveView.DataController.GotoFirst;
end;
end;
end;
procedure TfrListadoPagosCliente.cxGridDBTableView1DataControllerSummaryAfterSummary(ASender: TcxDataSummary);
begin
if ASender.DataController.Summary.FooterSummaryItems.Count <> 0 then
if (esCadenaVacia(ASender.DataController.Summary.FooterSummaryTexts[0])) then
ASender.DataController.Summary.FooterSummaryValues[0] := 0;
end;
procedure TfrListadoPagosCliente.activarFacturasCobrosCliente;
begin
Paginas.ActivePageIndex := 1;
end;
end.