Remesas de cliente

git-svn-id: https://192.168.0.254/svn/Proyectos.Noviseda_FactuGES2/trunk@56 f33bb606-9f5c-448d-9c99-757f00063c96
This commit is contained in:
David Arranz 2010-01-25 11:48:44 +00:00
parent c44470d4e8
commit 04a9086456
3 changed files with 404 additions and 150 deletions

View File

@ -16,38 +16,263 @@ object RptRemesasCliente: TRptRemesasCliente
Left = 344
Top = 72
end
object tbl_Cabecera: TDACDSDataTable
object tbl_Cabecera: TDAMemDataTable
RemoteUpdatesOptions = []
Fields = <>
Params = <>
Fields = <
item
Name = 'ID'
DataType = datInteger
end
item
Name = 'ID_EMPRESA'
DataType = datInteger
end
item
Name = 'REFERENCIA'
DataType = datString
Size = 255
end
item
Name = 'FECHA_REMESA'
DataType = datDateTime
end
item
Name = 'IMPORTE_TOTAL'
DataType = datFloat
end
item
Name = 'TITULAR'
DataType = datString
Size = 255
end
item
Name = 'ENTIDAD'
DataType = datString
Size = 15
end
item
Name = 'SUCURSAL'
DataType = datString
Size = 15
end
item
Name = 'DC'
DataType = datString
Size = 15
end
item
Name = 'CUENTA'
DataType = datString
Size = 15
end
item
Name = 'DESCRIPCION'
DataType = datString
Size = 255
end
item
Name = 'NIF_CIF_EMPRESA'
DataType = datString
Size = 15
end
item
Name = 'RAZON_SOCIAL'
DataType = datString
Size = 255
end
item
Name = 'CALLE_EMPRESA'
DataType = datString
Size = 255
end
item
Name = 'POBLACION_EMPRESA'
DataType = datString
Size = 255
end
item
Name = 'PROVINCIA_EMPRESA'
DataType = datString
Size = 255
end
item
Name = 'CODIGO_POSTAL_EMPRESA'
DataType = datString
Size = 10
end
item
Name = 'TELEFONO_1'
DataType = datString
Size = 25
end
item
Name = 'FAX'
DataType = datString
Size = 25
end
item
Name = 'MOVIL_1'
DataType = datString
Size = 25
end
item
Name = 'EMAIL_1'
DataType = datString
Size = 255
end
item
Name = 'PAGINA_WEB'
DataType = datString
Size = 255
end
item
Name = 'REGISTRO_MERCANTIL'
DataType = datString
Size = 255
end
item
Name = 'LOGOTIPO'
DataType = datBlob
end>
Params = <
item
Name = 'ID'
DataType = datInteger
Value = ''
ParamType = daptInput
end>
MasterMappingMode = mmDataRequest
LogChanges = False
StreamingOptions = [soDisableEventsWhileStreaming]
RemoteFetchEnabled = False
DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch]
MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates]
LocalSchema = schReport
LocalDataStreamer = Bin2DataStreamer
LogicalName = 'Informe_Cabecera'
IndexDefs = <>
Left = 264
Top = 128
end
object tbl_Detalles: TDACDSDataTable
object tbl_Detalles: TDAMemDataTable
RemoteUpdatesOptions = []
Fields = <>
Params = <>
Fields = <
item
Name = 'ID'
DataType = datInteger
end
item
Name = 'REFERENCIA'
DataType = datString
Size = 255
end
item
Name = 'SITUACION'
DataType = datString
Size = 9
end
item
Name = 'ID_FACTURA'
DataType = datInteger
end
item
Name = 'ID_REMESA'
DataType = datInteger
end
item
Name = 'REFERENCIA_REMESA'
DataType = datString
Size = 255
end
item
Name = 'FECHA_VENCIMIENTO'
DataType = datDateTime
end
item
Name = 'DESCRIPCION'
DataType = datString
Size = 255
end
item
Name = 'OBSERVACIONES'
DataType = datString
Size = 255
end
item
Name = 'IMPORTE'
DataType = datCurrency
end
item
Name = 'OTROS_GASTOS'
DataType = datCurrency
end
item
Name = 'IMPORTE_TOTAL'
DataType = datCurrency
end
item
Name = 'FECHA_FACTURA'
DataType = datDateTime
end
item
Name = 'FORMA_PAGO_FACTURA'
DataType = datString
Size = 255
end
item
Name = 'IMPORTE_FACTURA'
DataType = datCurrency
end
item
Name = 'ID_EMPRESA'
DataType = datInteger
end
item
Name = 'NOMBRE_CLIENTE'
DataType = datString
Size = 255
end
item
Name = 'NIF_CIF_CLIENTE'
DataType = datString
Size = 15
end
item
Name = 'ENTIDAD'
DataType = datString
Size = 254
end
item
Name = 'SUCURSAL'
DataType = datString
Size = 254
end
item
Name = 'DC'
DataType = datString
Size = 254
end
item
Name = 'CUENTA'
DataType = datString
Size = 254
end>
Params = <
item
Name = 'ID_REMESA'
DataType = datInteger
Value = '1'
ParamType = daptInput
end>
MasterMappingMode = mmDataRequest
LogChanges = False
StreamingOptions = [soDisableEventsWhileStreaming]
RemoteFetchEnabled = False
DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch]
MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates]
LocalSchema = schReport
LocalDataStreamer = Bin2DataStreamer
LogicalName = 'Informe_Detalles'
IndexDefs = <>
Left = 344
Top = 128
end
object DABINAdapter: TDABINAdapter
Left = 48
Top = 80
end
object frxRichObject1: TfrxRichObject
Left = 48
Top = 296
@ -331,7 +556,7 @@ object RptRemesasCliente: TRptRemesasCliente
item
Name = 'ID_REMESA'
DataType = datInteger
Value = ''
Value = '1'
ParamType = daptInput
end>
Statements = <
@ -349,10 +574,12 @@ object RptRemesasCliente: TRptRemesasCliente
'ECHA_FACTURA,'#10' V_RECIBOS_CLIENTE.FORMA_PAGO_FACTURA,'#10' V_RE' +
'CIBOS_CLIENTE.IMPORTE_FACTURA,'#10' V_RECIBOS_CLIENTE.ID_EMPRESA,' +
#10' V_RECIBOS_CLIENTE.NOMBRE_CLIENTE,'#10' V_RECIBOS_CLIENTE.NIF' +
'_CIF_CLIENTE,'#10' V_RECIBOS_CLIENTE.ENTIDAD_CLIENTE,'#10' V_RECIB' +
'OS_CLIENTE.SUCURSAL_CLIENTE,'#10' V_RECIBOS_CLIENTE.DC_CLIENTE,'#10' ' +
' V_RECIBOS_CLIENTE.CUENTA_CLIENTE'#10#10#10'FROM V_RECIBOS_CLIENTE'#10'WHE' +
'RE ID_REMESA = :ID_REMESA'#10'ORDER BY FECHA_VENCIMIENTO'
'_CIF_CLIENTE,'#10' V_RECIBOS_CLIENTE.POBLACION_CLIENTE,'#10' V_REC' +
'IBOS_CLIENTE.CODIGO_POSTAL_CLIENTE,'#10' substr(DATOS_BANCARIOS, ' +
'1,4) as ENTIDAD,'#10' substr(DATOS_BANCARIOS, 6,9) as SUCURSAL,'#10' ' +
' substr(DATOS_BANCARIOS, 11,13) as DC,'#10' substr(DATOS_BANCAR' +
'IOS, 14,23) as CUENTA'#10#10#10#10'FROM V_RECIBOS_CLIENTE'#10'WHERE ID_REMESA ' +
'= :ID_REMESA'#10'ORDER BY REFERENCIA, FECHA_VENCIMIENTO'#10
StatementType = stSQL
ColumnMappings = <
item
@ -365,7 +592,8 @@ object RptRemesasCliente: TRptRemesasCliente
end
item
DatasetField = 'SITUACION'
TableField = 'SITUACION'
TableField = '<unknown>'
SQLOrigin = 'SITUACION'
end
item
DatasetField = 'ID_FACTURA'
@ -377,7 +605,8 @@ object RptRemesasCliente: TRptRemesasCliente
end
item
DatasetField = 'REFERENCIA_REMESA'
TableField = 'REFERENCIA_REMESA'
TableField = '<unknown>'
SQLOrigin = 'REFERENCIA_REMESA'
end
item
DatasetField = 'FECHA_VENCIMIENTO'
@ -395,53 +624,74 @@ object RptRemesasCliente: TRptRemesasCliente
DatasetField = 'IMPORTE'
TableField = 'IMPORTE'
end
item
DatasetField = 'FECHA_FACTURA'
TableField = 'FECHA_FACTURA'
end
item
DatasetField = 'FORMA_PAGO_FACTURA'
TableField = 'FORMA_PAGO_FACTURA'
end
item
DatasetField = 'IMPORTE_FACTURA'
TableField = 'IMPORTE_FACTURA'
end
item
DatasetField = 'ID_EMPRESA'
TableField = 'ID_EMPRESA'
end
item
DatasetField = 'NOMBRE_CLIENTE'
TableField = 'NOMBRE_CLIENTE'
end
item
DatasetField = 'NIF_CIF_CLIENTE'
TableField = 'NIF_CIF_CLIENTE'
end
item
DatasetField = 'ENTIDAD_CLIENTE'
TableField = 'ENTIDAD_CLIENTE'
end
item
DatasetField = 'SUCURSAL_CLIENTE'
TableField = 'SUCURSAL_CLIENTE'
end
item
DatasetField = 'DC_CLIENTE'
TableField = 'DC_CLIENTE'
end
item
DatasetField = 'CUENTA_CLIENTE'
TableField = 'CUENTA_CLIENTE'
end
item
DatasetField = 'OTROS_GASTOS'
TableField = 'OTROS_GASTOS'
end
item
DatasetField = 'IMPORTE_TOTAL'
TableField = 'IMPORTE_TOTAL'
TableField = '<unknown>'
SQLOrigin = 'IMPORTE_TOTAL'
end
item
DatasetField = 'FECHA_FACTURA'
TableField = '<unknown>'
SQLOrigin = 'FECHA_FACTURA'
end
item
DatasetField = 'FORMA_PAGO_FACTURA'
TableField = '<unknown>'
SQLOrigin = 'FORMA_PAGO_FACTURA'
end
item
DatasetField = 'IMPORTE_FACTURA'
TableField = '<unknown>'
SQLOrigin = 'IMPORTE_FACTURA'
end
item
DatasetField = 'ID_EMPRESA'
TableField = '<unknown>'
SQLOrigin = 'ID_EMPRESA'
end
item
DatasetField = 'NOMBRE_CLIENTE'
TableField = '<unknown>'
SQLOrigin = 'NOMBRE_CLIENTE'
end
item
DatasetField = 'NIF_CIF_CLIENTE'
TableField = '<unknown>'
SQLOrigin = 'NIF_CIF_CLIENTE'
end
item
DatasetField = 'ENTIDAD'
TableField = '<unknown>'
SQLOrigin = 'ENTIDAD'
end
item
DatasetField = 'SUCURSAL'
TableField = '<unknown>'
SQLOrigin = 'SUCURSAL'
end
item
DatasetField = 'DC'
TableField = '<unknown>'
SQLOrigin = 'DC'
end
item
DatasetField = 'CUENTA'
TableField = '<unknown>'
SQLOrigin = 'CUENTA'
end
item
DatasetField = 'POBLACION_CLIENTE'
TableField = '<unknown>'
SQLOrigin = 'POBLACION_CLIENTE'
end
item
DatasetField = 'CODIGO_POSTAL_CLIENTE'
TableField = '<unknown>'
SQLOrigin = 'CODIGO_POSTAL_CLIENTE'
end>
end>
Name = 'Informe_Detalles'
@ -489,15 +739,15 @@ object RptRemesasCliente: TRptRemesasCliente
end
item
Name = 'IMPORTE'
DataType = datFloat
DataType = datCurrency
end
item
Name = 'OTROS_GASTOS'
DataType = datFloat
DataType = datCurrency
end
item
Name = 'IMPORTE_TOTAL'
DataType = datFloat
DataType = datCurrency
end
item
Name = 'FECHA_FACTURA'
@ -510,7 +760,7 @@ object RptRemesasCliente: TRptRemesasCliente
end
item
Name = 'IMPORTE_FACTURA'
DataType = datFloat
DataType = datCurrency
end
item
Name = 'ID_EMPRESA'
@ -527,24 +777,34 @@ object RptRemesasCliente: TRptRemesasCliente
Size = 15
end
item
Name = 'ENTIDAD_CLIENTE'
Name = 'POBLACION_CLIENTE'
DataType = datString
Size = 15
Size = 255
end
item
Name = 'SUCURSAL_CLIENTE'
Name = 'CODIGO_POSTAL_CLIENTE'
DataType = datString
Size = 15
Size = 10
end
item
Name = 'DC_CLIENTE'
Name = 'ENTIDAD'
DataType = datString
Size = 15
Size = 254
end
item
Name = 'CUENTA_CLIENTE'
Name = 'SUCURSAL'
DataType = datString
Size = 15
Size = 254
end
item
Name = 'DC'
DataType = datString
Size = 254
end
item
Name = 'CUENTA'
DataType = datString
Size = 254
end>
end>
JoinDataTables = <>
@ -562,7 +822,7 @@ object RptRemesasCliente: TRptRemesasCliente
Top = 158
end
object frxReport: TfrxReport
Version = '4.3'
Version = '4.8.11'
DotMatrixReport = False
EngineOptions.DoublePass = True
IniFile = '\Software\Fast Reports'
@ -572,54 +832,15 @@ object RptRemesasCliente: TRptRemesasCliente
PrintOptions.Printer = 'Default'
PrintOptions.PrintOnSheet = 0
ReportOptions.CreateDate = 37871.995398692100000000
ReportOptions.LastChange = 39258.760263842600000000
ReportOptions.LastChange = 40199.771052685190000000
ReportOptions.VersionBuild = '1'
ReportOptions.VersionMajor = '12'
ReportOptions.VersionMinor = '13'
ReportOptions.VersionRelease = '1'
ScriptLanguage = 'PascalScript'
ScriptText.Strings = (
'procedure ReportSummary1OnBeforePrint(Sender: TfrxComponent);'
'begin'
' Engine.CurY := Engine.CurY + Engine.FreeSpace - ReportSummary1' +
'.Height - 1;'
'end;'
''
'procedure DatosEmpresaOnBeforePrint(Sender: TfrxComponent);'
'var'
' Cadena: String;'
'begin'
' DatosEmpresa.Lines.Clear;'
' DatosEmpresa.Lines.Add(<frxDBCabecera."RAZON_SOCIAL">);'
' DatosEmpresa.Lines.Add(<frxDBCabecera."CALLE_EMPRESA">);'
''
' Cadena := '#39#39';'
' if (<frxDBCabecera."TELEFONO_1"> <> '#39#39') then'
' Cadena := '#39'TLF: '#39' + <frxDBCabecera."TELEFONO_1">;'
' if (<frxDBCabecera."FAX"> <> '#39#39') then'
' Cadena := Cadena + '#39' FAX: '#39' + <frxDBCabecera."FAX">;'
' DatosEmpresa.Lines.Add(Cadena);'
''
' Cadena := '#39#39';'
' if (<frxDBCabecera."CODIGO_POSTAL_EMPRESA"> <> '#39#39') then'
' Cadena := <frxDBCabecera."CODIGO_POSTAL_EMPRESA">;'
' if (<frxDBCabecera."POBLACION_EMPRESA"> <> '#39#39') then'
' Cadena := Cadena + '#39' '#39' + <frxDBCabecera."POBLACION_EMPRES' +
'A">;'
' if (<frxDBCabecera."PROVINCIA_EMPRESA"> <> '#39#39') then'
' Cadena := Cadena + '#39' - '#39' + <frxDBCabecera."PROVINCIA_EMPR' +
'ESA">;'
' DatosEmpresa.Lines.Add(Cadena);'
'end;'
''
'begin'
''
'end.')
ShowProgress = False
StoreInDFM = False
OnStartReport = 'frxReportOnStartReport'
Left = 169
Top = 16
end
@ -627,6 +848,7 @@ object RptRemesasCliente: TRptRemesasCliente
UserName = 'frxDBCabecera'
CloseDataSource = False
DataSource = DADataCabecera
BCDToCurrency = False
Left = 264
Top = 16
end
@ -634,7 +856,12 @@ object RptRemesasCliente: TRptRemesasCliente
UserName = 'frxDBDetalles'
CloseDataSource = False
DataSource = DADataDetalles
BCDToCurrency = False
Left = 344
Top = 16
end
object Bin2DataStreamer: TDABin2DataStreamer
Left = 48
Top = 96
end
end

View File

@ -5,17 +5,16 @@ interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, frxClass, frxDBSet, uDAScriptingProvider,
uDADataTable, uDACDSDataTable, DB, uDAClasses, frxChart, frxGradient,
uDADataTable, uDAMemDataTable, DB, uDAClasses, frxChart, frxGradient,
frxChBox, frxCross, frxOLE, frxBarcode, frxRich, uDABINAdapter, uROTypes,
uDAInterfaces, uDADataStreamer;
uDAInterfaces, uDADataStreamer, uDABin2DataStreamer, FactuGES_Intf, uROClient;
type
TRptRemesasCliente = class(TDataModule)
DADataCabecera: TDADataSource;
DADataDetalles: TDADataSource;
tbl_Cabecera: TDACDSDataTable;
tbl_Detalles: TDACDSDataTable;
DABINAdapter: TDABINAdapter;
tbl_Cabecera: TDAMemDataTable;
tbl_Detalles: TDAMemDataTable;
frxRichObject1: TfrxRichObject;
frxBarCodeObject1: TfrxBarCodeObject;
frxOLEObject1: TfrxOLEObject;
@ -26,15 +25,18 @@ type
frxDBCabecera: TfrxDBDataset;
frxDBDetalles: TfrxDBDataset;
frxReport: TfrxReport;
Bin2DataStreamer: TDABin2DataStreamer;
schReport: TDASchema;
DataDictionary: TDADataDictionary;
procedure DataModuleCreate(Sender: TObject);
procedure DataModuleDestroy(Sender: TObject);
private
FConnection: IDAConnection;
procedure GenerarRemesa(const ID : Integer); overload;
procedure _GenerarRemesa(const ID : Integer);
public
function GenerarRemesa(const ID : String): Binary; overload;
function GenerarRemesa(const ListaID : TIntegerArray): Binary;
end;
implementation
@ -42,7 +44,7 @@ implementation
{$R *.dfm}
uses
uDataModuleServer;
uSistemaFunc, uDataModuleServer;
const
rptInforme = 'InfRemesaCliente.fr3';
@ -64,31 +66,22 @@ begin
frxDBCabecera.DataSource := DADataCabecera;
frxDBCabecera.CloseDataSource := False;
frxDBCompensados.DataSource := DADataCompensados;
frxDBCompensados.CloseDataSource := False;
frxDBDetalles.DataSource := DADataDetalles;
frxDBDetalles.CloseDataSource := False;
end;
function TRptRemesasCliente.GenerarRemesa(const ID: String): Binary;
function TRptRemesasCliente.GenerarRemesa(const ListaID: TIntegerArray): Binary;
var
ID_Remesas: TStringList;
i: Integer;
begin
Result := Binary.Create;
FConnection.BeginTransaction;
try
ID_Remesas := TStringList.Create;
ID_Remesas.CommaText := ID;
//Vamos generando todos y cada uno de los albaranes recibidos
for i := 0 to ID_Remesas.Count - 1 do
GenerarRemesa(StrToInt(ID_Remesas.Strings[i]));
for i := 0 to ListaID.Count - 1 do
_GenerarRemesa(ListaID.Items[i]);
frxReport.PreviewPages.SaveToStream(Result);
finally
FConnection.RollbackTransaction;
end;
end;
@ -98,13 +91,35 @@ begin
tbl_Detalles.Active := False;
end;
procedure TRptRemesasCliente.GenerarRemesa(const ID: Integer);
procedure TRptRemesasCliente._GenerarRemesa(const ID: Integer);
var
AStream: TMemoryStream;
dsMaster: IDADataset;
dsDetail: IDADataset;
AInforme: Variant;
begin
FConnection.BeginTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
try
tbl_Cabecera.Active := False;
tbl_Detalles.Active := False;
tbl_Cabecera.ParamByName('ID').AsInteger := ID;
tbl_Detalles.ParamByName('ID_REMESA').AsInteger := ID;
tbl_Cabecera.Active := True;
tbl_Detalles.Active := True;
AInforme := DarRutaFichero(DarRutaInformes, rptInforme, tbl_Cabecera.FieldByName('ID_EMPRESA').AsString);
if VarIsNull(AInforme) then
raise Exception.Create (('Error Servidor: _GenerarRecibo, no encuentra informe ' + rptInforme));
frxReport.LoadFromFile(AInforme, True);
frxReport.PrepareReport(False);
finally
FConnection.RollbackTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
end;
{
AStream := TMemoryStream.Create;
try
@ -131,6 +146,7 @@ begin
dsMaster := Nil;
dsDetail := Nil;
end;
}
end;
end.

View File

@ -29,8 +29,11 @@ type
procedure DARemoteServiceCreate(Sender: TObject);
procedure DARemoteServiceBeforeGetDatasetData(const Dataset: IDADataset;
const IncludeSchema: Boolean; const MaxRecords: Integer);
procedure DataAbstractServiceBeforeAcquireConnection(aSender: TObject;
var aConnectionName: string);
procedure DataAbstractServiceBeforeAcquireConnection(aSender: TObject; var aConnectionName: string);
protected
function GenerarInforme(const ListaID: TIntegerArray): Binary;
end;
implementation
@ -39,9 +42,7 @@ implementation
uses
{Generated:} FactuGES_Invk, uDataModuleServer,
uDatabaseUtils, schRemesasClienteClient_Intf, uRestriccionesUsuarioUtils,
uBizRemesasClienteServer,
// uRptRemesasCliente_Server,
Dialogs;
uBizRemesasClienteServer, uRptRemesasCliente_Server, Dialogs;
procedure Create_srvRemesasCliente(out anInstance : IUnknown);
begin
@ -54,15 +55,13 @@ procedure TsrvRemesasCliente.DARemoteServiceBeforeGetDatasetData(
const Dataset: IDADataset; const IncludeSchema: Boolean;
const MaxRecords: Integer);
begin
{
if DataSet.Name = nme_RemesasCliente then
begin
{ Aquí se asegura que el usuario sólo accede a los RemesasCliente
de las empresas a las que tiene permiso para acceder
filtrando DataSet por ID_EMPRESA. }
{ FiltrarAccesoUsuario(Session, Connection, schRemesasCliente, DataSet, fld_RemesasClienteID_EMPRESA);
FiltrarAccesoUsuario(Session, Connection, schRemesasCliente, DataSet, fld_RemesasClienteID_EMPRESA);
end;
}
end;
procedure TsrvRemesasCliente.DARemoteServiceCreate(Sender: TObject);
@ -77,6 +76,18 @@ begin
ConnectionName := dmServer.ConnectionName;
end;
function TsrvRemesasCliente.GenerarInforme(const ListaID: TIntegerArray): Binary;
var
AReportGenerator : TRptRemesasCliente;
begin
AReportGenerator := TRptRemesasCliente.Create(nil);
try
Result := AReportGenerator.GenerarRemesa(ListaID);
finally
FreeAndNIL(AReportGenerator);
end;
end;
initialization
TROClassFactory.Create('srvRemesasCliente', Create_srvRemesasCliente, TsrvRemesasCliente_Invoker);