git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES/trunk@4 b68bf8ae-e977-074f-a058-3cfd71dd8f45
1129 lines
36 KiB
ObjectPascal
1129 lines
36 KiB
ObjectPascal
{
|
|
===============================================================================
|
|
Copyright (©) 2001. 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: 01-10-2001
|
|
Versión actual: 1.1.0
|
|
Fecha versión actual: 06-03-2004
|
|
===============================================================================
|
|
Modificaciones:
|
|
|
|
Fecha Comentarios
|
|
---------------------------------------------------------------------------
|
|
27-10-2001 Se ha eliminado el campo 'Notas' de la tabla de facturas
|
|
de cliente.
|
|
|
|
30-10-2001 Añadir en el grid una columna que indique que código de
|
|
documento se factura (presupuesto/albarán). Si aparece
|
|
en blanco es una factura libre.
|
|
|
|
30-10-2001 Se ha añadido cliente final en facturas de cliente.
|
|
|
|
31-10-2001 Se han añadido los campos IMPORTEDESCUENTO e IMPORTEIVA.
|
|
|
|
17-02-2002 Se ha cambiado la política de contadores de las facturas. Se
|
|
coje el valor más alta que existe en FACTURASCLIENTE.
|
|
|
|
07-04-2002 Adaptar todas las funciones a la transacción única.
|
|
|
|
06-05-2002 Adaptación al grid 'TdxDBGrid'.
|
|
|
|
09-05-2002 P221. Cambio del funcionamiento de los contadores de facturas
|
|
de cliente. El código de factura se debe sacar a partir de la
|
|
tabla CONTADORES no a partir del máximo código que exista
|
|
en la tabla de facturas de cliente.
|
|
|
|
11-08-2002 P236. Añadida la función 'DecrementarCodigo'.
|
|
|
|
22-08-2002 La columna 'TIPO' de los detalles se ha puesto como no
|
|
requerida.
|
|
|
|
27-05-2002 Cambio a un objeto contador (TContadorFacturaCliente)
|
|
|
|
16-11-2002 p250. Poner el número total de facturas dadas de alta
|
|
en la inicialización del grid.
|
|
|
|
08-04-2003 P263. Agrupar por años las facturas, nueva función DarListaAnos.
|
|
|
|
08-04-2003 P255. Agrupar por meses las facturas, ordenar las más recientes
|
|
arriba.
|
|
|
|
21-04-2003 Arreglo en la funcion ModificarSituacionFactura,
|
|
para que no se borren todas las formas de pago de las
|
|
faturas que se cambien de una vez en 'Cambiar situacion'.
|
|
|
|
06-03-2004 P272. Adaptación a multiempresa.
|
|
|
|
01-03-2006 Se ha añadido el campo BaseImponible2 que nos aclara la base
|
|
imponible sobre la que se aplica el IVA
|
|
===============================================================================
|
|
}
|
|
|
|
unit TablaFacturasCliente;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
BaseDatos, dxDBGrid, Contadores;
|
|
|
|
type
|
|
TDatosFacturaCliente = class(TPersistent)
|
|
public
|
|
CodigoEmpresa : Integer;
|
|
Codigo : String;
|
|
FechaAlta : String;
|
|
FechaVencimiento : String;
|
|
FormaPago : String;
|
|
Situacion : String;
|
|
Usuario : String;
|
|
Descripcion : String;
|
|
CodigoCliente : String;
|
|
NifCif : String;
|
|
Nombre : String;
|
|
Calle : String;
|
|
Numero : String;
|
|
Piso : String;
|
|
CodigoPostal : String;
|
|
Poblacion : String;
|
|
Provincia : String;
|
|
PersonaContacto : String;
|
|
Telefono : String;
|
|
Fax : String;
|
|
CodigoPresupuestoAlbaran : String;
|
|
BaseImponible : Double;
|
|
Descuento : Integer;
|
|
Iva : Integer;
|
|
ImporteTotal : Double;
|
|
ImporteDescuento : Double;
|
|
ImporteIva : Double;
|
|
Banco : String;
|
|
Notas : String;
|
|
CodigoClienteFinal : String;
|
|
NombreClienteFinal : String;
|
|
ClaseFactura : String;
|
|
CodigoCargo : String;
|
|
end;
|
|
|
|
TdmTablaFacturasCliente = class(TDataModule)
|
|
private
|
|
procedure IniciarSQLFactura;
|
|
procedure IniciarSQLDetalles;
|
|
procedure IniciarSQLGrids;
|
|
public
|
|
sqlInsertarFactura : TStrings;
|
|
sqlModificarFactura : TStrings;
|
|
sqlConsultarFactura : TStrings;
|
|
sqlEliminarFactura : TStrings;
|
|
sqlConsultarGridFacturas : TStrings;
|
|
sqlConsultarGridFacturasCli : TStrings;
|
|
sqlConsultarGridFacturasPreAlb : TStrings;
|
|
sqlInsertarDetalles : TStrings;
|
|
sqlModificarDetalles : TStrings;
|
|
sqlConsultarDetalles : TStrings;
|
|
sqlEliminarDetalles : TStrings;
|
|
sqlConsultarGridDetalles : TStrings;
|
|
|
|
//Metodos que llamaran a contador
|
|
function DarNuevoCodigo : String;
|
|
function IncrementarCodigo : boolean;
|
|
function DecrementarCodigo : boolean;
|
|
function InsertarContador : boolean;
|
|
function ValidarCodigo(Codigo : String) : Boolean;
|
|
function FormatearCodigo(Codigo : String) : String;
|
|
|
|
function DarDatosFactura(Factura : TDatosFacturaCliente): Boolean;
|
|
function DarClaseFactura(CodigoEmpresa: Integer; Codigo : String): String;
|
|
function ExisteCodigo(CodigoEmpresa: Integer; Codigo : String) : Boolean;
|
|
procedure InicializarGridDetalles(var Grid: TdxDBGrid);
|
|
procedure InicializarGridFacturas(var Grid: TdxDBGrid);
|
|
procedure InicializarTablaFacturas(Tabla: TPTabla);
|
|
procedure InicializarTablaDetalles(Tabla: TPTabla);
|
|
constructor Create (AOwner : TComponent); override;
|
|
destructor Destroy; override;
|
|
function DarSituaciones : TStrings;
|
|
function DarSituacionFactura(CodigoEmpresa: Integer; Codigo: String): String;
|
|
function DarListaFacturas(Grid : TdxDBGrid; Tabla: TPTabla): TStringList;
|
|
function ModificarSituacionFactura(CodigoEmpresa: Integer; Codigo, Situacion, FormaPago : String): Boolean;
|
|
function DarImporteTodosAbonos(CodigoEmpresa: Integer; Codigo: String): Double;
|
|
function DarImporteOtrosAbonos(CodigoEmpresa: Integer; CodigoCargo: String; CodigoAbono : String): Double;
|
|
function ExistenAbonos(CodigoEmpresa: Integer; CodigoCargo : String) : Boolean;
|
|
function EsUltimaFactura(CodigoEmpresa: Integer; Codigo : String): Boolean;
|
|
function DarListaAnos(CodigoEmpresa: Integer;const pTodos: Boolean): TStringList;
|
|
end;
|
|
|
|
var
|
|
dmTablaFacturasCliente: TdmTablaFacturasCliente;
|
|
|
|
implementation
|
|
{$R *.DFM}
|
|
|
|
uses
|
|
IBSQL, Mensajes, StrFunc, IB, db, Excepciones,
|
|
TablaUnidadesMedida, dxDBCtrl, dxDBTLCL, IBCustomDataSet, dxTL,
|
|
Constantes, RdxGestorContadores;
|
|
|
|
{ TdmTablaFacturas }
|
|
|
|
constructor TdmTablaFacturasCliente.Create(AOwner: TComponent);
|
|
begin
|
|
inherited;
|
|
{ Cabecera }
|
|
sqlInsertarFactura := TStringList.Create;
|
|
sqlModificarFactura := TStringList.Create;
|
|
sqlConsultarFactura := TStringList.Create;
|
|
sqlEliminarFactura := TStringList.Create;
|
|
|
|
{ Detalles }
|
|
sqlInsertarDetalles := TStringList.Create;
|
|
sqlModificarDetalles := TStringList.Create;
|
|
sqlConsultarDetalles := TStringList.Create;
|
|
sqlEliminarDetalles := TStringList.Create;
|
|
sqlConsultarGridDetalles := TStringList.Create;
|
|
|
|
{ Grids }
|
|
sqlConsultarGridFacturas := TStringList.Create;
|
|
sqlConsultarGridFacturasCli := TStringList.Create;
|
|
sqlConsultarGridFacturasPreAlb := TStringList.Create;
|
|
|
|
IniciarSQLFactura;
|
|
IniciarSQLDetalles;
|
|
IniciarSQLGrids;
|
|
end;
|
|
|
|
function TdmTablaFacturasCliente.DarNuevoCodigo: String;
|
|
begin
|
|
Result := GestorContadores.DarNuevoCodigo(contFacturasCliente);
|
|
end;
|
|
|
|
function TdmTablaFacturasCliente.DarSituaciones: TStrings;
|
|
var
|
|
oSQL : TIBSQL;
|
|
Lista : TStringList;
|
|
begin
|
|
Result := NIL;
|
|
oSQL := TIBSQL.Create(Self);
|
|
Lista := TStringList.Create;
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('select DESCRIPCION from SITUFACTURAS');
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
while not EOF do begin
|
|
Lista.Append(Fields[0].AsString);
|
|
Next;
|
|
end;
|
|
Result := Lista;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
destructor TdmTablaFacturasCliente.Destroy;
|
|
begin
|
|
{ Cabecera }
|
|
sqlInsertarFactura.Free;
|
|
sqlModificarFactura.Free;
|
|
sqlConsultarFactura.Free;
|
|
sqlEliminarFactura.Free;
|
|
|
|
{ Detalles }
|
|
sqlInsertarDetalles.Free;
|
|
sqlModificarDetalles.Free;
|
|
sqlConsultarDetalles.Free;
|
|
sqlEliminarDetalles.Free;
|
|
sqlConsultarGridDetalles.Free;
|
|
|
|
{ Grids }
|
|
sqlConsultarGridFacturas.Free;
|
|
sqlConsultarGridFacturasCli.Free;
|
|
sqlConsultarGridFacturasPreAlb.Free;
|
|
inherited;
|
|
end;
|
|
|
|
function TdmTablaFacturasCliente.ExisteCodigo(CodigoEmpresa: Integer; Codigo: String): Boolean;
|
|
var
|
|
oSQL : TIBSQL;
|
|
Contador : String;
|
|
begin
|
|
Result := False;
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('select CODIGO ');
|
|
SQL.Add('from FACTURASCLIENTE ');
|
|
SQL.Add('where (CODIGO = :CODIGO) and (CODIGOEMPRESA = :CODIGOEMPRESA)');
|
|
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
|
|
ParamByName('CODIGO').AsString := Codigo;
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
Contador := Fields[0].AsString;
|
|
Result := (Codigo = Contador);
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaFacturasCliente.FormatearCodigo(Codigo: String): String;
|
|
begin
|
|
Result := GestorContadores.FormatearCodigo(contFacturasCliente, Codigo);
|
|
end;
|
|
|
|
function TdmTablaFacturasCliente.IncrementarCodigo: boolean;
|
|
begin
|
|
Result := GestorContadores.IncrementarValor(contFacturasCliente);
|
|
end;
|
|
|
|
procedure TdmTablaFacturasCliente.InicializarGridDetalles(var Grid: TdxDBGrid);
|
|
var
|
|
Columna : TdxDBTreeListColumn;
|
|
begin
|
|
with Grid do begin
|
|
DestroyColumns;
|
|
{Columna CODIGOFACTURA}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.Visible := False;
|
|
Columna.FieldName := 'CODIGOFACTURA';
|
|
{Columna NUMCONCEPTO}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.Visible := False;
|
|
Columna.FieldName := 'NUMCONCEPTO';
|
|
{Columna TIPO}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.Visible := False;
|
|
Columna.FieldName := 'TIPO';
|
|
Columna.Width := tamColTipo;
|
|
{Columna CODIGOARTICULO}
|
|
Columna := CreateColumn(TdxDBTreeListButtonColumn);
|
|
Columna.FieldName := 'CODIGOARTICULO';
|
|
Columna.Caption := 'Cód. material';
|
|
Columna.Width := tamColCodigo;
|
|
{Columna DESCRIPCION}
|
|
Columna := CreateColumn(TdxDBTreeListButtonColumn);
|
|
Columna.FieldName := 'DESCRIPCION';
|
|
Columna.Caption := 'Descripción servicio/material';
|
|
Columna.Width := tamColDescripcion;
|
|
{Columna CANTIDAD}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'CANTIDAD';
|
|
Columna.Caption := 'Cantidad';
|
|
Columna.Width := tamColCantidad;
|
|
{Columna UNIDADESMEDIDA}
|
|
Columna := CreateColumn(TdxDBTreeListPickColumn);
|
|
Columna.FieldName := 'UNIDADESMEDIDA';
|
|
Columna.Caption := 'Unid. medida';
|
|
Columna.Width := tamColUnidadesMedida;
|
|
(Columna as TdxDBTreeListPickColumn).Items := dmTablaUnidadesMedida.DarUnidadesMedida;
|
|
{Columna PRECIOUNIDAD}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'PRECIOUNIDAD';
|
|
Columna.Caption := 'Precio unidad';
|
|
Columna.Width := tamColPrecio;
|
|
{Columna MINUTOS}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'MINUTOS';
|
|
Columna.Caption := 'Num. minutos';
|
|
Columna.Width := tamColCantidad;
|
|
{Columna PRECIOMINUTO}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'PRECIOMINUTO';
|
|
Columna.Caption := 'Precio minuto';
|
|
Columna.Width := tamColPrecio;
|
|
{Columna PLUS}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'PLUS';
|
|
Columna.Caption := 'Plus (%)';
|
|
Columna.Width := tamColPorcentaje;
|
|
{Columna TOTAL}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'TOTAL';
|
|
Columna.ReadOnly := True;
|
|
Columna.Caption := 'Precio total';
|
|
Columna.Width := tamColPrecio;
|
|
end;
|
|
end;
|
|
|
|
procedure TdmTablaFacturasCliente.InicializarGridFacturas(var Grid: TdxDBGrid);
|
|
var
|
|
Columna : TdxDBTreeListColumn;
|
|
begin
|
|
with Grid do begin
|
|
DestroyColumns;
|
|
ShowSummaryFooter := True;
|
|
{Columna CODIGO}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'CODIGO';
|
|
Columna.Caption := 'Cód. factura';
|
|
Columna.Width := tamColCodigo;
|
|
Columna.Sorted := csDown;
|
|
Columna.SummaryFooterType := cstCount;
|
|
Columna.SummaryFooterFormat := 'Total: 0 facturas';
|
|
|
|
{Columna ANO}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'ANO';
|
|
Columna.Caption := 'Año';
|
|
Columna.Width := tamColFecha;
|
|
Columna.Visible := False;
|
|
|
|
//Para activar P255
|
|
{Columna MES}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'MES';
|
|
Columna.Caption := '';
|
|
Columna.Width := tamColFecha;
|
|
Columna.Visible := False;
|
|
// TdxDBGridColumn(Grid.ColumnByFieldName('MES')).GroupIndex := 0;
|
|
// tvOrders.DataController.Groups.FullExpand;
|
|
// TdxDBGridColumn(Grid.ColumnByFieldName('MES')).ColumnGrouping := False;
|
|
// Grid.OptionsCustomize.
|
|
|
|
{Columna CLASEFACTURA}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'CLASEFACTURA';
|
|
Columna.Caption := 'Clase';
|
|
Columna.Width := tamClaseFactura;
|
|
{Columna SITUACION}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'SITUACION';
|
|
Columna.Caption := 'Situación';
|
|
Columna.Width := tamColSituacion;
|
|
{Columna CODIGOPRESUPUESTOALBARAN}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'CODIGOPRESUPUESTOALBARAN';
|
|
Columna.Caption := 'Pres./Alb./Libre';
|
|
Columna.Width := tamColCodigo;
|
|
{Columna FECHAALTA}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'FECHAALTA';
|
|
Columna.Caption := 'Fecha alta';
|
|
Columna.Width := tamColFecha;
|
|
{Columna FECHAVENCIMIENTO}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'FECHAVENCIMIENTO';
|
|
Columna.Caption := 'Vencimiento';
|
|
Columna.Width := tamColFecha;
|
|
{Columna CODIGOCLIENTE}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'CODIGOCLIENTE';
|
|
Columna.Caption := 'Cód. cliente';
|
|
Columna.Width := tamColCodigo;
|
|
{Columna NIFCIF}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'NIFCIF';
|
|
Columna.Caption := 'NIF/CIF';
|
|
Columna.Width := tamColNIFCIF;
|
|
{Columna NOMBRE}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'NOMBRE';
|
|
Columna.Caption := 'Nombre';
|
|
Columna.Width := tamColNombre;
|
|
{Columna NOMBRECLIENTEFINAL}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'NOMBRECLIENTEFINAL';
|
|
Columna.Caption := 'Cliente final';
|
|
Columna.Width := tamColNombre;
|
|
{Columna IMPORTETOTAL}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'IMPORTETOTAL';
|
|
Columna.Caption := 'Importe total';
|
|
Columna.Width := tamColPrecio;
|
|
{Columna CODIGOCARGO}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'CODIGOCARGO';
|
|
Columna.Caption := 'Cargo';
|
|
Columna.Width := tamColCodigo;
|
|
Columna.Visible := False;
|
|
end;
|
|
end;
|
|
|
|
procedure TdmTablaFacturasCliente.InicializarTablaDetalles(Tabla: TPTabla);
|
|
begin
|
|
with Tabla^.Fields do
|
|
begin
|
|
if FindField('TIPO') <> NIL then
|
|
with (FieldByName('TIPO') as TField) do begin
|
|
Required := False;
|
|
end;
|
|
|
|
if FindField('PRECIOUNIDAD') <> NIL then
|
|
with (FieldByName('PRECIOUNIDAD') as TFloatField) do begin
|
|
DisplayFormat := DISPLAY_EUROS2;
|
|
EditFormat := EDIT_EUROS2;
|
|
end;
|
|
|
|
if FindField('PRECIO') <> NIL then
|
|
with (FieldByName('PRECIO') as TFloatField) do begin
|
|
DisplayFormat := DISPLAY_EUROS2;
|
|
EditFormat := EDIT_EUROS2;
|
|
end;
|
|
|
|
if FindField('PRECIOMINUTO') <> NIL then
|
|
with (FieldByName('PRECIOMINUTO') as TFloatField) do begin
|
|
DisplayFormat := DISPLAY_EUROS2;
|
|
EditFormat := EDIT_EUROS2;
|
|
end;
|
|
|
|
if FindField('PLUS') <> NIL then
|
|
with (FieldByName('PLUS') as TFloatField) do begin
|
|
DisplayFormat := DISPLAY_DTO;
|
|
EditFormat := EDIT_DTO;
|
|
end;
|
|
|
|
if FindField('TOTAL') <> NIL then
|
|
with (FieldByName('TOTAL') as TFloatField) do begin
|
|
DisplayFormat := DISPLAY_EUROS2;
|
|
EditFormat := EDIT_EUROS2;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TdmTablaFacturasCliente.InicializarTablaFacturas(
|
|
Tabla: TPTabla);
|
|
begin
|
|
with Tabla^.Fields do
|
|
begin
|
|
if FindField('FECHAALTA') <> NIL then
|
|
with (FieldByName('FECHAALTA') as TDateField) do begin
|
|
EditMask := MASK_FECHA;
|
|
end;
|
|
|
|
if FindField('FECHAVENCIMIENTO') <> NIL then
|
|
with (FieldByName('FECHAVENCIMIENTO') as TDateField) do begin
|
|
EditMask := MASK_FECHA;
|
|
end;
|
|
|
|
if FindField('BASEIMPONIBLE') <> NIL then
|
|
with (FieldByName('BASEIMPONIBLE') as TIBBCDField) do begin
|
|
DisplayFormat := DISPLAY_EUROS2;
|
|
EditFormat := EDIT_EUROS2;
|
|
end;
|
|
|
|
if FindField('BASEIMPONIBLE2') <> NIL then
|
|
with (FieldByName('BASEIMPONIBLE2') as TIBBCDField) do begin
|
|
DisplayFormat := DISPLAY_EUROS2;
|
|
EditFormat := EDIT_EUROS2;
|
|
end;
|
|
|
|
if FindField('DESCUENTO') <> NIL then
|
|
with (FieldByName('DESCUENTO') as TFloatField) do begin
|
|
DisplayFormat := DISPLAY_DTO;
|
|
EditFormat := EDIT_DTO;
|
|
end;
|
|
|
|
if FindField('IMPORTEDESCUENTO') <> NIL then
|
|
//with (FieldByName('IMPORTEDESCUENTO') as TFloatField) do begin
|
|
with (FieldByName('IMPORTEDESCUENTO') as TIBBCDField) do begin
|
|
DisplayFormat := DISPLAY_EUROS2;
|
|
EditFormat := EDIT_EUROS2;
|
|
end;
|
|
|
|
if FindField('IVA') <> NIL then
|
|
with (FieldByName('IVA') as TFloatField) do begin
|
|
DisplayFormat := DISPLAY_DTO;
|
|
EditFormat := EDIT_DTO;
|
|
end;
|
|
|
|
if FindField('IMPORTEIVA') <> NIL then
|
|
//with (FieldByName('IMPORTEIVA') as TFloatField) do begin
|
|
with (FieldByName('IMPORTEIVA') as TIBBCDField) do begin
|
|
DisplayFormat := DISPLAY_EUROS2;
|
|
EditFormat := EDIT_EUROS2;
|
|
end;
|
|
|
|
if FindField('IMPORTETOTAL') <> NIL then
|
|
//with (FieldByName('IMPORTETOTAL') as TFloatField) do begin
|
|
with (FieldByName('IMPORTETOTAL') as TIBBCDField) do begin
|
|
DisplayFormat := DISPLAY_EUROS2;
|
|
EditFormat := EDIT_EUROS2;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TdmTablaFacturasCliente.IniciarSQLDetalles;
|
|
begin
|
|
with sqlInsertarDetalles do
|
|
begin
|
|
Add('insert into DETALLESFACTURASCLIENTE ');
|
|
Add('(CODIGOEMPRESA, CODIGOFACTURA, NUMCONCEPTO, TIPO, CODIGOARTICULO, DESCRIPCION, ');
|
|
Add('CANTIDAD, UNIDADESMEDIDA, PRECIOUNIDAD, MINUTOS, PRECIOMINUTO, PLUS, ');
|
|
Add('PRECIO, TOTAL) ');
|
|
Add('values (:CODIGOEMPRESA, :CODIGOFACTURA, :NUMCONCEPTO, :TIPO, :CODIGOARTICULO, ');
|
|
Add(':DESCRIPCION, :CANTIDAD, :UNIDADESMEDIDA, :PRECIOUNIDAD, :MINUTOS, ');
|
|
Add(':PRECIOMINUTO, :PLUS, :PRECIO, :TOTAL)');
|
|
end;
|
|
|
|
with sqlModificarDetalles do
|
|
begin
|
|
Add('update DETALLESFACTURASCLIENTE set ');
|
|
Add('CODIGOFACTURA = :CODIGOFACTURA, ');
|
|
Add('NUMCONCEPTO = :NUMCONCEPTO, ');
|
|
Add('CODIGOARTICULO = :CODIGOARTICULO, ');
|
|
Add('TIPO = :TIPO, ');
|
|
Add('DESCRIPCION = :DESCRIPCION, ');
|
|
Add('CANTIDAD = :CANTIDAD, ');
|
|
Add('UNIDADESMEDIDA = :UNIDADESMEDIDA, ');
|
|
Add('PRECIOUNIDAD = :PRECIOUNIDAD, ');
|
|
Add('MINUTOS = :MINUTOS, ');
|
|
Add('PRECIOMINUTO = :PRECIOMINUTO, ');
|
|
Add('PLUS = :PLUS, ');
|
|
Add('PRECIO = :PRECIO, ');
|
|
Add('TOTAL = :TOTAL ');
|
|
Add('where (CODIGOFACTURA = :CODIGOFACTURA) ');
|
|
Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
Add('and (NUMCONCEPTO = :NUMCONCEPTO)');
|
|
end;
|
|
|
|
with sqlEliminarDetalles do
|
|
begin
|
|
Add('delete from DETALLESFACTURASCLIENTE ');
|
|
Add('where (CODIGOFACTURA = :CODIGOFACTURA) ');
|
|
Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
Add('and (NUMCONCEPTO = :NUMCONCEPTO)');
|
|
end;
|
|
|
|
with sqlConsultarDetalles do
|
|
begin
|
|
Add('select CODIGOFACTURA, NUMCONCEPTO, TIPO, ');
|
|
Add('CODIGOARTICULO, DESCRIPCION, CANTIDAD, UNIDADESMEDIDA, PRECIOUNIDAD, ');
|
|
Add('MINUTOS, PRECIOMINUTO, PLUS, PRECIO, TOTAL ');
|
|
Add('from DETALLESFACTURASCLIENTE ');
|
|
Add('where (CODIGOFACTURA = :CODIGOFACTURA) ');
|
|
Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
Add('and (NUMCONCEPTO = :NUMCONCEPTO)');
|
|
end;
|
|
end;
|
|
|
|
procedure TdmTablaFacturasCliente.IniciarSQLGrids;
|
|
begin
|
|
with sqlConsultarGridFacturas do
|
|
begin
|
|
Add('select CODIGO, CLASEFACTURA, SITUACION, FECHAALTA, CODIGOPRESUPUESTOALBARAN, ');
|
|
Add('EXTRACT (YEAR FROM FECHAALTA) as ANO, ');
|
|
//Para activar P255
|
|
// Add('EXTRACT (MONTH FROM FECHAALTA) || ''/'' || EXTRACT (YEAR FROM FECHAALTA) as MES, ');
|
|
|
|
Add('FECHAVENCIMIENTO, CODIGOCLIENTE, NIFCIF, NOMBRE, ');
|
|
Add('CODIGOCLIENTEFINAL, NOMBRECLIENTEFINAL, IMPORTETOTAL, CODIGOCARGO ');
|
|
Add('from FACTURASCLIENTE ');
|
|
Add('where (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
Add('order by CODIGO');
|
|
end;
|
|
|
|
with sqlConsultarGridFacturasCli do
|
|
begin
|
|
Add('select CODIGO, CLASEFACTURA, SITUACION, FECHAALTA, CODIGOPRESUPUESTOALBARAN, ');
|
|
Add('EXTRACT (YEAR FROM FECHAALTA) as ANO, ');
|
|
Add('FECHAVENCIMIENTO, CODIGOCLIENTE, NIFCIF, NOMBRE, ');
|
|
Add('CODIGOCLIENTEFINAL, NOMBRECLIENTEFINAL, IMPORTETOTAL, CODIGOCARGO ');
|
|
Add('from FACTURASCLIENTE ');
|
|
Add('where (CODIGOCLIENTE = :CODIGOCLIENTE) ');
|
|
Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
Add('order by CODIGO');
|
|
end;
|
|
|
|
with sqlConsultarGridFacturasPreAlb do
|
|
begin
|
|
Add('select CODIGO, CLASEFACTURA, SITUACION, FECHAALTA, CODIGOPRESUPUESTOALBARAN, ');
|
|
Add('EXTRACT (YEAR FROM FECHAALTA) as ANO, ');
|
|
Add('FECHAVENCIMIENTO, CODIGOCLIENTE, NIFCIF, NOMBRE, ');
|
|
Add('CODIGOCLIENTEFINAL, NOMBRECLIENTEFINAL, IMPORTETOTAL, CODIGOCARGO ');
|
|
Add('from FACTURASCLIENTE ');
|
|
Add('where (CODIGOPRESUPUESTOALBARAN = :CODIGOPRESUPUESTOALBARAN) ');
|
|
Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
Add('order by CODIGO');
|
|
end;
|
|
|
|
with sqlConsultarGridDetalles do
|
|
begin
|
|
Add('select CODIGOEMPRESA, CODIGOFACTURA, NUMCONCEPTO, CODIGOARTICULO, TIPO, ');
|
|
Add('DESCRIPCION, CANTIDAD, UNIDADESMEDIDA, PRECIOUNIDAD, MINUTOS, ');
|
|
Add('PRECIOMINUTO, PLUS, PRECIO, TOTAL ');
|
|
Add('from DETALLESFACTURASCLIENTE ');
|
|
Add('where (CODIGOFACTURA = :CODIGOFACTURA) ');
|
|
Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
Add('order by CODIGOFACTURA, NUMCONCEPTO');
|
|
end;
|
|
end;
|
|
|
|
procedure TdmTablaFacturasCliente.IniciarSQLFactura;
|
|
begin
|
|
with sqlInsertarFactura do
|
|
begin
|
|
Add('insert into FACTURASCLIENTE ');
|
|
Add('(CODIGOEMPRESA, CODIGO, FECHAALTA, FECHAVENCIMIENTO, FORMAPAGO, SITUACION, ');
|
|
Add('USUARIO, DESCRIPCION, CODIGOCLIENTE, NIFCIF, NOMBRE, CALLE, ');
|
|
Add('NUMERO, PISO, CODIGOPOSTAL, POBLACION, PROVINCIA, PERSONACONTACTO, ');
|
|
Add('TELEFONO, FAX, CODIGOPRESUPUESTOALBARAN, BASEIMPONIBLE, DESCUENTO, ');
|
|
Add('IVA, IMPORTETOTAL, BANCO, CODIGOCLIENTEFINAL, NOMBRECLIENTEFINAL, ');
|
|
Add('IMPORTEDESCUENTO, IMPORTEIVA, CLASEFACTURA, CODIGOCARGO) ');
|
|
Add('values (:CODIGOEMPRESA, :CODIGO, :FECHAALTA, :FECHAVENCIMIENTO, :FORMAPAGO, ');
|
|
Add(':SITUACION, :USUARIO, :DESCRIPCION, :CODIGOCLIENTE, :NIFCIF, ');
|
|
Add(':NOMBRE, :CALLE, :NUMERO, :PISO, :CODIGOPOSTAL, :POBLACION, ');
|
|
Add(':PROVINCIA, :PERSONACONTACTO, :TELEFONO, :FAX, ');
|
|
Add(':CODIGOPRESUPUESTOALBARAN, :BASEIMPONIBLE, :DESCUENTO, :IVA, ');
|
|
Add(':IMPORTETOTAL, :BANCO, :CODIGOCLIENTEFINAL, :NOMBRECLIENTEFINAL, ');
|
|
Add(':IMPORTEDESCUENTO, :IMPORTEIVA, :CLASEFACTURA, :CODIGOCARGO) ');
|
|
|
|
end;
|
|
|
|
with sqlModificarFactura do
|
|
begin
|
|
Add('update FACTURASCLIENTE set ');
|
|
Add('FECHAALTA = :FECHAALTA, ');
|
|
Add('FECHAVENCIMIENTO = :FECHAVENCIMIENTO, ');
|
|
Add('FORMAPAGO = :FORMAPAGO, ');
|
|
Add('SITUACION = :SITUACION, ');
|
|
Add('USUARIO = :USUARIO, ');
|
|
Add('DESCRIPCION = :DESCRIPCION, ');
|
|
Add('CODIGOCLIENTE = :CODIGOCLIENTE, ');
|
|
Add('NIFCIF = :NIFCIF, ');
|
|
Add('NOMBRE = :NOMBRE, ');
|
|
Add('CALLE = :CALLE, ');
|
|
Add('NUMERO = :NUMERO, ');
|
|
Add('PISO = :PISO, ');
|
|
Add('CODIGOPOSTAL = :CODIGOPOSTAL, ');
|
|
Add('POBLACION = :POBLACION, ');
|
|
Add('PROVINCIA = :PROVINCIA, ');
|
|
Add('PERSONACONTACTO = :PERSONACONTACTO, ');
|
|
Add('TELEFONO = :TELEFONO, ');
|
|
Add('FAX = :FAX, ');
|
|
Add('CODIGOPRESUPUESTOALBARAN = :CODIGOPRESUPUESTOALBARAN, ');
|
|
Add('BASEIMPONIBLE = :BASEIMPONIBLE, ');
|
|
Add('DESCUENTO = :DESCUENTO, ');
|
|
Add('IMPORTEDESCUENTO = :IMPORTEDESCUENTO, ');
|
|
Add('IVA = :IVA, ');
|
|
Add('IMPORTEIVA = :IMPORTEIVA, ');
|
|
Add('IMPORTETOTAL = :IMPORTETOTAL, ');
|
|
Add('BANCO = :BANCO, ');
|
|
Add('CODIGOCLIENTEFINAL = :CODIGOCLIENTEFINAL, ');
|
|
Add('NOMBRECLIENTEFINAL = :NOMBRECLIENTEFINAL ');
|
|
Add('where (CODIGO = :CODIGO)');
|
|
Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
end;
|
|
|
|
with sqlEliminarFactura do
|
|
begin
|
|
Add('delete from FACTURASCLIENTE ');
|
|
Add('where (CODIGO = :CODIGO)');
|
|
Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
end;
|
|
|
|
with sqlConsultarFactura do
|
|
begin
|
|
Add('SELECT * FROM FACTURASCLIENTE ');
|
|
Add('where (CODIGO = :CODIGO)');
|
|
Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaFacturasCliente.InsertarContador: boolean;
|
|
begin
|
|
Result := GestorContadores.InsertarContador(contFacturasCliente);
|
|
end;
|
|
|
|
function TdmTablaFacturasCliente.ValidarCodigo(Codigo: String): Boolean;
|
|
begin
|
|
Result := GestorContadores.ValidarCodigo(contFacturasCliente, Codigo);
|
|
end;
|
|
|
|
function TdmTablaFacturasCliente.DarSituacionFactura(CodigoEmpresa: Integer;
|
|
Codigo: String): String;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
Result := '-1';
|
|
if EsCadenaVacia(Codigo) then
|
|
Exit;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('select SITUACION ');
|
|
SQL.Add('from FACTURASCLIENTE ');
|
|
SQL.Add('where (CODIGO = :CODIGO)');
|
|
SQL.Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
|
|
ParamByName('CODIGO').AsString := Codigo;
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
Result := Fields[0].AsString;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaFacturasCliente.ModificarSituacionFactura(CodigoEmpresa: Integer;
|
|
Codigo, Situacion, FormaPago: String): Boolean;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
Result := False;
|
|
if EsCadenaVacia(Codigo) then
|
|
Exit;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('update FACTURASCLIENTE ');
|
|
SQL.Add('set SITUACION = :SITUACION ');
|
|
|
|
// Si recibimos la forma de pago a null o vacia, quiere decir que no se debe
|
|
// cambiar ya que afectaria a todas las facturas seleccionadas
|
|
if not esCadenaVacia(FormaPago) then
|
|
SQL.Add(',FORMAPAGO = :FORMAPAGO ');
|
|
|
|
SQL.Add('where (CODIGO = :CODIGO)');
|
|
SQL.Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
|
|
ParamByName('CODIGO').AsString := Codigo;
|
|
ParamByName('SITUACION').AsString := Situacion;
|
|
|
|
// Si recibimos la forma de pago a null o vacia, quiere decir que no se debe
|
|
// cambiar ya que afectaria a todas las facturas seleccionadas
|
|
if not esCadenaVacia(FormaPago) then
|
|
ParamByName('FORMAPAGO').AsString := FormaPago;
|
|
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
Result := True;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaFacturasCliente.DarListaFacturas(Grid: TdxDBGrid;
|
|
Tabla: TPTabla): TStringList;
|
|
var
|
|
i: integer;
|
|
ListaFacturas : TStringList;
|
|
begin
|
|
ListaFacturas := Nil;
|
|
|
|
if Grid.SelectedCount = 0 then
|
|
begin
|
|
Result := ListaFacturas;
|
|
exit
|
|
end;
|
|
|
|
ListaFacturas := TStringList.Create;
|
|
Tabla^.DisableControls;
|
|
for i:=0 to Grid.SelectedCount-1 do
|
|
begin
|
|
Tabla^.GotoBookmark(Pointer(Grid.SelectedRows[i]));
|
|
ListaFacturas.Add(Tabla^.FieldByName('CODIGO').AsString);
|
|
end;
|
|
Tabla^.EnableControls;
|
|
Result := ListaFacturas;
|
|
end;
|
|
|
|
function TdmTablaFacturasCliente.DecrementarCodigo: boolean;
|
|
begin
|
|
Result := GestorContadores.DecrementarValor(contFacturasCliente);
|
|
end;
|
|
|
|
function TdmTablaFacturasCliente.DarImporteTodosAbonos(CodigoEmpresa: Integer;
|
|
Codigo: String): Double;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
Result := 0.0;
|
|
if EsCadenaVacia(Codigo) then
|
|
Exit;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('select sum(IMPORTETOTAL) ');
|
|
SQL.Add('from FACTURASCLIENTE ');
|
|
SQL.Add('where (CODIGOCARGO = :CODIGO) ');
|
|
SQL.Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
|
|
ParamByName('CODIGO').AsString := Codigo;
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
Result := Fields[0].AsFloat;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaFacturasCliente.DarDatosFactura(
|
|
Factura: TDatosFacturaCliente): Boolean;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
Result := False;
|
|
if EsCadenaVacia(Factura.Codigo) then
|
|
Exit;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('select * from FACTURASCLIENTE ');
|
|
SQL.Add('where (CODIGO = :CODIGO)');
|
|
SQL.Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
ParamByName('CODIGOEMPRESA').AsInteger := Factura.CodigoEmpresa;
|
|
ParamByName('CODIGO').AsString := Factura.Codigo;
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
//Compruebo que el codigo de albarán existe. Si no existe, devuelvo false
|
|
if (RecordCount > 0) then
|
|
begin
|
|
with Factura do
|
|
begin
|
|
FechaAlta := FieldByName('FECHAALTA').AsString;
|
|
FechaVencimiento := FieldByName('FECHAVENCIMIENTO').AsString;
|
|
FormaPago := FieldByName('FORMAPAGO').AsString;
|
|
Situacion := FieldByName('SITUACION').AsString;
|
|
Usuario := FieldByName('USUARIO').AsString;
|
|
Descripcion := FieldByName('DESCRIPCION').AsString;
|
|
CodigoCliente := FieldByName('CODIGOCLIENTE').AsString;
|
|
NifCif := FieldByName('NIFCIF').AsString;
|
|
Nombre := FieldByName('NOMBRE').AsString;
|
|
Calle := FieldByName('CALLE').AsString;
|
|
Numero := FieldByName('NUMERO').AsString;
|
|
Piso := FieldByName('PISO').AsString;
|
|
CodigoPostal := FieldByName('CODIGOPOSTAL').AsString;
|
|
Poblacion := FieldByName('POBLACION').AsString;
|
|
Provincia := FieldByName('PROVINCIA').AsString;
|
|
PersonaContacto := FieldByName('PERSONACONTACTO').AsString;
|
|
Telefono := FieldByName('TELEFONO').AsString;
|
|
Fax := FieldByName('FAX').AsString;
|
|
CodigoPresupuestoAlbaran := FieldByName('CODIGOPRESUPUESTOALBARAN').AsString;
|
|
BaseImponible := FieldByName('BASEIMPONIBLE').AsFloat;
|
|
Descuento := FieldByName('DESCUENTO').AsInteger;
|
|
Iva := FieldByName('IVA').AsInteger;
|
|
ImporteDescuento := FieldByName('IMPORTEDESCUENTO').AsFloat;
|
|
ImporteIva := FieldByName('IMPORTEIVA').AsFloat;
|
|
ImporteTotal := FieldByName('IMPORTETOTAL').AsFloat;
|
|
Banco := FieldByName('BANCO').AsString;
|
|
Notas := FieldByName('NOTAS').AsString;
|
|
CodigoClienteFinal := FieldByName('CODIGOCLIENTEFINAL').AsString;
|
|
NombreClienteFinal := FieldByName('NOMBRECLIENTEFINAL').AsString;
|
|
ClaseFactura := FieldByName('CLASEFACTURA').AsString;
|
|
CodigoCargo := FieldByName('CODIGOCARGO').AsString;
|
|
Result := True;
|
|
end;
|
|
end;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
function TdmTablaFacturasCliente.DarClaseFactura(CodigoEmpresa: Integer;
|
|
Codigo: String): String;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
Result := 'C';
|
|
if EsCadenaVacia(Codigo) then
|
|
Exit;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('select CLASEFACTURA ');
|
|
SQL.Add('from FACTURASCLIENTE ');
|
|
SQL.Add('where (CODIGO = :CODIGO) ');
|
|
SQL.Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
|
|
ParamByName('CODIGO').AsString := Codigo;
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
Result := Fields[0].AsString;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaFacturasCliente.DarImporteOtrosAbonos(CodigoEmpresa: Integer;
|
|
CodigoCargo, CodigoAbono: String): Double;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
Result := 0.0;
|
|
if EsCadenaVacia(CodigoCargo) then
|
|
Exit;
|
|
|
|
if EsCadenaVacia(CodigoAbono) then
|
|
Exit;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('select sum(IMPORTETOTAL) ');
|
|
SQL.Add('from FACTURASCLIENTE ');
|
|
SQL.Add('where (CODIGOCARGO = :CODIGOCARGO) ');
|
|
SQL.Add('and (CODIGO <> :CODIGO)');
|
|
SQL.Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
|
|
ParamByName('CODIGOCARGO').AsString := CodigoCargo;
|
|
ParamByName('CODIGO').AsString := CodigoAbono;
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
Result := Fields[0].AsFloat;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaFacturasCliente.EsUltimaFactura(CodigoEmpresa: Integer; Codigo: String): Boolean;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
Result := False;
|
|
if EsCadenaVacia(Codigo) then
|
|
Exit;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('select count(*) ');
|
|
SQL.Add('from FACTURASCLIENTE ');
|
|
SQL.Add('where (CODIGO > :CODIGO) ');
|
|
SQL.Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
|
|
ParamByName('CODIGO').AsString := Codigo;
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
if Fields[0].AsInteger = 0 then
|
|
Result := True;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaFacturasCliente.ExistenAbonos(CodigoEmpresa: Integer;
|
|
CodigoCargo: String): Boolean;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
Result := False;
|
|
if EsCadenaVacia(CodigoCargo) then
|
|
Exit;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('select count(*) ');
|
|
SQL.Add('from FACTURASCLIENTE ');
|
|
SQL.Add('where (CODIGOCARGO = :CODIGOCARGO) ');
|
|
SQL.Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
|
|
ParamByName('CODIGOCARGO').AsString := CodigoCargo;
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
if Fields[0].AsInteger > 0 then
|
|
Result := True;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaFacturasCliente.DarListaAnos(CodigoEmpresa: Integer;const pTodos: Boolean) : TStringList;
|
|
var
|
|
oSQL : TIBSQL;
|
|
Lista : TStringList;
|
|
begin
|
|
Lista := TStringList.Create;
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('select distinct (EXTRACT (YEAR FROM FECHAALTA)) ANO ');
|
|
SQL.Add('from FACTURASCLIENTE ');
|
|
SQL.Add('where (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
SQL.Add('order by FECHAALTA desc');
|
|
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
|
|
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
if pTodos then
|
|
Lista.Add(CTE_TODOS);
|
|
while not EOF do begin
|
|
Lista.Add(Fields[0].AsString);
|
|
Next;
|
|
end;
|
|
result := Lista;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
end.
|