Modulo nuevo para los informes estadisticos e informes que ya tenian anteriormente

git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@687 0c75b7a4-871f-7646-8a2f-f78d34cc349f
This commit is contained in:
roberto 2008-10-15 18:50:09 +00:00
parent b88ee68df5
commit d2a4cfb144
2 changed files with 325 additions and 125 deletions

View File

@ -1,8 +1,8 @@
object RptFacturasCliente: TRptFacturasCliente
OldCreateOrder = True
OnCreate = DataModuleCreate
Height = 577
Width = 609
Height = 513
Width = 711
object schReport: TDASchema
ConnectionManager = dmServer.ConnectionManager
Datasets = <
@ -458,6 +458,145 @@ object RptFacturasCliente: TRptFacturasCliente
Name = 'IMPORTE_TOTAL'
DataType = datCurrency
end>
end
item
Params = <>
Statements = <
item
Connection = 'IBX'
TargetTable = 'FACTURAS_CLIENTE'
SQL =
'select ID_EMPRESA, extract (month from fecha_factura) as MES, ex' +
'tract (year from fecha_factura) as ANO,'#10'case'#10'when extract (month' +
' from fecha_factura) = 1 then '#39'ENERO - '#39' || extract (year from f' +
'echa_factura)'#10'when extract (month from fecha_factura) = 2 then '#39 +
'FEBRERO - '#39' || extract (year from fecha_factura)'#10'when extract (m' +
'onth from fecha_factura) = 3 then '#39'MARZO - '#39' || extract (year fr' +
'om fecha_factura)'#10'when extract (month from fecha_factura) = 4 th' +
'en '#39'ABRIL - '#39' || extract (year from fecha_factura)'#10'when extract ' +
'(month from fecha_factura) = 5 then '#39'MAYO - '#39' || extract (year f' +
'rom fecha_factura)'#10'when extract (month from fecha_factura) = 6 t' +
'hen '#39'JUNIO - '#39' || extract (year from fecha_factura)'#10'when extract' +
' (month from fecha_factura) = 7 then '#39'JULIO - '#39' || extract (year' +
' from fecha_factura)'#10'when extract (month from fecha_factura) = 8' +
' then '#39'AGOSTO - '#39' || extract (year from fecha_factura)'#10'when extr' +
'act (month from fecha_factura) = 9 then '#39'SEPTIEMBRE - '#39' || extra' +
'ct (year from fecha_factura)'#10'when extract (month from fecha_fact' +
'ura) = 10 then '#39'OCTUBRE - '#39' || extract (year from fecha_factura)' +
#10'when extract (month from fecha_factura) = 11 then '#39'NOVIEMBRE - ' +
#39' || extract (year from fecha_factura)'#10'when extract (month from ' +
'fecha_factura) = 12 then '#39'DICIEMBRE - '#39' || extract (year from fe' +
'cha_factura)'#10'end as TITULO,'#10'REFERENCIA, ID_CLIENTE, NOMBRE, NIF' +
'_CIF, FECHA_FACTURA, BASE_IMPONIBLE, IMPORTE_IVA, IMPORTE_TOTAL'#10 +
#10'from facturas_cliente'#10'where {where}'#10'order by FECHA_FACTURA'#10#10
StatementType = stSQL
ColumnMappings = <
item
DatasetField = 'ID_EMPRESA'
TableField = 'ID_EMPRESA'
end
item
DatasetField = 'MES'
TableField = '<unknown>'
SQLOrigin = 'MES'
end
item
DatasetField = 'ANO'
TableField = '<unknown>'
SQLOrigin = 'ANO'
end
item
DatasetField = 'TITULO'
TableField = '<unknown>'
SQLOrigin = 'TITULO'
end
item
DatasetField = 'REFERENCIA'
TableField = 'REFERENCIA'
end
item
DatasetField = 'ID_CLIENTE'
TableField = 'ID_CLIENTE'
end
item
DatasetField = 'NOMBRE'
TableField = 'NOMBRE'
end
item
DatasetField = 'NIF_CIF'
TableField = 'NIF_CIF'
end
item
DatasetField = 'FECHA_FACTURA'
TableField = 'FECHA_FACTURA'
end
item
DatasetField = 'BASE_IMPONIBLE'
TableField = 'BASE_IMPONIBLE'
end
item
DatasetField = 'IMPORTE_IVA'
TableField = 'IMPORTE_IVA'
end
item
DatasetField = 'IMPORTE_TOTAL'
TableField = 'IMPORTE_TOTAL'
end>
end>
Name = 'InformeIVA'
Fields = <
item
Name = 'ID_EMPRESA'
DataType = datInteger
end
item
Name = 'MES'
DataType = datSmallInt
end
item
Name = 'ANO'
DataType = datSmallInt
end
item
Name = 'TITULO'
DataType = datString
Size = 19
end
item
Name = 'REFERENCIA'
DataType = datString
Size = 255
end
item
Name = 'ID_CLIENTE'
DataType = datInteger
end
item
Name = 'NOMBRE'
DataType = datString
Size = 255
end
item
Name = 'NIF_CIF'
DataType = datString
Size = 15
end
item
Name = 'FECHA_FACTURA'
DataType = datDateTime
end
item
Name = 'BASE_IMPONIBLE'
DataType = datCurrency
end
item
Name = 'IMPORTE_IVA'
DataType = datCurrency
end
item
Name = 'IMPORTE_TOTAL'
DataType = datCurrency
end>
end>
JoinDataTables = <>
UnionDataTables = <>
@ -1242,139 +1381,20 @@ object RptFacturasCliente: TRptFacturasCliente
object frxReport: TfrxReport
Version = '4.3'
DotMatrixReport = False
EngineOptions.DoublePass = True
IniFile = '\Software\Fast Reports'
PreviewOptions.Buttons = [pbPrint, pbLoad, pbSave, pbExport, pbZoom, pbFind, pbOutline, pbPageSetup, pbTools, pbEdit, pbNavigator, pbExportQuick]
PreviewOptions.Zoom = 1.000000000000000000
PrintOptions.Printer = 'Por defecto'
PrintOptions.PrintOnSheet = 0
ReportOptions.CreateDate = 39065.872423495400000000
ReportOptions.LastChange = 39610.732841435190000000
ReportOptions.CreateDate = 37800.807714351900000000
ReportOptions.LastChange = 39736.806221423610000000
ScriptLanguage = 'PascalScript'
ScriptText.Strings = (
''
'procedure DatosEmpresaOnBeforePrint(Sender: TfrxComponent);'
'var'
' Cadena: String;'
'begin'
'{ DatosEmpresa.Lines.Clear;'
' if (<frxDBCabecera."TELEFONO_1_EMPRESA"> <> '#39#39') then'
' Cadena := '#39'TLF: '#39' + <frxDBCabecera."TELEFONO_1_EMPRESA">;'
' if (<frxDBCabecera."FAX_EMPRESA"> <> '#39#39') then'
' Cadena := Cadena + '#39' FAX: '#39' + <frxDBCabecera."FAX_EMPRESA' +
'">;'
' DatosEmpresa.Lines.Add(Cadena);'
'}'
'end;'
''
'procedure NombreEmpresaOnBeforePrint(Sender: TfrxComponent);'
'begin'
'{ NombreEmpresa.Lines.Clear;'
' NombreEmpresa.Lines.Add(<frxDBCabecera."NOMBRE_EMPRESA">);'
'}'
'end;'
''
'procedure DireccionEnvioOnBeforePrint(Sender: TfrxComponent);'
'var'
' ACadena : String;'
'begin'
'{ ACadena := '#39#39';'
' DireccionEnvio.Lines.Clear;'
' if (<frxDBCabecera."REFERENCIA_CLIENTE"> <> '#39#39') then'
' ACadena := <frxDBCabecera."REFERENCIA_CLIENTE">;'
''
' if (<frxDBCabecera."PERSONA_CONTACTO"> <> '#39#39') then'
' ACadena := ACadena + '#39' '#39' + <frxDBCabecera."PERSONA_CONTACT' +
'O">;'
''
' DireccionEnvio.Lines.Add(ACadena);'
' ACadena := '#39#39';'
' DireccionEnvio.Lines.Add(<frxDBCabecera."CALLE">);'
' if (<frxDBCabecera."CODIGO_POSTAL"> <> '#39#39') then'
' ACadena := <frxDBCabecera."CODIGO_POSTAL"> + '#39' '#39';'
' if (<frxDBCabecera."POBLACION"> <> '#39#39') then'
' ACadena := ACadena + <frxDBCabecera."CODIGO_POSTAL">;'
''
' if (ACadena <> '#39#39') then'
' DireccionEnvio.Lines.Add(ACadena);'
''
' if (<frxDBCabecera."PROVINCIA"> <> '#39#39') then'
' DireccionEnvio.Lines.Add(<frxDBCabecera."PROVINCIA">);'
''
' if (<frxDBCabecera."TELEFONO"> <> '#39#39') then'
' DireccionEnvio.Lines.Add(<frxDBCabecera."TELEFONO">);'
'}'
'end;'
''
'procedure PageHeader1OnBeforePrint(Sender: TfrxComponent);'
'begin'
'{ if not Engine.FinalPass then'
' Set('#39'TotalPaginas'#39', (<TotalPaginas> + 1));'
''
' if Engine.FinalPass then'
' Set('#39'Pagina'#39', (<Pagina> + 1));} '
'end;'
''
'procedure frxReportOnStartReport(Sender: TfrxComponent);'
'begin'
' Set('#39'Pagina'#39', 0);'
' Set('#39'TotalPaginas'#39', 0);'
' Set('#39'Capitulo'#39', 0);'
' Set('#39'NumCapitulos'#39', 0); '
'end;'
''
'procedure Memo4OnBeforePrint(Sender: TfrxComponent);'
'begin'
' if (Length(<frxDBCabecera."OBSERVACIONES">) = 0) then'
' Memo4.Visible := False; '
'end;'
''
'procedure Memo22OnBeforePrint(Sender: TfrxComponent);'
'begin'
' if (<frxDBCabecera."DESCUENTO"> = 0) then'
' begin '
' Memo22.Text := '#39'Base imponible:'#39';'
''
' Memo10.Text := '#39'Importe total:'#39';'
' Memo10.Font.Style := fsBold; '
''
' Memo9.Text := FormatFloat('#39'#,##0.00 '#8364#39', <frxDBCabecera."IMP' +
'ORTE_TOTAL">);'
' Memo9.Font.Style := fsBold; '
' '
' Memo23.Text := '#39'[<frxDBCabecera."IVA">]% IVA:'#39';'
' Memo25.Text := '#39'[frxDBCabecera."IMPORTE_IVA"]'#39';'
' Memo12.Visible := False;'
' Memo14.Visible := False;'
' Memo16.Visible := False; '
''
' Memo13.Visible := False;'
' Memo15.Visible := False;'
' Memo17.Visible := False;'
' Memo11.Color := $00CCFFCC;'
' end; '
'end;'
''
'procedure Memo39OnBeforePrint(Sender: TfrxComponent);'
'begin'
' Memo39.Clear; '
' if (<frxDBCabecera."TIPO"> = '#39'F'#39') then'
' Memo39.Text := '#39'FACTURA'#39' ' +
' '
' else'
' Memo39.Text := '#39'ABONO'#39'; '
'end;'
''
'begin'
''
'end.')
ShowProgress = False
StoreInDFM = False
OnStartReport = 'frxReportOnStartReport'
Left = 145
Top = 16
end
@ -1475,4 +1495,85 @@ object RptFacturasCliente: TRptFacturasCliente
Left = 424
Top = 288
end
object tbl_InformeIVA: TDAMemDataTable
RemoteUpdatesOptions = []
Fields = <
item
Name = 'ID_EMPRESA'
DataType = datInteger
end
item
Name = 'MES'
DataType = datSmallInt
end
item
Name = 'ANO'
DataType = datSmallInt
end
item
Name = 'TITULO'
DataType = datString
Size = 19
end
item
Name = 'REFERENCIA'
DataType = datString
Size = 255
end
item
Name = 'ID_CLIENTE'
DataType = datInteger
end
item
Name = 'NOMBRE'
DataType = datString
Size = 255
end
item
Name = 'NIF_CIF'
DataType = datString
Size = 15
end
item
Name = 'FECHA_FACTURA'
DataType = datDateTime
end
item
Name = 'BASE_IMPONIBLE'
DataType = datCurrency
end
item
Name = 'IMPORTE_IVA'
DataType = datCurrency
end
item
Name = 'IMPORTE_TOTAL'
DataType = datCurrency
end>
Params = <>
LogChanges = False
StreamingOptions = [soDisableEventsWhileStreaming]
RemoteFetchEnabled = False
LocalSchema = schReport
LocalDataStreamer = DABINAdapter
DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch]
MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates]
LogicalName = 'InformeIVA'
IndexDefs = <>
Left = 576
Top = 128
end
object DADSInformeIVA: TDADataSource
DataSet = tbl_InformeIVA.Dataset
DataTable = tbl_InformeIVA
Left = 576
Top = 72
end
object frxDBDataset1: TfrxDBDataset
UserName = 'frxDBInformeIVA'
CloseDataSource = True
DataSource = DADSInformeIVA
Left = 576
Top = 16
end
end

View File

@ -80,6 +80,9 @@ type
vencimientosFECHA_VENCIMIENTO: TDateField;
vencimientosIMPORTE_TOTAL: TIBBCDField;
frxPDFExport1: TfrxPDFExport;
tbl_InformeIVA: TDAMemDataTable;
DADSInformeIVA: TDADataSource;
frxDBDataset1: TfrxDBDataset;
schReport: TDASchema;
procedure DataModuleCreate(Sender: TObject);
private
@ -88,7 +91,8 @@ type
procedure _GenerarFactura(const ID: Integer);
public
function GenerarFactura(const ListaID : TIntegerArray): Binary;
function GenerarFacturaEnPDF(const ListaID : TIntegerArray): Binary;
function GenerarFacturaEnPDF(const ListaID : TIntegerArray): Binary;
function GenerarInformeIVA(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDClientes: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
end;
implementation
@ -100,11 +104,12 @@ uses
const
rptFacturaCliente = 'InfFacturaCliente.fr3';
rptInformeIVA = 'InformeIVAClientes.fr3';
{ Dataset names for schReport }
ds_InformeFacturasCliente = 'InformeFacturasCliente';
ds_InformeFacturasCliente_Detalles = 'InformeFacturasCliente_Detalles';
ds_InformeFacturasCliente_Vencimientos = 'InformeFacturasCliente_Vencimientos';
ds_InformeFacturasCliente_Vencimientos = 'InformeFacturasCliente_Vencimientos';
{ TRptFacturasCliente }
@ -159,6 +164,100 @@ begin
end;
end;
function TRptFacturasCliente.GenerarInformeIVA(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDClientes: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
var
Condicion: TDAWhereExpression;
i: Integer;
begin
Result := Binary.Create;
//FConnection.BeginTransaction; <--- Creo que no va a hacer falta.
try
if tbl_InformeIVA.Active then
tbl_InformeIVA.Active := False;
// Filtrar el informe por empresa
with tbl_InformeIVA.DynamicWhere do
begin
// (ID_EMPRESA >= ID)
Condicion := NewBinaryExpression(NewField('', fld_FacturasClienteID_EMPRESA), NewConstant(IdEmpresa, datInteger), dboEqual);
if IsEmpty then
Expression := Condicion
else
Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
end;
// Filtrar el informe por fechas
if not VarIsNull(FechaInicio)
and not VarIsNull(FechaFin) then
begin
with tbl_InformeIVA.DynamicWhere do
begin
// (FECHA_INICIO between FECHA_FIN)
Condicion := NewBinaryExpression(NewField('', fld_FacturasClienteFECHA_FACTURA), NewConstant(FechaInicio, datDateTime), dboGreaterOrEqual);
Condicion := NewBinaryExpression(NewBinaryExpression(NewField('', fld_FacturasClienteFECHA_FACTURA), NewConstant(FechaFin, datDateTime), dboLessOrEqual), Condicion, dboAnd);
if IsEmpty then
Expression := Condicion
else
Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
end;
end;
// Filtrar el informe por cliente
if Assigned(ListaIDClientes) then
begin
with tbl_InformeIVA.DynamicWhere do
begin
for i := 0 to ListaIDClientes.Count - 1 do
begin
// (ID_CLIENTE = ID)
Condicion := NewBinaryExpression(NewField('', fld_FacturasClienteID_CLIENTE), NewConstant(ListaIDClientes.Items[i], datInteger), dboEqual);
if IsEmpty then
Expression := Condicion
else
Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
end;
end;
end;
// Filtrar el informe por importe minimo
if (ImporteMinimo > 0) then
begin
with tbl_InformeIVA.DynamicWhere do
begin
// (IMPORTE_TOTAL > ImporteMinimo)
Condicion := NewBinaryExpression(NewField('', fld_FacturasClienteIMPORTE_TOTAL), NewConstant(ImporteMinimo, datCurrency), dboGreaterOrEqual);
if IsEmpty then
Expression := Condicion
else
Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
end;
end;
tbl_InformeIVA.Active := True;
//DESGLOSADO POR CLIENTE EN ESTE INFORME NO SE DESGLOSARÁ POR CLIENTE
// if Desglosado then
// frxReport.LoadFromFile(DarRutaInformes + rptInformeIVA, True)
// else
frxReport.LoadFromFile(DarRutaInformes + rptInformeIVA, True);
frxReport.Variables.Variables['FechaInicio'] := FechaInicio;
frxReport.Variables.Variables['FechaFin'] := FechaFin;
frxReport.PrepareReport(False);
frxReport.PreviewPages.SaveToStream(Result);
finally
//FConnection.RollbackTransaction; <--- Creo que no va a hacer falta.
end;
end;
procedure TRptFacturasCliente._GenerarFactura(const ID: Integer);
begin
tbl_Cabecera.Active := False;