git-svn-id: https://192.168.0.254/svn/Proyectos.Miguelo_FactuGES/trunk@4 172823e9-465a-9d4b-80ba-0a9f016f4eb1
476 lines
16 KiB
ObjectPascal
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.
|