]> git.llucax.com Git - z.facultad/75.10/miklolife.git/commitdiff
El esqueleto de la implementación está... falta rellenarlo con un poco de carne y...
authorGuillermo Rugilo <guillerugilo@yahoo.com.ar>
Mon, 27 Jun 2005 03:09:51 +0000 (03:09 +0000)
committerGuillermo Rugilo <guillerugilo@yahoo.com.ar>
Mon, 27 Jun 2005 03:09:51 +0000 (03:09 +0000)
demo/src/Controlador/RecibirPrestacionesController.cs
demo/src/Reportes/ConsumoAfiliadosReport.cs [new file with mode: 0644]
demo/src/Reportes/InfoPrestacionesAdmin.cs
demo/src/Reportes/InfoPrestacionesReport.cs
demo/src/Reportes/LineaInfoPrestacionesReport.cs
demo/src/Reportes/NotificacionPrestador.cs [new file with mode: 0644]
demo/src/Reportes/NotificacionesAdmin.cs [new file with mode: 0644]
demo/src/Reportes/PrestacionesRealizadasReport.cs [new file with mode: 0644]
demo/src/VSProject.csproj
demo/src/osocial.exe.config

index c9a45fb93c23406affe43e0cf2dcebed96dc196e..5789ac4ff072d16a6d001c75fb82fc241fc6e2cf 100644 (file)
@@ -25,6 +25,13 @@ namespace Controlador
 \r
                #endregion Constructores\r
 \r
+               #region Campos Privados \r
+               \r
+               private ConsumoAfiliadosReport _reporteConsumo = null;\r
+               private PrestacionesRealizadasReport _reporteAprobaciones = null;\r
+               \r
+               #endregion Campos Privados\r
+\r
                #region Métodos Públicos\r
                \r
                public void procesarInfoRecibida()\r
@@ -42,25 +49,39 @@ namespace Controlador
                                        //Obtener archivos enviados del prestador\r
                                        InfoPrestacionesReport[] informes = ipAdmin.ObtenerInfoPendiente( p );\r
                        \r
-                                       //Recorro archivo por archivo\r
-                                       foreach ( InfoPrestacionesReport ip in informes )\r
+                                       if ( informes.Length <= 0 )\r
                                        {\r
-                                               if ( (ip.ValidarFormato()) && ( ip.Cuit == p.Cuit ) )\r
-                                               {\r
-                                                       //OK\r
-                                               }\r
-                                               else\r
-                                               {\r
-                                                       //ERROR. \r
-                                                       // 1. Mover el archivo a "rechazados"\r
-                                                       // 2. Enviar mail\r
-                                               }\r
+                                               this.NotificarPrestador( NotificacionPrestador.Tipo.InfoNoRecibida, null );\r
+                                               this.NotificarPagos( "Archivos no recibidos", "Prestador=" + p.Nombre + "\n" + "CUIT=" + p.Cuit );\r
                                        }\r
-                               }\r
+                                       else\r
+                                       {\r
+                                               //Recorro informe por informe\r
+                                               foreach ( InfoPrestacionesReport ip in informes )\r
+                                               {\r
+                                                       if ( (ip.ValidarFormato()) && ( ip.Cuit == p.Cuit ) )\r
+                                                       {       //OK\r
+                                                               ip.ValidarLineas(); //Las marca como aprobadas/rechazadas\r
+                                                               this.ProcesarLineas( ip );\r
+                                                               ipAdmin.MoverArchivoAceptado( ip );\r
+                                                               this.NotificarPrestador( NotificacionPrestador.Tipo.ProcesoExitoso, ip );\r
+                                                       }\r
+                                                       else\r
+                                                       {\r
+                                                               //ERROR. \r
+                                                               // 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
+                                                       }\r
+                                               } //foreach informes\r
+                                       } //else\r
+                               } // foreach prestadores\r
 \r
-                               /*\r
-                                *                      string dir = System.Configuration.ConfigurationSettings.AppSettings["DirectorioPrestadores"];\r
-                                * */\r
+                               //Envío los reportes creados:\r
+                               ipAdmin.EnviarReporte( this._reporteAprobaciones );\r
+                               ipAdmin.EnviarReporte( this._reporteConsumo );\r
                        }\r
                        catch ( Exception e )\r
                        {\r
@@ -69,5 +90,31 @@ namespace Controlador
                }\r
 \r
                #endregion Métodos Públicos\r
+\r
+               #region Métodos Privados\r
+\r
+               /// <summary>\r
+               /// Procesa las lineas del reporte una vez que el mismo ha sido validado:\r
+               /// 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( InfoPrestacionesReport ip )\r
+               {\r
+                       //this._reporteAprobaciones = new                       \r
+               }\r
+\r
+               private void NotificarPrestador( NotificacionPrestador.Tipo tipoNotif, InfoPrestacionesReport ip )\r
+               {\r
+                       //NotificacionesAdmin.\r
+               }\r
+\r
+               private void NotificarPagos( string titulo, string contenido )\r
+               {\r
+                       \r
+               }\r
+\r
+               #endregion Métodos Privados\r
+\r
        }\r
 }\r
diff --git a/demo/src/Reportes/ConsumoAfiliadosReport.cs b/demo/src/Reportes/ConsumoAfiliadosReport.cs
new file mode 100644 (file)
index 0000000..83e278b
--- /dev/null
@@ -0,0 +1,14 @@
+using System;\r
+\r
+namespace Reportes\r
+{\r
+       /// <summary>\r
+       /// Summary description for ConsumoAfiliadosReport.\r
+       /// </summary>\r
+       public class ConsumoAfiliadosReport\r
+       {\r
+               public ConsumoAfiliadosReport()\r
+               {\r
+               }\r
+       }\r
+}\r
index 95e7f8cee05f3af9295a658be249afd1147e1f19..046cb71d473869776c658d2045ae31425d5ca6ac 100644 (file)
@@ -50,9 +50,30 @@ namespace Reportes
                        return informes;\r
                }\r
 \r
+               public void EnviarReporte( ConsumoAfiliadosReport reporteConsumo )\r
+               {\r
+\r
+               }\r
+\r
+               public void EnviarReporte( PrestacionesRealizadasReport informeAprobaciones )\r
+               {\r
+\r
+               }\r
+\r
+               public void MoverArchivoAceptado( InfoPrestacionesReport ip )\r
+               {\r
+\r
+               }\r
+\r
+               public void MoverArchivoRechazado( InfoPrestacionesReport ip )\r
+               {\r
+\r
+               }\r
 \r
                #endregion Métodos Públicos\r
 \r
+               #region Métodos Privados\r
+\r
                private DirectoryInfo ObtenerDirectorio( Prestador p )\r
                {\r
                        string currentDir = Directory.GetCurrentDirectory();\r
@@ -72,5 +93,6 @@ namespace Reportes
                        return new DirectoryInfo( dirPrestador );\r
                }\r
 \r
+               #endregion Métodos Privados\r
        }\r
 }\r
index 280249c6d003f2077dd128ff7b3537cb1c4cc676..622b94df501eae983f2917c2f14bef9523c8c8da 100644 (file)
@@ -1,4 +1,5 @@
 using System;\r
+using System.Collections;\r
 \r
 namespace Reportes\r
 {\r
@@ -18,18 +19,34 @@ namespace Reportes
 \r
                #region Campos Privados\r
 \r
+               private string _pathArchivo = string.Empty;\r
+\r
                private string _cuit;\r
 \r
+               private ArrayList _lineas = null;\r
+\r
                #endregion Campos Privados\r
 \r
                #region Propiedades Públicas\r
                \r
+               public string PathArchivo\r
+               {\r
+                       get { return this._pathArchivo; }\r
+                       set { this._pathArchivo = value; }\r
+               }\r
+\r
                public string Cuit\r
                {\r
                        get { return this._cuit; }\r
                        set { this._cuit = value; }\r
                }\r
 \r
+               public ArrayList Lineas\r
+               {\r
+                       get { return this._lineas; }\r
+                       set { this._lineas = value; }\r
+               }\r
+\r
                #endregion Propiedades Públicas\r
 \r
                #region Métodos públicos\r
@@ -40,6 +57,14 @@ namespace Reportes
                        return true;\r
                }\r
 \r
+               public void ValidarLineas()\r
+               {\r
+                       foreach ( LineaInfoPrestacionesReport linea in this._lineas )\r
+                       {\r
+                               linea.Validar();\r
+                       }\r
+               }\r
+\r
                #endregion Métodos públicos\r
        }\r
 }\r
index 1d2518503dbd2dce56b1edd22b2c785e468fbf29..d1f0a081ded9cab29653fc3aacb2250ed52a4473 100644 (file)
@@ -15,5 +15,50 @@ namespace Reportes
                }\r
 \r
                #endregion Constructores\r
+\r
+               #region Campos Privados\r
+\r
+               private bool _aprobada = false;\r
+               private string _motivoRechazo = string.Empty;\r
+\r
+               #endregion Campos Privados\r
+\r
+               #region Propiedades Públicas\r
+               \r
+               /// <summary>\r
+               /// Determina si la linea fue aprobada por el método Validar()\r
+               /// Sólo tiene sentido si fue ejecutado Validar()\r
+               /// </summary>\r
+               public bool Aprobada\r
+               {\r
+                       get { return this._aprobada; }\r
+               }\r
+\r
+               /// <summary>\r
+               /// Motivo por el cual se rechazó la línea, si es que se rechazó.\r
+               /// En caso de haberse aprobado, debe estar vacío\r
+               /// </summary>\r
+               public string MotivoRechazo\r
+               {\r
+                       get { return this._motivoRechazo; }\r
+               }\r
+\r
+               #endregion Propiedades Públicas\r
+\r
+               #region Métodos Públicos\r
+\r
+               /// <summary>\r
+               /// Valida la linea según las reglas de negocio (ver CU "Recibir y Cotejar")\r
+               /// </summary>\r
+               /// <returns>True si la linea es válida</returns>\r
+               public bool Validar()\r
+               {       \r
+                       bool resultado = false;\r
+\r
+                       return resultado;\r
+               }\r
+\r
+               #endregion Métodos Públicos\r
+\r
        }\r
 }\r
diff --git a/demo/src/Reportes/NotificacionPrestador.cs b/demo/src/Reportes/NotificacionPrestador.cs
new file mode 100644 (file)
index 0000000..053909c
--- /dev/null
@@ -0,0 +1,68 @@
+using System;\r
+\r
+namespace Reportes\r
+{\r
+       /// <summary>\r
+       /// Representa una notificación a enviar al Prestador\r
+       /// </summary>\r
+       public class NotificacionPrestador\r
+       {\r
+               #region Tipo de notificaciones\r
+               \r
+               public enum Tipo\r
+               {\r
+                       ProcesoExitoso,\r
+                       ErrorGrave,\r
+                       InfoNoRecibida\r
+               }\r
+\r
+               #endregion Tipo de notificaciones\r
+\r
+               #region Constructores\r
+\r
+               public NotificacionPrestador( Tipo tipo, string nombreArchivo, DateTime fechaProceso )\r
+               {\r
+                       this._tipo = tipo;\r
+                       switch ( this._tipo )\r
+                       {\r
+                               case Tipo.ProcesoExitoso:\r
+                                       this._mensaje = ENCABEZADO_PROCESOEXITOSO + " " + nombreArchivo;\r
+                                       break;\r
+                               case Tipo.ErrorGrave:\r
+                                       this._mensaje = ENCABEZADO_ERRORGRAVE + " " + nombreArchivo;\r
+                                       break;\r
+                               case Tipo.InfoNoRecibida:\r
+                                       this._mensaje = ENCABEZADO_INFONORECIBIDA + " " + fechaProceso;\r
+                                       break;\r
+                               default:\r
+                                       throw new Exception( "Se intentó crear una notificación al Prestador con un Tipo incorrecto" );\r
+                       }\r
+               }\r
+\r
+               #endregion Constructores\r
+\r
+               #region Constantes\r
+               \r
+               private const string ENCABEZADO_ERRORGRAVE = "ERROR";\r
+               private const string ENCABEZADO_PROCESOEXITOSO = "OK";\r
+               private const string ENCABEZADO_INFONORECIBIDA = "NORECIBIDO";\r
+\r
+               #endregion Constantes\r
+\r
+               #region Campos Privados\r
+\r
+               private string _mensaje = string.Empty;\r
+               private NotificacionPrestador.Tipo _tipo;\r
+\r
+               #endregion Campos Privados\r
+\r
+               #region Métodos Públicos\r
+\r
+               public string GetMensaje()\r
+               {\r
+                       return this._mensaje;\r
+               }\r
+\r
+               #endregion Métodos Públicos\r
+       }\r
+}\r
diff --git a/demo/src/Reportes/NotificacionesAdmin.cs b/demo/src/Reportes/NotificacionesAdmin.cs
new file mode 100644 (file)
index 0000000..6c5c7d9
--- /dev/null
@@ -0,0 +1,32 @@
+using System;\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
+       {\r
+               #region Constructores\r
+               \r
+               public NotificacionesAdmin()\r
+               {\r
+               }\r
+\r
+               #endregion Constructores\r
+\r
+               #region Métodos Públicos\r
+\r
+               public void EnviarAlPrestador( NotificacionPrestador.Tipo tipoNotif, InfoPrestacionesReport ip )\r
+               {\r
+\r
+               }\r
+\r
+               public void EnviarAPagos( string titulo, string contenido )\r
+               {\r
+\r
+               }\r
+\r
+               #endregion Métodos Públicos\r
+       }\r
+}\r
diff --git a/demo/src/Reportes/PrestacionesRealizadasReport.cs b/demo/src/Reportes/PrestacionesRealizadasReport.cs
new file mode 100644 (file)
index 0000000..2f7cb0b
--- /dev/null
@@ -0,0 +1,18 @@
+using System;\r
+\r
+namespace Reportes\r
+{\r
+       /// <summary>\r
+       /// \r
+       /// </summary>\r
+       public class PrestacionesRealizadasReport\r
+       {\r
+               #region Constructores\r
+               \r
+               public PrestacionesRealizadasReport()\r
+               {\r
+               }\r
+\r
+               #endregion Constructores\r
+       }\r
+}\r
index 3d12231bef74b8aae97980303daf39e413f819e5..858f05a7cf6869d0a2da5a8388b21cefef158762 100644 (file)
                     DependentUpon = "infoPrestaciones_schema.xsd"\r
                     BuildAction = "None"\r
                 />\r
+                <File\r
+                    RelPath = "Reportes\ConsumoAfiliadosReport.cs"\r
+                    SubType = "Code"\r
+                    BuildAction = "Compile"\r
+                />\r
                 <File\r
                     RelPath = "Reportes\InfoPrestacionesAdmin.cs"\r
                     SubType = "Code"\r
                     SubType = "Code"\r
                     BuildAction = "Compile"\r
                 />\r
+                <File\r
+                    RelPath = "Reportes\NotificacionesAdmin.cs"\r
+                    SubType = "Code"\r
+                    BuildAction = "Compile"\r
+                />\r
+                <File\r
+                    RelPath = "Reportes\NotificacionPrestador.cs"\r
+                    SubType = "Code"\r
+                    BuildAction = "Compile"\r
+                />\r
+                <File\r
+                    RelPath = "Reportes\PrestacionesRealizadasReport.cs"\r
+                    SubType = "Code"\r
+                    BuildAction = "Compile"\r
+                />\r
                 <File\r
                     RelPath = "Tests\TestsAutorizacion.cs"\r
                     SubType = "Code"\r
index 414a22947700e005663c06463c7b97ff3b06f1fd..c2c21ed9100726eaa2d2b54640291703a97f04c3 100644 (file)
@@ -5,7 +5,7 @@
                <!-- Directorio que representa al sitio FTP, publicado por la Obra Social, para que accedan los\r
                        Prestadores. Dentro de él, debe haber un directorio por cada Prestador, \r
                        los cuales se nombran con el número de CUIT de cada Prestador -->\r
-               <add key="DirectorioPrestadores" value="FTPPrestadores" />  <!-- Relativo al dir donde corre el exe -->\r
+               <add key="DirectorioPrestadores" value="FTPObraSocial" />  <!-- Relativo al dir donde corre el exe -->\r
         \r
         <!-- Directorio que representa al sitio FTP, publicado por el sector Pagos, para que el Sistema\r
                        deje allí los informes de consumo y de prestaciones aprobadas -->\r
@@ -15,6 +15,8 @@
                        son procesados -->\r
         <add key="DirectorioProcesamiento" value="Procesamiento" />  <!-- Relativo al dir donde corre el exe -->\r
         \r
+        <add key="DirectorioInformesAceptados" value="Recursos" />  <!-- Relativo al dir FTPObraSocial -->\r
+        \r
         <!-- 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