]> git.llucax.com Git - z.facultad/75.10/miklolife.git/commitdiff
- Valida contra el schema
authorGuillermo Rugilo <guillerugilo@yahoo.com.ar>
Thu, 7 Jul 2005 06:49:44 +0000 (06:49 +0000)
committerGuillermo Rugilo <guillerugilo@yahoo.com.ar>
Thu, 7 Jul 2005 06:49:44 +0000 (06:49 +0000)
- Genera los 2 reportes XML para Pagos
- Genera los "mails" (archivo txt, en la realidad)
- Actualiza autorizaciones correctamente en BD
- Faltan unos detalles y un poco mas de tests :D

demo/src/Controlador/RecibirPrestacionesController.cs
demo/src/Reportes/ConsumoAfiliadosReport.cs
demo/src/Reportes/InfoPrestacionesAdmin.cs
demo/src/Reportes/InfoPrestacionesReport.cs
demo/src/Reportes/NotificacionesAdmin.cs
demo/src/Reportes/PrestacionesRealizadasReport.cs
demo/src/osocial.exe.config

index 6fa8d3bdb6a22ad572f862b5fd762d5af4fbbba9..f6b1a080865e726422f2c1e29e14519fab8de65f 100644 (file)
@@ -9,6 +9,8 @@ using Dominio.Afiliados;
 using Dominio.Planes;\r
 using Reportes;\r
 \r
+using System.IO;\r
+\r
 using com.db4o;\r
 \r
 #endregion Usings\r
@@ -67,8 +69,9 @@ namespace Controlador
                                Solicitante sol = new Solicitante( ETipoDocumento.DNI, 28123456, "Jorge", "Drexler" );\r
                                Plan plan = new Plan( 10F ); plan.Codigo = 3; \r
                                Afiliado afil = new Afiliado( sol, plan, new DateTime(2004, 4, 30 ) );\r
-                               a.Afiliado = new Dominio.Afiliados.Afiliado( 987 );\r
-                               a.Prestacion = new Prestacion( "B01AC06" );\r
+                               afil.Codigo = 987;\r
+                               a.Afiliado = afil;\r
+                               a.Prestacion = new Prestacion( "B01AC06", "Acido acetilsalicílico" );\r
                                a.Prestador = pre;\r
                                a.FechaSolicitud = new DateTime( 2005, 5, 20 ); // 20 de mayo\r
                                a.FechaRealizacion = DateTime.MinValue;\r
@@ -110,8 +113,8 @@ namespace Controlador
                        \r
                                        if ( informes.Length <= 0 )\r
                                        {\r
-                                               this.NotificarPrestador( NotificacionPrestador.Tipo.InfoNoRecibida, null );\r
-                                               this.NotificarPagos( "Archivos no recibidos", "Prestador=" + p.Nombre + "\n" + "CUIT=" + p.Cuit );\r
+                                               this.NotificarPrestador( p, NotificacionPrestador.Tipo.InfoNoRecibida, null );\r
+                                               this.NotificarPagos( "NORECIBIDO " + p.Cuit.Trim() + " " + DateTime.Now.ToString("yyyy-MM-dd") );\r
                                        }\r
                                        else\r
                                        {\r
@@ -123,7 +126,7 @@ namespace Controlador
                                                                ip.ValidarLineas( p ); //Las marca como aprobadas/rechazadas\r
                                                                this.ProcesarLineas( p, ip );\r
                                                                ipAdmin.MoverArchivoAceptado( ip );\r
-                                                               this.NotificarPrestador( NotificacionPrestador.Tipo.ProcesoExitoso, ip );\r
+                                                               this.NotificarPrestador( p, NotificacionPrestador.Tipo.ProcesoExitoso, ip );\r
                                                        }\r
                                                        else\r
                                                        {\r
@@ -131,8 +134,8 @@ namespace Controlador
                                                                // 1. Mover el archivo a "rechazados"\r
                                                                ipAdmin.MoverArchivoRechazado( ip );\r
                                                                // 2. Enviar mail al Prestador y a Pagos\r
-                                                               this.NotificarPrestador( NotificacionPrestador.Tipo.ErrorGrave, ip );\r
-                                                               this.NotificarPagos( "Error al procesar archivo", "Nombre=" + ip.PathArchivo );\r
+                                                               this.NotificarPrestador( p, NotificacionPrestador.Tipo.ErrorGrave, ip );\r
+                                                               this.NotificarPagos( "ERROR " + p.Cuit.Trim() + " " + ip.NombreArchivo );\r
                                                        }\r
                                                } //foreach informes\r
                                        } //else\r
@@ -158,7 +161,6 @@ namespace Controlador
                /// Si está aprobada, la registra en el sistema y la agrega al reporte de Consumo de los Afiliados. \r
                /// A todas las lineas las agrega al Informe de Aprobaciones/rechazos de Prestaciones Realizadas.\r
                /// </summary>\r
-               /// <param name="ip">Reporte del cual se porcesarán las lineas</param>\r
                private void ProcesarLineas( Prestador p, InfoPrestacionesReport ip )\r
                {\r
                        foreach ( LineaInfoPrestacionesReport linea in ip.Lineas )\r
@@ -178,14 +180,14 @@ namespace Controlador
                        }\r
                }\r
 \r
-               private void NotificarPrestador( NotificacionPrestador.Tipo tipoNotif, InfoPrestacionesReport ip )\r
+               private void NotificarPrestador( Prestador p, NotificacionPrestador.Tipo tipoNotif, InfoPrestacionesReport ip )\r
                {\r
-                       //NotificacionesAdmin.\r
+                       NotificacionesAdmin.Instancia.EnviarAlPrestador( p, tipoNotif, ip );\r
                }\r
 \r
-               private void NotificarPagos( string titulo, string contenido )\r
+               private void NotificarPagos( string mensaje )\r
                {\r
-                       \r
+                       NotificacionesAdmin.Instancia.EnviarAPagos( mensaje );\r
                }\r
 \r
 \r
index 04878d24175e7a4778d41f784e53d4b51f15f00e..945a246b59eec19d648253bd1ecd66b46a95c3b5 100644 (file)
@@ -1,9 +1,11 @@
 using System;\r
 using System.Collections;\r
+using System.Configuration;\r
 using System.Xml;\r
 using Dominio.Autorizaciones;\r
 using Dominio.Afiliados;\r
 using com.db4o;\r
+using System.IO;\r
 \r
 \r
 namespace Reportes\r
@@ -122,7 +124,25 @@ namespace Reportes
 \r
                public void Serializar()\r
                {\r
-                       XmlTextWriter writer = new XmlTextWriter("c:\\rc_borrame.xml",null);\r
+                       string currentDir = Directory.GetCurrentDirectory();\r
+                       string dirPagos = Path.Combine( currentDir, ConfigurationSettings.AppSettings["DirectorioPagos"] );\r
+                       if ( ! Directory.Exists(dirPagos) )\r
+                       {\r
+                               Directory.CreateDirectory( dirPagos );\r
+                       }\r
+                       \r
+                       int secuencia = 0;\r
+                       \r
+                       string baseFileName = "rc_" + DateTime.Now.ToString("yyyy-MM-dd") + "_"; \r
+                       string pathName = Path.Combine( dirPagos, baseFileName + secuencia.ToString("00") + ".xml" );\r
+                       \r
+                       while ( File.Exists(pathName) )\r
+                       {\r
+                               secuencia += 1;\r
+                               pathName = Path.Combine( dirPagos, baseFileName + secuencia.ToString("00") + ".xml");\r
+                       }\r
+\r
+                       XmlTextWriter writer = new XmlTextWriter( pathName, null );\r
                        writer.Formatting = Formatting.Indented;\r
                        this.xmlDoc.Save(writer);\r
                }\r
index dc89e794c64e67ef531f2929d0c73e85bf41411b..501a9d4bd6d97da84f1dfca452ff63baf4acdc0b 100644 (file)
@@ -70,16 +70,33 @@ namespace Reportes
                                return;\r
                        else\r
                                informeAprobaciones.Serializar();\r
-\r
                }\r
 \r
                public void MoverArchivoAceptado( InfoPrestacionesReport ip )\r
                {\r
+                       string currentDir = Directory.GetCurrentDirectory();\r
+               \r
+                       string dirAceptados = Path.Combine( currentDir, ConfigurationSettings.AppSettings["DirectorioInformesAceptados"] );\r
+                       if ( ! Directory.Exists(dirAceptados) )\r
+                       {\r
+                               Directory.CreateDirectory( dirAceptados );\r
+                       }\r
 \r
+                       File.Move( ip.PathArchivo, Path.Combine( dirAceptados, ip.NombreArchivo ) );\r
+       \r
                }\r
 \r
                public void MoverArchivoRechazado( InfoPrestacionesReport ip )\r
                {\r
+                       string currentDir = Directory.GetCurrentDirectory();\r
+               \r
+                       string dirRechazados = Path.Combine( currentDir, ConfigurationSettings.AppSettings["DirectorioInformesRechazados"] );\r
+                       if ( ! Directory.Exists(dirRechazados) )\r
+                       {\r
+                               Directory.CreateDirectory( dirRechazados );\r
+                       }\r
+\r
+                       File.Move( ip.PathArchivo, Path.Combine( dirRechazados, ip.NombreArchivo ) );\r
 \r
                }\r
 \r
index 6ca31d62f9a236f3e9bf08d2901fa68c35cd7fb7..b6cc3dcd545b0344cb862ffef404260a63ff866e 100644 (file)
@@ -48,6 +48,11 @@ namespace Reportes
                        set { this._pathArchivo = value; }\r
                }\r
 \r
+               public string NombreArchivo\r
+               {\r
+                       get { return this.PathArchivo.Substring(this.PathArchivo.LastIndexOf(Path.DirectorySeparatorChar) + 1); }\r
+               }\r
+\r
                public string CuitPrestador\r
                {\r
                        get { return this._cuitPrestador; }\r
index 6c5c7d9a283e87793601fdf3fbb568f3eebcef77..3f8e949a5e0cc5c700081ed3b870e70e42b78b54 100644 (file)
 using System;\r
+using System.IO;\r
+using System.Configuration;\r
+using Dominio.Autorizaciones;\r
+\r
 \r
 namespace Reportes\r
 {\r
        /// <summary>\r
        /// Clase que contiene la funcionalidad para generar y enviar notificaciones\r
        /// </summary>\r
-       public class NotificacionesAdmin\r
+       public sealed class NotificacionesAdmin\r
        {\r
                #region Constructores\r
                \r
-               public NotificacionesAdmin()\r
+               private NotificacionesAdmin()\r
+               {\r
+               }\r
+\r
+               private static NotificacionesAdmin _instancia = new NotificacionesAdmin();\r
+               public static NotificacionesAdmin Instancia\r
                {\r
+                       get { return NotificacionesAdmin._instancia; }\r
                }\r
 \r
                #endregion Constructores\r
 \r
                #region Métodos Públicos\r
 \r
-               public void EnviarAlPrestador( NotificacionPrestador.Tipo tipoNotif, InfoPrestacionesReport ip )\r
+               public void EnviarAlPrestador( Prestador p, NotificacionPrestador.Tipo tipoNotif, InfoPrestacionesReport ip )\r
                {\r
+                       string currentDir = Directory.GetCurrentDirectory();\r
+               \r
+                       string dirMails = Path.Combine( currentDir, ConfigurationSettings.AppSettings["DirectorioMails"] );\r
+                       if ( ! Directory.Exists(dirMails) )\r
+                       {\r
+                               Directory.CreateDirectory( dirMails );\r
+                       }\r
+\r
+                       string pathName = Path.Combine( dirMails, "prestadores.txt" );\r
+                       string subject = string.Empty;\r
+                       \r
+                       switch ( tipoNotif )\r
+                       {\r
+                               case NotificacionPrestador.Tipo.ProcesoExitoso:\r
+                                       subject = "OK " + ip.NombreArchivo;\r
+                                       break;\r
+                               case NotificacionPrestador.Tipo.InfoNoRecibida:\r
+                                       subject = "NORECIBIDO " + DateTime.Now.ToString("yyyy-MM-dd");\r
+                                       break;\r
+                               case NotificacionPrestador.Tipo.ErrorGrave:\r
+                                       subject = "ERROR " + ip.NombreArchivo;\r
+                                       break;\r
+                       }\r
 \r
+                       this.EscribirArchivo( pathName, subject, "Prestador: " + p.Cuit );\r
                }\r
 \r
-               public void EnviarAPagos( string titulo, string contenido )\r
+               public void EnviarAPagos( string mensaje )\r
                {\r
+                       string currentDir = Directory.GetCurrentDirectory();\r
+               \r
+                       string dirMails = Path.Combine( currentDir, ConfigurationSettings.AppSettings["DirectorioMails"] );\r
+                       if ( ! Directory.Exists(dirMails) )\r
+                       {\r
+                               Directory.CreateDirectory( dirMails );\r
+                       }\r
 \r
+                       string pathName = Path.Combine( dirMails, "pagos.txt" );\r
+                       string subject = mensaje;\r
+       \r
+                       this.EscribirArchivo( pathName, subject, string.Empty );\r
                }\r
 \r
                #endregion Métodos Públicos\r
+\r
+               #region Métodos privados\r
+\r
+\r
+               private void EscribirArchivo( string pathName, string subject, string titulo )\r
+               {\r
+                       StreamWriter w = null;\r
+                       if ( File.Exists(pathName) )\r
+                               w = File.AppendText( pathName );\r
+                       else\r
+                               w = File.CreateText( pathName );\r
+\r
+                       w.WriteLine( @"*** " + titulo + "**************************************************" );\r
+                       w.WriteLine( @"*** " + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + " ******************************************************" );\r
+                       w.WriteLine( @"******************************************************************************" );\r
+                       w.WriteLine( @"Subject: " + subject );\r
+                       w.WriteLine();\r
+                       w.WriteLine( @"------------------------------------------------------------------------------" );\r
+                       w.WriteLine();\r
+\r
+                       w.Close();\r
+               }\r
+\r
+               #endregion Métodos privados\r
        }\r
 }\r
+\r
index f7de05f6dbfdeb8a46df6e972086f6850baad52f..ca1372f2ba2f26dfd6c8b98fca5301811f3abb4c 100644 (file)
@@ -4,6 +4,9 @@ using System.Xml;
 using Dominio.Autorizaciones;\r
 using Dominio.Afiliados;\r
 using com.db4o;\r
+using System.Configuration;\r
+using System.IO;\r
+\r
 \r
 namespace Reportes\r
 {\r
@@ -122,7 +125,25 @@ namespace Reportes
 \r
                public void Serializar()\r
                {\r
-                       XmlTextWriter writer = new XmlTextWriter("c:\\borrame.xml",null);\r
+                       string currentDir = Directory.GetCurrentDirectory();\r
+                       string dirPagos = Path.Combine( currentDir, ConfigurationSettings.AppSettings["DirectorioPagos"] );\r
+                       if ( ! Directory.Exists(dirPagos) )\r
+                       {\r
+                               Directory.CreateDirectory( dirPagos );\r
+                       }\r
+                       \r
+                       int secuencia = 0;\r
+                       \r
+                       string baseFileName = "rp_" + DateTime.Now.ToString("yyyy-MM-dd") + "_"; \r
+                       string pathName = Path.Combine( dirPagos, baseFileName + secuencia.ToString("00") + ".xml" );\r
+                       \r
+                       while ( File.Exists(pathName) )\r
+                       {\r
+                               secuencia += 1;\r
+                               pathName = Path.Combine( dirPagos, baseFileName + secuencia.ToString("00") + ".xml");\r
+                       }\r
+\r
+                       XmlTextWriter writer = new XmlTextWriter( pathName, null );\r
                        writer.Formatting = Formatting.Indented;\r
                        this.xmlDoc.Save(writer);\r
                }\r
index 0ffb483c7cc85cf28d1446825f311a261dd2396b..a8869c9ee586ec0202548b963c29a447bb5fd9ab 100644 (file)
@@ -26,6 +26,9 @@
         <!-- Directorio donde se encuentran recursos utilizados por la aplicación, por ejemplo\r
                        los schemas de validación de los informes -->\r
         <add key="DirectorioRecursos" value="Recursos" />  <!-- Relativo al dir donde corre el exe -->\r
+\r
+        <!-- Directorio donde se graban los mails -->\r
+        <add key="DirectorioMails" value="Mails" />  <!-- Relativo al dir donde corre el exe -->\r
         \r
     </appSettings>\r
     \r