git-svn-id: https://192.168.0.254/svn/Proyectos.Acana_FactuGES/trunk@4 3f40d355-893c-4141-8e64-b1d9be72e7e7
953 lines
29 KiB
ObjectPascal
953 lines
29 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: 05-12-2002
|
|
Versión actual: 1.0.0
|
|
Fecha versión actual: 05-12-2002
|
|
===============================================================================
|
|
Modificaciones:
|
|
|
|
Fecha Comentarios
|
|
---------------------------------------------------------------------------
|
|
===============================================================================
|
|
}
|
|
|
|
unit PagoCliente;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Db, StdCtrls, SysUtils, RdxMemo, RdxCampos, RdxTitulos, Forms, RdxPaneles,
|
|
RdxBotones, Controls, ExtCtrls, RdxBarras, Classes, RdxFramePagos,
|
|
RdxFrame, RXDBCtrl, ComCtrls, RdxComboBox, RxMemDS, cxStyles, cxCustomData,
|
|
cxGraphics, cxFilter, cxData, cxEdit, cxDBData, cxClasses,
|
|
cxControls, cxCalendar, cxDBEdit, cxContainer, cxTextEdit,
|
|
cxMaskEdit, cxButtonEdit, AdvPanel, cxMemo, cxDropDownEdit, Menus, am2000menuitem, am2000popupmenu, am2000,
|
|
cxSpinEdit, IBCustomDataSet, cxLookupEdit, cxDBLookupEdit,
|
|
cxDBLookupComboBox, TablaPagosCliente, Entidades,
|
|
|
|
RdxEmpresaActiva, am2000utils;
|
|
|
|
type
|
|
TfrPagoCliente = class(TRdxFramePagos)
|
|
dsPago: TDataSource;
|
|
Titulo: TRdxPanelTituloOperacion;
|
|
brDoble: TRdxBarraInferior;
|
|
bAceptar: TRdxBoton;
|
|
bCancelar: TRdxBoton;
|
|
brSimple: TRdxBarraInferior;
|
|
bSalir: TRdxBoton;
|
|
pnlCuerpo: TPanel;
|
|
pnlDatosCliente: TAdvPanel;
|
|
MenuOpciones: TPopupMenu2000;
|
|
mnuAnadir: TMenuItem2000;
|
|
mnuEliminar: TMenuItem2000;
|
|
mnuEliminarTodo: TMenuItem2000;
|
|
MenuItem1: TMenuItem2000;
|
|
MenuItem2: TMenuItem2000;
|
|
pnlDatosPago: TAdvPanel;
|
|
eFecha: TLabel;
|
|
eCodigo: TLabel;
|
|
Fecha: TcxDBDateEdit;
|
|
Codigo: TcxDBButtonEdit;
|
|
Label1: TLabel;
|
|
CodCliente: TcxDBButtonEdit;
|
|
eNIFCIF: TLabel;
|
|
NIFCIF: TcxDBTextEdit;
|
|
eNombre: TLabel;
|
|
Nombre: TcxDBTextEdit;
|
|
eDireccion: TLabel;
|
|
Calle: TcxDBTextEdit;
|
|
eProvincia: TLabel;
|
|
Provincia: TcxDBButtonEdit;
|
|
ePoblacion: TLabel;
|
|
Poblacion: TcxDBButtonEdit;
|
|
eTelefono1: TLabel;
|
|
Telefono1: TcxDBTextEdit;
|
|
eMovil1: TLabel;
|
|
Movil1: TcxDBTextEdit;
|
|
Movil2: TcxDBTextEdit;
|
|
eMovil2: TLabel;
|
|
eTelefono2: TLabel;
|
|
Telefono2: TcxDBTextEdit;
|
|
eFax: TLabel;
|
|
Fax: TcxDBTextEdit;
|
|
eCodigoPostal: TLabel;
|
|
CodigoPostal: TcxDBTextEdit;
|
|
eNumero: TLabel;
|
|
Numero: TcxDBTextEdit;
|
|
ePiso: TLabel;
|
|
Piso: TcxDBTextEdit;
|
|
eFormaPago: TLabel;
|
|
cbxFormaPago: TcxDBComboBox;
|
|
eImporte: TLabel;
|
|
eCaja: TLabel;
|
|
eDescripcion: TLabel;
|
|
Descripcion: TcxDBMemo;
|
|
cbxCaja: TcxDBLookupComboBox;
|
|
dsLibros: TDataSource;
|
|
Importe: TcxDBTextEdit;
|
|
procedure bAceptarClick(Sender: TObject);
|
|
procedure bCancelarClick(Sender: TObject);
|
|
procedure bSalirClick(Sender: TObject);
|
|
procedure CodigoPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
|
|
procedure CodClienteExit(Sender: TObject);
|
|
procedure CodClientePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
|
|
procedure ProvinciaPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
|
|
procedure PoblacionPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
|
|
private
|
|
FCodigoProvincia : Variant;
|
|
FCodigoPoblacion : Variant;
|
|
FCodigoCliente : Variant;
|
|
FDatosPago : TDatosPagoCliente;
|
|
FTablaLibros : TIBDataSet;
|
|
|
|
procedure rellenarDatosPago;
|
|
|
|
protected
|
|
procedure ActivarModoAnadir; override;
|
|
procedure ActivarModoModificar; override;
|
|
procedure ActivarModoConsultar; override;
|
|
procedure ActivarModoEliminar; override;
|
|
function AnadirDatos : Boolean; override;
|
|
function ModificarDatos : Boolean; override;
|
|
function EliminarDatos : Boolean; override;
|
|
function CancelarAnadir : Boolean; override;
|
|
function CancelarModificar : Boolean; override;
|
|
function CancelarEliminar : Boolean; override;
|
|
function ComprobarDatos : Boolean; override;
|
|
procedure VerModal; override;
|
|
procedure FreeContenido; override;
|
|
procedure BuscarPago; override;
|
|
procedure SetCodigoPago (Value : Variant); override;
|
|
procedure SetCodigoProvincia (Value : Variant);
|
|
procedure SetCodigoPoblacion (Value : Variant);
|
|
procedure SetCodigoCliente (Value : Variant);
|
|
procedure ImporteSetText(Sender: TField; const Text: String);
|
|
public
|
|
property CodigoProvincia : Variant read FCodigoProvincia write SetCodigoProvincia;
|
|
property CodigoPoblacion : Variant read FCodigoPoblacion write SetCodigoPoblacion;
|
|
property CodigoCliente : Variant read FCodigoCliente write SetCodigoCliente;
|
|
|
|
constructor Create (AOwner : TComponent); override;
|
|
destructor Destroy; override;
|
|
published
|
|
end;
|
|
|
|
var
|
|
frPagoCliente: TfrPagoCliente;
|
|
|
|
implementation
|
|
{$R *.DFM}
|
|
|
|
uses
|
|
Mensajes, IB, Colores, IBDatabase, BaseDatos, StrFunc, Excepciones,
|
|
IBErrorCodes, Variants, NumFunc, TablaFamilias, Literales, configuracion,
|
|
TablaPropiedadesArticulo, TablaPropiedades, TablaLibros, TablaFormasPago, TablaClientes,
|
|
TablaProvincias, TablaPoblaciones, Clientes, Provincias, Poblaciones,
|
|
RdxFrameProvincias, RdxFramePoblaciones, RdxFrameClientes, PagosClientes, Constantes,
|
|
ElegirDireccionCliente, TablaEmpresas, TablaPagosProveedor;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// PUBLIC
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
constructor TfrPagoCliente.Create (AOwner : TComponent);
|
|
begin
|
|
inherited Create(AOwner);
|
|
FCodigoProvincia := NULL;
|
|
FCodigoPoblacion := NULL;
|
|
FCodigoCliente := NULL;
|
|
FDatosPago := Nil;
|
|
|
|
BaseDatos := dmBaseDatos.BD;
|
|
Transaccion := dmBaseDatos.Transaccion;
|
|
|
|
TablaPagos := TIBDataSet.Create(Self);
|
|
dsPago.DataSet := TablaPagos;
|
|
|
|
with TablaPagos do
|
|
begin
|
|
Database := BaseDatos;
|
|
Transaction := Transaccion;
|
|
SelectSQL.Assign(dmTablaPagosCliente.sqlConsultar);
|
|
InsertSQL.Assign(dmTablaPagosCliente.sqlInsertar);
|
|
ModifySQL.Assign(dmTablaPagosCliente.sqlModificar);
|
|
DeleteSQL.Assign(dmTablaPagosCliente.sqlEliminar);
|
|
RefreshSQL.Assign(dmTablaPagosCliente.sqlConsultar);
|
|
end;
|
|
|
|
FTablaLibros := TIBDataSet.Create(Self);
|
|
dsLibros.DataSet := FTablaLibros;
|
|
with FTablaLibros do
|
|
begin
|
|
Database := BaseDatos;
|
|
Transaction := Transaccion;
|
|
SelectSQL.Assign(dmTablaLibros.sqlConsultarLibros);
|
|
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
|
|
Prepare;
|
|
Open;
|
|
end;
|
|
cbxFormaPago.Properties.Items := dmTablaFormasPago.darFormasPago;
|
|
|
|
bCancelar.Cancel := True;
|
|
bSalir.Cancel := True;
|
|
end;
|
|
|
|
destructor TfrPagoCliente.Destroy;
|
|
begin
|
|
TablaPagos.Close;
|
|
TablaPagos.UnPrepare;
|
|
TablaPagos.Free;
|
|
|
|
FTablaLibros.Close;
|
|
FTablaLibros.UnPrepare;
|
|
FTablaLibros.Free;
|
|
|
|
if FDatosPago <> nil then FDatosPago.Free;
|
|
|
|
inherited;
|
|
end;
|
|
|
|
function TfrPagoCliente.AnadirDatos : Boolean;
|
|
var
|
|
lsNumEntrada : Variant;
|
|
|
|
begin
|
|
Result := False;
|
|
try
|
|
lsNumEntrada := dmTablaLibros.darNumEntrada(TablaPagos.FieldByName('TIPOLIBRO').AsString);
|
|
if (esCadenaVacia(lsNumEntrada)) then begin
|
|
Rollback;
|
|
VerMensaje(msgCliErrorOp);
|
|
TablaPagos.Edit;
|
|
end;
|
|
|
|
TablaPagos.FieldByName('NUMENTRADA').AsString := lsNumEntrada;
|
|
|
|
case Entidad of
|
|
entCobroCliente : TablaPagos.FieldByName('TIPOPAGO').AsString := CTE_COBRO;
|
|
entAbonoCliente : TablaPagos.FieldByName('TIPOPAGO').AsString := CTE_ABONO;
|
|
else begin
|
|
VerMensaje('Log: la entidad no se corresponde con ningun tipo de pago');
|
|
Rollback;
|
|
VerMensaje(msgCliErrorOp);
|
|
TablaPagos.Edit;
|
|
end;
|
|
end;
|
|
|
|
rellenarDatosPago;
|
|
if dmTablaLibros.anadirEntradaLibro(Entidad, Modo, FDatosPago) then
|
|
begin
|
|
dmTablaPagosCliente.IncrementarCodigo;
|
|
TablaPagos.Post;
|
|
Commit;
|
|
FCodigoPago := TablaPagos.FieldByName('CODIGO').AsString;
|
|
TablaPagos.Close;
|
|
Result := True;
|
|
end
|
|
else
|
|
begin
|
|
Rollback;
|
|
VerMensaje(msgCliErrorOp);
|
|
TablaPagos.Edit;
|
|
end;
|
|
|
|
except
|
|
on E : EIBError do begin
|
|
if E.IBErrorCode = isc_unique_key_violation then
|
|
begin
|
|
Rollback;
|
|
VerMensajeFmt(msgCliCodPagRepetido, [Codigo.DataBinding.Field.AsString]);
|
|
TablaPagos.Edit;
|
|
end
|
|
else
|
|
Rollback;
|
|
TratarExcepcion(E);
|
|
TablaPagos.Edit;
|
|
end;
|
|
on E : Exception do begin
|
|
Rollback;
|
|
TratarExcepcion(E);
|
|
TablaPagos.Edit;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TfrPagoCliente.EliminarDatos : Boolean;
|
|
begin
|
|
Result := False;
|
|
try
|
|
|
|
rellenarDatosPago;
|
|
if not dmTablaLibros.anularEntradaLibro(Entidad, Modo, FDatosPago) then begin
|
|
VerMensaje(msgCliErrorOp);
|
|
Rollback;
|
|
Exit;
|
|
end;
|
|
|
|
TablaPagos.Delete;
|
|
Commit;
|
|
TablaPagos.Close;
|
|
Result := True;
|
|
except
|
|
on E : EIBError do
|
|
begin
|
|
case E.IBErrorCode of
|
|
isc_lock_conflict : VerMensajeFmt(msgCliPagBloqueado, [Codigo.DataBinding.Field.AsString]);
|
|
else begin
|
|
Rollback;
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
end;
|
|
on E : Exception do begin
|
|
Rollback;
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TfrPagoCliente.CancelarAnadir: Boolean;
|
|
begin
|
|
Result := False;
|
|
try
|
|
RollBack;
|
|
TablaPagos.Close;
|
|
Result := True;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
function TfrPagoCliente.CancelarEliminar: Boolean;
|
|
begin
|
|
Result := False;
|
|
try
|
|
RollBack;
|
|
TablaPagos.Close;
|
|
Result := True;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
function TfrPagoCliente.ComprobarDatos: Boolean;
|
|
begin
|
|
Result := False;
|
|
if (Modo in [Anadir, Modificar]) then
|
|
begin
|
|
if EsCadenaVacia(Descripcion.Text) then
|
|
begin
|
|
VerMensaje(msgCliFaltaDescPag);
|
|
Descripcion.SetFocus;
|
|
Exit;
|
|
end;
|
|
if EsCadenaVacia(CodCliente.Text) then
|
|
begin
|
|
VerMensaje(msgCliFaltaCliPag);
|
|
CodCliente.SetFocus;
|
|
Exit;
|
|
end;
|
|
end;
|
|
Result := True;
|
|
end;
|
|
|
|
procedure TfrPagoCliente.VerModal;
|
|
begin
|
|
if (ContenidoModal is TRdxFramePoblaciones) then
|
|
(ContenidoModal as TRdxFramePoblaciones).CodigoProvincia := CodigoProvincia;
|
|
if (ContenidoModal is TRdxFrameClientes) then
|
|
(ContenidoModal as TRdxFrameClientes).CodigoCliente := CodigoCliente;
|
|
if (ContenidoModal is TRdxFramePagos) then begin
|
|
// (ContenidoModal as TRdxFramePagos).Serie := Serie;
|
|
(ContenidoModal as TRdxFramePagos).CodigoPago := CodigoPago;
|
|
end;
|
|
inherited;
|
|
end;
|
|
|
|
procedure TfrPagoCliente.FreeContenido;
|
|
begin
|
|
if (ContenidoModal is TRdxFramePagos) then
|
|
begin
|
|
CodigoPago := (ContenidoModal as TRdxFramePagos).CodigoPago;
|
|
ActivarModo;
|
|
end;
|
|
if (ContenidoModal is TRdxFrameClientes) then
|
|
FCodigoCliente := (ContenidoModal as TRdxFrameClientes).CodigoCliente;
|
|
if (ContenidoModal is TRdxFrameProvincias) then
|
|
CodigoProvincia := (ContenidoModal as TRdxFrameProvincias).CodigoProvincia;
|
|
if (ContenidoModal is TRdxFramePoblaciones) then begin
|
|
CodigoProvincia := (ContenidoModal as TRdxFramePoblaciones).CodigoProvincia;
|
|
CodigoPoblacion := (ContenidoModal as TRdxFramePoblaciones).CodigoPoblacion;
|
|
end;
|
|
inherited FreeContenido;
|
|
end;
|
|
|
|
procedure TfrPagoCliente.BuscarPago;
|
|
begin
|
|
if Transaccion = NIL then
|
|
Exit;
|
|
try
|
|
TablaPagos.DisableControls;
|
|
TablaPagos.Close;
|
|
|
|
// Buscar la fila a tratar si es necesario
|
|
if not EsCadenaVacia(CodigoPago) then begin
|
|
TablaPagos.ParamByName('CODIGO').AsString := CodigoPago;
|
|
TablaPagos.ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
|
|
end;
|
|
TablaPagos.Prepare;
|
|
TablaPagos.Open;
|
|
TablaPagos.EnableControls;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPagoCliente.SetCodigoProvincia(Value: Variant);
|
|
begin
|
|
if (not EsCadenaVacia(Value)) then
|
|
begin
|
|
FCodigoProvincia := Value;
|
|
Provincia.DataBinding.Field.AsString := dmTablaProvincias.DarNombreProvincia(FCodigoProvincia);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPagoCliente.SetCodigoPoblacion(Value: Variant);
|
|
begin
|
|
if (not EsCadenaVacia(Value)) then
|
|
begin
|
|
FCodigoPoblacion := Value;
|
|
Poblacion.DataBinding.Field.AsString := dmTablaPoblaciones.darNombrePoblacion(FCodigoProvincia, FCodigoPoblacion);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPagoCliente.SetCodigoCliente(Value: Variant);
|
|
var
|
|
CodAux : Variant;
|
|
DatosCliente : TDatosCliente;
|
|
DireccionElegida : TDireccionElegida;
|
|
NumSucursal : Integer;
|
|
begin
|
|
if EsCadenaVacia(Value) then
|
|
exit;
|
|
|
|
CodAux := Trim(Value);
|
|
if (dmTablaClientes.ValidarCodigo(CodAux)) then begin
|
|
CodAux := dmTablaClientes.FormatearCodigo(CodAux);
|
|
if (dmTablaClientes.ExisteCodigo(CodAux)) then
|
|
FCodigoCliente := CodAux
|
|
else begin
|
|
raise Exception.CreateFmt(msgCliCodCliNoExiste, [CodAux]);
|
|
end;
|
|
end
|
|
else begin
|
|
raise Exception.CreateFmt(msgCliCodCliIncorrecto, [CodAux]);
|
|
end;
|
|
|
|
DatosCliente := TDatosCliente.Create(FCodigoCliente);
|
|
try
|
|
CodCliente.DataBinding.Field.AsString := DatosCliente.Codigo;
|
|
if DatosCliente.Sucursales.Count > 0 then
|
|
begin
|
|
frElegirDireccionCliente := TfrElegirDireccionCliente.Create(Self);
|
|
try
|
|
frElegirDireccionCliente.Cliente := DatosCliente;
|
|
frElegirDireccionCliente.ShowModal;
|
|
DireccionElegida := frElegirDireccionCliente.DireccionSeleccionada;
|
|
NumSucursal := frElegirDireccionCliente.NumSucursal;
|
|
finally
|
|
frElegirDireccionCliente.Free;
|
|
end;
|
|
end
|
|
else
|
|
DireccionElegida := dePrincipal;
|
|
|
|
CodCliente.DataBinding.Field.AsString := DatosCliente.Codigo;
|
|
if DireccionElegida = dePrincipal then
|
|
begin
|
|
NIFCIF.DataBinding.Field.AsString := DatosCliente.Nifcif;
|
|
Nombre.DataBinding.Field.AsString := DatosCliente.Nombre;
|
|
Calle.DataBinding.Field.AsString := DatosCliente.Calle;
|
|
Numero.DataBinding.Field.AsString := DatosCliente.Numero;
|
|
Piso.DataBinding.Field.AsString := DatosCliente.Piso;
|
|
Provincia.DataBinding.Field.AsString := DatosCliente.Provincia;
|
|
FCodigoProvincia := dmTablaProvincias.DarCodigoProvincia(DatosCliente.Provincia);
|
|
Poblacion.DataBinding.Field.AsString := DatosCliente.Poblacion;
|
|
CodigoPostal.DataBinding.Field.AsString := DatosCliente.CodigoPostal;
|
|
Telefono1.DataBinding.Field.AsString := DatosCliente.Telefono1;
|
|
Telefono2.DataBinding.Field.AsString := DatosCliente.Telefono2;
|
|
Movil1.DataBinding.Field.AsString := DatosCliente.Movil1;
|
|
Movil2.DataBinding.Field.AsString := DatosCliente.Movil2;
|
|
Fax.DataBinding.Field.AsString := DatosCliente.Fax;
|
|
end
|
|
else begin
|
|
with DatosCliente.Sucursales do
|
|
begin
|
|
NIFCIF.DataBinding.Field.AsString := Sucursal[NumSucursal].Nifcif;
|
|
Nombre.DataBinding.Field.AsString := Sucursal[NumSucursal].Nombre;
|
|
Calle.DataBinding.Field.AsString := Sucursal[NumSucursal].Calle;
|
|
Numero.DataBinding.Field.AsString := Sucursal[NumSucursal].Numero;
|
|
Piso.DataBinding.Field.AsString := Sucursal[NumSucursal].Piso;
|
|
Provincia.DataBinding.Field.AsString := Sucursal[NumSucursal].Provincia;
|
|
FCodigoProvincia := dmTablaProvincias.DarCodigoProvincia(Sucursal[NumSucursal].Provincia);
|
|
Poblacion.DataBinding.Field.AsString := Sucursal[NumSucursal].Poblacion;
|
|
CodigoPostal.DataBinding.Field.AsString := Sucursal[NumSucursal].CodigoPostal;
|
|
Telefono1.DataBinding.Field.AsString := Sucursal[NumSucursal].Telefono1;
|
|
Telefono2.DataBinding.Field.AsString := Sucursal[NumSucursal].Telefono2;
|
|
Movil1.DataBinding.Field.AsString := Sucursal[NumSucursal].Movil1;
|
|
Movil2.DataBinding.Field.AsString := Sucursal[NumSucursal].Movil2;
|
|
Fax.DataBinding.Field.AsString := Sucursal[NumSucursal].Fax;
|
|
end;
|
|
end;
|
|
finally
|
|
DatosCliente.Free;
|
|
end;
|
|
end;
|
|
|
|
{
|
|
procedure TfrPagoCliente.SetCodigoLibro(Value: Variant);
|
|
begin
|
|
if not EsCadenaVacia(Value) then
|
|
begin
|
|
FCodigoLibro := Value;
|
|
end
|
|
end;
|
|
}
|
|
|
|
procedure TfrPagoCliente.ImporteSetText(Sender: TField; const Text: String);
|
|
begin
|
|
if EsCadenaVacia(Text) then begin
|
|
Sender.AsString := '0';
|
|
exit;
|
|
end;
|
|
|
|
try
|
|
if (Entidad = entCobroCliente) then
|
|
begin
|
|
if (StrToFloat(Text) < 0)
|
|
then Sender.AsFloat := (-1) * StrToFloat(Text)
|
|
else Sender.AsString := Text
|
|
end
|
|
else if (Entidad = entAbonoCliente) then
|
|
begin
|
|
if (StrToFloat(Text) < 0)
|
|
then Sender.AsString := Text
|
|
else Sender.AsFloat := (-1) * StrToFloat(Text)
|
|
end;
|
|
except
|
|
on E : EConvertError do begin
|
|
Sender.AsString := '0'
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPagoCliente.bAceptarClick(Sender: TObject);
|
|
begin
|
|
if (RealizarOperacion) then
|
|
CloseFrame;
|
|
end;
|
|
|
|
procedure TfrPagoCliente.bCancelarClick(Sender: TObject);
|
|
begin
|
|
if (TratarCambios = IDOK) then
|
|
CloseFrame;
|
|
end;
|
|
|
|
procedure TfrPagoCliente.bSalirClick(Sender: TObject);
|
|
begin
|
|
try
|
|
Rollback;
|
|
CloseFrame;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPagoCliente.CodigoPropertiesButtonClick(Sender: TObject;
|
|
AButtonIndex: Integer);
|
|
begin
|
|
if (TratarCambios = IDCANCEL) then
|
|
Exit;
|
|
{ Esto es porque en modo 'Modificar' hacemos un cambio y pulsamos
|
|
este botón se cierra la tabla y si en el frame hijo (el del grid) damos
|
|
a cancelar, FCodigoPago es NULL y da error al activar modo porque
|
|
no se inicializa los parámetros de la sql. Lo hace BuscarPago. }
|
|
if not TablaPagos.Active then
|
|
BuscarPago;
|
|
ContenidoModal := TfrPagosClientes.Create(Self);
|
|
end;
|
|
|
|
procedure TfrPagoCliente.CodClienteExit(Sender: TObject);
|
|
begin
|
|
if not (Modo in [Anadir, Modificar]) then
|
|
Exit;
|
|
|
|
if EsCadenaVacia(CodCliente.Text) then
|
|
exit;
|
|
|
|
if (dmTablaClientes.validarCodigo(CodCliente.Text)) then begin
|
|
CodCliente.DataBinding.Field.AsString := dmTablaClientes.formatearCodigo(CodCliente.Text);
|
|
if (dmTablaClientes.existeCodigo(CodCliente.Text)) then
|
|
CodigoCliente := CodCliente.Text
|
|
else begin
|
|
VerMensajeFmt(msgCliCodCliNoExiste, [CodCliente.Text]);
|
|
CodCliente.SetFocus;
|
|
end;
|
|
end
|
|
else begin
|
|
VerMensajeFmt(msgCliCodCliIncorrecto, [CodCliente.Text]);
|
|
CodCliente.SetFocus;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPagoCliente.CodClientePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
|
|
begin
|
|
ContenidoModal := TfrClientes.Create(Self);
|
|
CodigoCliente := FCodigoCliente;
|
|
end;
|
|
|
|
procedure TfrPagoCliente.ProvinciaPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
|
|
begin
|
|
CaptionModal := msgListaProvincias;
|
|
WidthModal := 280;
|
|
HeightModal := 460;
|
|
ContenidoModal := TfrProvincias.Create(Self);
|
|
end;
|
|
|
|
procedure TfrPagoCliente.PoblacionPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
|
|
begin
|
|
if EsCadenaVacia(CodigoProvincia) then
|
|
begin
|
|
VerMensaje(msgSinProvincia);
|
|
Provincia.SetFocus;
|
|
Exit;
|
|
end;
|
|
CaptionModal := Format(msgListaPoblaciones, [dmTablaProvincias.darNombreProvincia(CodigoProvincia)]);
|
|
WidthModal := 280;
|
|
HeightModal := 460;
|
|
ContenidoModal := TfrPoblaciones.Create(Self);
|
|
end;
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// PRIVATE
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
procedure TfrPagoCliente.rellenarDatosPago;
|
|
begin
|
|
if FDatosPago <> nil then FDatosPago.Free;
|
|
|
|
FDatosPago := TDatosPagoCliente.Create;
|
|
FDatosPago.Codigo := TablaPagos.FieldByName('CODIGO').AsString;
|
|
FDatosPago.FechaAlta := TablaPagos.FieldByName('FECHAALTA').AsString;
|
|
FDatosPago.Usuario := TablaPagos.FieldByName('USUARIO').AsString;
|
|
FDatosPago.FechaPago := TablaPagos.FieldByName('FECHAPAGO').AsString;
|
|
FDatosPago.TipoLibro := TablaPagos.FieldByName('TIPOLIBRO').AsString;
|
|
FDatosPago.NumEntrada := TablaPagos.FieldByName('NUMENTRADA').AsString;
|
|
FDatosPago.TipoPago := TablaPagos.FieldByName('TIPOPAGO').AsString;
|
|
FDatosPago.Importe := TablaPagos.FieldByName('IMPORTE').AsFloat;
|
|
FDatosPago.FormaPago := TablaPagos.FieldByName('FORMAPAGO').AsString;
|
|
FDatosPago.Descripcion := TablaPagos.FieldByName('DESCRIPCION').AsString;
|
|
FDatosPago.CodigoCliente := TablaPagos.FieldByName('CODIGOCLIENTE').AsString;
|
|
FDatosPago.NIFCIF := TablaPagos.FieldByName('NIFCIF').AsString;
|
|
FDatosPago.Nombre := TablaPagos.FieldByName('NOMBRE').AsString;
|
|
FDatosPago.Calle := TablaPagos.FieldByName('CALLE').AsString;
|
|
FDatosPago.Numero := TablaPagos.FieldByName('NUMERO').AsString;
|
|
FDatosPago.Piso := TablaPagos.FieldByName('PISO').AsString;
|
|
FDatosPago.CodigoPostal := TablaPagos.FieldByName('CODIGOPOSTAL').AsString;
|
|
FDatosPago.Poblacion := TablaPagos.FieldByName('POBLACION').AsString;
|
|
FDatosPago.Provincia := TablaPagos.FieldByName('PROVINCIA').AsString;
|
|
FDatosPago.Telefono1 := TablaPagos.FieldByName('TELEFONO1').AsString;
|
|
FDatosPago.Telefono2 := TablaPagos.FieldByName('TELEFONO2').AsString;
|
|
FDatosPago.Movil1 := TablaPagos.FieldByName('MOVIL1').AsString;
|
|
FDatosPago.Movil2 := TablaPagos.FieldByName('MOVIL2').AsString;
|
|
FDatosPago.Fax := TablaPagos.FieldByName('FAX').AsString;
|
|
FDatosPago.Correo := TablaPagos.FieldByName('CORREO').AsString;
|
|
end;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// PROTECTED
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
procedure TfrPagoCliente.ActivarModoAnadir;
|
|
var
|
|
CodNuevo : Variant;
|
|
i : Integer;
|
|
begin
|
|
dsPago.AutoEdit := True;
|
|
Codigo.Properties.Buttons[0].Visible := False;
|
|
Codigo.Enabled := False;
|
|
CodCliente.Properties.Buttons[0].Visible := True;
|
|
Poblacion.Properties.Buttons[0].Visible := True;
|
|
Provincia.Properties.Buttons[0].Visible := True;
|
|
|
|
try
|
|
CodNuevo := dmTablaPagosCliente.DarNuevoCodigo;
|
|
|
|
with TablaPagos do
|
|
begin
|
|
Close;
|
|
Prepare;
|
|
Open;
|
|
Insert;
|
|
FieldByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
|
|
FieldByName('CODIGO').AsString := CodNuevo;
|
|
FieldByName('FECHAALTA').AsDateTime := dmBaseDatos.DarFecha;
|
|
FieldByName('USUARIO').AsString := dmBaseDatos.Usuario;
|
|
FieldByName('FECHAPAGO').AsDateTime := dmBaseDatos.DarFecha;
|
|
FieldByName('TIPOLIBRO').AsString := EmpresaActiva.LibroDefecto;
|
|
|
|
case Entidad of
|
|
entCobroCliente : FieldByName('TIPOPAGO').AsString := CTE_COBRO;
|
|
entAbonoCliente : FieldByName('TIPOPAGO').AsString := CTE_ABONO;
|
|
else verMensaje('LOG: error entidad erronea');
|
|
end;
|
|
FieldByName('IMPORTE').AsFloat := 0;
|
|
FieldByName('IMPORTE').OnSetText := ImporteSetText;
|
|
end;
|
|
|
|
dmTablaPagosCliente.InicializarTablaPagosClientes(@TablaPagos);
|
|
Visible := True;
|
|
Importe.SetFocus;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPagoCliente.ActivarModoConsultar;
|
|
begin
|
|
dsPago.AutoEdit := False;
|
|
Codigo.Properties.Buttons[0].Visible := True;
|
|
Codigo.Enabled := True;
|
|
CodCliente.Properties.Buttons[0].Visible := False;
|
|
Poblacion.Properties.Buttons[0].Visible := False;
|
|
Provincia.Properties.Buttons[0].Visible := False;
|
|
|
|
try
|
|
with TablaPagos do
|
|
begin
|
|
Prepare;
|
|
Open;
|
|
if RecordCount = 0 then
|
|
begin
|
|
VerMensajeFmt(msgCliNoExistePag, [CodigoPago]);
|
|
CloseFrame;
|
|
Exit;
|
|
end;
|
|
Cancel;
|
|
end;
|
|
|
|
dmTablaPagosCliente.InicializarTablaPagosClientes(@TablaPagos);
|
|
|
|
Visible := True;
|
|
bSalir.SetFocus;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPagoCliente.ActivarModoEliminar;
|
|
begin
|
|
dsPago.AutoEdit := False;
|
|
Codigo.Properties.Buttons[0].Visible := True;
|
|
Codigo.Enabled := True;
|
|
CodCliente.Properties.Buttons[0].Visible := False;
|
|
Poblacion.Properties.Buttons[0].Visible := False;
|
|
Provincia.Properties.Buttons[0].Visible := False;
|
|
|
|
try
|
|
with TablaPagos do
|
|
begin
|
|
Prepare;
|
|
Open;
|
|
if RecordCount = 0 then
|
|
begin
|
|
VerMensajeFmt(msgCliNoExistePag, [CodigoPago]);
|
|
CancelarEliminar;
|
|
CloseFrame;
|
|
Exit;
|
|
end;
|
|
Cancel;
|
|
end;
|
|
|
|
dmTablaPagosCliente.InicializarTablaPagosClientes(@TablaPagos);
|
|
|
|
Visible := True;
|
|
bAceptar.SetFocus;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPagoCliente.ActivarModoModificar;
|
|
begin
|
|
dsPago.AutoEdit := True;
|
|
Codigo.Properties.Buttons[0].Visible := True;
|
|
Codigo.Properties.ReadOnly := True;
|
|
Codigo.Enabled := True;
|
|
CodCliente.Properties.Buttons[0].Visible := True;
|
|
Poblacion.Properties.Buttons[0].Visible := True;
|
|
Provincia.Properties.Buttons[0].Visible := True;
|
|
|
|
try
|
|
with TablaPagos do
|
|
begin
|
|
Open;
|
|
if RecordCount = 0 then
|
|
begin
|
|
VerMensajeFmt(msgCliNoExistePag, [CodigoPago]);
|
|
CancelarModificar;
|
|
CloseFrame;
|
|
Exit;
|
|
end;
|
|
Edit;
|
|
Post;
|
|
Edit;
|
|
FieldByName('IMPORTE').OnSetText := ImporteSetText;
|
|
end;
|
|
dmTablaPagosCliente.InicializarTablaPagosClientes(@TablaPagos);
|
|
|
|
//Guardamos los datos del pago origen
|
|
// rellenarDatosPago;
|
|
Visible := True;
|
|
Importe.SetFocus;
|
|
except
|
|
on E : EIBError do
|
|
begin
|
|
case E.IBErrorCode of
|
|
isc_lock_conflict : begin
|
|
VerMensajeFmt(msgCliPagBloqueado, [CodigoPago]);
|
|
CancelarModificar;
|
|
CloseFrame;
|
|
Exit;
|
|
end
|
|
else
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
function TfrPagoCliente.ModificarDatos: Boolean;
|
|
begin
|
|
Result := False;
|
|
try
|
|
TablaPagos.Post;
|
|
|
|
if (FDatosPago.Importe <> TablaPagos.FieldByName('IMPORTE').AsFloat)
|
|
or (FDatosPago.TipoLibro <> TablaPagos.FieldByName('TIPOLIBRO').AsString) then
|
|
begin
|
|
|
|
if not dmTablaLibros.anularEntradaLibro(Entidad, Modo, FDatosPago) then begin
|
|
Rollback;
|
|
VerMensaje(msgCliErrorOp);
|
|
TablaPagos.Edit;
|
|
exit;
|
|
end;
|
|
|
|
|
|
rellenarDatosPago;
|
|
FDatosPago.NumEntrada := dmTablaLibros.darNumEntrada(FDatosPago.TipoLibro);
|
|
if (esCadenaVacia(FDatosPago.NumEntrada)) then begin
|
|
Rollback;
|
|
VerMensaje(msgCliErrorOp);
|
|
TablaPagos.Edit;
|
|
exit;
|
|
end;
|
|
|
|
TablaPagos.Edit;
|
|
TablaPagos.FieldByName('NUMENTRADA').AsString := FDatosPago.NumEntrada;
|
|
TablaPagos.Post;
|
|
|
|
if not dmTablaLibros.anadirEntradaLibro(Entidad, Modo, FDatosPago) then
|
|
begin
|
|
Rollback;
|
|
VerMensaje(msgCliErrorOp);
|
|
TablaPagos.Edit;
|
|
exit;
|
|
end;
|
|
end;
|
|
|
|
Commit;
|
|
TablaPagos.Close;
|
|
Result := True;
|
|
|
|
except
|
|
on E : EIBError do begin
|
|
Rollback;
|
|
TratarExcepcion(E);
|
|
TablaPagos.Edit;
|
|
end;
|
|
on E : Exception do begin
|
|
Rollback;
|
|
TratarExcepcion(E);
|
|
TablaPagos.Edit;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TfrPagoCliente.CancelarModificar: Boolean;
|
|
begin
|
|
Result := False;
|
|
try
|
|
RollBack;
|
|
TablaPagos.Close;
|
|
Result := True;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPagoCliente.SetCodigoPago(Value: Variant);
|
|
begin
|
|
inherited;
|
|
if not EsCadenaVacia(Value) then
|
|
begin
|
|
if (Modo <> Anadir) then begin
|
|
if (CTE_COBRO = TablaPagos.FieldByName('TIPOPAGO').AsString)
|
|
then Entidad := entCobroCliente
|
|
else Entidad := entAbonoCliente;
|
|
|
|
rellenarDatosPago;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
end.
|