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/BaseDatos/TablaFacturasCliente.pas
2007-06-26 08:08:27 +00:00

2179 lines
68 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: 25-12-2002
Versión actual: 1.0.3
Fecha versión actual: 06-10-2004
===============================================================================
Modificaciones:
Fecha Comentarios
---------------------------------------------------------------------------
08-06-2003 Revisión del método 'EsUltimaFactura' porque no se tenía
en cuenta la serie a la que pertenece la factura.
02-02-2004 Se ha eliminado el atributo SERIE (P8 MULTIEMPRESA)
Se ha adaptado a los nuevos contadores
06-10-2004 p26. Se ha eliminado la tabla DETALLESFACTURASCLIPROPIEDADES.
===============================================================================
}
unit TablaFacturasCliente;
interface
uses
//Generales
SysUtils, Classes, Controls, IBSQL, cxGridDBTableView, cxCustomData, DB,
//Particulares
IBCustomDataSet, cxGrid, StdCtrls, cxButtonEdit, cxEdit, cxMemo, cxCheckBox,
//Aplicacion
Framework, StrFunc, Entidades, Constantes, BaseDatos, RdxEmpresaActiva,
// Contador
Contadores, RdxGestorContadores;
type
TDatosFacturaCliente = class(TObjeto)
private
//
protected
procedure ObtenerDatos; override;
procedure AssignTo(Dest: TPersistent); override;
public
Codigo : String;
FechaAlta : TDateTime;
Usuario : String;
FechaFactura : TDateTime;
Situacion : String;
ClaseFactura : String;
CodigoCliente : String;
NIFCIF : String;
Nombre : String;
Calle : String;
Numero : String;
Piso : String;
CodigoPostal : String;
Poblacion : String;
Provincia : String;
Telefono1 : String;
Telefono2 : String;
Movil1 : String;
Movil2 : String;
Fax : String;
PersonaContacto : String;
BaseImponible : double;
Descuento : integer;
ImporteDescuento : double;
Iva : integer;
ImporteIva : double;
Re : integer;
ImporteRe : double;
ImporteTotal : double;
FormaPago : String;
Observaciones : String;
TipoFactura : String;
CodigoTrimestre : String;
constructor Create(CodigoFactura : String); overload;
constructor Create; overload; override;
destructor Destroy; override;
end;
TListaFacturasCliente = class(TListaObjetos)
private
FSQL : String;
function GetFactura(Index: Integer): TDatosFacturaCliente;
protected
procedure AssignTo(Dest: TPersistent); override;
procedure ObtenerLista; override;
public
constructor Create(oSQL : String); overload;
constructor Create; overload; override;
property Items[Index: Integer] : TDatosFacturaCliente read GetFactura;
end;
/////////////////////////////////////////////////////////////////////////////////
TdmTablaFacturasCliente = class(TDataModule)
private
procedure IniciarSQLFactura;
procedure IniciarSQLDetalles;
procedure IniciarSQLGrids;
public
sqlInsertarFactura : TStrings;
sqlModificarFactura : TStrings;
sqlConsultarFactura : TStrings;
sqlEliminarFactura : TStrings;
sqlConsultarGridFacturas : TStrings;
sqlInsertarDetalles : TStrings;
sqlModificarDetalles : TStrings;
sqlConsultarDetalles : TStrings;
sqlEliminarDetalles : TStrings;
sqlConsultarGridDetalles : TStrings;
sqlConsultarGridFacturasComisiones : TStrings;
sqlConsultarGridFacturasTrimestre : TStrings;
sqlConsultarGridFacturasCliente : TStrings;
sqlConsultarGridFacturasCliContrato : TStrings;
sqlInsertarPropiedades : TStrings;
sqlModificarPropiedades : TStrings;
sqlConsultarPropiedades : TStrings;
sqlEliminarPropiedades : TStrings;
sqlConsultarGridPropiedades : TStrings;
sqlConsultarGridPropiedadesModal : 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 CrearFactura(CodigoContrato, TipoFactura: String) : String;
function ExisteFacturaConContrato(CodigoContrato : String) : Boolean;
function ExisteFacturaConCliente(Codigo : Variant) : Boolean;
function RecalcularPreciosFactura(CodigoFactura : String) : Boolean;
function DarDatosFactura(Datos : TDatosFacturaCliente): Boolean;
function FormatearNumConcepto(NumConcepto : String) : String;
function ExisteCodigo(Codigo : String) : Boolean;
procedure InicializarGridDetalles(var Grid: TcxGridDBTableView);
procedure InicializarGridFacturas(var Grid: TcxGrid);
procedure InicializarGridListadoFacturasCliente(var Grid: TcxGrid);
procedure InicializarGridFacturasComisiones(var Grid: TcxGridDBTableView);
procedure InicializarTablaFacturas(Tabla: TPTabla);
procedure InicializarTablaDetalles(Tabla: TPTabla);
procedure InicializarGridFacturasTrimestre(var Grid: TcxGrid);
procedure InicializarGridFacturasCliContrato(var Grid: TcxGrid);
constructor Create (AOwner : TComponent); override;
destructor Destroy; override;
function DarSituaciones : TStrings;
function ModificarSituacionFactura(Codigo, Situacion, FormaPago : String): Boolean;
function ModificarSituacionFacturas(Codigos: TStrings; Situacion: String): Boolean;
function EsUltimaFactura(Codigo : String): Boolean;
function DarListaAnos: TStrings;
function ExistenFacturas: Boolean;
//Trimestres
function DarIvas : TStrings;
function DarIvasR : TStrings;
function DarTiposOp : TStrings;
function DarTiposOpDesTrimestral(var ListaCodigos: TStrings): TStrings;
function ComprobarTrimestreFactura(CodigoFactura: String): Boolean;
function AsignarTrimestre(CodigoFactura: String; CodigoTrimestre: String): Boolean;
end;
var
dmTablaFacturasCliente: TdmTablaFacturasCliente;
implementation
{$R *.DFM}
uses
Variants, TablaContratos, TablaEmpresas, TablaTrimestres, TablaDocumentos, Literales;
{ 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;
{ Propiedades }
sqlInsertarPropiedades := TStringList.Create;
sqlModificarPropiedades := TStringList.Create;
sqlConsultarPropiedades := TStringList.Create;
sqlEliminarPropiedades := TStringList.Create;
sqlConsultarGridPropiedades := TStringList.Create;
sqlConsultarGridPropiedadesModal := TStringList.Create;
{ Grids }
sqlConsultarGridFacturas := TStringList.Create;
sqlConsultarGridDetalles := TStringList.Create;
sqlConsultarGridFacturasComisiones := TStringList.Create;
sqlConsultarGridFacturasTrimestre := TStringList.Create;
sqlConsultarGridFacturasCliente := TStringList.Create;
sqlConsultarGridFacturasCliContrato := TStringList.Create;
IniciarSQLFactura;
IniciarSQLDetalles;
IniciarSQLGrids;
end;
function TdmTablaFacturasCliente.DarNuevoCodigo: String;
begin
Result := GestorContadores.darNuevoCodigo(contFacturasCliente);
end;
function TdmTablaFacturasCliente.DarSituaciones: TStrings;
var
Lista : TStringList;
begin
Result := NIL;
Lista := TStringList.Create;
with Lista do
begin
Clear;
Append('PENDIENTE');
Append('PAGADA');
end;
Result := Lista;
end;
destructor TdmTablaFacturasCliente.Destroy;
begin
{ Cabecera }
sqlInsertarFactura.Free;
sqlModificarFactura.Free;
sqlConsultarFactura.Free;
sqlEliminarFactura.Free;
{ Detalles }
sqlInsertarDetalles.Free;
sqlModificarDetalles.Free;
sqlConsultarDetalles.Free;
sqlEliminarDetalles.Free;
{ Propiedades }
sqlInsertarPropiedades.Free;
sqlModificarPropiedades.Free;
sqlConsultarPropiedades.Free;
sqlEliminarPropiedades.Free;
sqlConsultarGridPropiedades.Free;
sqlConsultarGridPropiedadesModal.Free;
{ Grids }
sqlConsultarGridFacturas.Free;
sqlConsultarGridDetalles.Free;
sqlConsultarGridFacturasComisiones.Free;
sqlConsultarGridFacturasTrimestre.Free;
sqlConsultarGridFacturasCliente.Free;
sqlConsultarGridFacturasCliContrato.Free;
inherited;
end;
function TdmTablaFacturasCliente.ExisteCodigo(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 CODIGOEMPRESA = :CODIGOEMPRESA');
SQL.Add(' and CODIGO = :CODIGO');
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
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.FormatearNumConcepto(
NumConcepto: String): String;
var
Concepto : Integer;
begin
Concepto := StrToInt(NumConcepto);
Result := format('%.10d', [Concepto]);
end;
function TdmTablaFacturasCliente.IncrementarCodigo: boolean;
begin
Result := GestorContadores.IncrementarValor(contFacturasCliente);
end;
procedure TdmTablaFacturasCliente.InicializarGridDetalles(var Grid: TcxGridDBTableView);
var
Columna : TcxGridDBColumn;
begin
with Grid do
begin
OptionsView.Footer := True;
{Columna CODIGOEMPRESA}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'CODIGOEMPRESA';
Columna.Visible := False;
Columna.Options.Filtering := False;
Columna.Options.Sorting := False;
{Columna CODIGOFACTURA}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'CODIGOFACTURA';
Columna.Visible := False;
Columna.Options.Filtering := False;
Columna.Options.Sorting := False;
{Columna NUMCONCEPTO}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'NUMCONCEPTO';
Columna.Visible := False;
Columna.Options.Filtering := False;
Columna.Options.Sorting := False;
{Columna CODIGOARTICULO}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'CODIGOARTICULO';
Columna.Caption := 'Cód. artículo';
Columna.Width := tamColCodigo;
Columna.Options.Filtering := False;
Columna.Options.Sorting := False;
Columna.PropertiesClassName := 'TcxButtonEditProperties';
with TcxButtonEditProperties(Columna.Properties) do
begin
Buttons[0].Kind := bkEllipsis;
end;
Columna.Visible := False;
{Columna REFERENCIA}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'REFERENCIA';
Columna.Caption := 'Referencia';
Columna.Width := tamColReferencia;
Columna.Options.Filtering := False;
Columna.Options.Sorting := False;
Columna.PropertiesClassName := 'TcxButtonEditProperties';
with TcxButtonEditProperties(Columna.Properties) do
begin
Buttons[0].Kind := bkEllipsis;
end;
{Columna DESCRIPCION}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'DESCRIPCION';
Columna.Caption := 'Descripción servicio/artículo';
Columna.Width := tamColDescripcion;
Columna.Options.Filtering := False;
Columna.Options.Sorting := False;
Columna.PropertiesClassName := 'TcxMemoProperties';
with TcxMemoProperties(Columna.Properties) do
ScrollBars := ssVertical;
with TcxGridDBTableSummaryItem(DataController.Summary.FooterSummaryItems.Add) do
try
try
BeginUpdate;
Column := Columna;
FieldName := Columna.DataBinding.FieldName;
Format := 'Total: #,0 conceptos';
Kind := skCount;
finally
EndUpdate;
end;
except
DataController.Summary.FooterSummaryItems.Delete(DataController.Summary.FooterSummaryItems.Count-1);
end;
{Columna CANTIDAD}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'CANTIDAD';
Columna.Caption := 'Cantidad';
Columna.Width := tamColCantidad;
Columna.Options.Filtering := False;
Columna.Options.Sorting := False;
Columna.PropertiesClassName := 'TcxCalcEditProperties';
{Columna IMPORTEUNIDAD}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'IMPORTEUNIDAD';
Columna.Caption := 'Importe unidad';
Columna.Width := tamColImporte;
Columna.Options.Filtering := False;
Columna.Options.Sorting := False;
Columna.PropertiesClassName := 'TcxCalcEditProperties';
{Columna IMPORTETOTAL}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'IMPORTETOTAL';
Columna.Caption := 'Importe total';
Columna.Width := tamColImporte;
Columna.Options.Filtering := False;
Columna.Options.Sorting := False;
Columna.Options.Editing := False;
with TcxGridDBTableSummaryItem(DataController.Summary.FooterSummaryItems.Add) do
try
try
BeginUpdate;
Column := Columna;
FieldName := Columna.DataBinding.FieldName;
Format := '#,0.00 €';
Kind := skSum;
finally
EndUpdate;
end;
except
DataController.Summary.FooterSummaryItems.Delete(DataController.Summary.FooterSummaryItems.Count-1);
end;
end;
end;
procedure TdmTablaFacturasCliente.InicializarGridFacturas(var Grid: TcxGrid);
var
Columna : TcxGridDBColumn;
begin
with (Grid.ActiveView as TcxGridDBTableView) do
begin
OptionsView.Footer := True;
{Columna CODIGO}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'CODIGO';
Columna.Caption := 'Código';
Columna.Width := tamColCodigo;
Columna.Options.Filtering := False;
Columna.SortOrder := soDescending;
with TcxGridDBTableSummaryItem(DataController.Summary.FooterSummaryItems.Add) do
try
try
BeginUpdate;
Column := Columna;
FieldName := Columna.DataBinding.FieldName;
Format := 'Total: 0 facturas';
Kind := skCount;
finally
EndUpdate;
end;
except
DataController.Summary.FooterSummaryItems.Delete(DataController.Summary.FooterSummaryItems.Count-1);
end;
{Columna CLASEFACTURA}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'CLASEFACTURA';
Columna.Caption := 'Clase factura';
Columna.Options.Filtering := False;
Columna.Visible := False;
{Columna FECHAFACTURA}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'FECHAFACTURA';
Columna.Caption := 'Fecha';
Columna.Width := tamColFecha;
Columna.Options.Filtering := False;
{Columna DESCRIPCION}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'DESCRIPCION';
Columna.Caption := 'Documento';
Columna.Width := tamColDocumentos;
Columna.Options.Filtering := False;
{Columna CODIGOCLIENTE}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'CODIGOCLIENTE';
Columna.Caption := 'Cód. cliente';
Columna.Width := tamColCodigo;
Columna.Options.Filtering := False;
{Columna NIFCIF}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'NIFCIF';
Columna.Caption := 'NIF/CIF';
Columna.Width := tamColNIFCIF;
Columna.Options.Filtering := False;
{Columna NOMBRE}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'NOMBRE';
Columna.Caption := 'Nombre';
Columna.Width := tamColNombre;
Columna.Options.Filtering := False;
{Columna SITUACION}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'SITUACION';
Columna.Caption := 'Situación';
Columna.Width := tamColSituacion;
Columna.Options.Filtering := False;
{Columna IMPORTETOTAL}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'IMPORTETOTAL';
Columna.Caption := 'Importe total';
Columna.HeaderAlignmentHorz := taRightJustify;
Columna.Width := tamColImporte;
Columna.Options.Filtering := False;
{Columna CODIGOCONTRATO}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'CODIGOCONTRATO';
Columna.Caption := 'Contrato';
Columna.Width := tamColCodigo;
Columna.Options.Filtering := False;
end;
end;
procedure TdmTablaFacturasCliente.InicializarTablaDetalles(Tabla: TPTabla);
begin
with Tabla^.Fields do
begin
if FindField('CANTIDAD') <> NIL then
with (FieldByName('CANTIDAD') as TNumericField) do begin
DisplayFormat := DISPLAY_CANTIDAD;
EditFormat := EDIT_CANTIDAD;
end;
if FindField('IMPORTEUNIDAD') <> NIL then
with (FieldByName('IMPORTEUNIDAD') as TFloatField) do begin
DisplayFormat := DISPLAY_EUROS2;
EditFormat := EDIT_EUROS2;
end;
if FindField('IMPORTETOTAL') <> NIL then
with (FieldByName('IMPORTETOTAL') 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('BASEIMPONIBLE') <> NIL then
with (FieldByName('BASEIMPONIBLE') 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 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 TIBBCDField) do begin
DisplayFormat := DISPLAY_EUROS2;
EditFormat := EDIT_EUROS2;
end;
if FindField('RE') <> NIL then
with (FieldByName('RE') as TFloatField) do begin
DisplayFormat := DISPLAY_DTO;
EditFormat := EDIT_DTO;
end;
if FindField('IMPORTERE') <> NIL then
with (FieldByName('IMPORTERE') as TIBBCDField) do begin
DisplayFormat := DISPLAY_EUROS2;
EditFormat := EDIT_EUROS2;
end;
if FindField('IMPORTETOTAL') <> NIL then
with (FieldByName('IMPORTETOTAL') as TNumericField) do begin
DisplayFormat := DISPLAY_EUROS2;
EditFormat := EDIT_EUROS2;
end;
end;
end;
procedure TdmTablaFacturasCliente.IniciarSQLDetalles;
begin
with sqlInsertarDetalles do
begin
Add('INSERT INTO DETALLESFACTURASCLIARTICULOS ( ');
Add('CODIGOEMPRESA, CODIGOFACTURA, NUMCONCEPTO, ');
Add('CODIGOARTICULO, REFERENCIA, ');
Add('DESCRIPCION, CANTIDAD, ');
Add('IMPORTEUNIDAD, IMPORTETOTAL) ');
Add('VALUES ( ');
Add(':CODIGOEMPRESA, :CODIGOFACTURA, :NUMCONCEPTO, ');
Add(':CODIGOARTICULO, :REFERENCIA, ');
Add(':DESCRIPCION, :CANTIDAD, ');
Add(':IMPORTEUNIDAD, :IMPORTETOTAL) ');
end;
with sqlModificarDetalles do
begin
Add('UPDATE DETALLESFACTURASCLIARTICULOS SET ');
Add('CODIGOARTICULO = :CODIGOARTICULO, ');
Add('REFERENCIA = :REFERENCIA, ');
Add('DESCRIPCION = :DESCRIPCION, ');
Add('CANTIDAD = :CANTIDAD, ');
Add('IMPORTEUNIDAD = :IMPORTEUNIDAD, ');
Add('IMPORTETOTAL = :IMPORTETOTAL ');
Add('WHERE (CODIGOEMPRESA = :CODIGOEMPRESA) AND ');
Add('(CODIGOFACTURA = :CODIGOFACTURA) AND ');
Add('(NUMCONCEPTO = :NUMCONCEPTO) ');
end;
with sqlEliminarDetalles do
begin
Add('delete from DETALLESFACTURASCLIARTICULOS ');
Add('WHERE (CODIGOEMPRESA = :CODIGOEMPRESA) AND ');
Add('(CODIGOFACTURA = :CODIGOFACTURA) AND ');
Add('(NUMCONCEPTO = :NUMCONCEPTO) ');
end;
with sqlConsultarDetalles do
begin
Add('select CODIGOFACTURA, NUMCONCEPTO, CODIGOARTICULO, REFERENCIA, ');
Add('DESCRIPCION, CANTIDAD, IMPORTEUNIDAD, IMPORTETOTAL ');
Add('from DETALLESFACTURASCLIARTICULOS ');
Add('WHERE (CODIGOEMPRESA = :CODIGOEMPRESA) AND ');
Add('(CODIGOFACTURA = :CODIGOFACTURA) AND ');
Add('(NUMCONCEPTO = :NUMCONCEPTO) ');
end;
end;
procedure TdmTablaFacturasCliente.IniciarSQLGrids;
begin
with sqlConsultarGridFacturas do
begin
Add('select FAC.CODIGO, FAC.CLASEFACTURA, FAC.SITUACION, ');
Add('FAC.FECHAALTA, FAC.FECHAFACTURA, FAC.CODIGOCLIENTE, FAC.NIFCIF, ');
Add('FAC.NOMBRE, FAC.IMPORTETOTAL, FAC.CODIGODOCUMENTO, DOC.DESCRIPCION, ');
Add('FAC.CODIGOCONTRATO ');
Add('from FACTURASCLIENTE FAC, DOCUMENTOS DOC ');
Add('WHERE (FAC.CODIGOEMPRESA = :CODIGOEMPRESA) AND ');
Add('(DOC.CODIGO = FAC.CODIGODOCUMENTO)');
end;
with sqlConsultarGridDetalles do
begin
Add('select CODIGOEMPRESA, CODIGOFACTURA, NUMCONCEPTO, CODIGOARTICULO, REFERENCIA, ');
Add('DESCRIPCION, CANTIDAD, IMPORTEUNIDAD, IMPORTETOTAL ');
Add('from DETALLESFACTURASCLIARTICULOS ');
Add('WHERE (CODIGOEMPRESA = :CODIGOEMPRESA) AND ');
Add('(CODIGOFACTURA = :CODIGOFACTURA) ');
Add('order by CODIGOFACTURA, NUMCONCEPTO');
end;
with sqlConsultarGridFacturasComisiones do
begin
Add('select 1 as SELECCION, CODIGO, SITUACION, FECHAALTA, FECHAFACTURA,');
Add('CODIGOCLIENTE, NIFCIF, NOMBRE, IMPORTETOTAL, CLASEFACTURA ');
Add('from FACTURASCLIENTE ');
Add('WHERE (CODIGOEMPRESA = :CODIGOEMPRESA)');
Add('AND (COMISION = 1)');
Add('AND (FECHAFACTURA between :FECHAINI and :FECHAFIN)');
end;
with sqlConsultarGridFacturasTrimestre do
begin
Add('select FC.CODIGO, FC.SITUACION, FC.FECHAFACTURA, FC.CODIGOCLIENTE, ');
Add('FC.TIPOFACTURA, FC.CLASEFACTURA, FC.NIFCIF, FC.NOMBRE, FC.BASEIMPONIBLE, ');
Add('FC.IMPORTEDESCUENTO, FC.IMPORTEIVA, FC.IMPORTERE, ');
Add('FC.IMPORTETOTAL, FC.CODIGOTRIMESTRE, T.SITUACION as SITUACIONTRIMESTRE ');
Add('from FACTURASCLIENTE FC, TRIMESTRES T');
Add('WHERE (FC.CODIGOEMPRESA = T.CODIGOEMPRESA) AND ');
Add('(FC.CODIGOTRIMESTRE = T.CODIGO) AND ');
Add('(FC.CODIGOEMPRESA = :CODIGOEMPRESA)');
end;
with sqlConsultarGridFacturasCliente do
begin
Add('select CODIGO, CLASEFACTURA, SITUACION, FECHAALTA, FECHAFACTURA,');
Add('CODIGOCLIENTE, NIFCIF, NOMBRE, IMPORTETOTAL ');
Add('from FACTURASCLIENTE ');
Add('WHERE (CODIGOEMPRESA = :CODIGOEMPRESA) AND ');
Add('(CODIGOCLIENTE = :CODIGOCLIENTE)');
end;
with sqlConsultarGridFacturasCliContrato do
begin
Add('select codigo, fechafactura, nifcif, nombre, importetotal, codigocontrato ');
Add('from facturascliente ');
Add('WHERE (CODIGOEMPRESA = :CODIGOEMPRESA) AND ');
Add('(codigocontrato = :CODIGOCONTRATO)');
Add('order by CODIGO');
end;
end;
procedure TdmTablaFacturasCliente.IniciarSQLFactura;
begin
with sqlInsertarFactura do
begin
Add('INSERT INTO FACTURASCLIENTE ');
Add('(CODIGOEMPRESA, CODIGO, FECHAALTA, FECHAFACTURA, ');
Add('SITUACION, CLASEFACTURA, ');
Add('CODIGOCLIENTE, NIFCIF, NOMBRE, ');
Add('CALLE, NUMERO, PISO, ');
Add('CODIGOPOSTAL, POBLACION, PROVINCIA, ');
Add('TELEFONO1, TELEFONO2, MOVIL1, ');
Add('MOVIL2, FAX, PERSONACONTACTO, ');
Add('BASEIMPONIBLE, DESCUENTO, IMPORTEDESCUENTO, ');
Add('IVA, IMPORTEIVA, IMPORTETOTAL, RE, IMPORTERE, ');
Add('FORMAPAGO, OBSERVACIONES, ');
Add('USUARIO, CODIGOTRIMESTRE, TIPOFACTURA, CODIGODOCUMENTO, COMISION) VALUES ');
Add('(:CODIGOEMPRESA, :CODIGO, :FECHAALTA, ');
Add(':FECHAFACTURA, ');
Add(':SITUACION, :CLASEFACTURA, ');
Add(':CODIGOCLIENTE, :NIFCIF, ');
Add(':NOMBRE, :CALLE, :NUMERO, ');
Add(':PISO, :CODIGOPOSTAL, ');
Add(':POBLACION, :PROVINCIA, ');
Add(':TELEFONO1, :TELEFONO2, ');
Add(':MOVIL1, :MOVIL2, ');
Add(':FAX, :PERSONACONTACTO, ');
Add(':BASEIMPONIBLE, :DESCUENTO, ');
Add(':IMPORTEDESCUENTO, :IVA, ');
Add(':IMPORTEIVA, :IMPORTETOTAL, ');
Add(':RE, :IMPORTERE, ');
Add(':FORMAPAGO, :OBSERVACIONES, ');
Add(':USUARIO, :CODIGOTRIMESTRE, :TIPOFACTURA, :CODIGODOCUMENTO, :COMISION) ');
end;
with sqlModificarFactura do
begin
Add('UPDATE FACTURASCLIENTE SET ');
Add('FECHAFACTURA = :FECHAFACTURA, ');
Add('SITUACION = :SITUACION, ');
Add('CLASEFACTURA = :CLASEFACTURA, ');
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('TELEFONO1 = :TELEFONO1, ');
Add('TELEFONO2 = :TELEFONO2, ');
Add('MOVIL1 = :MOVIL1, ');
Add('MOVIL2 = :MOVIL2, ');
Add('FAX = :FAX, ');
Add('PERSONACONTACTO = :PERSONACONTACTO, ');
Add('BASEIMPONIBLE = :BASEIMPONIBLE, ');
Add('DESCUENTO = :DESCUENTO, ');
Add('IMPORTEDESCUENTO = :IMPORTEDESCUENTO, ');
Add('IVA = :IVA, ');
Add('IMPORTEIVA = :IMPORTEIVA, ');
Add('RE = :RE, ');
Add('IMPORTERE = :IMPORTERE, ');
Add('IMPORTETOTAL = :IMPORTETOTAL, ');
Add('FORMAPAGO = :FORMAPAGO, ');
Add('OBSERVACIONES = :OBSERVACIONES, ');
Add('CODIGOTRIMESTRE = :CODIGOTRIMESTRE, ');
Add('CODIGODOCUMENTO = :CODIGODOCUMENTO, ');
Add('COMISION = :COMISION ');
Add('WHERE CODIGOEMPRESA = :CODIGOEMPRESA');
Add(' AND (CODIGO = :CODIGO)');
end;
with sqlEliminarFactura do
begin
Add('delete from FACTURASCLIENTE ');
Add('WHERE CODIGOEMPRESA = :CODIGOEMPRESA');
Add(' AND CODIGO = :CODIGO');
end;
with sqlConsultarFactura do
begin
Add('SELECT * FROM FACTURASCLIENTE ');
Add('WHERE CODIGOEMPRESA = :CODIGOEMPRESA');
Add(' and CODIGO = :CODIGO');
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.ModificarSituacionFactura(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, ');
SQL.Add('FORMAPAGO = :FORMAPAGO ');
SQL.Add('where CODIGOEMPRESA = :CODIGOEMPRESA');
SQL.Add(' and CODIGO = :CODIGO');
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
ParamByName('CODIGO').AsString := Codigo;
ParamByName('SITUACION').AsString := Situacion;
ParamByName('FORMAPAGO').AsString := FormaPago;
try
Prepare;
ExecQuery;
Result := True;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
function TdmTablaFacturasCliente.DecrementarCodigo: boolean;
begin
Result := GestorContadores.decrementarValor(contFacturasCliente);
end;
function TdmTablaFacturasCliente.DarDatosFactura(Datos: TDatosFacturaCliente): Boolean;
var
oSQL : TIBSQL;
begin
Result := False;
if EsCadenaVacia(Datos.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 CODIGOEMPRESA = :CODIGOEMPRESA');
SQL.Add('and CODIGO = :CODIGO');
try
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
ParamByName('CODIGO').AsString := Datos.Codigo;
Prepare;
ExecQuery;
if (RecordCount > 0) then
begin
with Datos do
begin
FechaAlta := FieldByName('FECHAALTA').AsDateTime;
Usuario := FieldByName('USUARIO').AsString;
FechaFactura := FieldByName('FECHAFACTURA').AsDateTime;
Situacion := FieldByName('SITUACION').AsString;
ClaseFactura := FieldByName('CLASEFACTURA').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;
Telefono1 := FieldByName('TELEFONO1').AsString;
Telefono2 := FieldByName('TELEFONO2').AsString;
Movil1 := FieldByName('MOVIL1').AsString;
Movil2 := FieldByName('MOVIL2').AsString;
Fax := FieldByName('FAX').AsString;
PersonaContacto := FieldByName('PERSONACONTACTO').AsString;
BaseImponible := FieldByName('BASEIMPONIBLE').AsDouble;
Descuento := FieldByName('DESCUENTO').AsInteger;
ImporteDescuento := FieldByName('IMPORTEDESCUENTO').AsDouble;
Iva := FieldByName('IVA').AsInteger;
ImporteIva := FieldByName('IMPORTEIVA').AsDouble;
Re := FieldByName('RE').AsInteger;
ImporteRe := FieldByName('IMPORTERE').AsDouble;
ImporteTotal := FieldByName('IMPORTETOTAL').AsDouble;
FormaPago := FieldByName('FORMAPAGO').AsString;
TipoFactura := FieldByName('TIPOFACTURA').AsString;
CodigoTrimestre := FieldByName('CODIGOTRIMESTRE').AsString;
Observaciones := FieldByName('OBSERVACIONES').AsString;
Result := True;
end;
end;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
function TdmTablaFacturasCliente.EsUltimaFactura(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 CODIGOEMPRESA = :CODIGOEMPRESA');
SQL.Add(' and CODIGO > :CODIGO');
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
ParamByName('CODIGO').AsString := Codigo;
try
Prepare;
ExecQuery;
if Fields[0].AsInteger = 0 then
Result := True;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
procedure TdmTablaFacturasCliente.InicializarGridFacturasComisiones(var Grid: TcxGridDBTableView);
var
Columna : TcxGridDBColumn;
begin
with Grid do begin
{Columna SELECCION}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'SELECCION';
Columna.Caption := ' ';
Columna.Width := 20;
Columna.PropertiesClassName := 'TcxCheckBoxProperties';
Columna.Options.Filtering := False;
with TcxCheckBoxProperties(Columna.Properties) do begin
DisplayUnchecked := 'False';
ImmediatePost := True;
ValueChecked := 1;
ValueUnchecked := 0;
end;
{Columna CODIGO}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'CODIGO';
Columna.Caption := 'Código';
Columna.Width := tamColCodigo;
Columna.Options.Filtering := False;
Columna.Options.Editing := False;
{Columna CLASEFACTURA}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'CLASEFACTURA';
Columna.Caption := 'Clase factura';
Columna.Options.Filtering := False;
Columna.Visible := False;
{Columna SITUACION}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'SITUACION';
Columna.Caption := 'Situación';
Columna.Width := tamColSituacion;
Columna.Options.Filtering := False;
Columna.Options.Editing := False;
{Columna FECHAFACTURA}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'FECHAFACTURA';
Columna.Caption := 'Fecha';
Columna.Width := tamColFecha;
Columna.Options.Filtering := False;
Columna.Options.Editing := False;
Columna.SortOrder := soDescending;
{Columna CODIGOCLIENTE}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'CODIGOCLIENTE';
Columna.Caption := 'Cód. cliente';
Columna.Width := tamColCodigo;
Columna.Options.Filtering := False;
Columna.Options.Editing := False;
{Columna NIFCIF}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'NIFCIF';
Columna.Caption := 'NIF/CIF';
Columna.Width := tamColNIFCIF;
Columna.Options.Filtering := False;
Columna.Options.Editing := False;
{Columna NOMBRE}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'NOMBRE';
Columna.Caption := 'Nombre';
Columna.Width := tamColNombre;
Columna.Options.Filtering := False;
Columna.Options.Editing := False;
{Columna IMPORTETOTAL}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'IMPORTETOTAL';
Columna.HeaderAlignmentHorz := taRightJustify;
Columna.Caption := 'Importe total';
Columna.Width := tamColImporte;
Columna.Options.Filtering := False;
Columna.Options.Editing := False;
end;
end;
function TdmTablaFacturasCliente.DarIvas: 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 distinct(IVA) ');
SQL.Add('from FACTURASCLIENTE ');
SQL.Add('where CODIGOEMPRESA = :CODIGOEMPRESA');
SQL.Add(' and IVA is not null ');
SQL.Add('order by IVA descending');
try
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
Prepare;
ExecQuery;
while not EOF do begin
Lista.Append(Fields[0].AsString);
Next;
end;
Result := Lista;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
function TdmTablaFacturasCliente.DarIvasR: 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 distinct(RE) ');
SQL.Add('from FACTURASCLIENTE ');
SQL.Add('where CODIGOEMPRESA = :CODIGOEMPRESA');
SQL.Add(' and RE is not null ');
SQL.Add('order by RE descending');
try
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
Prepare;
ExecQuery;
while not EOF do begin
Lista.Append(Fields[0].AsString);
Next;
end;
Result := Lista;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
function TdmTablaFacturasCliente.AsignarTrimestre(CodigoFactura, CodigoTrimestre: String): Boolean;
var
oSQL : TIBSQL;
begin
Result := False;
if EsCadenaVacia(CodigoFactura) or EsCadenaVacia(CodigoTrimestre) then
Exit;
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('update FACTURASCLIENTE ');
SQL.Add('set CODIGOTRIMESTRE = :CODIGOTRIMESTRE ');
SQL.Add('where CODIGOEMPRESA = :CODIGOEMPRESA');
SQL.Add(' and CODIGO = :CODIGO');
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
ParamByName('CODIGO').AsString := CodigoFactura;
ParamByName('CODIGOTRIMESTRE').AsString := CodigoTrimestre;
try
Prepare;
ExecQuery;
Result := True;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
function TdmTablaFacturasCliente.ComprobarTrimestreFactura(CodigoFactura: String): Boolean;
var
oSQL : TIBSQL;
begin
Result := False;
if EsCadenaVacia(CodigoFactura) then
Exit;
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('select TR.SITUACION ');
SQL.Add('from FACTURASCLIENTE FC, TRIMESTRES TR ');
SQL.Add('where FC.CODIGOEMPRESA = TR.CODIGOEMPRESA');
SQL.Add(' and FC.CODIGOTRIMESTRE = TR.CODIGO');
SQL.Add(' and FC.CODIGOEMPRESA = :CODIGOEMPRESA');
SQL.Add(' and FC.CODIGO = :CODIGO ');
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
ParamByName('CODIGO').AsString := CodigoFactura;
try
Prepare;
ExecQuery;
Result := (Fields[0].AsString = 'A');
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
function TdmTablaFacturasCliente.DarTiposOp: 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 ');
SQL.Add('from TIPOSFACTURAS ');
SQL.Add('where ENTIDAD = ''CLIENTE'' ');
SQL.Add('order by CODIGO');
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;
procedure TdmTablaFacturasCliente.InicializarGridFacturasTrimestre(var Grid: TcxGrid);
var
Columna : TcxGridDBColumn;
begin
with (Grid.ActiveView as TcxGridDBTableView) do
begin
ClearItems;
OptionsView.Footer := True;
{Columna CODIGO}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'CODIGO';
Columna.Caption := 'Código';
Columna.Width := tamColCodigo;
Columna.Options.Filtering := False;
with TcxGridDBTableSummaryItem(DataController.Summary.FooterSummaryItems.Add) do
try
try
BeginUpdate;
Column := Columna;
FieldName := Columna.DataBinding.FieldName;
Format := 'Total: 0 facturas';
Kind := skCount;
finally
EndUpdate;
end;
except
DataController.Summary.FooterSummaryItems.Delete(DataController.Summary.FooterSummaryItems.Count-1);
end;
{Columna CODIGOCLIENTE}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'CODIGOTRIMESTRE';
Columna.Caption := 'Cód. Trie';
Columna.Width := tamColCodigo;
Columna.Options.Filtering := False;
Columna.Visible := False;
{Columna CLASEFACTURA}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'CLASEFACTURA';
Columna.Caption := 'Clase factura';
Columna.Options.Filtering := False;
Columna.Visible := False;
{Columna TIPOFACTURA}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'TIPOFACTURA';
Columna.Caption := 'Tipo factura';
Columna.Options.Filtering := False;
Columna.Visible := False;
{Columna FECHAFACTURA}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'FECHAFACTURA';
Columna.Caption := 'Fecha';
Columna.Width := tamColFecha;
Columna.Options.Filtering := False;
Columna.SortOrder := soDescending;
{Columna CODIGOCLIENTE}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'CODIGOCLIENTE';
Columna.Caption := 'Cód. cliente';
Columna.Width := tamColCodigo;
Columna.Options.Filtering := False;
{Columna NIFCIF}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'NIFCIF';
Columna.Caption := 'NIF/CIF';
Columna.Width := tamColNIFCIF;
Columna.Options.Filtering := False;
{Columna NOMBRE}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'NOMBRE';
Columna.Caption := 'Nombre';
Columna.Width := tamColNombreCorto;
Columna.Options.Filtering := False;
{Columna SITUACION}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'SITUACION';
Columna.Caption := 'Situación';
Columna.Width := tamColSituacion;
Columna.Options.Filtering := False;
{Columna BASEIMPONIBLE}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'BASEIMPONIBLE';
Columna.Caption := 'Base imponible';
Columna.HeaderAlignmentHorz := taRightJustify;
Columna.Width := tamColImporte;
Columna.Options.Filtering := False;
Columna.PropertiesClassName := 'TcxCurrencyEdit';
with TcxGridDBTableSummaryItem(DataController.Summary.FooterSummaryItems.Add) do
try
try
BeginUpdate;
Column := Columna;
FieldName := Columna.DataBinding.FieldName;
Format := '0,0.00 €';
Kind := skSum;
finally
EndUpdate;
end;
except
DataController.Summary.FooterSummaryItems.Delete(DataController.Summary.FooterSummaryItems.Count-1);
end;
{Columna IMPORTEDESCUENTO}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'IMPORTEDESCUENTO';
Columna.Caption := 'Importe DTO.';
Columna.HeaderAlignmentHorz := taRightJustify;
Columna.Width := tamColImporte;
Columna.Options.Filtering := False;
Columna.PropertiesClassName := 'TcxCurrencyEdit';
with TcxGridDBTableSummaryItem(DataController.Summary.FooterSummaryItems.Add) do
try
try
BeginUpdate;
Column := Columna;
FieldName := Columna.DataBinding.FieldName;
Format := '0,0.00 €';
Kind := skSum;
finally
EndUpdate;
end;
except
DataController.Summary.FooterSummaryItems.Delete(DataController.Summary.FooterSummaryItems.Count-1);
end;
{Columna IMPORTEIVA}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'IMPORTEIVA';
Columna.Caption := 'Importe IVA';
Columna.HeaderAlignmentHorz := taRightJustify;
Columna.Width := tamColImporte;
Columna.Options.Filtering := False;
Columna.PropertiesClassName := 'TcxCurrencyEdit';
with TcxGridDBTableSummaryItem(DataController.Summary.FooterSummaryItems.Add) do
try
try
BeginUpdate;
Column := Columna;
FieldName := Columna.DataBinding.FieldName;
Format := '0,0.00 €';
Kind := skSum;
finally
EndUpdate;
end;
except
DataController.Summary.FooterSummaryItems.Delete(DataController.Summary.FooterSummaryItems.Count-1);
end;
{Columna IMPORTERE}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'IMPORTERE';
Columna.Caption := 'Importe RE.';
Columna.HeaderAlignmentHorz := taRightJustify;
Columna.Width := tamColImporte;
Columna.Options.Filtering := False;
Columna.PropertiesClassName := 'TcxCurrencyEdit';
with TcxGridDBTableSummaryItem(DataController.Summary.FooterSummaryItems.Add) do
try
try
BeginUpdate;
Column := Columna;
FieldName := Columna.DataBinding.FieldName;
Format := '0,0.00 €';
Kind := skSum;
finally
EndUpdate;
end;
except
DataController.Summary.FooterSummaryItems.Delete(DataController.Summary.FooterSummaryItems.Count-1);
end;
{Columna IMPORTETOTAL}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'IMPORTETOTAL';
Columna.Caption := 'Importe total';
Columna.HeaderAlignmentHorz := taRightJustify;
Columna.Width := tamColImporte;
Columna.Options.Filtering := False;
Columna.PropertiesClassName := 'TcxCurrencyEdit';
with TcxGridDBTableSummaryItem(DataController.Summary.FooterSummaryItems.Add) do
try
try
BeginUpdate;
Column := Columna;
FieldName := Columna.DataBinding.FieldName;
Format := '0,0.00 €';
Kind := skSum;
finally
EndUpdate;
end;
except
DataController.Summary.FooterSummaryItems.Delete(DataController.Summary.FooterSummaryItems.Count-1);
end;
end;
end;
{ TDatosFacturaCliente }
procedure TDatosFacturaCliente.AssignTo(Dest: TPersistent);
begin
inherited;
//
end;
constructor TDatosFacturaCliente.Create(CodigoFactura: String);
begin
inherited Create;
Codigo := CodigoFactura;
ObtenerDatos;
end;
constructor TDatosFacturaCliente.Create;
begin
inherited Create;
end;
destructor TDatosFacturaCliente.Destroy;
begin
inherited;
end;
procedure TDatosFacturaCliente.ObtenerDatos;
var
oSQL : TIBSQL;
begin
if EsCadenaVacia(Codigo) then
Exit;
oSQL := TIBSQL.Create(nil);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('select * from FACTURASCLIENTE ');
SQL.Add('where CODIGOEMPRESA = :CODIGOEMPRESA');
SQL.Add(' and CODIGO = :CODIGO');
try
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
ParamByName('CODIGO').AsString := Codigo;
Prepare;
ExecQuery;
if (RecordCount > 0) then
begin
FechaAlta := FieldByName('FECHAALTA').AsDateTime;
FechaFactura := FieldByName('FECHAFACTURA').AsDateTime;
FormaPago := FieldByName('FORMAPAGO').AsString;
Situacion := FieldByName('SITUACION').AsString;
Usuario := FieldByName('USUARIO').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;
Telefono1 := FieldByName('TELEFONO1').AsString;
Telefono2 := FieldByName('TELEFONO2').AsString;
Movil1 := FieldByName('MOVIL1').AsString;
Movil2 := FieldByName('MOVIL2').AsString;
Fax := FieldByName('FAX').AsString;
BaseImponible := FieldByName('BASEIMPONIBLE').AsFloat;
Descuento := FieldByName('DESCUENTO').AsInteger;
Iva := FieldByName('IVA').AsInteger;
ImporteDescuento := FieldByName('IMPORTEDESCUENTO').AsFloat;
ImporteIva := FieldByName('IMPORTEIVA').AsFloat;
RE := FieldByName('RE').AsInteger;
ImporteRE := FieldByName('IMPORTERE').AsFloat;
ImporteTotal := FieldByName('IMPORTETOTAL').AsFloat;
ClaseFactura := FieldByName('CLASEFACTURA').AsString;
CodigoTrimestre := FieldByName('CODIGOTRIMESTRE').AsString;
end;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
{ TListaFacturasCliente }
procedure TListaFacturasCliente.AssignTo(Dest: TPersistent);
begin
inherited;
end;
constructor TListaFacturasCliente.Create(oSQL: String);
begin
inherited Create;
FSQL := oSQL;
ObtenerLista;
end;
constructor TListaFacturasCliente.Create;
begin
inherited Create;
FSQL := 'select CODIGO from FACTURASCLIENTE';
FSQL := FSQL + ' where CODIGOEMPRESA = :CODIGOEMPRESA';
ObtenerLista;
end;
function TListaFacturasCliente.GetFactura(
Index: Integer): TDatosFacturaCliente;
begin
Result := TDatosFacturaCliente(FLista.Items[Index]);
end;
procedure TListaFacturasCliente.ObtenerLista;
var
oSQL : TIBSQL;
Factura : TDatosFacturaCliente;
begin
oSQL := TIBSQL.Create(nil);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Text := FSQL;
try
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
Prepare;
ExecQuery;
while not EOF do begin
Factura := TDatosFacturaCliente.Create(FieldByName('CODIGO').AsString);
FLista.Add(Factura);
Next;
end;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
procedure TdmTablaFacturasCliente.InicializarGridListadoFacturasCliente(var Grid: TcxGrid);
var
Columna : TcxGridDBColumn;
begin
with (Grid.ActiveView as TcxGridDBTableView) do
begin
OptionsView.Footer := True;
{Columna CODIGO}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'CODIGO';
Columna.Caption := 'Código';
Columna.Width := tamColCodigo;
Columna.Options.Filtering := False;
{Columna CLASEFACTURA}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'CLASEFACTURA';
Columna.Caption := 'Clase factura';
Columna.Options.Filtering := False;
Columna.Visible := False;
{Columna FECHAFACTURA}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'FECHAFACTURA';
Columna.Caption := 'Fecha';
Columna.Width := tamColFecha;
Columna.Options.Filtering := False;
Columna.SortOrder := soDescending;
{Columna SITUACION}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'SITUACION';
Columna.Caption := 'Situación';
Columna.Width := tamColSituacion;
Columna.Options.Filtering := False;
{Columna IMPORTETOTAL}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'IMPORTETOTAL';
Columna.Caption := 'Importe total';
Columna.HeaderAlignmentHorz := taRightJustify;
Columna.Width := tamColImporte;
Columna.Options.Filtering := False;
with TcxGridDBTableSummaryItem(DataController.Summary.FooterSummaryItems.Add) do
try
try
BeginUpdate;
Column := Columna;
FieldName := Columna.DataBinding.FieldName;
Format := 'Total: #,0.00# €';
Kind := skSum;
finally
EndUpdate;
end;
except
DataController.Summary.FooterSummaryItems.Delete(DataController.Summary.FooterSummaryItems.Count-1);
end;
end;
end;
function TdmTablaFacturasCliente.CrearFactura(CodigoContrato, TipoFactura: String): String;
var
oSQL : TIBSQL;
oSQL2 : TIBSQL;
CodigoAux : String;
CodigoEmpAux : Integer;
CodDoc : String;
Cadena : String;
begin
Result := '';
CodigoAux := dmTablaFacturasCliente.DarNuevoCodigo;
CodigoEmpAux := EmpresaActiva.Codigo;
oSQL := TIBSQL.Create(Self);
try
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('insert into FACTURASCLIENTE (');
SQL.Add('CODIGOEMPRESA, CODIGO, FECHAALTA,');
SQL.Add('USUARIO, CODIGODOCUMENTO,');
SQL.Add('FECHAFACTURA, SITUACION, CLASEFACTURA, COMISION,');
SQL.Add('CODIGOCLIENTE, NIFCIF,');
SQL.Add('NOMBRE, CALLE,');
SQL.Add('NUMERO, PISO,');
SQL.Add('CODIGOPOSTAL, POBLACION,');
SQL.Add('PROVINCIA, PERSONACONTACTO,');
SQL.Add('OBSERVACIONES, FORMAPAGO, ');
SQL.Add('DESCUENTO, IVA,');
SQL.Add('BASEIMPONIBLE, IMPORTEDESCUENTO, ');
SQL.Add('IMPORTEIVA, IMPORTETOTAL, ');
SQL.Add('TIPOFACTURA, CODIGOTRIMESTRE, CODIGOCONTRATO) ');
SQL.Add('select ' + IntToStr(CodigoEmpAux) + ', ''' + CodigoAux + ''', current_date,');
SQL.Add('''' + dmBaseDatos.Usuario + ''', CODIGODOCUMENTO,');
SQL.Add('current_date, ''PENDIENTE'', ''' + TipoFactura + ''', 1,');
SQL.Add('CODIGOCLIENTE,');
SQL.Add('NIFCIF, NOMBRE,');
SQL.Add('CALLE, NUMERO,');
SQL.Add('PISO, CODIGOPOSTAL,');
SQL.Add('POBLACION, PROVINCIA,');
SQL.Add('PERSONACONTACTO, null, null, DESCUENTO, ' + EmpresaActiva.IvaDefecto + ', ');
if TipoFactura = CTE_CF_ABONO then
SQL.Add('BASEIMPONIBLE * (-1), IMPORTEDESCUENTO * (-1), IMPORTEIVA * (-1), IMPORTETOTAL * (-1), ')
else
SQL.Add('BASEIMPONIBLE, IMPORTEDESCUENTO, IMPORTEIVA, IMPORTETOTAL, ');
SQL.Add(IntToStr(CTE_TIPFAC_VENTA) + ', ''' + EmpresaActiva.CodigoTrimestre + ''', ');
SQL.Add('''' + CODIGOCONTRATO + ''' ');
SQL.Add('from CONTRATOSCLIENTE ');
SQL.Add('where CODIGO = ''' + CodigoContrato + '''');
Prepare;
ExecQuery;
Close;
end;
// Averiguar qué tipo de documento estamos tratando
with oSQL do
begin
SQL.Clear;
SQL.Add('select CODIGODOCUMENTO from FACTURASCLIENTE ');
SQL.Add('where CODIGO = :CODIGO');
ParamByName('CODIGO').AsString := CodigoAux;
Prepare;
ExecQuery;
CodDoc := FieldByName('CODIGODOCUMENTO').AsString;
end;
oSQL2 := TIBSQL.Create(Self);
oSQL2.Database := dmBaseDatos.BD;
oSQL2.Transaction := dmBaseDatos.Transaccion;
if dmTablaDocumentos.TienePropiedades(CodDoc) then
begin
with oSQL2 do
begin
// Insertar los registros de precio
SQL.Add('insert into DETALLESFACTURASCLIARTICULOS (');
SQL.Add('CODIGOEMPRESA, CODIGOFACTURA, NUMCONCEPTO,');
SQL.Add('CODIGOARTICULO, REFERENCIA, ');
SQL.Add('DESCRIPCION, CANTIDAD,');
SQL.Add('IMPORTEUNIDAD, IMPORTETOTAL)');
SQL.Add('select ' + IntToStr(CodigoEmpAux) + ', ''' + CodigoAux + ''', NUMCONCEPTO,');
SQL.Add('CODIGOARTICULO, REFERENCIA, ');
SQL.Add('DESCRIPCION, CANTIDAD,');
if TipoFactura = CTE_CF_ABONO then
SQL.Add('IMPORTEUNIDAD * (-1), IMPORTETOTAL * (-1) ')
else
SQL.Add('IMPORTEUNIDAD, IMPORTETOTAL ');
SQL.Add('from DETALLESCONTRATOSARTICULOS ');
SQL.Add('where CODIGOCONTRATO = :CODIGOCONTRATO and ');
SQL.Add('TIPOCONCEPTO = ''PRECIO''');
ParamByName('CODIGOCONTRATO').AsString := CodigoContrato;
Prepare;
ExecQuery;
end;
// Insertar los conceptos que tienen propiedades
with oSQL do
begin
Close;
SQL.Clear;
// Averiguar cuales son los conceptos con propiedades
SQL.Add('select NUMCONCEPTO, TIPOCONCEPTO ');
SQL.Add('from DETALLESCONTRATOSARTICULOS ');
SQL.Add('where CODIGOCONTRATO = :CODIGOCONTRATO and ');
SQL.Add('TIPOCONCEPTO <> ''PRECIO'' and TIPOCONCEPTO is not null');
ParamByName('CODIGOCONTRATO').AsString := CodigoContrato;
Prepare;
ExecQuery;
end;
// Construir una cadena con los textos de las propiedades
while not oSQL.EOF do
begin
with oSQL2 do
begin
SQL.Clear;
SQL.Add('select DESCRIPCION, VALOR ');
SQL.Add('from DETALLESCONTRATOSPROPIEDADES, PROPIEDADES ');
SQL.Add('where CODIGOCONTRATO = :CODIGOCONTRATO and ');
SQL.Add('NUMCONCEPTO = :NUMCONCEPTO and ');
SQL.Add('CODIGO = CODIGOPROPIEDAD ');
SQL.Add('order by NUMPROPIEDAD ');
ParamByName('CODIGOCONTRATO').AsString := CodigoContrato;
ParamByName('NUMCONCEPTO').AsInteger := oSQL.FieldByName('NUMCONCEPTO').AsInteger;
Prepare;
ExecQuery;
Cadena := '';
if oSQL.FieldByName('TIPOCONCEPTO').AsString = 'FRENTE' then
Cadena := 'FRENTE DE ARMARIO' + #13;
if oSQL.FieldByName('TIPOCONCEPTO').AsString = 'INTERIOR' then
Cadena := 'INTERIOR DE ARMARIO' + #13;
while not EOF do
begin
Cadena := Cadena + Fields[0].AsString + ': ' +
Fields[1].AsString + #13;
Next;
end;
Close;
end;
// Insertar el concepto con la cadena de propiedades
with oSQL2 do
begin
Close;
SQL.Clear;
SQL.Add('insert into DETALLESFACTURASCLIARTICULOS (');
SQL.Add('CODIGOEMPRESA, CODIGOFACTURA, NUMCONCEPTO,');
SQL.Add('CODIGOARTICULO, ');
SQL.Add('DESCRIPCION, CANTIDAD,');
SQL.Add('IMPORTEUNIDAD, IMPORTETOTAL)');
SQL.Add('select ' + IntToStr(CodigoEmpAux) + ', ''' + CodigoAux + ''', NUMCONCEPTO,');
SQL.Add('CODIGOARTICULO, ');
SQL.Add('''' + Cadena + ''', CANTIDAD,');
if TipoFactura = CTE_CF_ABONO then
SQL.Add('IMPORTEUNIDAD * (-1), IMPORTETOTAL * (-1) ')
else
SQL.Add('IMPORTEUNIDAD, IMPORTETOTAL ');
SQL.Add('from DETALLESCONTRATOSARTICULOS ');
SQL.Add('where CODIGOCONTRATO = :CODIGOCONTRATO and ');
SQL.Add('TIPOCONCEPTO <> ''PRECIO'' and TIPOCONCEPTO is not null and ');
SQL.Add('NUMCONCEPTO = :NUMCONCEPTO ');
ParamByName('CODIGOCONTRATO').AsString := CodigoContrato;
ParamByName('NUMCONCEPTO').AsInteger := oSQL.FieldByName('NUMCONCEPTO').AsInteger;
Prepare;
ExecQuery;
end;
oSQL.Next;
end; // while not oSQL.EOF do
end
else begin
// Insertar todos los registros
with oSQL2 do
begin
SQL.Add('insert into DETALLESFACTURASCLIARTICULOS (');
SQL.Add('CODIGOEMPRESA, CODIGOFACTURA, NUMCONCEPTO,');
SQL.Add('CODIGOARTICULO, REFERENCIA, ');
SQL.Add('DESCRIPCION, CANTIDAD,');
SQL.Add('IMPORTEUNIDAD, IMPORTETOTAL)');
SQL.Add('select ' + IntToStr(CodigoEmpAux) + ', ''' + CodigoAux + ''', NUMCONCEPTO,');
SQL.Add('CODIGOARTICULO, REFERENCIA, ');
SQL.Add('DESCRIPCION, CANTIDAD,');
if TipoFactura = CTE_CF_ABONO then
SQL.Add('IMPORTEUNIDAD * (-1), IMPORTETOTAL * (-1) ')
else
SQL.Add('IMPORTEUNIDAD, IMPORTETOTAL ');
SQL.Add('from DETALLESCONTRATOSARTICULOS ');
SQL.Add('where CODIGOCONTRATO = :CODIGOCONTRATO');
ParamByName('CODIGOCONTRATO').AsString := CodigoContrato;
Prepare;
ExecQuery;
end;
end;
RecalcularPreciosFactura(CodigoAux);
dmTablaFacturasCliente.IncrementarCodigo;
Result := CodigoAux;
finally
oSQL.Close;
oSQL.Transaction := NIL;
oSQL.Free;
oSQL2.Close;
oSQL2.Transaction := NIL;
oSQL2.Free;
end;
end;
function TdmTablaFacturasCliente.ExisteFacturaConContrato(
CodigoContrato: String): Boolean;
var
oSQL : TIBSQL;
begin
Result := False;
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('select count(CODIGO) ');
SQL.Add('from FACTURASCLIENTE ');
SQL.Add('where CODIGOEMPRESA = :CODIGOEMPRESA');
SQL.Add(' and CODIGOCONTRATO = :CODIGOCONTRATO');
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
ParamByName('CODIGOCONTRATO').AsString := CodigoContrato;
try
Prepare;
ExecQuery;
Result := not (Fields[0].AsInteger = 0);
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
procedure TdmTablaFacturasCliente.InicializarGridFacturasCliContrato(var Grid: TcxGrid);
var
Columna : TcxGridDBColumn;
begin
with (Grid.ActiveView as TcxGridDBTableView) do
begin
ClearItems;
OptionsView.Footer := True;
{Columna CODIGO}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'CODIGO';
Columna.Caption := 'Código';
Columna.Width := tamColCodigo;
Columna.Options.Filtering := False;
{Columna FECHAFACTURA}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'FECHAFACTURA';
Columna.Caption := 'Fecha';
Columna.Width := tamColFecha;
Columna.Options.Filtering := False;
Columna.SortOrder := soDescending;
{Columna NIFCIF}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'NIFCIF';
Columna.Caption := 'NIF/CIF';
Columna.Width := tamColNIFCIF;
Columna.Options.Filtering := False;
{Columna NOMBRE}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'NOMBRE';
Columna.Caption := 'Nombre';
Columna.Width := tamColNombreCorto;
Columna.Options.Filtering := False;
{Columna IMPORTETOTAL}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'IMPORTETOTAL';
Columna.Caption := 'Importe';
Columna.HeaderAlignmentHorz := taRightJustify;
Columna.Width := tamColImporteLargo;
Columna.Options.Filtering := False;
with TcxGridDBTableSummaryItem(DataController.Summary.FooterSummaryItems.Add) do
try
try
BeginUpdate;
Column := Columna;
FieldName := Columna.DataBinding.FieldName;
Format := 'Total: #,0.00# €';
Kind := skSum;
finally
EndUpdate;
end;
except
DataController.Summary.FooterSummaryItems.Delete(DataController.Summary.FooterSummaryItems.Count-1);
end;
end;
end;
function TdmTablaFacturasCliente.RecalcularPreciosFactura(
CodigoFactura: String): Boolean;
var
oSQL : TIBSQL;
RE,
Dto,
IVA : Integer;
BaseImponible,
ImporteRE,
ImporteIVA,
ImporteDto,
ImporteTotal : Double;
CodigoAux : String;
CodigoEmpAux : String;
begin
Result := False;
BaseImponible := 0;
ImporteTotal := 0;
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
try
// Calcular el total de los conceptos
with SQL do
begin
Add('select sum(IMPORTETOTAL) as TOTAL ');
Add('from DETALLESFACTURASCLIARTICULOS ');
Add('where CODIGOFACTURA = :CODIGOFACTURA');
end;
ParamByName('CODIGOFACTURA').AsString := CodigoFactura;
Prepare;
ExecQuery;
BaseImponible := FieldByName('TOTAL').AsDouble;
// Recuperar el RE, dto, IVA y tipo de factura (normal o abono)
Close;
with SQL do
begin
Clear;
Add('select RE, DESCUENTO, IVA ');
Add('from FACTURASCLIENTE ');
Add('where CODIGO = :CODIGO');
end;
ParamByName('CODIGO').AsString := CodigoFactura;
Prepare;
ExecQuery;
RE := FieldByName('RE').AsInteger;
Dto := FieldByName('DESCUENTO').AsInteger;
IVA := FieldByName('IVA').AsInteger;
ImporteRE := BaseImponible * (RE/100);
ImporteDto := BaseImponible * (Dto/100);
ImporteTotal := BaseImponible - ImporteDto;
ImporteIVA := ImporteTotal * (IVA/100);
ImporteTotal := ImporteTotal + ImporteIVA + ImporteRE;
// Actualizar la factura
Close;
with SQL do
begin
Clear;
Add('update FACTURASCLIENTE set ');
Add('BASEIMPONIBLE = :BASEIMPONIBLE, ');
Add('IMPORTERE = :IMPORTERE, ');
Add('IMPORTEDESCUENTO = :IMPORTEDESCUENTO, ');
Add('IMPORTEIVA = :IMPORTEIVA, ');
Add('IMPORTETOTAL = :IMPORTETOTAL ');
Add('where CODIGO = :CODIGO');
end;
ParamByName('CODIGO').AsString := CodigoFactura;
ParamByName('BASEIMPONIBLE').AsDouble := BaseImponible;
ParamByName('IMPORTERE').AsDouble := ImporteRE;
ParamByName('IMPORTEDESCUENTO').AsDouble := ImporteDto;
ParamByName('IMPORTEIVA').AsDouble := ImporteIVA;
ParamByName('IMPORTETOTAL').AsDouble := ImporteTotal;
Prepare;
ExecQuery;
Result := True;
finally
oSQL.Close;
oSQL.Transaction := NIL;
oSQL.Free;
end;
end;
end;
function TdmTablaFacturasCliente.ExisteFacturaConCliente(Codigo: Variant): Boolean;
var
oSQL : TIBSQL;
begin
Result := False;
if VarIsNull(Codigo) then
Exit;
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('select CODIGOCLIENTE ');
SQL.Add('from FACTURASCLIENTE ');
SQL.Add('where CODIGOEMPRESA = :CODIGOEMPRESA');
SQL.Add(' and CODIGOCLIENTE = :CODIGOCLIENTE');
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
ParamByName('CODIGOCLIENTE').AsString := Codigo;
try
Prepare;
ExecQuery;
Result := (RecordCount > 0);
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
function TdmTablaFacturasCliente.ModificarSituacionFacturas(
Codigos: TStrings; Situacion: String): Boolean;
var
oSQL : TIBSQL;
Indice : Integer;
Cadena : String;
begin
Result := False;
if Codigos.Count = 0 then
Exit;
//Formateamos los códigos para optimizar la sentencia SQL
for Indice:=0 to Codigos.Count-1 do
begin
if (Indice <> 0) then
Cadena := Cadena + ',';
Cadena := Cadena + '''' + Codigos.Strings[Indice] + '''';
end;
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('update FACTURASCLIENTE ');
SQL.Add('set SITUACION = :SITUACION ');
SQL.Add('where CODIGOEMPRESA = :CODIGOEMPRESA ');
SQL.Add('and CODIGO IN (' + Cadena + ')');
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
ParamByName('SITUACION').AsString := Situacion;
try
Prepare;
ExecQuery;
Result := True;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
function TdmTablaFacturasCliente.DarTiposOpDesTrimestral(
var ListaCodigos: TStrings): TStrings;
var
oSQL : TIBSQL;
Lista : TStringList;
begin
Result := NIL;
oSQL := TIBSQL.Create(Self);
ListaCodigos := TStringList.Create;
Lista := TStringList.Create;
//tipTodas
Lista.Append(msgTipFacturas0);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('select CODIGO, DESCRIPCION ');
SQL.Add('from TIPOSFACTURAS ');
SQL.Add('where ENTIDAD = ''CLIENTE'' ');
SQL.Add('order by CODIGO');
try
Prepare;
ExecQuery;
while not EOF do begin
ListaCodigos.Append(Fields[0].AsString);
Lista.Append(Fields[1].AsString);
Next;
end;
Result := Lista;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
function TdmTablaFacturasCliente.DarListaAnos: 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 distinct(extract(year from FECHAFACTURA)) as ANO ');
SQL.Add('from FACTURASCLIENTE ');
SQL.Add('where CODIGOEMPRESA = :CODIGOEMPRESA');
SQL.Add('order by FECHAFACTURA');
try
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
Prepare;
ExecQuery;
while not EOF do begin
Lista.Append(Fields[0].AsString);
Next;
end;
Result := Lista;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
function TdmTablaFacturasCliente.ExistenFacturas: Boolean;
var
oSQL : TIBSQL;
begin
Result := False;
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 CODIGOEMPRESA = :CODIGOEMPRESA');
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
try
Prepare;
ExecQuery;
Result := (Fields[0].AsInteger <> 0);
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
end.