This repository has been archived on 2024-12-02. You can view files and clone it, but cannot push or open issues or pull requests.
FactuGES/Proveedores/FacturaProveedor.pas
2007-06-26 08:08:27 +00:00

1541 lines
45 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.3
Fecha versión actual: 02-02-2004
===============================================================================
Modificaciones:
Fecha Comentarios
---------------------------------------------------------------------------
21-04-2003 p1. Abonos de facturas de proveedor.
25-08-2003 Al dar de alta una factura, el proveedor debe estar también
dado de alta.
01-01-2004 Quitado el botón de la celda de código de contrato. No se
pueden meter los códigos a mano. Se eligen cuando se dá a
'Añadir contrato'. Si no es correcto, se elimina.
02-02-2004 Se ha eliminado el atributo SERIE (P8 MULTIEMPRESA)
Se ha adaptado a los nuevos contadores
===============================================================================
}
unit FacturaProveedor;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, RdxMemo, RdxComboBox, RdxFrame, RdxFrameFacturasProveedor,
RdxCampos, RdxTitulos, RdxPaneles, RdxBotones, RdxBarras, Grids, DBGrids,
RXDBCtrl, Db, ComCtrls, RdxPageControl, RxMemDS, cxMemo, cxDBEdit, cxDropDownEdit,
cxCalendar, cxControls, cxContainer, cxEdit, cxTextEdit, cxMaskEdit,
cxButtonEdit, AdvPanel, cxSpinEdit, cxLookupEdit, cxDBLookupEdit,
cxDBLookupComboBox, IBCustomDataSet, Configuracion, DBCtrls, Entidades,
cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDBData,
cxGridLevel, cxClasses, cxGridCustomView, cxGridCustomTableView,
cxGridTableView, cxGridDBTableView, cxGrid, IBQuery,
TablaTrimestres,
RdxEmpresaActiva, cxDataStorage;
type
TfrFacturaProveedor = class(TRdxFrameFacturasProveedor)
pnlTitulo: TRdxPanelTituloOperacion;
pnlCuerpo: TPanel;
dsFactura: TDataSource;
dsDetallesFacturas: TDataSource;
brDoble: TRdxBarraInferior;
bGuardar: TRdxBoton;
bCancelar: TRdxBoton;
brSimple: TRdxBarraInferior;
bSalir: TRdxBoton;
pnlPaginas: TRdxPanel;
paginas: TRdxPagesControl;
pagProveedor: TTabSheet;
pagContenido: TTabSheet;
pnlGridArticulos: TPanel;
pnlBarraGrid: TRdxPanel;
bAnadir: TRdxBoton;
bEliminar: TRdxBoton;
bEliminarTodo: TRdxBoton;
pnlDatosFactura: TAdvPanel;
eCodigoFactura: TLabel;
eFechaVto: TLabel;
eDescripcion: TLabel;
eSituacion: TLabel;
eFormaPago: TLabel;
eFecha: TLabel;
eNumFacProve: TLabel;
Codigo: TcxDBButtonEdit;
FechaVencimiento: TcxDBDateEdit;
Observaciones: TcxDBMemo;
FechaFactura: TcxDBDateEdit;
Referencia: TcxDBTextEdit;
cbxSituacion: TcxDBComboBox;
cbxFormaPago: TcxDBComboBox;
CodProveedor: TcxDBButtonEdit;
NIFCIF: TcxDBTextEdit;
Nombre: TcxDBTextEdit;
Calle: TcxDBTextEdit;
Provincia: TcxDBButtonEdit;
Poblacion: TcxDBButtonEdit;
Telefono1: TcxDBTextEdit;
Movil1: TcxDBTextEdit;
PersonaContacto: TcxDBTextEdit;
Telefono2: TcxDBTextEdit;
Movil2: TcxDBTextEdit;
Piso: TcxDBTextEdit;
Numero: TcxDBTextEdit;
CodigoPostal: TcxDBTextEdit;
Fax: TcxDBTextEdit;
ePersona: TLabel;
eMovil1: TLabel;
eTelefono1: TLabel;
ePoblacion: TLabel;
eProvincia: TLabel;
eDireccion: TLabel;
eNombre: TLabel;
eCodigo: TLabel;
eNIFCIF: TLabel;
eNumero: TLabel;
eCodigoPostal: TLabel;
eFax: TLabel;
ePiso: TLabel;
eTelefono2: TLabel;
eMovil2: TLabel;
Label1: TLabel;
dsTiposFactura: TDataSource;
TipoFactura: TcxDBLookupComboBox;
pnlImportes: TAdvPanel;
Panel1: TPanel;
RdxPanel1: TRdxPanel;
Label5: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Shape2: TShape;
BasImp: TcxDBTextEdit;
ImporteDescuento: TcxDBTextEdit;
ImporteIVA: TcxDBTextEdit;
ImporteTotal: TcxDBTextEdit;
Panel2: TPanel;
Label7: TLabel;
Label8: TLabel;
Label2: TLabel;
Descuento: TcxDBTextEdit;
IVA: TcxDBTextEdit;
BaseImponible: TcxDBTextEdit;
gridDetalles: TcxGrid;
VistaDetalles: TcxGridDBTableView;
VistaPropiedades2: TcxGridDBTableView;
gridDetallesLevel1: TcxGridLevel;
TablaDetallesMem: TRxMemoryData;
TablaDetallesMemCodigoContrato: TStringField;
TablaDetallesMemCodigoInstalador: TStringField;
TablaDetallesMemNombre: TStringField;
TablaDetallesMemImporte: TFloatField;
dsContratos: TDataSource;
TablaContratos: TIBQuery;
TablaDetallesMemCODIGOEMPRESA: TIntegerField;
eTrimestre: TLabel;
cbxTrimestres: TcxComboBox;
eTrimestreCerrado: TLabel;
procedure bSalirClick(Sender: TObject);
procedure bGuardarClick(Sender: TObject);
procedure bCancelarGuardarClick(Sender: TObject);
procedure CodProveedorExit(Sender: TObject);
procedure bAnadirClick(Sender: TObject);
procedure bEliminarClick(Sender: TObject);
procedure bEliminarTodoClick(Sender: TObject);
procedure CodigoExit(Sender: TObject);
procedure FechaExit(Sender: TObject);
procedure FechaVencimientoExit(Sender: TObject);
procedure CodigoPropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
procedure CodProveedorPropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
procedure ProvinciaPropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
procedure PoblacionPropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
private
FListaTrimestres: TListaTrimestres;
FCodigoProvincia : Variant;
FCodigoPoblacion : Variant;
FCodigoProveedor : Variant;
FCodigoContrato : Variant;
FTablaTiposFactura : TIBDataSet;
procedure ActivarEventosCampos;
procedure DesactivarEventosCampos;
procedure CalcularTotalFactura;
procedure BorrarDetalles;
procedure SalvarDetalles;
procedure CargarDetalles;
procedure BorrarDetallesIB;
procedure GridBotonCodigoContratoClick(Sender: TObject; AButtonIndex: Integer);
procedure DetallesNewRecord(DataSet: TDataSet);
procedure DetalleAfterDelete (DataSet: TDataSet);
procedure IVASetText(Sender: TField; const Text: String);
procedure BaseImponibleSetText(Sender: TField; const Text: String);
procedure DtoSetText(Sender: TField; const Text: String);
procedure ProvinciaSetText(Sender: TField; const Text: String);
procedure CodigoContratoDetalleSetText(Sender: TField; const Text: String);
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 SetCodigoProvincia (Value : Variant); virtual;
procedure SetCodigoPoblacion (Value : Variant); virtual;
procedure SetCodigoProveedor (Value : Variant);
procedure SetCodigoContrato (Value : Variant);
procedure FreeContenido; override;
procedure BuscarFactura; override;
procedure VerModal; override;
public
property CodigoProvincia : Variant read FCodigoProvincia write SetCodigoProvincia;
property CodigoPoblacion : Variant read FCodigoPoblacion write SetCodigoPoblacion;
property CodigoProveedor : Variant read FCodigoProveedor write SetCodigoProveedor;
property CodigoContrato : Variant read FCodigoContrato write SetCodigoContrato;
constructor Create (AOwner : TComponent); override;
destructor Destroy; override;
published
property TablaFacturasProveedor;
property TablaDetallesFacturas;
property CodigoFactura;
procedure GridBotonCodigoPedidoClick(Sender: TObject);
procedure PrecioDetalleSetText(Sender: TField; const Text: String);
end;
var
frFacturaProveedor: TfrFacturaProveedor;
implementation
uses
BaseDatos, TablaFacturasProveedor, IB, Mensajes, StrFunc, Variants,
TablaFormasPago, NumFunc, RdxFramePoblaciones,
FacturasProveedores, Proveedores, TablaProveedores, RdxFrameProvincias,
RdxFrameProveedores, IBErrorCodes, Excepciones, Constantes, RdxFrameContratos,
TablaProvincias, Provincias, Poblaciones, TablaPoblaciones,
Literales, TablaContratos, ContratosClientes, TablaEmpresas;
{$R *.DFM}
{ TfrFacturaProveedor }
procedure TfrFacturaProveedor.ActivarModoAnadir;
var
CodNuevo : Variant;
begin
case Entidad of
entFacturaProveedor : pnlDatosFactura.Caption.Text := 'Datos de la ' + CaptionsEntidades[entFacturaProveedor];
entAbonoProveedor : pnlDatosFactura.Caption.Text := 'Datos del ' + CaptionsEntidades[entAbonoProveedor];
end;
dsFactura.AutoEdit := True;
dsDetallesFacturas.AutoEdit := True;
pnlBarraGrid.Visible := True;
Codigo.Properties.Buttons[0].Visible := False;
Codigo.Properties.ReadOnly := False;
CodProveedor.Properties.Buttons[0].Visible := True;
Poblacion.Properties.Buttons[0].Visible := True;
Provincia.Properties.Buttons[0].Visible := True;
cbxTrimestres.Enabled := True;
cbxTrimestres.Properties.ReadOnly := False;
ActivarEdicionGridDetalles(gridDetalles);
try
CodNuevo := dmTablaFacturasProveedor.DarNuevoCodigo;
with TablaFacturasProveedor do
begin
Close;
Prepare;
Open;
FieldByName('PROVINCIA').OnSetText := ProvinciaSetText;
Insert;
Codigo.DataBinding.Field.AsString := CodNuevo;
FechaFactura.DataBinding.Field.AsString := DateToStr(Date);
FieldByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
FieldByName('FECHAALTA').AsDateTime := dmBaseDatos.DarFecha;
FieldByName('FECHAVENCIMIENTO').AsDateTime := dmBaseDatos.DarFecha;
FieldByName('USUARIO').AsString := dmBaseDatos.Usuario;
FieldByName('IVA').AsString := CTE_IVA_DEFECTO;
cbxSituacion.DataBinding.Field.AsString := cbxSituacion.Properties.Items[0];
end;
with TablaDetallesFacturas do
begin
Close;
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
Params.ByName('CODIGOFACTURA').AsString := CodNuevo;
Prepare;
Open;
end;
TablaContratos.Close;
TablaContratos.Open;
with TablaDetallesMem do
begin
Close;
Open;
end;
dmTablaFacturasProveedor.InicializarTablaFacturas(@TablaFacturasProveedor);
dmTablaFacturasProveedor.InicializarTablaDetalles(@TablaDetallesMem);
ActivarEventosCampos;
Visible := True;
FechaFactura.SetFocus;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrFacturaProveedor.ActivarModoConsultar;
var
liResultado: Integer;
begin
dsFactura.AutoEdit := False;
dsDetallesFacturas.AutoEdit := False;
pnlBarraGrid.Visible := False;
Codigo.Properties.Buttons[0].Visible := True;
CodProveedor.Properties.Buttons[0].Visible := False;
Poblacion.Properties.Buttons[0].Visible := False;
Provincia.Properties.Buttons[0].Visible := False;
DesactivarEdicionGridDetalles(gridDetalles);
try
with TablaFacturasProveedor do
begin
Prepare;
Open;
liResultado := FListaTrimestres.getNumItem(FieldByName('CODIGOTRIMESTRE').AsString);
if (liResultado = -1) then
begin
cbxTrimestres.EditText := dmTablaTrimestres.darDescripcionCompletaTrimestre(FieldByName('CODIGOTRIMESTRE').AsString);
cbxTrimestres.Enabled := False;
cbxTrimestres.Properties.ReadOnly := True;
eTrimestreCerrado.Visible := True;
end
else begin
cbxTrimestres.ItemIndex := liResultado;
cbxTrimestres.Enabled := True;
cbxTrimestres.Properties.ReadOnly := True;
eTrimestreCerrado.Visible := False;
end;
if RecordCount = 0 then
begin
VerMensajeFmt(msgProvNoExisteFacProv, [CodigoFactura]);
CloseFrame;
Exit;
end;
Cancel;
end;
with TablaDetallesFacturas do
begin
Close;
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
Params.ByName('CODIGOFACTURA').AsString := CodigoFactura;
Prepare;
Open;
Cancel;
end;
TablaContratos.Close;
TablaContratos.Open;
TablaDetallesMem.Close;
TablaDetallesMem.Open;
CargarDetalles;
dmTablaFacturasProveedor.InicializarTablaFacturas(@TablaFacturasProveedor);
dmTablaFacturasProveedor.InicializarTablaDetalles(@TablaDetallesMem);
Visible := True;
FechaFactura.SetFocus;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrFacturaProveedor.ActivarModoEliminar;
var
liResultado: Integer;
begin
dsFactura.AutoEdit := False;
dsDetallesFacturas.AutoEdit := False;
pnlBarraGrid.Visible := False;
Codigo.Properties.Buttons[0].Visible := True;
CodProveedor.Properties.Buttons[0].Visible := False;
Poblacion.Properties.Buttons[0].Visible := False;
Provincia.Properties.Buttons[0].Visible := False;
DesactivarEdicionGridDetalles(gridDetalles);
try
with TablaFacturasProveedor do
begin
Prepare;
Open;
liResultado := FListaTrimestres.getNumItem(FieldByName('CODIGOTRIMESTRE').AsString);
if (liResultado = -1) then
begin
cbxTrimestres.EditText := dmTablaTrimestres.darDescripcionCompletaTrimestre(FieldByName('CODIGOTRIMESTRE').AsString);
cbxTrimestres.Enabled := False;
cbxTrimestres.Properties.ReadOnly := True;
eTrimestreCerrado.Visible := True;
end
else begin
cbxTrimestres.ItemIndex := liResultado;
cbxTrimestres.Enabled := True;
cbxTrimestres.Properties.ReadOnly := True;
eTrimestreCerrado.Visible := False;
end;
if RecordCount = 0 then
begin
VerMensajeFmt(msgProvNoExisteFacProv, [CodigoFactura]);
CancelarEliminar;
CloseFrame;
Exit;
end;
Cancel;
end;
with TablaDetallesFacturas do
begin
Close;
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
Params.ByName('CODIGOFACTURA').AsString := CodigoFactura;
Prepare;
Open;
Cancel;
end;
TablaContratos.Close;
TablaContratos.Open;
TablaDetallesMem.Close;
TablaDetallesMem.Open;
CargarDetalles;
dmTablaFacturasProveedor.InicializarTablaFacturas(@TablaFacturasProveedor);
dmTablaFacturasProveedor.InicializarTablaDetalles(@TablaDetallesMem);
Visible := True;
FechaFactura.SetFocus;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrFacturaProveedor.ActivarModoModificar;
var
liResultado: Integer;
begin
dsFactura.AutoEdit := True;
dsDetallesFacturas.AutoEdit := True;
pnlBarraGrid.Visible := True;
Codigo.Properties.Buttons[0].Visible := True;
Codigo.Properties.ReadOnly := True;
CodProveedor.Properties.Buttons[0].Visible := True;
Poblacion.Properties.Buttons[0].Visible := True;
Provincia.Properties.Buttons[0].Visible := True;
ActivarEdicionGridDetalles(gridDetalles);
try
{ Antes de aplicar la caché hay que asegurarse de que la
tabla está cerrada. }
with TablaFacturasProveedor do
begin
Prepare;
Open;
liResultado := FListaTrimestres.getNumItem(FieldByName('CODIGOTRIMESTRE').AsString);
if (liResultado = -1) then
begin
cbxTrimestres.EditText := dmTablaTrimestres.darDescripcionCompletaTrimestre(FieldByName('CODIGOTRIMESTRE').AsString);
cbxTrimestres.Enabled := False;
cbxTrimestres.Properties.ReadOnly := True;
eTrimestreCerrado.Visible := True;
end
else begin
cbxTrimestres.ItemIndex := liResultado;
cbxTrimestres.Enabled := True;
cbxTrimestres.Properties.ReadOnly := False;
eTrimestreCerrado.Visible := False;
end;
FieldByName('PROVINCIA').OnSetText := ProvinciaSetText;
if RecordCount = 0 then
begin
VerMensajeFmt(msgProvNoExisteFacProv, [CodigoFactura]);
CancelarModificar;
CloseFrame;
Exit;
end;
Edit;
Post;
Edit;
end;
with TablaDetallesFacturas do
begin
Close;
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
Params.ByName('CODIGOFACTURA').AsString := CodigoFactura;
Prepare;
Open;
end;
TablaContratos.Close;
TablaContratos.Open;
TablaDetallesMem.Close;
TablaDetallesMem.Open;
CargarDetalles;
ActivarEventosCampos;
dmTablaFacturasProveedor.InicializarTablaFacturas(@TablaFacturasProveedor);
dmTablaFacturasProveedor.InicializarTablaDetalles(@TablaDetallesMem);
CalcularTotalFactura;
ActivarEventosCampos;
Visible := True;
FechaFactura.SetFocus;
except
on E : EIBError do
begin
case E.IBErrorCode of
isc_lock_conflict : begin
VerMensajeFmt(msgProvFacProvBloqueada, [CodigoFactura]);
CancelarModificar;
CloseFrame;
Exit;
end
else
TratarExcepcion(E);
end;
end;
on E : Exception do
TratarExcepcion(E);
end;
end;
function TfrFacturaProveedor.AnadirDatos: Boolean;
begin
Result := False;
try
CalcularTotalFactura;
case Entidad of
entFacturaProveedor : TablaFacturasProveedor.FieldByName('CLASEFACTURA').AsString := CTE_CF_FACTURA;
entAbonoProveedor : TablaFacturasProveedor.FieldByName('CLASEFACTURA').AsString := CTE_CF_ABONO;
end;
TablaFacturasProveedor.FieldByName('CODIGOTRIMESTRE').AsString := FListaTrimestres.getCodItem(cbxTrimestres.ItemIndex);
TablaFacturasProveedor.Post;
BorrarDetallesIB;
SalvarDetalles;
dmTablaFacturasProveedor.IncrementarCodigo;
Commit;
FCodigoFactura := TablaFacturasProveedor.FieldByName('CODIGO').AsString;
TablaFacturasProveedor.Close;
TablaDetallesFacturas.Close;
TablaDetallesMem.Close;
Result := True;
except
on E : EIBError do begin
if E.IBErrorCode = isc_unique_key_violation then
begin
VerMensajeFmt(msgProvCodFacRepetido, [Codigo.DataBinding.Field.AsString]);
TablaFacturasProveedor.Edit;
end
else
TratarExcepcion(E);
TablaFacturasProveedor.Edit;
end;
on E : Exception do begin
TratarExcepcion(E);
TablaFacturasProveedor.Edit;
end;
end;
end;
procedure TfrFacturaProveedor.BuscarFactura;
begin
if Transaccion = NIL then
exit;
try
TablaFacturasProveedor.DisableControls;
TablaDetallesFacturas.DisableControls;
TablaDetallesMem.DisableControls;
DesactivarEventosCampos;
TablaFacturasProveedor.Close;
TablaDetallesFacturas.Close;
FTablaTiposFactura.Close;
TablaContratos.Close;
// Buscar la fila a tratar si es necesario
if not EsCadenaVacia(FCodigoFactura) then
begin
TablaFacturasProveedor.ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
TablaFacturasProveedor.ParamByName('CODIGO').AsString := FCodigoFactura;
TablaDetallesFacturas.ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
TablaDetallesFacturas.ParamByName('CODIGOFACTURA').AsString := FCodigoFactura;
end;
TablaFacturasProveedor.Prepare;
TablaFacturasProveedor.Open;
TablaContratos.Open;
with FTablaTiposFactura do
begin
Close;
Prepare;
Open;
end;
TablaDetallesFacturas.Prepare;
TablaDetallesFacturas.Open;
TablaDetallesMem.Close;
TablaDetallesMem.Open;
BorrarDetalles;
CargarDetalles;
dmTablaFacturasProveedor.InicializarTablaFacturas(@TablaFacturasProveedor);
dmTablaFacturasProveedor.InicializarTablaDetalles(@TablaDetallesMem);
if not EsCadenaVacia(FCodigoFactura) then
begin
if UpperCase(TablaFacturasProveedor.FieldByName('CLASEFACTURA').AsString) = CTE_CF_FACTURA then
begin
pnlDatosFactura.Caption.Text := 'Datos de la ' + CaptionsEntidades[entFacturaProveedor];
Entidad := entFacturaProveedor;
end
else begin
pnlDatosFactura.Caption.Text := 'Datos del ' + CaptionsEntidades[entAbonoProveedor];
Entidad := entAbonoProveedor;
end;
end;
ActivarEventosCampos;
TablaFacturasProveedor.EnableControls;
TablaDetallesFacturas.EnableControls;
TablaDetallesMem.EnableControls;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrFacturaProveedor.CalcularTotalFactura;
var
ImporteBaseImponible,
ImporteDto,
ImporteIVA,
ImporteTotal : Double;
begin
with TablaFacturasProveedor do
begin
ImporteBaseImponible := FieldByName('BASEIMPONIBLE').AsFloat;
ImporteDto := (ImporteBaseImponible * FieldByName('DESCUENTO').AsFloat) / 100;
ImporteTotal := ImporteBaseImponible - ImporteDto;
ImporteIVA := (ImporteTotal * FieldByName('IVA').AsFloat) / 100;
ImporteTotal := ImporteTotal + ImporteIVA;
Edit;
FieldByName('IMPORTEDESCUENTO').AsFloat := ImporteDto;
FieldByName('IMPORTEIVA').AsFloat := ImporteIVA;
FieldByName('IMPORTETOTAL').AsFloat := ImporteTotal;
end;
end;
function TfrFacturaProveedor.CancelarAnadir: Boolean;
begin
Result := False;
try
RollBack;
TablaFacturasProveedor.Close;
TablaDetallesFacturas.Close;
TablaDetallesMem.Close;
Result := True;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
function TfrFacturaProveedor.CancelarEliminar: Boolean;
begin
Result := False;
try
RollBack;
TablaFacturasProveedor.Close;
TablaDetallesFacturas.Close;
TablaDetallesMem.Close;
Result := True;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
function TfrFacturaProveedor.CancelarModificar: Boolean;
begin
Result := False;
try
RollBack;
TablaFacturasProveedor.Close;
TablaDetallesFacturas.Close;
TablaDetallesMem.Close;
Result := True;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
function TfrFacturaProveedor.ComprobarDatos: Boolean;
var
Situacion : string;
CodPedAux : string;
CodProvPed : string;
begin
Result := False;
if not (Modo in [Anadir, Modificar]) then
begin
Result := True;
exit;
end;
if EsCadenaVacia(TipoFactura.DataBinding.Field.AsString) then
begin
VerMensaje(msgProvFaltaTipoFac);
TipoFactura.SetFocus;
Exit;
end;
if EsCadenaVacia(FechaFactura.DataBinding.Field.AsString) then
begin
VerMensaje(msgProvFaltaFechaAltaFac);
FechaFactura.SetFocus;
Exit;
end;
if EsCadenaVacia(FechaVencimiento.DataBinding.Field.AsString) then
begin
VerMensaje(msgProvFaltaFechaVtoFac);
FechaVencimiento.SetFocus;
Exit;
end
else
if (FechaVencimiento.DataBinding.Field.AsDateTime < FechaFactura.DataBinding.Field.AsDateTime) then
begin
VerMensaje(msgProvFechaVtoAnteriorFac);
FechaVencimiento.SetFocus;
Exit;
end;
if Modo = Anadir then
begin
if EsCadenaVacia(CodProveedor.DataBinding.Field.AsString) then
begin
VerMensaje(msgProvFaltaCodProv);
Paginas.ActivePageIndex := 0;
CodProveedor.SetFocus;
Exit;
end
end
else
begin
if EsCadenaVacia(Nombre.DataBinding.Field.AsString) then
begin
VerMensaje(msgProvFaltaNombreProvFac);
Paginas.ActivePage := pagProveedor;
Nombre.SetFocus;
Exit;
end;
end;
Result := True;
end;
constructor TfrFacturaProveedor.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Entidad := entFacturaProveedor;
FCodigoProvincia := NULL;
FCodigoPoblacion := NULL;
FCodigoProveedor := NULL;
FCodigoContrato := NULL;
BaseDatos := dmBaseDatos.BD;
Transaccion := dmBaseDatos.Transaccion;
TablaFacturasProveedor := TIBDataSet.Create(Self);
TablaDetallesFacturas := TIBDataSet.Create(Self);
FTablaTiposFactura := TIBDataSet.Create(Self);
dsFactura.DataSet := TablaFacturasProveedor;
dsTiposFactura.DataSet := FTablaTiposFactura;
dsDetallesFacturas.DataSet := TablaDetallesMem;
with TablaFacturasProveedor do
begin
Database := BaseDatos;
Transaction := Transaccion;
SelectSQL.Assign(dmTablaFacturasProveedor.sqlConsultarFactura);
InsertSQL.Assign(dmTablaFacturasProveedor.sqlInsertarFactura);
ModifySQL.Assign(dmTablaFacturasProveedor.sqlModificarFactura);
DeleteSQL.Assign(dmTablaFacturasProveedor.sqlEliminarFactura);
end;
with FTablaTiposFactura do
begin
Database := BaseDatos;
Transaction := Transaccion;
SelectSQL.Assign(dmTablaFacturasProveedor.sqlConsultarTiposFactura);
end;
with TablaDetallesFacturas do
begin
Database := BaseDatos;
Transaction := Transaccion;
SelectSQL.Assign(dmTablaFacturasProveedor.sqlConsultarGridDetalles);
InsertSQL.Assign(dmTablaFacturasProveedor.sqlInsertarDetalles);
ModifySQL.Assign(dmTablaFacturasProveedor.sqlModificarDetalles);
DeleteSQL.Assign(dmTablaFacturasProveedor.sqlEliminarDetalles);
end;
with TablaContratos do
begin
Database := BaseDatos;
Transaction := Transaccion;
end;
{TablaDetallesMem.CopyStructure(TablaDetallesFacturas);
TablaDetallesMem.FieldByName('CODIGOFACTURA').Required := False;
TablaDetallesMem.FieldByName('CODIGOCONTRATO').Required := False;}
FListaTrimestres := TListaTrimestres.Create(tlcTriAbiertos);
cbxTrimestres.ItemIndex := FListaTrimestres.cargarLista(cbxTrimestres.Properties.Items);
dmTablaFacturasProveedor.InicializarGridDetalles(VistaDetalles);
cbxFormaPago.Properties.Items := dmTablaFormasPago.DarFormasPago;
cbxSituacion.Properties.Items := dmTablaFacturasProveedor.DarSituaciones;
Paginas.ActivePage := pagProveedor;
end;
destructor TfrFacturaProveedor.Destroy;
begin
VistaDetalles.DataController.DataSource := NIL;
TablaContratos.Close;
TablaDetallesMem.Close;
TablaFacturasProveedor.Close;
TablaFacturasProveedor.UnPrepare;
TablaFacturasProveedor.Free;
TablaDetallesFacturas.Close;
TablaDetallesFacturas.UnPrepare;
TablaDetallesFacturas.Free;
FTablaTiposFactura.Close;
FTablaTiposFactura.UnPrepare;
FTablaTiposFactura.Free;
FListaTrimestres.Free;
FListaTrimestres := Nil;
inherited;
end;
function TfrFacturaProveedor.EliminarDatos: Boolean;
begin
Result := False;
try
TablaFacturasProveedor.Delete;
Commit;
TablaFacturasProveedor.Close;
TablaDetallesFacturas.Close;
TablaDetallesMem.Close;
Result := True;
except
on E : EIBError do
begin
case E.IBErrorCode of
isc_lock_conflict : VerMensajeFmt(msgProvFacProvBloqueada, [Codigo.DataBinding.Field.AsString]);
else
TratarExcepcion(E);
end;
end;
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrFacturaProveedor.FreeContenido;
begin
if (ContenidoModal is TRdxFrameFacturasProveedor) then begin
CodigoFactura := (ContenidoModal as TRdxFrameFacturasProveedor).CodigoFactura;
ActivarModo;
end;
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;
if (ContenidoModal is TRdxFrameProveedores) then
CodigoProveedor := (ContenidoModal as TRdxFrameProveedores).CodigoProveedor;
if (ContenidoModal is TRdxFrameContratos) then
CodigoContrato := (ContenidoModal as TRdxFrameContratos).CodigoContrato;
inherited FreeContenido;
end;
procedure TfrFacturaProveedor.GridBotonCodigoPedidoClick(Sender: TObject);
begin
{ if EsCadenaVacia(CodProveedor.DataBinding.Field.AsString) then
begin
VerMensaje(msgProvFaltaNombreProvFac);
paginas.ActivePage := pagProveedor;
CodProveedor.SetFocus;
Exit;
end;
TablaDetallesMem.Edit;
ModoModal := Facturar;
ContenidoModal := TfrPedidosProveedores.Create(Self);}
end;
function TfrFacturaProveedor.ModificarDatos: Boolean;
begin
Result := False;
try
if (cbxTrimestres.Enabled) then
TablaFacturasProveedor.FieldByName('CODIGOTRIMESTRE').AsString := FListaTrimestres.getCodItem(cbxTrimestres.ItemIndex);
CalcularTotalFactura;
TablaFacturasProveedor.Post;
BorrarDetallesIB;
SalvarDetalles;
Commit;
TablaFacturasProveedor.Close;
TablaDetallesFacturas.Close;
TablaDetallesMem.Close;
Result := True;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrFacturaProveedor.PrecioDetalleSetText(Sender: TField;
const Text: String);
begin
try
if Length(Text) = 0 then
Sender.AsString := '0'
else
Sender.AsString := Text;
CalcularTotalFactura;
except
on E : EConvertError do
VerMensaje(msgProvPrecioNoValido);
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrFacturaProveedor.SetCodigoProveedor(Value: Variant);
var
DatosProveedor : TDatosProveedor;
begin
if EsCadenaVacia(Value) then
exit;
FCodigoProveedor := Value;
DatosProveedor := TDatosProveedor.Create(FCodigoProveedor);
try
CodProveedor.DataBinding.Field.AsString := DatosProveedor.Codigo;
NIFCIF.DataBinding.Field.AsString := DatosProveedor.Nifcif;
Nombre.DataBinding.Field.AsString := DatosProveedor.Nombre;
Calle.DataBinding.Field.AsString := DatosProveedor.Calle;
Numero.DataBinding.Field.AsString := DatosProveedor.Numero;
Piso.DataBinding.Field.AsString := DatosProveedor.Piso;
Provincia.DataBinding.Field.AsString := DatosProveedor.Provincia;
Poblacion.DataBinding.Field.AsString := DatosProveedor.Poblacion;
CodigoPostal.DataBinding.Field.AsString := DatosProveedor.CodigoPostal;
Telefono1.DataBinding.Field.AsString := DatosProveedor.Telefono1;
Telefono2.DataBinding.Field.AsString := DatosProveedor.Telefono2;
Movil1.DataBinding.Field.AsString := DatosProveedor.Movil1;
Movil2.DataBinding.Field.AsString := DatosProveedor.Movil2;
Fax.DataBinding.Field.AsString := DatosProveedor.Fax;
PersonaContacto.DataBinding.Field.AsString := DatosProveedor.PersonaContacto;
CalcularTotalFactura;
finally
DatosProveedor.Free;
end;
end;
procedure TfrFacturaProveedor.bSalirClick(Sender: TObject);
begin
try
Rollback;
CloseFrame;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrFacturaProveedor.bGuardarClick(Sender: TObject);
begin
if (RealizarOperacion) then
CloseFrame;
end;
procedure TfrFacturaProveedor.bCancelarGuardarClick(Sender: TObject);
begin
if (TratarCambios = IDOK) then
CloseFrame;
end;
procedure TfrFacturaProveedor.SetCodigoContrato(Value: Variant);
var
CodigoAux : String;
FDetallesBookmark : string;
begin
if (EsCadenaVacia(Value)) then
begin
FCodigoContrato := CodigoAux;
Exit;
end;
CodigoAux := Trim(Value);
if (dmTablaContratos.ValidarCodigo(CodigoAux)) then
begin
CodigoAux := dmTablaContratos.FormatearCodigo(CodigoAux);
if not (dmTablaContratos.ExisteCodigo(CodigoAux)) then
raise Exception.CreateFmt(msgCliCodConNoExiste, [CodigoAux]);
end
else begin
raise Exception.CreateFmt(msgCliCodConIncorrecto, [CodigoAux]);
Exit;
end;
// Hay que comprobar si el contrato elegido ya está en la lista.
with TablaDetallesMem do
begin
Edit;
FieldByName('CODIGOCONTRATO').AsString := '-';
Post;
FDetallesBookmark := Bookmark;
DisableControls;
First;
while not EOF do begin
if FieldByName('CODIGOCONTRATO').AsString = CodigoAux then
begin
EnableControls;
Bookmark := FDetallesBookmark;
Delete;
VerMensajeFmt(msgProvContratoRepetido, [CodigoAux]);
Exit;
end
else
Next;
end;
EnableControls;
Bookmark := FDetallesBookmark;
end;
FCodigoContrato := CodigoAux;
with TablaDetallesMem do
begin
Edit;
FieldByName('CODIGOCONTRATO').AsString := FCodigoContrato;
end;
end;
procedure TfrFacturaProveedor.CodProveedorExit(Sender: TObject);
begin
if not (Modo in [Anadir, Modificar]) then
Exit;
if (Length(CodProveedor.Text) = 0) then
exit;
if (dmTablaProveedores.validarCodigo(CodProveedor.Text)) then begin
CodProveedor.DataBinding.Field.AsString := dmTablaProveedores.formatearCodigo(CodProveedor.Text);
if (dmTablaProveedores.existeCodigo(CodProveedor.Text)) then
CodigoProveedor := CodProveedor.Text
else begin
VerMensajeFmt(msgProvCodProvNoExiste, [CodProveedor.Text]);
Paginas.ActivePage := pagProveedor;
CodProveedor.SetFocus;
end;
end
else begin
VerMensajeFmt(msgProvCodProvIncorrecto, [CodProveedor.Text]);
Paginas.ActivePage := pagProveedor;
CodProveedor.SetFocus;
end;
end;
procedure TfrFacturaProveedor.bAnadirClick(Sender: TObject);
begin
try
with TablaDetallesMem do
begin
DisableControls;
Next;
if EOF then
Append
else begin
Prior;
Insert;
end;
EnableControls;
GridBotonCodigoContratoClick(Self, 0);
end;
Paginas.ActivePage := pagContenido;
gridDetalles.SetFocus;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrFacturaProveedor.bEliminarClick(Sender: TObject);
begin
if (VerMensajePregunta(msgDeseaBorrar) <> IDYES) then
Exit;
if TablaDetallesMem.RecordCount = 0 then begin
{ Hacemos un cancel de la tabla por si el registro actual estuviera
recien creado }
TablaDetallesMem.Cancel;
Exit
end;
try
TablaDetallesMem.Delete;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrFacturaProveedor.BorrarDetalles;
begin
with TablaDetallesMem do
begin
DisableControls;
EmptyTable;
EnableControls;
end;
end;
procedure TfrFacturaProveedor.CodigoExit(Sender: TObject);
begin
if (Modo <> Anadir) or (Visible = false) then
Exit;
if not EsCadenaVacia(Codigo.Text) then
begin
if (dmTablaFacturasProveedor.validarCodigo(Codigo.Text)) then
begin
Codigo.DataBinding.Field.AsString := dmTablaFacturasProveedor.FormatearCodigo(Codigo.Text);
if (dmTablaFacturasProveedor.ExisteCodigo(Codigo.Text)) then begin
VerMensajeFmt(msgProvCodFacRepetido, [Codigo.Text]);
Codigo.SetFocus;
end;
end
else begin
VerMensajeFmt(msgProvCodFacIncorrecto, [Codigo.Text]);
Codigo.SetFocus;
end
end
else
Codigo.DataBinding.Field.AsString := dmTablaFacturasProveedor.darNuevoCodigo;
end;
procedure TfrFacturaProveedor.FechaExit(Sender: TObject);
begin
if not (Modo in [Anadir, Modificar]) then
exit;
if EsCadenaVacia(FechaFactura.Text) then
begin
VerMensaje(msgProvFaltaFechaAltaFac);
FechaFactura.DataBinding.Field.AsString := DateToStr(Date);
FechaFactura.SetFocus;
end;
end;
procedure TfrFacturaProveedor.FechaVencimientoExit(Sender: TObject);
begin
if not (Modo in [Anadir, Modificar]) then
exit;
if EsCadenaVacia(FechaVencimiento.Text) then
begin
VerMensaje(msgProvFaltaFechaVtoFac);
FechaVencimiento.SetFocus;
end;
end;
procedure TfrFacturaProveedor.bEliminarTodoClick(Sender: TObject);
begin
if (VerMensajePregunta(msgDeseaBorrarTodo) <> IDYES) then
Exit;
BorrarDetalles;
end;
procedure TfrFacturaProveedor.BorrarDetallesIB;
var
CodPedAux : string;
begin
with TablaDetallesFacturas do
begin
if IsEmpty then
Exit;
DisableControls;
Last;
while not BOF do
begin
Delete;
Prior;
end;
if not IsEmpty then
Delete;
EnableControls;
end;
end;
procedure TfrFacturaProveedor.CargarDetalles;
begin
with TablaDetallesMem do
begin
if TablaDetallesFacturas.IsEmpty then
Exit;
DisableControls;
TablaDetallesFacturas.First;
while not TablaDetallesFacturas.EOF do
begin
Append;
FieldByName('CODIGOEMPRESA').AsInteger := TablaDetallesFacturas.FieldByName('CODIGOEMPRESA').AsInteger;
FieldByName('CODIGOFACTURA').AsString := TablaDetallesFacturas.FieldByName('CODIGOFACTURA').AsString;
FieldByName('CODIGOCONTRATO').AsString := TablaDetallesFacturas.FieldByName('CODIGOCONTRATO').AsString;
FieldByName('IMPORTE').AsFloat := TablaDetallesFacturas.FieldByName('IMPORTE').AsFloat;
Post;
TablaDetallesFacturas.Next;
end;
EnableControls;
end;
end;
procedure TfrFacturaProveedor.SalvarDetalles;
begin
try
with TablaDetallesMem do
begin
if IsEmpty then
Exit;
DisableControls;
First;
while not EOF do
begin
TablaDetallesFacturas.Append;
TablaDetallesFacturas.FieldByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
TablaDetallesFacturas.FieldByName('CODIGOFACTURA').AsString := Codigo.DataBinding.Field.AsString;
TablaDetallesFacturas.FieldByName('CODIGOCONTRATO').AsString := FieldByName('CODIGOCONTRATO').AsString;
TablaDetallesFacturas.FieldByName('IMPORTE').AsFloat := FieldByName('IMPORTE').AsFloat;
TablaDetallesFacturas.Post;
Next;
end;
EnableControls;
end;
except
on E : EIBError do begin
if E.IBErrorCode = isc_unique_key_violation then
begin
TablaDetallesFacturas.Delete;
TablaDetallesMem.EnableControls;
raise Exception.CreateFmt(msgCodPedRepetido, [TablaDetallesMem.FieldByName('CODIGOPEDIDO').AsString]);
end
else
raise EIBError.Create(E.SQLCode, E.IBErrorCode, E.Message);
end;
end;
end;
procedure TfrFacturaProveedor.VerModal;
begin
if (ContenidoModal is TRdxFrameProveedores) then
(ContenidoModal as TRdxFrameProveedores).CodigoProveedor := CodigoProveedor;
if (ContenidoModal is TRdxFramePoblaciones) then
(ContenidoModal as TRdxFramePoblaciones).CodigoProvincia := CodigoProvincia;
inherited;
end;
procedure TfrFacturaProveedor.ActivarEventosCampos;
begin
with TablaFacturasProveedor do
begin
FieldByName('IVA').OnSetText := IVASetText;
FieldByName('DESCUENTO').OnSetText := DtoSetText;
FieldByName('BASEIMPONIBLE').OnSetText := BaseImponibleSetText;
end;
with TablaDetallesMem do
begin
FieldByName('CODIGOCONTRATO').OnSetText := CodigoContratoDetalleSetText;
OnNewRecord := DetallesNewRecord;
end;
{with VistaDetalles do
begin
TcxButtonEditProperties(GetColumnByFieldName('CODIGOCONTRATO').Properties).OnButtonClick := GridBotonCodigoContratoClick;
end;}
end;
procedure TfrFacturaProveedor.DetalleAfterDelete(DataSet: TDataSet);
begin
CalcularTotalFactura;
end;
procedure TfrFacturaProveedor.DtoSetText(Sender: TField;
const Text: String);
begin
if EsCadenaVacia(Text) then
Sender.AsString := '0'
else begin
ValidarDto(Text);
Sender.AsString := Text;
end;
CalcularTotalFactura;
end;
procedure TfrFacturaProveedor.IVASetText(Sender: TField;
const Text: String);
begin
if EsCadenaVacia(Text) then
Sender.AsString := '0'
else begin
ValidarIVA(Text);
Sender.AsString := Text;
end;
CalcularTotalFactura;
end;
procedure TfrFacturaProveedor.SetCodigoPoblacion(Value: Variant);
begin
if (not EsCadenaVacia(Value)) then
begin
FCodigoPoblacion := Value;
Poblacion.DataBinding.Field.AsString := dmTablaPoblaciones.darNombrePoblacion(FCodigoProvincia, FCodigoPoblacion);
end;
end;
procedure TfrFacturaProveedor.SetCodigoProvincia(Value: Variant);
begin
if (not EsCadenaVacia(Value)) then
begin
FCodigoProvincia := Value;
Provincia.DataBinding.Field.AsString := dmTablaProvincias.DarNombreProvincia(FCodigoProvincia);
end;
end;
procedure TfrFacturaProveedor.ProvinciaSetText(Sender: TField;
const Text: String);
begin
FCodigoProvincia := dmTablaProvincias.darCodigoProvincia(Text);
Sender.AsString := Text;
end;
procedure TfrFacturaProveedor.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, FCodigoFactura es NULL y da error al activar modo porque
no se inicializa los parámetros de la sql. Lo hace BuscarFactura. }
if not TablaFacturasProveedor.Active then
BuscarFactura;
ContenidoModal := TfrFacturasProveedores.Create(Self);
end;
procedure TfrFacturaProveedor.CodProveedorPropertiesButtonClick(
Sender: TObject; AButtonIndex: Integer);
begin
ContenidoModal := TfrProveedores.Create(Self);
end;
procedure TfrFacturaProveedor.ProvinciaPropertiesButtonClick(
Sender: TObject; AButtonIndex: Integer);
begin
CaptionModal := msgListaProvincias;
WidthModal := 280;
HeightModal := 460;
ContenidoModal := TfrProvincias.Create(Self);
end;
procedure TfrFacturaProveedor.PoblacionPropertiesButtonClick(
Sender: TObject; AButtonIndex: Integer);
begin
if EsCadenaVacia(CodigoProvincia) then begin
VerMensaje(msgSinProvincia);
Paginas.ActivePageIndex := 0;
Provincia.SetFocus;
Exit;
end;
CaptionModal := Format(msgListaPoblaciones, [dmTablaProvincias.darNombreProvincia(CodigoProvincia)]);
WidthModal := 280;
HeightModal := 460;
ContenidoModal := TfrPoblaciones.Create(Self);
end;
procedure TfrFacturaProveedor.BaseImponibleSetText(Sender: TField;
const Text: String);
begin
if EsCadenaVacia(Text) then begin
Sender.AsString := '0';
exit;
end;
if Entidad = entAbonoProveedor then
begin
try
if StrToFloat(Text) > 0
then begin
VerMensaje (msgImporteNegativo);
Sender.AsFloat := (-1) * StrToFloat(Text)
end
else Sender.AsString := Text;
except
on E : EConvertError do begin
Sender.AsString := '0'
end;
end;
end
else
Sender.AsString := Text;
CalcularTotalFactura;
end;
procedure TfrFacturaProveedor.DetallesNewRecord(DataSet: TDataSet);
begin
DataSet.FieldByName('CODIGOFACTURA').AsString := Codigo.DataBinding.Field.AsString;
end;
procedure TfrFacturaProveedor.DesactivarEventosCampos;
begin
with TablaFacturasProveedor do
begin
if FindField('IVA') <> NIL then
FieldByName('IVA').OnSetText := NIL;
if FindField('DESCUENTO') <> NIL then
FieldByName('DESCUENTO').OnSetText := NIL;
if FindField('BASEIMPONIBLE') <> NIL then
FieldByName('BASEIMPONIBLE').OnSetText := NIL;
end;
with TablaDetallesMem do
begin
if FindField('CODIGOCONTRATO') <> NIL then
FieldByName('CODIGOCONTRATO').OnSetText := NIL;
AfterInsert := NIL;
end;
end;
procedure TfrFacturaProveedor.CodigoContratoDetalleSetText(Sender: TField;
const Text: String);
begin
CodigoContrato := Text;
end;
procedure TfrFacturaProveedor.GridBotonCodigoContratoClick(Sender: TObject;
AButtonIndex: Integer);
begin
TablaDetallesMem.Edit;
ContenidoModal := TfrContratosClientes.Create(Self);
gridDetalles.SetFocus;
end;
end.