git-svn-id: https://192.168.0.254/svn/Proyectos.Acana_FactuGES/trunk@4 3f40d355-893c-4141-8e64-b1d9be72e7e7
1541 lines
45 KiB
ObjectPascal
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.
|