diff --git a/Database/scripts/factuges.sql b/Database/scripts/factuges.sql index 55ce321c..bdf0c494 100644 --- a/Database/scripts/factuges.sql +++ b/Database/scripts/factuges.sql @@ -4466,7 +4466,53 @@ INNER JOIN VENDEDORES_DATOS ON (VENDEDORES_DATOS.ID_VENDEDOR = V_CONTACTOS.ID) WHERE V_CONTACTOS.ID_CATEGORIA = 3 ; +CREATE VIEW V_LISTADO_DATOS_CONTACTO( + ID, + ID_CONTACTO, + NOMBRE, + TELEFONO_TRABAJO, + TELEFONO_PARTICULAR, + MOVIL, + MAIL_TRABAJO, + MAIL_PARTICULAR) +AS +select + ID, + ID_CONTACTO, + NOMBRE, + telefono_trabajo, + telefono_particular, + movil, + mail_tabajo, + mail_particular +from +( +select + ID, + ID as ID_CONTACTO, + NOMBRE, + TELEFONO_1 as telefono_trabajo, + Telefono_2 as telefono_particular, + MOVIL_1 as movil, + EMAIL_1 as mail_tabajo, + EMAIL_2 as mail_particular +from CONTACTOS +union + +select + ID, + ID_CONTACTO, + NOMBRE, + null as telefono_tabajo, + TELEFONO as telefono_particular, + MOVIL, + null as movil_trabajo, + EMAIL as movil_particular +from CONTACTOS_DATOS_PERSONAL +) +order by id_contacto +; /******************************************************************************/ diff --git a/Source/Base/Base.dproj b/Source/Base/Base.dproj index fc5636dc..3e07781c 100644 --- a/Source/Base/Base.dproj +++ b/Source/Base/Base.dproj @@ -44,6 +44,20 @@ Package FalseTrueFalseLibreria base de FactuGESFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0 + + + + + + + + + + + + + + VCL for the Web Design Package for CodeGear RAD Studio CodeGear WebSnap Components CodeGear SOAP Components @@ -58,55 +72,55 @@ MainSource - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
fConfigurarConexion
TForm diff --git a/Source/Cliente/FactuGES.dproj b/Source/Cliente/FactuGES.dproj index 065fc5c1..22c88831 100644 --- a/Source/Cliente/FactuGES.dproj +++ b/Source/Cliente/FactuGES.dproj @@ -52,7 +52,8 @@ Delphi.Personality VCLApplication -FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse2620FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.6.2.0FactuGESFactuGES2.6.2.0 +FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse2630FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.6.3.0FactuGESFactuGES2.6.3.0 + File C:\Documents and Settings\All Users\Documentos\RAD Studio\5.0\Bpl\dxPScxScheduler2LnkD11.bpl not found FactuGES.dprFalse diff --git a/Source/Cliente/FactuGES.rc b/Source/Cliente/FactuGES.rc index fc606e76..c0933948 100644 --- a/Source/Cliente/FactuGES.rc +++ b/Source/Cliente/FactuGES.rc @@ -1,7 +1,7 @@ MAINICON ICON "C:\Codigo Acana\Resources\Iconos\Factuges.ico" 1 VERSIONINFO -FILEVERSION 2,6,1,0 -PRODUCTVERSION 2,6,1,0 +FILEVERSION 2,6,3,0 +PRODUCTVERSION 2,6,3,0 FILEFLAGSMASK 0x3FL FILEFLAGS 0x00L FILEOS 0x40004L @@ -13,10 +13,10 @@ BEGIN BLOCK "0C0A04E4" BEGIN VALUE "CompanyName", "Rodax Software S.L.\0" - VALUE "FileVersion", "2.6.1.0\0" + VALUE "FileVersion", "2.6.3.0\0" VALUE "InternalName", "FactuGES\0" VALUE "ProductName", "FactuGES\0" - VALUE "ProductVersion", "2.6.1.0\0" + VALUE "ProductVersion", "2.6.3.0\0" END END BLOCK "VarFileInfo" diff --git a/Source/Cliente/FactuGES.res b/Source/Cliente/FactuGES.res index 427c9ac7..86d75081 100644 Binary files a/Source/Cliente/FactuGES.res and b/Source/Cliente/FactuGES.res differ diff --git a/Source/GUIBase/uEditorPreview.dfm b/Source/GUIBase/uEditorPreview.dfm index 34f86ef9..1b3a3842 100644 --- a/Source/GUIBase/uEditorPreview.dfm +++ b/Source/GUIBase/uEditorPreview.dfm @@ -2478,7 +2478,7 @@ inherited fEditorPreview: TfEditorPreview Bitmap = {} end object frxReport1: TfrxReport - Version = '4.3' + Version = '4.8.11' DotMatrixReport = False EngineOptions.DoublePass = True IniFile = '\Software\Fast Reports' @@ -2489,10 +2489,6 @@ inherited fEditorPreview: TfEditorPreview ReportOptions.CreateDate = 38658.858023541660000000 ReportOptions.LastChange = 38658.858023541660000000 ScriptLanguage = 'PascalScript' - ScriptText.Strings = ( - 'begin' - '' - 'end.') StoreInDFM = False Left = 16 Top = 200 @@ -2529,6 +2525,7 @@ inherited fEditorPreview: TfEditorPreview ShowDialog = False UseFileCache = True ShowProgress = True + OverwritePrompt = False Monochrome = True Left = 120 Top = 384 @@ -2536,13 +2533,21 @@ inherited fEditorPreview: TfEditorPreview object frxPDFExport1: TfrxPDFExport UseFileCache = True ShowProgress = True + OverwritePrompt = False PrintOptimized = True Outline = False + Background = False + HTMLTags = False Author = 'FastReport'#174 Subject = 'FastReport PDF export' - Background = False Creator = 'FastReport (http://www.fast-report.com)' - HTMLTags = False + ProtectionFlags = [ePrint, eModify, eCopy, eAnnot] + HideToolbar = False + HideMenubar = False + HideWindowUI = False + FitWindow = False + CenterWindow = False + PrintScaling = False Left = 160 Top = 384 end @@ -2550,6 +2555,7 @@ inherited fEditorPreview: TfEditorPreview ShowDialog = False UseFileCache = True ShowProgress = True + OverwritePrompt = False Monochrome = True Left = 192 Top = 384 @@ -2557,41 +2563,59 @@ inherited fEditorPreview: TfEditorPreview object frxXLSExport1: TfrxXLSExport UseFileCache = True ShowProgress = True + OverwritePrompt = False + ExportEMF = True AsText = False Background = True FastExport = True PageBreaks = True EmptyLines = True SuppressPageHeadersFooters = False - Left = 40 + Left = 344 Top = 384 end object frxMailExport1: TfrxMailExport UseFileCache = True ShowProgress = True + OverwritePrompt = False ShowExportDialog = True SmtpPort = 25 UseIniFile = True + TimeOut = 60 + ConfurmReading = False Left = 80 Top = 384 end object frxRTFExport: TfrxRTFExport UseFileCache = True ShowProgress = True + OverwritePrompt = False + ExportEMF = True Wysiwyg = True Creator = 'FastReport http://www.fast-report.com' SuppressPageHeadersFooters = False HeaderFooterMode = hfText + AutoSize = False Left = 232 Top = 384 end object frxSimpleTextExport1: TfrxSimpleTextExport UseFileCache = True ShowProgress = True + OverwritePrompt = False Frames = False EmptyLines = False OEMCodepage = False Left = 264 Top = 384 end + object frxCSVExport1: TfrxCSVExport + UseFileCache = True + ShowProgress = True + OverwritePrompt = False + Separator = ';' + OEMCodepage = False + Left = 304 + Top = 384 + end end diff --git a/Source/GUIBase/uEditorPreview.pas b/Source/GUIBase/uEditorPreview.pas index 98f31618..17359c14 100644 --- a/Source/GUIBase/uEditorPreview.pas +++ b/Source/GUIBase/uEditorPreview.pas @@ -12,7 +12,7 @@ uses frxGradient, frxChBox, frxCross, frxRich, frxOLE, frxBarcode, ExtCtrls, JvComponentBase, TBXStatusBars, JvExComCtrls, JvStatusBar, frxExportMail, frxExportXLS, frxExportText, frxExportRTF, uControllerBase, - uIntegerListUtils; + uIntegerListUtils, frxExportCSV; type IEditorPreview = interface(IEditorBase) @@ -115,6 +115,7 @@ type TBXItem55: TTBXItem; TBXItem56: TTBXItem; TBXItem57: TTBXItem; + frxCSVExport1: TfrxCSVExport; procedure FormShow(Sender: TObject); procedure actPrimeraPaginaExecute(Sender: TObject); procedure actUltimaPaginaExecute(Sender: TObject); @@ -308,6 +309,7 @@ procedure TfEditorPreview.actExportarExcelExecute(Sender: TObject); begin inherited; FPreview.Preview.Export(frxXLSExport1); +// FPreview.Preview.Export(frxCSVExport1); end; procedure TfEditorPreview.actExportarPDFExecute(Sender: TObject); diff --git a/Source/Informes/InfListaDatosContacto.fr3 b/Source/Informes/InfListaDatosContacto.fr3 new file mode 100644 index 00000000..bc4ab221 --- /dev/null +++ b/Source/Informes/InfListaDatosContacto.fr3 @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/Modulos/Contactos/Controller/Contactos_controller.dpk b/Source/Modulos/Contactos/Controller/Contactos_controller.dpk index 92756bfe..4a63a5e5 100644 Binary files a/Source/Modulos/Contactos/Controller/Contactos_controller.dpk and b/Source/Modulos/Contactos/Controller/Contactos_controller.dpk differ diff --git a/Source/Modulos/Contactos/Controller/Contactos_controller.dproj b/Source/Modulos/Contactos/Controller/Contactos_controller.dproj index 9f86cd58..9e42d4e2 100644 --- a/Source/Modulos/Contactos/Controller/Contactos_controller.dproj +++ b/Source/Modulos/Contactos/Controller/Contactos_controller.dproj @@ -43,6 +43,18 @@ Package FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0 + + + + + + + + + + + + JCL Debug IDE extension JCL Project Analyzer JCL Open and Save IDE dialogs with favorite folders @@ -53,29 +65,28 @@ MainSource - - - - - - - - - - - - - + + + + + + + + + - + + + + @@ -87,15 +98,16 @@ - + + diff --git a/Source/Modulos/Contactos/Controller/View/uIEditorEtiquetasContactosPreview.pas b/Source/Modulos/Contactos/Controller/View/uIEditorEtiquetasContactosPreview.pas deleted file mode 100644 index 009332ee..00000000 --- a/Source/Modulos/Contactos/Controller/View/uIEditorEtiquetasContactosPreview.pas +++ /dev/null @@ -1,16 +0,0 @@ -unit uIEditorEtiquetasContactosPreview; - -interface - -uses - uEditorPreview, uBizContactos, uEtiquetasContactosReportController; - -type - IEditorEtiquetasContactosPreview = interface(IEditorPreview) - ['{270D1825-A4A4-4480-BBBA-6DD464ACAD3C}'] - end; - - -implementation - -end. diff --git a/Source/Modulos/Contactos/Controller/View/uIEditorListadosContactosPreview.pas b/Source/Modulos/Contactos/Controller/View/uIEditorListadosContactosPreview.pas new file mode 100644 index 00000000..d5956c92 --- /dev/null +++ b/Source/Modulos/Contactos/Controller/View/uIEditorListadosContactosPreview.pas @@ -0,0 +1,16 @@ +unit uIEditorListadosContactosPreview; + +interface + +uses + uEditorPreview, uBizContactos, uListadosContactosReportController; + +type + IEditorListadosContactosPreview = interface(IEditorPreview) + ['{270D1825-A4A4-4480-BBBA-6DD464ACAD3C}'] + end; + + +implementation + +end. diff --git a/Source/Modulos/Contactos/Controller/uClientesController.pas b/Source/Modulos/Contactos/Controller/uClientesController.pas index 48802075..08dbf58c 100644 --- a/Source/Modulos/Contactos/Controller/uClientesController.pas +++ b/Source/Modulos/Contactos/Controller/uClientesController.pas @@ -16,8 +16,10 @@ type function ElegirDireccionEntrega(ACliente: IBizCliente; AMensaje: String): IBizDireccionesContacto; function EsEliminable(ACliente: IBizContacto): Boolean; function Eliminar(ACliente: IBizContacto; AllItems: Boolean = false): Boolean; overload; - procedure Preview(ACliente : IBizCliente; AllItems: Boolean = false); - procedure Print(ACliente : IBizCliente; AllItems: Boolean = false); + procedure PreviewInformeEtiquetas(ACliente : IBizCliente; AllItems: Boolean = false); + procedure PrintInformeEtiquetas(ACliente : IBizCliente; AllItems: Boolean = false); + procedure PreviewInformeListaDatosContacto(ACliente : IBizCliente; AllItems: Boolean = false); + procedure PrintInformeListaDatosContacto(ACliente : IBizCliente; AllItems: Boolean = false); procedure SetTieneSubcuenta(ACliente: IBizCliente; AValue: Boolean); procedure SetIgnorarContabilidad(ACliente: IBizCliente; AValue: Boolean); end; @@ -47,8 +49,10 @@ type function ElegirDireccionEntrega(ACliente: IBizCliente; AMensaje: String): IBizDireccionesContacto; function EsEliminable(ACliente: IBizContacto): Boolean; function Eliminar(ACliente: IBizContacto; AllItems: Boolean = false): Boolean; overload; - procedure Preview(ACliente : IBizCliente; AllItems: Boolean = false); - procedure Print(ACliente : IBizCliente; AllItems: Boolean = false); + procedure PreviewInformeEtiquetas(ACliente : IBizCliente; AllItems: Boolean = false); + procedure PrintInformeEtiquetas(ACliente : IBizCliente; AllItems: Boolean = false); + procedure PreviewInformeListaDatosContacto(ACliente : IBizCliente; AllItems: Boolean = false); + procedure PrintInformeListaDatosContacto(ACliente : IBizCliente; AllItems: Boolean = false); procedure SetTieneSubcuenta(ACliente: IBizCliente; AValue: Boolean); procedure SetIgnorarContabilidad(ACliente: IBizCliente; AValue: Boolean); end; @@ -57,7 +61,7 @@ implementation uses Forms, Classes, Windows, SysUtils, Controls, cxControls, uDialogUtils, uDataModuleClientes, uEditorRegistryUtils, - uDataTableUtils, uDADataTable, DB, schContactosClient_Intf, uEtiquetasContactosReportController, + uDataTableUtils, uDADataTable, DB, schContactosClient_Intf, uListadosContactosReportController, uIEditorElegirClientes, uEditorGridBase, uDAInterfaces, uFactuGES_App, uIEditorElegirDireccionEntrega, Dialogs, uIntegerListUtils; @@ -257,12 +261,12 @@ begin Result := AContacto; end; -procedure TClientesController.Preview(ACliente: IBizCliente; AllItems: Boolean); +procedure TClientesController.PreviewInformeEtiquetas(ACliente: IBizCliente; AllItems: Boolean); var - AReportController : IEtiquetasContactosReportController; + AReportController : IListadosContactosReportController; ListaID: TIntegerList; begin - AReportController := TEtiquetasContactosReportController.Create; + AReportController := TListadosContactosReportController.Create; ListaID := TIntegerList.Create; try @@ -283,20 +287,20 @@ begin else ListaID.Add(ACliente.ID); - AReportController.Preview(ListaID); + AReportController.PreviewInformeEtiquetas(ListaID); finally AReportController := NIL; FreeANDNIL(ListaID); end; end; -procedure TClientesController.Print(ACliente: IBizCliente; AllItems: Boolean); +procedure TClientesController.PreviewInformeListaDatosContacto( + ACliente: IBizCliente; AllItems: Boolean); var - AReportController : IEtiquetasContactosReportController; + AReportController : IListadosContactosReportController; ListaID: TIntegerList; - begin - AReportController := TEtiquetasContactosReportController.Create; + AReportController := TListadosContactosReportController.Create; ListaID := TIntegerList.Create; try @@ -317,7 +321,77 @@ begin else ListaID.Add(ACliente.ID); - AReportController.Print(ListaID); + AReportController.PreviewInformeListaDatosContacto(ListaID); + finally + AReportController := NIL; + FreeANDNIL(ListaID); + end; +end; + +procedure TClientesController.PrintInformeEtiquetas(ACliente: IBizCliente; AllItems: Boolean); +var + AReportController : IListadosContactosReportController; + ListaID: TIntegerList; + +begin + AReportController := TListadosContactosReportController.Create; + ListaID := TIntegerList.Create; + + try + //Si deseamos previsualizar todos los items del objeto albaran + if AllItems then + begin + with ACliente.DataTable do + begin + First; + while not EOF do + begin + ListaID.Add(ACliente.ID); + Next; + end; + end; + end + //Solo previsualizamos el item seleccionado + else + ListaID.Add(ACliente.ID); + + AReportController.PrintInformeEtiquetas(ListaID); + + finally + AReportController := NIL; + FreeANDNil(ListaID); + end; +end; + +procedure TClientesController.PrintInformeListaDatosContacto( + ACliente: IBizCliente; AllItems: Boolean); +var + AReportController : IListadosContactosReportController; + ListaID: TIntegerList; + +begin + AReportController := TListadosContactosReportController.Create; + ListaID := TIntegerList.Create; + + try + //Si deseamos previsualizar todos los items del objeto albaran + if AllItems then + begin + with ACliente.DataTable do + begin + First; + while not EOF do + begin + ListaID.Add(ACliente.ID); + Next; + end; + end; + end + //Solo previsualizamos el item seleccionado + else + ListaID.Add(ACliente.ID); + + AReportController.PrintInformeListaDatosContacto(ListaID); finally AReportController := NIL; diff --git a/Source/Modulos/Contactos/Controller/uEtiquetasContactosReportController.pas b/Source/Modulos/Contactos/Controller/uEtiquetasContactosReportController.pas deleted file mode 100644 index d5eb76fa..00000000 --- a/Source/Modulos/Contactos/Controller/uEtiquetasContactosReportController.pas +++ /dev/null @@ -1,113 +0,0 @@ -unit uEtiquetasContactosReportController; - -interface - -uses - Classes, SysUtils, uDADataTable, uIDataModuleEtiquetasContactosReport, - uVendedoresController, uControllerBase, uIntegerListUtils; - -type - IEtiquetasContactosReportController = interface(IControllerBase) - ['{76BB35E3-554E-4D30-8D3E-54E488EF82E2}'] - procedure Preview(const ListaID : TIntegerList); - procedure Print(const ListaID : TIntegerList); - end; - - TEtiquetasContactosReportController = class(TControllerBase, IEtiquetasContactosReportController) - private - FDataModule : IDataModuleEtiquetasContactosReport; - function CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean; - public - constructor Create; override; - destructor Destroy; override; - - procedure Preview(const ListaID : TIntegerList); - procedure Print(const ListaID : TIntegerList); - end; - - -implementation - -uses - uROTypes, uEditorRegistryUtils, uIEditorEtiquetasContactosPreview, - uEditorPreview, uDataModuleContactos, uEditorBase, cxControls; - -{ TEtiquetasContactosReportController } - -constructor TEtiquetasContactosReportController.Create; -begin - inherited; - FDataModule := TDataModuleContactos.Create(Nil); -end; - -function TEtiquetasContactosReportController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean; -begin - Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf); -end; - - -destructor TEtiquetasContactosReportController.Destroy; -begin - FDataModule := NIL; - inherited; -end; - -procedure TEtiquetasContactosReportController.Preview(const ListaID : TIntegerList); -var - AStream: Binary; - AEditor : IEditorEtiquetasContactosPreview; -begin - AEditor := NIL; - - AStream := FDataModule.GetReport(ListaID); - try - CreateEditor('EditorEtiquetasContactosPreview', IEditorEtiquetasContactosPreview, AEditor); - if Assigned(AEditor) then - begin - try - AEditor.Controller := Self; - AEditor.ListaID := ListaID; - AEditor.LoadFromStream(AStream); - AEditor.Preview; - finally - AEditor.Release; - end; - end; - finally - FreeAndNil(AStream); - AEditor := Nil; - end; -end; - -procedure TEtiquetasContactosReportController.Print(const ListaID : TIntegerList); -var - AStream: Binary; - AEditor : IEditorEtiquetasContactosPreview; -begin - AEditor := NIL; - ShowHourglassCursor; - try - AStream := FDataModule.GetReport(ListaID); - try - CreateEditor('EditorEtiquetasContactosPreview', IEditorEtiquetasContactosPreview, AEditor); - if Assigned(AEditor) then - begin - try - AEditor.Controller := Self; - AEditor.ListaID := ListaID; - AEditor.LoadFromStream(AStream); - AEditor.Print; - finally - AEditor.Release; - end; - end; - finally - FreeAndNil(AStream); - AEditor := Nil; - end; - finally - HideHourglassCursor; - end; -end; - -end. diff --git a/Source/Modulos/Contactos/Controller/uListadosContactosReportController.pas b/Source/Modulos/Contactos/Controller/uListadosContactosReportController.pas new file mode 100644 index 00000000..f9f85aa4 --- /dev/null +++ b/Source/Modulos/Contactos/Controller/uListadosContactosReportController.pas @@ -0,0 +1,178 @@ +unit uListadosContactosReportController; + +interface + +uses + Classes, SysUtils, uDADataTable, uIDataModuleListadosContactosReport, + uVendedoresController, uControllerBase, uIntegerListUtils; + +type + IListadosContactosReportController = interface(IControllerBase) + ['{76BB35E3-554E-4D30-8D3E-54E488EF82E2}'] + procedure PreviewInformeEtiquetas(const ListaID : TIntegerList); + procedure PrintInformeEtiquetas(const ListaID : TIntegerList); + procedure PreviewInformeListaDatosContacto(const ListaID : TIntegerList); + procedure PrintInformeListaDatosContacto(const ListaID : TIntegerList); + end; + + TListadosContactosReportController = class(TControllerBase, IListadosContactosReportController) + private + FDataModule : IDataModuleListadosContactosReport; + function CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean; + public + constructor Create; override; + destructor Destroy; override; + + procedure PreviewInformeEtiquetas(const ListaID : TIntegerList); + procedure PrintInformeEtiquetas(const ListaID : TIntegerList); + procedure PreviewInformeListaDatosContacto(const ListaID : TIntegerList); + procedure PrintInformeListaDatosContacto(const ListaID : TIntegerList); + + end; + + +implementation + +uses + uROTypes, uEditorRegistryUtils, uIEditorListadosContactosPreview, + uEditorPreview, uDataModuleContactos, uEditorBase, cxControls; + +{ TEtiquetasContactosReportController } + +constructor TListadosContactosReportController.Create; +begin + inherited; + FDataModule := TDataModuleContactos.Create(Nil); +end; + +function TListadosContactosReportController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean; +begin + Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf); +end; + + +destructor TListadosContactosReportController.Destroy; +begin + FDataModule := NIL; + inherited; +end; + +procedure TListadosContactosReportController.PreviewInformeEtiquetas(const ListaID : TIntegerList); +var + AStream: Binary; + AEditor : IEditorListadosContactosPreview; +begin + AEditor := NIL; + + AStream := FDataModule.GetReportInformeEtiquetas(ListaID); + try + CreateEditor('EditorListadosContactosPreview', IEditorListadosContactosPreview, AEditor); + if Assigned(AEditor) then + begin + try + AEditor.Controller := Self; + AEditor.ListaID := ListaID; + AEditor.LoadFromStream(AStream); + AEditor.Preview; + finally + AEditor.Release; + end; + end; + finally + FreeAndNil(AStream); + AEditor := Nil; + end; +end; + +procedure TListadosContactosReportController.PreviewInformeListaDatosContacto( + const ListaID: TIntegerList); +var + AStream: Binary; + AEditor : IEditorListadosContactosPreview; +begin + AEditor := NIL; + + AStream := FDataModule.GetReportInformeListaDatosContacto(ListaID); + try + CreateEditor('EditorListadosContactosPreview', IEditorListadosContactosPreview, AEditor); + if Assigned(AEditor) then + begin + try + AEditor.Controller := Self; + AEditor.ListaID := ListaID; + AEditor.LoadFromStream(AStream); + AEditor.Preview; + finally + AEditor.Release; + end; + end; + finally + FreeAndNil(AStream); + AEditor := Nil; + end; +end; + +procedure TListadosContactosReportController.PrintInformeEtiquetas(const ListaID : TIntegerList); +var + AStream: Binary; + AEditor : IEditorListadosContactosPreview; +begin + AEditor := NIL; + ShowHourglassCursor; + try + AStream := FDataModule.GetReportInformeEtiquetas(ListaID); + try + CreateEditor('EditorListadosContactosPreview', IEditorListadosContactosPreview, AEditor); + if Assigned(AEditor) then + begin + try + AEditor.Controller := Self; + AEditor.ListaID := ListaID; + AEditor.LoadFromStream(AStream); + AEditor.Print; + finally + AEditor.Release; + end; + end; + finally + FreeAndNil(AStream); + AEditor := Nil; + end; + finally + HideHourglassCursor; + end; +end; + +procedure TListadosContactosReportController.PrintInformeListaDatosContacto( + const ListaID: TIntegerList); +var + AStream: Binary; + AEditor : IEditorListadosContactosPreview; +begin + AEditor := NIL; + ShowHourglassCursor; + try + AStream := FDataModule.GetReportInformeListaDatosContacto(ListaID); + try + CreateEditor('EditorListadosContactosPreview', IEditorListadosContactosPreview, AEditor); + if Assigned(AEditor) then + begin + try + AEditor.Controller := Self; + AEditor.ListaID := ListaID; + AEditor.LoadFromStream(AStream); + AEditor.Print; + finally + AEditor.Release; + end; + end; + finally + FreeAndNil(AStream); + AEditor := Nil; + end; + finally + HideHourglassCursor; + end; +end; + +end. diff --git a/Source/Modulos/Contactos/Controller/uProveedoresController.pas b/Source/Modulos/Contactos/Controller/uProveedoresController.pas index a535df83..30cdbb9d 100644 --- a/Source/Modulos/Contactos/Controller/uProveedoresController.pas +++ b/Source/Modulos/Contactos/Controller/uProveedoresController.pas @@ -49,7 +49,7 @@ implementation uses Classes, SysUtils, cxControls, Dialogs, uDataModuleProveedores, uEditorRegistryUtils, - uDataTableUtils, uDADataTable, DB, schContactosClient_Intf, uEtiquetasContactosReportController, + uDataTableUtils, uDADataTable, DB, schContactosClient_Intf, uListadosContactosReportController, uIEditorElegirProveedores, Controls, uEditorGridBase, JSDialogs, JSDialog, uDAInterfaces, uFactuGES_App, Windows, uIntegerListUtils; @@ -220,11 +220,11 @@ end; procedure TProveedoresController.Preview(AProveedor: IBizProveedor; AllItems: Boolean); var - AReportController : IEtiquetasContactosReportController; + AReportController : IListadosContactosReportController; ListaID: TIntegerList; begin - AReportController := TEtiquetasContactosReportController.Create; + AReportController := TListadosContactosReportController.Create; ListaID := TIntegerList.Create; try @@ -245,7 +245,7 @@ begin else ListaID.Add(AProveedor.ID); - AReportController.Preview(ListaID); + AReportController.PreviewInformeEtiquetas(ListaID); finally AReportController := NIL; FreeANDNil(ListaID); @@ -254,11 +254,11 @@ end; procedure TProveedoresController.Print(AProveedor: IBizProveedor; AllItems: Boolean); var - AReportController : IEtiquetasContactosReportController; + AReportController : IListadosContactosReportController; ListaID: TIntegerList; begin - AReportController := TEtiquetasContactosReportController.Create; + AReportController := TListadosContactosReportController.Create; ListaID := TIntegerList.Create; try @@ -279,7 +279,7 @@ begin else ListaID.Add(AProveedor.ID); - AReportController.Print(ListaID); + AReportController.PrintInformeEtiquetas(ListaID); finally AReportController := NIL; diff --git a/Source/Modulos/Contactos/Data/uDataModuleContactos.dfm b/Source/Modulos/Contactos/Data/uDataModuleContactos.dfm index 0a39da74..0db965cf 100644 --- a/Source/Modulos/Contactos/Data/uDataModuleContactos.dfm +++ b/Source/Modulos/Contactos/Data/uDataModuleContactos.dfm @@ -11,12 +11,12 @@ inherited DataModuleContactos: TDataModuleContactos Top = 16 end object rda_Contactos: TDARemoteDataAdapter + DataStreamer = Bin2DataStreamer GetSchemaCall.RemoteService = RORemoteService GetDataCall.RemoteService = RORemoteService UpdateDataCall.RemoteService = RORemoteService GetScriptsCall.RemoteService = RORemoteService RemoteService = RORemoteService - DataStreamer = Bin2DataStreamer Left = 43 Top = 143 end @@ -201,8 +201,6 @@ inherited DataModuleContactos: TDataModuleContactos StreamingOptions = [soDisableEventsWhileStreaming] RemoteDataAdapter = rda_Contactos LocalDataStreamer = Bin2DataStreamer - DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] - MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] LogicalName = 'Contactos' IndexDefs = <> Left = 176 @@ -333,8 +331,6 @@ inherited DataModuleContactos: TDataModuleContactos MasterSource = ds_Contactos MasterFields = 'ID' DetailFields = 'ID_CONTACTO' - DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] - MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] LogicalName = 'DireccionesContacto' IndexDefs = <> Left = 448 @@ -413,8 +409,6 @@ inherited DataModuleContactos: TDataModuleContactos MasterSource = ds_Contactos MasterFields = 'ID' DetailFields = 'ID_CONTACTO' - DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] - MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] LogicalName = 'DatosBancarios' IndexDefs = <> Left = 176 @@ -505,8 +499,6 @@ inherited DataModuleContactos: TDataModuleContactos MasterSource = ds_Contactos MasterFields = 'ID' DetailFields = 'ID_CONTACTO' - DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] - MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] LogicalName = 'PersonalContacto' IndexDefs = <> Left = 296 diff --git a/Source/Modulos/Contactos/Data/uDataModuleContactos.pas b/Source/Modulos/Contactos/Data/uDataModuleContactos.pas index c918069a..7f459235 100644 --- a/Source/Modulos/Contactos/Data/uDataModuleContactos.pas +++ b/Source/Modulos/Contactos/Data/uDataModuleContactos.pas @@ -8,13 +8,13 @@ uses uDAScriptingProvider, uDACDSDataTable, uROWinInetHttpChannel, uRORemoteService, uROClient, uROBinMessage, uBizContactos, uBizContactosDatosBancarios, - uBizDireccionesContacto, uIDataModuleEtiquetasContactosReport, + uBizDireccionesContacto, uIDataModuleListadosContactosReport, uIDataModuleContactos, uDADesigntimeCall, uROTypes, uRODynamicRequest, uDAInterfaces, uDADataStreamer, uDARemoteDataAdapter, uDABin2DataStreamer, uDAMemDataTable, uDataModuleBase, uBizContactosPersonal; type - TDataModuleContactos = class(TDataModuleBase, IDataModuleContactos, IDataModuleEtiquetasContactosReport) + TDataModuleContactos = class(TDataModuleBase, IDataModuleContactos, IDataModuleListadosContactosReport) RORemoteService: TRORemoteService; rda_Contactos: TDARemoteDataAdapter; Bin2DataStreamer: TDABin2DataStreamer; @@ -36,7 +36,8 @@ type function NewDireccion : IBizDireccionesContacto; // Report - function GetReport(const ListaID: TIntegerList): Binary; + function GetReportInformeEtiquetas(const ListaID: TIntegerList): Binary; + function GetReportInformeListaDatosContacto(const ListaID: TIntegerList): Binary; end; implementation @@ -60,7 +61,7 @@ begin // end; -function TDataModuleContactos.GetReport(const ListaID: TIntegerList): Binary; +function TDataModuleContactos.GetReportInformeEtiquetas(const ListaID: TIntegerList): Binary; var AParam : TIntegerArray; begin @@ -72,6 +73,19 @@ begin end; end; +function TDataModuleContactos.GetReportInformeListaDatosContacto( + const ListaID: TIntegerList): Binary; +var + AParam : TIntegerArray; +begin + AParam := ListaID.ToIntegerArray; + try + Result := (RORemoteService as IsrvContactos).GenerarInformeListaDatosContacto(AParam); + finally + FreeANDNIL(AParam); + end; +end; + function TDataModuleContactos.NewDireccion: IBizDireccionesContacto; var Condicion: TDAWhereExpression; diff --git a/Source/Modulos/Contactos/Model/Contactos_model.dpk b/Source/Modulos/Contactos/Model/Contactos_model.dpk index 0d1cc6ea..e8689608 100644 Binary files a/Source/Modulos/Contactos/Model/Contactos_model.dpk and b/Source/Modulos/Contactos/Model/Contactos_model.dpk differ diff --git a/Source/Modulos/Contactos/Model/Contactos_model.dproj b/Source/Modulos/Contactos/Model/Contactos_model.dproj index d62420c8..28eaedc4 100644 --- a/Source/Modulos/Contactos/Model/Contactos_model.dproj +++ b/Source/Modulos/Contactos/Model/Contactos_model.dproj @@ -50,26 +50,26 @@ MainSource - - - - - - - - - - - - - - - + + + + + + + + + + + + + - + + + diff --git a/Source/Modulos/Contactos/Model/Data/uIDataModuleEtiquetasContactosReport.pas b/Source/Modulos/Contactos/Model/Data/uIDataModuleEtiquetasContactosReport.pas deleted file mode 100644 index 5bf48d6c..00000000 --- a/Source/Modulos/Contactos/Model/Data/uIDataModuleEtiquetasContactosReport.pas +++ /dev/null @@ -1,16 +0,0 @@ -unit uIDataModuleEtiquetasContactosReport; - -interface - -uses - SysUtils, Classes, uROTypes, uIntegerListUtils; - -type - IDataModuleEtiquetasContactosReport = interface - ['{26E68DED-5BD9-4227-B07F-9644BED7AE7B}'] - function GetReport(const ListaID: TIntegerList): Binary; - end; - -implementation - -end. diff --git a/Source/Modulos/Contactos/Model/Data/uIDataModuleListadosContactosReport.pas b/Source/Modulos/Contactos/Model/Data/uIDataModuleListadosContactosReport.pas new file mode 100644 index 00000000..2163eac0 --- /dev/null +++ b/Source/Modulos/Contactos/Model/Data/uIDataModuleListadosContactosReport.pas @@ -0,0 +1,17 @@ +unit uIDataModuleListadosContactosReport; + +interface + +uses + SysUtils, Classes, uROTypes, uIntegerListUtils; + +type + IDataModuleListadosContactosReport = interface + ['{26E68DED-5BD9-4227-B07F-9644BED7AE7B}'] + function GetReportInformeEtiquetas(const ListaID: TIntegerList): Binary; + function GetReportInformeListaDatosContacto(const ListaID: TIntegerList): Binary; + end; + +implementation + +end. diff --git a/Source/Modulos/Contactos/Reports/uRptEtiquetasContacto_Server.pas b/Source/Modulos/Contactos/Reports/uRptEtiquetasContacto_Server.pas deleted file mode 100644 index 1adea40d..00000000 --- a/Source/Modulos/Contactos/Reports/uRptEtiquetasContacto_Server.pas +++ /dev/null @@ -1,110 +0,0 @@ -unit uRptEtiquetasContacto_Server; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, frxClass, frxDBSet, uDAScriptingProvider, - uDADataTable, uDACDSDataTable, DB, uDAClasses, frxChart, frxGradient, - frxChBox, frxCross, frxOLE, frxBarcode, frxRich, uDABINAdapter, uROTypes, - uDAInterfaces, uDADataStreamer, uDABin2DataStreamer, uDAMemDataTable, - FactuGES_Intf; - -type - TRptEtiquetasContacto = class(TDataModule) - DADataCabecera: TDADataSource; - tbl_Contactos: TDAMemDataTable; - frxRichObject1: TfrxRichObject; - frxBarCodeObject1: TfrxBarCodeObject; - frxOLEObject1: TfrxOLEObject; - frxCrossObject1: TfrxCrossObject; - frxCheckBoxObject1: TfrxCheckBoxObject; - frxGradientObject1: TfrxGradientObject; - frxChartObject1: TfrxChartObject; - frxDBCabecera: TfrxDBDataset; - frxReport: TfrxReport; - schReport: TDASchema; - DataDictionary: TDADataDictionary; - Bin2DataStreamer: TDABin2DataStreamer; - procedure DataModuleCreate(Sender: TObject); - private - FConnection: IDAConnection; - public - function GenerarInforme(const ListaID: TIntegerArray): Binary; overload; - end; - -implementation - -{$R *.dfm} - -uses - uSistemaFunc, uDataModuleServer, schContactosClient_Intf; - -const - rptEtiquetasContacto = 'InfEtiquetasContacto.fr3'; - - { Dataset names for schReport } - ds_InformeContactos = 'InformeEtiquetasContacto'; - - -{ TRptEtiquetasContacto } - - -procedure TRptEtiquetasContacto.DataModuleCreate(Sender: TObject); -begin - schReport.ConnectionManager := dmServer.ConnectionManager; - FConnection := dmServer.DarNuevaConexion; - frxReport.EngineOptions.NewSilentMode := simReThrow; -end; - -function TRptEtiquetasContacto.GenerarInforme(const ListaID: TIntegerArray): Binary; -var - AStream: TMemoryStream; - dsMaster: IDADataset; - i : Integer; - AWhereStr : String; - AInforme: Variant; - -begin - Result := Binary.Create; - FConnection.BeginTransaction; - - AStream := TMemoryStream.Create; - try - dsMaster := schReport.NewDataset(FConnection, ds_InformeContactos, [], [], False); //, ['ID'], ['611, 751']); //AID]); - AWhereStr := fld_ContactosID + ' in ('; - for i := 0 to ListaID.Count - 1 do - begin - if i > 0 then - AWhereStr := AWhereStr + ', '; - AWhereStr := AWhereStr + IntToStr(ListaID.Items[i]); - end; - - AWhereStr := AWhereStr + ')'; - dsMaster.Where.AddText(AWhereStr); - - dsMaster.Open; - - AStream.Clear; - Bin2DataStreamer.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1); - Bin2DataStreamer.ReadDataset(AStream, tbl_Contactos, TRUE, '', TRUE, TRUE); - - AInforme := DarRutaFichero(DarRutaInformes, rptEtiquetasContacto); - if VarIsNull(AInforme) then - raise Exception.Create (('Error Servidor: GenerarInforme, no encuentra informe ' + rptEtiquetasContacto)); - - frxReport.LoadFromFile(AInforme, True); - frxReport.PrepareReport(True); - - frxReport.PreviewPages.SaveToStream(Result); - - finally - AStream.Free; - dsMaster := Nil; - FConnection.RollbackTransaction; - end; - -end; - - -end. diff --git a/Source/Modulos/Contactos/Reports/uRptEtiquetasContacto_Server.dfm b/Source/Modulos/Contactos/Reports/uRptListadosContactos_Server.dfm similarity index 69% rename from Source/Modulos/Contactos/Reports/uRptEtiquetasContacto_Server.dfm rename to Source/Modulos/Contactos/Reports/uRptListadosContactos_Server.dfm index b1b9a100..0cad74b7 100644 --- a/Source/Modulos/Contactos/Reports/uRptEtiquetasContacto_Server.dfm +++ b/Source/Modulos/Contactos/Reports/uRptListadosContactos_Server.dfm @@ -1,8 +1,8 @@ -object RptEtiquetasContacto: TRptEtiquetasContacto +object RptListadosContactos: TRptListadosContactos OldCreateOrder = True OnCreate = DataModuleCreate Height = 405 - Width = 447 + Width = 690 object DADataCabecera: TDADataSource DataSet = tbl_Contactos.Dataset DataTable = tbl_Contactos @@ -27,37 +27,35 @@ object RptEtiquetasContacto: TRptEtiquetasContacto Size = 255 end item - Name = 'PERSONA_CONTACTO' + Name = 'TELEFONO_TRABAJO' + DataType = datString + Size = 25 + end + item + Name = 'TELEFONO_PARTICULAR' + DataType = datString + Size = 25 + end + item + Name = 'MOVIL' + DataType = datString + Size = 25 + end + item + Name = 'MAIL_TABAJO' DataType = datString Size = 255 end item - Name = 'CALLE' + Name = 'MAIL_PARTICULAR' DataType = datString Size = 255 - end - item - Name = 'POBLACION' - DataType = datString - Size = 255 - end - item - Name = 'PROVINCIA' - DataType = datString - Size = 255 - end - item - Name = 'CODIGO_POSTAL' - DataType = datString - Size = 10 end> Params = <> MasterMappingMode = mmDataRequest LogChanges = False StreamingOptions = [soDisableEventsWhileStreaming] RemoteFetchEnabled = False - DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] - MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] IndexDefs = <> Left = 264 Top = 128 @@ -180,6 +178,88 @@ object RptEtiquetasContacto: TRptEtiquetasContacto DataType = datString Size = 10 end> + end + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'V_LISTADO_DATOS_CONTACTO ' + StatementType = stAutoSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'ID_CONTACTO' + TableField = 'ID_CONTACTO' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'TELEFONO_TRABAJO' + TableField = 'TELEFONO_TRABAJO' + end + item + DatasetField = 'TELEFONO_PARTICULAR' + TableField = 'TELEFONO_PARTICULAR' + end + item + DatasetField = 'MOVIL' + TableField = 'MOVIL' + end + item + DatasetField = 'MAIL_TRABAJO' + TableField = 'MAIL_TRABAJO' + end + item + DatasetField = 'MAIL_PARTICULAR' + TableField = 'MAIL_PARTICULAR' + end> + end> + Name = 'InformeListaDatosContacto' + Fields = < + item + Name = 'ID' + DataType = datInteger + end + item + Name = 'ID_CONTACTO' + DataType = datInteger + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + end + item + Name = 'TELEFONO_TRABAJO' + DataType = datString + Size = 25 + end + item + Name = 'TELEFONO_PARTICULAR' + DataType = datString + Size = 25 + end + item + Name = 'MOVIL' + DataType = datString + Size = 25 + end + item + Name = 'MAIL_TRABAJO' + DataType = datString + Size = 255 + end + item + Name = 'MAIL_PARTICULAR' + DataType = datString + Size = 255 + end> end> JoinDataTables = <> UnionDataTables = <> @@ -385,71 +465,16 @@ object RptEtiquetasContacto: TRptEtiquetasContacto Top = 158 end object frxReport: TfrxReport - Version = '4.3' + Version = '4.8.11' DotMatrixReport = False 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 = 38330.712904247710000000 - ReportOptions.LastChange = 39328.775946539350000000 + ReportOptions.CreateDate = 42030.550901400500000000 + ReportOptions.LastChange = 42033.784458587960000000 ScriptLanguage = 'PascalScript' - ScriptText.Strings = ( - 'procedure Memo2OnBeforePrint(Sender: TfrxComponent);' - 'var' - ' Cadena: String;' - 'begin' - ' Cadena := '#39#39';' - '' - ' if ( <> '#39#39') then' - ' Cadena := UPPERCASE();' - '' - ' Memo2.Lines.Clear;' - ' Memo2.Lines.Add(Cadena);' - '' - ' if ( <> '#39#39') then' - ' Cadena := UPPERCASE();' - ' Memo2.Lines.Add(Cadena);' - '' - ' Cadena := '#39#39';' - ' if ( <> '#39#39') then' - ' Cadena := UPPERCASE();' - '' - ' if ( <> '#39#39') then' - ' if (Cadena <> '#39#39') then' - - ' Cadena := Cadena + '#39' '#39' + UPPERCASE();' - '' - ' if ( <> '#39#39')' - - ' and ( <> ) then' - ' begin' - ' if ( <> '#39#39') then' - - ' Cadena := Cadena + '#39' ('#39' + UPPERCASE() + '#39')'#39 - ' else' - - ' Cadena := Cadena + '#39' '#39' + UPPERCASE();' - ' end;' - ' Memo2.Lines.Add(Cadena);' - '' - ' Cadena := '#39#39';' - ' Memo2.Lines.Add(Cadena);' - ' if ( <> '#39#39') then' - - ' Cadena := '#39'ATT. '#39' + UPPERCASE();' - ' Memo2.Lines.Add(Cadena);' - 'end;' - '' - 'begin' - '' - 'end.') ShowProgress = False StoreInDFM = False Left = 169 @@ -459,6 +484,7 @@ object RptEtiquetasContacto: TRptEtiquetasContacto UserName = 'frxDBCabecera' CloseDataSource = True DataSource = DADataCabecera + BCDToCurrency = False Left = 264 Top = 16 end @@ -466,4 +492,68 @@ object RptEtiquetasContacto: TRptEtiquetasContacto Left = 48 Top = 80 end + object frxDBCabecera2: TfrxDBDataset + UserName = 'frxDBCabecera2' + CloseDataSource = True + DataSource = DADataCabecera2 + BCDToCurrency = False + Left = 400 + Top = 16 + end + object DADataCabecera2: TDADataSource + DataSet = tbl_lista_datos_contactos.Dataset + DataTable = tbl_lista_datos_contactos + Left = 400 + Top = 72 + end + object tbl_lista_datos_contactos: TDAMemDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ID' + DataType = datInteger + end + item + Name = 'ID_CONTACTO' + DataType = datInteger + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + end + item + Name = 'TELEFONO_TRABAJO' + DataType = datString + Size = 25 + end + item + Name = 'TELEFONO_PARTICULAR' + DataType = datString + Size = 25 + end + item + Name = 'MOVIL' + DataType = datString + Size = 25 + end + item + Name = 'MAIL_TRABAJO' + DataType = datString + Size = 255 + end + item + Name = 'MAIL_PARTICULAR' + DataType = datString + Size = 255 + end> + Params = <> + MasterMappingMode = mmDataRequest + LogChanges = False + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + IndexDefs = <> + Left = 400 + Top = 128 + end end diff --git a/Source/Modulos/Contactos/Reports/uRptListadosContactos_Server.pas b/Source/Modulos/Contactos/Reports/uRptListadosContactos_Server.pas new file mode 100644 index 00000000..b0da96a6 --- /dev/null +++ b/Source/Modulos/Contactos/Reports/uRptListadosContactos_Server.pas @@ -0,0 +1,167 @@ +unit uRptListadosContactos_Server; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, frxClass, frxDBSet, uDAScriptingProvider, + uDADataTable, uDACDSDataTable, DB, uDAClasses, frxChart, frxGradient, + frxChBox, frxCross, frxOLE, frxBarcode, frxRich, uDABINAdapter, uROTypes, + uDAInterfaces, uDADataStreamer, uDABin2DataStreamer, uDAMemDataTable, + FactuGES_Intf, frxExportCSV; + +type + TRptListadosContactos = class(TDataModule) + DADataCabecera: TDADataSource; + tbl_Contactos: TDAMemDataTable; + frxRichObject1: TfrxRichObject; + frxBarCodeObject1: TfrxBarCodeObject; + frxOLEObject1: TfrxOLEObject; + frxCrossObject1: TfrxCrossObject; + frxCheckBoxObject1: TfrxCheckBoxObject; + frxGradientObject1: TfrxGradientObject; + frxChartObject1: TfrxChartObject; + frxDBCabecera: TfrxDBDataset; + frxReport: TfrxReport; + Bin2DataStreamer: TDABin2DataStreamer; + frxDBCabecera2: TfrxDBDataset; + DADataCabecera2: TDADataSource; + tbl_lista_datos_contactos: TDAMemDataTable; + schReport: TDASchema; + DataDictionary: TDADataDictionary; + procedure DataModuleCreate(Sender: TObject); + private + FConnection: IDAConnection; + public + function GenerarInformeListaDatosContacto(const ListaID: TIntegerArray): Binary; overload; + function GenerarInformeEtiquetas(const ListaID: TIntegerArray): Binary; overload; + end; + +implementation + +{$R *.dfm} + +uses + uSistemaFunc, uDataModuleServer, schContactosClient_Intf; + +const + rptEtiquetasContacto = 'InfEtiquetasContacto.fr3'; + rptListaDatosContacto = 'InfListaDatosContacto.fr3'; + + { Dataset names for schReport } + ds_InformeEtiquetasContactos = 'InformeEtiquetasContacto'; + ds_InformeListaDatosContacto = 'InformeListaDatosContacto'; + ds_InformeListaDatosContactoPersonal = 'InformeListaDatosContactoPersonal'; + + +{ TRptListadosContactos } + + +procedure TRptListadosContactos.DataModuleCreate(Sender: TObject); +begin + schReport.ConnectionManager := dmServer.ConnectionManager; + FConnection := dmServer.DarNuevaConexion; + frxReport.EngineOptions.NewSilentMode := simReThrow; +end; + +function TRptListadosContactos.GenerarInformeEtiquetas( + const ListaID: TIntegerArray): Binary; +var + AStream: TMemoryStream; + dsMaster: IDADataset; + i : Integer; + AWhereStr : String; + AInforme: Variant; + +begin + Result := Binary.Create; + FConnection.BeginTransaction; + + AStream := TMemoryStream.Create; + try + dsMaster := schReport.NewDataset(FConnection, ds_InformeEtiquetasContactos, [], [], False); //, ['ID'], ['611, 751']); //AID]); + AWhereStr := fld_ContactosID + ' in ('; + for i := 0 to ListaID.Count - 1 do + begin + if i > 0 then + AWhereStr := AWhereStr + ', '; + AWhereStr := AWhereStr + IntToStr(ListaID.Items[i]); + end; + + AWhereStr := AWhereStr + ')'; + dsMaster.Where.AddText(AWhereStr); + + dsMaster.Open; + + AStream.Clear; + Bin2DataStreamer.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1); + Bin2DataStreamer.ReadDataset(AStream, tbl_Contactos, TRUE, '', TRUE, TRUE); + + AInforme := DarRutaFichero(DarRutaInformes, rptEtiquetasContacto); + if VarIsNull(AInforme) then + raise Exception.Create (('Error Servidor: GenerarInforme, no encuentra informe ' + rptEtiquetasContacto)); + + frxReport.LoadFromFile(AInforme, True); + frxReport.PrepareReport(True); + + frxReport.PreviewPages.SaveToStream(Result); + + finally + AStream.Free; + dsMaster := Nil; + FConnection.RollbackTransaction; + end; + +end; + +function TRptListadosContactos.GenerarInformeListaDatosContacto(const ListaID: TIntegerArray): Binary; +var + AStream: TMemoryStream; + dsMaster: IDADataset; + + i : Integer; + AWhereStr : String; + AInforme: Variant; + +begin + Result := Binary.Create; + FConnection.BeginTransaction; + + AStream := TMemoryStream.Create; + try + dsMaster := schReport.NewDataset(FConnection, ds_InformeListaDatosContacto, [], [], False); //, ['ID'], ['611, 751']); //AID]); + AWhereStr := fld_PersonalContactoID_CONTACTO + ' in ('; + for i := 0 to ListaID.Count - 1 do + begin + if i > 0 then + AWhereStr := AWhereStr + ', '; + AWhereStr := AWhereStr + IntToStr(ListaID.Items[i]); + end; + + AWhereStr := AWhereStr + ')'; + dsMaster.Where.AddText(AWhereStr); + dsMaster.Open; + AStream.Clear; + Bin2DataStreamer.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1); + Bin2DataStreamer.ReadDataset(AStream, tbl_lista_datos_contactos, TRUE, '', TRUE, TRUE); + + AInforme := DarRutaFichero(DarRutaInformes, rptListaDatosContacto); + if VarIsNull(AInforme) then + raise Exception.Create (('Error Servidor: GenerarInforme, no encuentra informe ' + rptListaDatosContacto)); + + frxReport.LoadFromFile(AInforme, True); + frxReport.PrepareReport(True); + + frxReport.PreviewPages.SaveToStream(Result); + + finally + AStream.Free; + dsMaster := Nil; + FConnection.RollbackTransaction; + end; + + +end; + + +end. diff --git a/Source/Modulos/Contactos/Servidor/srvContactos_Impl.pas b/Source/Modulos/Contactos/Servidor/srvContactos_Impl.pas index 941e92da..030a5b41 100644 --- a/Source/Modulos/Contactos/Servidor/srvContactos_Impl.pas +++ b/Source/Modulos/Contactos/Servidor/srvContactos_Impl.pas @@ -42,6 +42,7 @@ type public function GenerarInformeEtiquetas(const ListaID: TIntegerArray): Binary; function DarTiendaDeUsuario(const ID_Empresa: Integer; const ID_Usuario: Integer): Integer; + function GenerarInformeListaDatosContacto(const ListaID: TIntegerArray): Binary; end; implementation @@ -52,7 +53,7 @@ uses uDataModuleServer, uDatabaseUtils, uUsersManager, schContactosClient_Intf, uBizVendedoresServer, uBizClientesServer, uBizProveedoresServer, uRestriccionesUsuarioUtils, - uRptEtiquetasContacto_Server; + uRptListadosContactos_Server; procedure Create_srvContactos(out anInstance : IUnknown); begin @@ -109,11 +110,24 @@ end; function TsrvContactos.GenerarInformeEtiquetas(const ListaID: TIntegerArray): Binary; var - AReportGenerator : TRptEtiquetasContacto; + AReportGenerator : TRptListadosContactos; begin - AReportGenerator := TRptEtiquetasContacto.Create(nil); + AReportGenerator := TRptListadosContactos.Create(nil); try - Result := AReportGenerator.GenerarInforme(ListaID); + Result := AReportGenerator.GenerarInformeEtiquetas(ListaID); + finally + FreeAndNIL(AReportGenerator); + end; +end; + +function TsrvContactos.GenerarInformeListaDatosContacto( + const ListaID: TIntegerArray): Binary; +var + AReportGenerator : TRptListadosContactos; +begin + AReportGenerator := TRptListadosContactos.Create(nil); + try + Result := AReportGenerator.GenerarInformeListaDatosContacto(ListaID); finally FreeAndNIL(AReportGenerator); end; diff --git a/Source/Modulos/Contactos/Views/Contactos_view.dpk b/Source/Modulos/Contactos/Views/Contactos_view.dpk index 4eb9981d..a428d8e6 100644 --- a/Source/Modulos/Contactos/Views/Contactos_view.dpk +++ b/Source/Modulos/Contactos/Views/Contactos_view.dpk @@ -89,7 +89,7 @@ contains uEditorGruposCliente in 'uEditorGruposCliente.pas' {fEditorGruposCliente: TCustomEditor}, uEditorVendedores in 'uEditorVendedores.pas' {fEditorVendedores: TCustomEditor}, uEditorGruposProveedor in 'uEditorGruposProveedor.pas' {fEditorGruposProveedor: TCustomEditor}, - uEditorEtiquetasContactosReport in 'uEditorEtiquetasContactosReport.pas' {fEditorEtiquetasContactosReport: TCustomEditor}, + uEditorListadosContactosReport in 'uEditorListadosContactosReport.pas' {fEditorListadosContactosPreview: TCustomEditor}, uViewSubCuentaContacto in 'uViewSubCuentaContacto.pas' {frViewSubCuentaContacto: TCustomView}, uEditorProcedenciasCliente in 'uEditorProcedenciasCliente.pas' {fEditorProcedenciasCliente: TCustomEditor}, uEditorElegirVendedores in 'uEditorElegirVendedores.pas' {fEditorElegirVendedores: TCustomEditor}, diff --git a/Source/Modulos/Contactos/Views/Contactos_view.dproj b/Source/Modulos/Contactos/Views/Contactos_view.dproj index a035001b..a330f2c5 100644 --- a/Source/Modulos/Contactos/Views/Contactos_view.dproj +++ b/Source/Modulos/Contactos/Views/Contactos_view.dproj @@ -47,40 +47,34 @@ MainSource - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + +
fEditorCliente
@@ -121,10 +115,6 @@
fEditorElegirVendedores
TCustomEditor
- -
fEditorEtiquetasContactosReport
- TCustomEditor -
fEditorGruposCliente
TCustomEditor @@ -133,6 +123,10 @@
fEditorGruposProveedor
TCustomEditor
+ +
fEditorListadosContactosPreview
+ TCustomEditor +
fEditorPersonal
TCustomEditor @@ -228,6 +222,12 @@
frViewVendedores
TCustomView
+ + + + + +