\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
//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
}\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
--- /dev/null
+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
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
return new DirectoryInfo( dirPrestador );\r
}\r
\r
+ #endregion Métodos Privados\r
}\r
}\r
using System;\r
+using System.Collections;\r
\r
namespace Reportes\r
{\r
\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
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
}\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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+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
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
<!-- 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
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