From 5dcdc142187069476c648c3ee2dbb1a00aaf202e Mon Sep 17 00:00:00 2001 From: Guillermo Rugilo Date: Mon, 27 Jun 2005 03:09:51 +0000 Subject: [PATCH] =?utf8?q?El=20esqueleto=20de=20la=20implementaci=C3=B3n?= =?utf8?q?=20est=C3=A1...=20falta=20rellenarlo=20con=20un=20poco=20de=20ca?= =?utf8?q?rne=20y=20cubrirlo=20con=20piel...=20y=20despu=C3=A9s=20hacerlo?= =?utf8?q?=20tomar=20vida..=20:P?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../RecibirPrestacionesController.cs | 79 +++++++++++++++---- demo/src/Reportes/ConsumoAfiliadosReport.cs | 14 ++++ demo/src/Reportes/InfoPrestacionesAdmin.cs | 22 ++++++ demo/src/Reportes/InfoPrestacionesReport.cs | 25 ++++++ .../Reportes/LineaInfoPrestacionesReport.cs | 45 +++++++++++ demo/src/Reportes/NotificacionPrestador.cs | 68 ++++++++++++++++ demo/src/Reportes/NotificacionesAdmin.cs | 32 ++++++++ .../Reportes/PrestacionesRealizadasReport.cs | 18 +++++ demo/src/VSProject.csproj | 20 +++++ demo/src/osocial.exe.config | 4 +- 10 files changed, 310 insertions(+), 17 deletions(-) create mode 100644 demo/src/Reportes/ConsumoAfiliadosReport.cs create mode 100644 demo/src/Reportes/NotificacionPrestador.cs create mode 100644 demo/src/Reportes/NotificacionesAdmin.cs create mode 100644 demo/src/Reportes/PrestacionesRealizadasReport.cs diff --git a/demo/src/Controlador/RecibirPrestacionesController.cs b/demo/src/Controlador/RecibirPrestacionesController.cs index c9a45fb..5789ac4 100644 --- a/demo/src/Controlador/RecibirPrestacionesController.cs +++ b/demo/src/Controlador/RecibirPrestacionesController.cs @@ -25,6 +25,13 @@ namespace Controlador #endregion Constructores + #region Campos Privados + + private ConsumoAfiliadosReport _reporteConsumo = null; + private PrestacionesRealizadasReport _reporteAprobaciones = null; + + #endregion Campos Privados + #region Métodos Públicos public void procesarInfoRecibida() @@ -42,25 +49,39 @@ namespace Controlador //Obtener archivos enviados del prestador InfoPrestacionesReport[] informes = ipAdmin.ObtenerInfoPendiente( p ); - //Recorro archivo por archivo - foreach ( InfoPrestacionesReport ip in informes ) + if ( informes.Length <= 0 ) { - if ( (ip.ValidarFormato()) && ( ip.Cuit == p.Cuit ) ) - { - //OK - } - else - { - //ERROR. - // 1. Mover el archivo a "rechazados" - // 2. Enviar mail - } + this.NotificarPrestador( NotificacionPrestador.Tipo.InfoNoRecibida, null ); + this.NotificarPagos( "Archivos no recibidos", "Prestador=" + p.Nombre + "\n" + "CUIT=" + p.Cuit ); } - } + else + { + //Recorro informe por informe + foreach ( InfoPrestacionesReport ip in informes ) + { + if ( (ip.ValidarFormato()) && ( ip.Cuit == p.Cuit ) ) + { //OK + ip.ValidarLineas(); //Las marca como aprobadas/rechazadas + this.ProcesarLineas( ip ); + ipAdmin.MoverArchivoAceptado( ip ); + this.NotificarPrestador( NotificacionPrestador.Tipo.ProcesoExitoso, ip ); + } + else + { + //ERROR. + // 1. Mover el archivo a "rechazados" + ipAdmin.MoverArchivoRechazado( ip ); + // 2. Enviar mail al Prestador y a Pagos + this.NotificarPrestador( NotificacionPrestador.Tipo.ErrorGrave, ip ); + this.NotificarPagos( "Error al procesar archivo", "Nombre=" + ip.PathArchivo ); + } + } //foreach informes + } //else + } // foreach prestadores - /* - * string dir = System.Configuration.ConfigurationSettings.AppSettings["DirectorioPrestadores"]; - * */ + //Envío los reportes creados: + ipAdmin.EnviarReporte( this._reporteAprobaciones ); + ipAdmin.EnviarReporte( this._reporteConsumo ); } catch ( Exception e ) { @@ -69,5 +90,31 @@ namespace Controlador } #endregion Métodos Públicos + + #region Métodos Privados + + /// + /// Procesa las lineas del reporte una vez que el mismo ha sido validado: + /// Si está aprobada, la registra en el sistema y la agrega al reporte de Consumo de los Afiliados. + /// A todas las lineas las agrega al Informe de Aprobaciones/rechazos de Prestaciones Realizadas. + /// + /// Reporte del cual se porcesarán las lineas + private void ProcesarLineas( InfoPrestacionesReport ip ) + { + //this._reporteAprobaciones = new + } + + private void NotificarPrestador( NotificacionPrestador.Tipo tipoNotif, InfoPrestacionesReport ip ) + { + //NotificacionesAdmin. + } + + private void NotificarPagos( string titulo, string contenido ) + { + + } + + #endregion Métodos Privados + } } diff --git a/demo/src/Reportes/ConsumoAfiliadosReport.cs b/demo/src/Reportes/ConsumoAfiliadosReport.cs new file mode 100644 index 0000000..83e278b --- /dev/null +++ b/demo/src/Reportes/ConsumoAfiliadosReport.cs @@ -0,0 +1,14 @@ +using System; + +namespace Reportes +{ + /// + /// Summary description for ConsumoAfiliadosReport. + /// + public class ConsumoAfiliadosReport + { + public ConsumoAfiliadosReport() + { + } + } +} diff --git a/demo/src/Reportes/InfoPrestacionesAdmin.cs b/demo/src/Reportes/InfoPrestacionesAdmin.cs index 95e7f8c..046cb71 100644 --- a/demo/src/Reportes/InfoPrestacionesAdmin.cs +++ b/demo/src/Reportes/InfoPrestacionesAdmin.cs @@ -50,9 +50,30 @@ namespace Reportes return informes; } + public void EnviarReporte( ConsumoAfiliadosReport reporteConsumo ) + { + + } + + public void EnviarReporte( PrestacionesRealizadasReport informeAprobaciones ) + { + + } + + public void MoverArchivoAceptado( InfoPrestacionesReport ip ) + { + + } + + public void MoverArchivoRechazado( InfoPrestacionesReport ip ) + { + + } #endregion Métodos Públicos + #region Métodos Privados + private DirectoryInfo ObtenerDirectorio( Prestador p ) { string currentDir = Directory.GetCurrentDirectory(); @@ -72,5 +93,6 @@ namespace Reportes return new DirectoryInfo( dirPrestador ); } + #endregion Métodos Privados } } diff --git a/demo/src/Reportes/InfoPrestacionesReport.cs b/demo/src/Reportes/InfoPrestacionesReport.cs index 280249c..622b94d 100644 --- a/demo/src/Reportes/InfoPrestacionesReport.cs +++ b/demo/src/Reportes/InfoPrestacionesReport.cs @@ -1,4 +1,5 @@ using System; +using System.Collections; namespace Reportes { @@ -18,18 +19,34 @@ namespace Reportes #region Campos Privados + private string _pathArchivo = string.Empty; + private string _cuit; + private ArrayList _lineas = null; + #endregion Campos Privados #region Propiedades Públicas + public string PathArchivo + { + get { return this._pathArchivo; } + set { this._pathArchivo = value; } + } + public string Cuit { get { return this._cuit; } set { this._cuit = value; } } + public ArrayList Lineas + { + get { return this._lineas; } + set { this._lineas = value; } + } + #endregion Propiedades Públicas #region Métodos públicos @@ -40,6 +57,14 @@ namespace Reportes return true; } + public void ValidarLineas() + { + foreach ( LineaInfoPrestacionesReport linea in this._lineas ) + { + linea.Validar(); + } + } + #endregion Métodos públicos } } diff --git a/demo/src/Reportes/LineaInfoPrestacionesReport.cs b/demo/src/Reportes/LineaInfoPrestacionesReport.cs index 1d25185..d1f0a08 100644 --- a/demo/src/Reportes/LineaInfoPrestacionesReport.cs +++ b/demo/src/Reportes/LineaInfoPrestacionesReport.cs @@ -15,5 +15,50 @@ namespace Reportes } #endregion Constructores + + #region Campos Privados + + private bool _aprobada = false; + private string _motivoRechazo = string.Empty; + + #endregion Campos Privados + + #region Propiedades Públicas + + /// + /// Determina si la linea fue aprobada por el método Validar() + /// Sólo tiene sentido si fue ejecutado Validar() + /// + public bool Aprobada + { + get { return this._aprobada; } + } + + /// + /// Motivo por el cual se rechazó la línea, si es que se rechazó. + /// En caso de haberse aprobado, debe estar vacío + /// + public string MotivoRechazo + { + get { return this._motivoRechazo; } + } + + #endregion Propiedades Públicas + + #region Métodos Públicos + + /// + /// Valida la linea según las reglas de negocio (ver CU "Recibir y Cotejar") + /// + /// True si la linea es válida + public bool Validar() + { + bool resultado = false; + + return resultado; + } + + #endregion Métodos Públicos + } } diff --git a/demo/src/Reportes/NotificacionPrestador.cs b/demo/src/Reportes/NotificacionPrestador.cs new file mode 100644 index 0000000..053909c --- /dev/null +++ b/demo/src/Reportes/NotificacionPrestador.cs @@ -0,0 +1,68 @@ +using System; + +namespace Reportes +{ + /// + /// Representa una notificación a enviar al Prestador + /// + public class NotificacionPrestador + { + #region Tipo de notificaciones + + public enum Tipo + { + ProcesoExitoso, + ErrorGrave, + InfoNoRecibida + } + + #endregion Tipo de notificaciones + + #region Constructores + + public NotificacionPrestador( Tipo tipo, string nombreArchivo, DateTime fechaProceso ) + { + this._tipo = tipo; + switch ( this._tipo ) + { + case Tipo.ProcesoExitoso: + this._mensaje = ENCABEZADO_PROCESOEXITOSO + " " + nombreArchivo; + break; + case Tipo.ErrorGrave: + this._mensaje = ENCABEZADO_ERRORGRAVE + " " + nombreArchivo; + break; + case Tipo.InfoNoRecibida: + this._mensaje = ENCABEZADO_INFONORECIBIDA + " " + fechaProceso; + break; + default: + throw new Exception( "Se intentó crear una notificación al Prestador con un Tipo incorrecto" ); + } + } + + #endregion Constructores + + #region Constantes + + private const string ENCABEZADO_ERRORGRAVE = "ERROR"; + private const string ENCABEZADO_PROCESOEXITOSO = "OK"; + private const string ENCABEZADO_INFONORECIBIDA = "NORECIBIDO"; + + #endregion Constantes + + #region Campos Privados + + private string _mensaje = string.Empty; + private NotificacionPrestador.Tipo _tipo; + + #endregion Campos Privados + + #region Métodos Públicos + + public string GetMensaje() + { + return this._mensaje; + } + + #endregion Métodos Públicos + } +} diff --git a/demo/src/Reportes/NotificacionesAdmin.cs b/demo/src/Reportes/NotificacionesAdmin.cs new file mode 100644 index 0000000..6c5c7d9 --- /dev/null +++ b/demo/src/Reportes/NotificacionesAdmin.cs @@ -0,0 +1,32 @@ +using System; + +namespace Reportes +{ + /// + /// Clase que contiene la funcionalidad para generar y enviar notificaciones + /// + public class NotificacionesAdmin + { + #region Constructores + + public NotificacionesAdmin() + { + } + + #endregion Constructores + + #region Métodos Públicos + + public void EnviarAlPrestador( NotificacionPrestador.Tipo tipoNotif, InfoPrestacionesReport ip ) + { + + } + + public void EnviarAPagos( string titulo, string contenido ) + { + + } + + #endregion Métodos Públicos + } +} diff --git a/demo/src/Reportes/PrestacionesRealizadasReport.cs b/demo/src/Reportes/PrestacionesRealizadasReport.cs new file mode 100644 index 0000000..2f7cb0b --- /dev/null +++ b/demo/src/Reportes/PrestacionesRealizadasReport.cs @@ -0,0 +1,18 @@ +using System; + +namespace Reportes +{ + /// + /// + /// + public class PrestacionesRealizadasReport + { + #region Constructores + + public PrestacionesRealizadasReport() + { + } + + #endregion Constructores + } +} diff --git a/demo/src/VSProject.csproj b/demo/src/VSProject.csproj index 3d12231..858f05a 100644 --- a/demo/src/VSProject.csproj +++ b/demo/src/VSProject.csproj @@ -262,6 +262,11 @@ DependentUpon = "infoPrestaciones_schema.xsd" BuildAction = "None" /> + + + + - + @@ -15,6 +15,8 @@ son procesados --> + + -- 2.43.0