X-Git-Url: https://git.llucax.com/z.facultad/75.10/miklolife.git/blobdiff_plain/aeb71279fa96dfc8e3832d04ae25d68c6853d39f..2be5451ef59289f66dbd3e1d9ff5a69fcc271364:/demo/src/Reportes/LineaInfoPrestacionesReport.cs
diff --git a/demo/src/Reportes/LineaInfoPrestacionesReport.cs b/demo/src/Reportes/LineaInfoPrestacionesReport.cs
index 1d25185..61e2533 100644
--- a/demo/src/Reportes/LineaInfoPrestacionesReport.cs
+++ b/demo/src/Reportes/LineaInfoPrestacionesReport.cs
@@ -1,4 +1,9 @@
using System;
+using System.Collections;
+using com.db4o;
+using Dominio.Afiliados;
+using Dominio.Autorizaciones;
+//using Dominio.Planes;
namespace Reportes
{
@@ -10,10 +15,308 @@ namespace Reportes
{
#region Constructores
- public LineaInfoPrestacionesReport()
+ public LineaInfoPrestacionesReport( int codAut, string tipoAut, int codAfiliado, string codPrestacion,
+ DateTime fechaRealizacion, float porcentajeCobertura )
{
+ this._codigoAutorizacion = codAut;
+ this._tipoAutorizacion = tipoAut;
+ this._codigoAfiliado = codAfiliado;
+ this._codigoPrestacion = codPrestacion;
+ this._fechaRealizacion = fechaRealizacion;
+ this._porcentajeCobertura = porcentajeCobertura;
}
#endregion Constructores
+
+ #region Campos Privados
+
+ private bool _aprobada = false;
+ private bool _existeAutorizacion = false;
+ private string _motivoRechazo = string.Empty;
+
+ private int _codigoAutorizacion;
+ private string _tipoAutorizacion;
+ private int _codigoAfiliado;
+ private string _codigoPrestacion;
+ private DateTime _fechaRealizacion;
+ private float _porcentajeCobertura;
+
+ #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; }
+ }
+
+ public bool ExisteAutorizacion
+ {
+ get { return this._existeAutorizacion; }
+ }
+
+ ///
+ /// 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; }
+ }
+
+ public int CodigoAutorizacion
+ {
+ get { return this._codigoAutorizacion; }
+ }
+
+ public string TipoAutorizacion
+ {
+ get { return this._tipoAutorizacion; }
+ }
+
+ public int CodigoAfiliado
+ {
+ get { return this._codigoAfiliado; }
+ }
+
+ public string CodigoPrestacion
+ {
+ get { return this._codigoPrestacion; }
+ }
+
+ public DateTime FechaRealizacion
+ {
+ get { return this._fechaRealizacion; }
+ }
+
+ public float PorcentajeCobertura
+ {
+ get { return this._porcentajeCobertura; }
+ }
+
+ #endregion Propiedades Públicas
+
+ #region DB
+ private com.db4o.ObjectContainer db = null;
+
+ private ArrayList ObjectSetToArrayList (ObjectSet result)
+ {
+ ArrayList lst = new ArrayList ();
+ Object s;
+ if (result == null)
+ return lst;
+
+ while ((s = result.next ()) != null)
+ {
+ lst.Add (s);
+ }
+ return lst;
+ }
+
+ #endregion DB
+
+ #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( Dominio.Autorizaciones.Prestador prestador )
+ {
+ #region Chequeo de la autorización
+
+ Autorizacion aut = this.getAutorizacion( this.CodigoAutorizacion );
+ if ( aut == null )
+ {
+ this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionInexistente );
+ this._existeAutorizacion = false;
+ return false;
+ }
+ else
+ {
+ this._existeAutorizacion = true;
+
+ if ( (aut.Prestador == null) || (aut.Prestador.Cuit != prestador.Cuit) )
+ {
+ this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionPrestadorInvalido );
+ return false;
+ }
+
+ if ( (aut.Prestacion == null) || (aut.Prestacion.Codigo != this.CodigoPrestacion) )
+ {
+ this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionPrestacionInvalida );
+ return false;
+ }
+
+ if ( aut.FechaRealizacion != DateTime.MinValue )
+ {
+ this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionYaRealizada );
+ return false;
+ }
+
+ if ( aut.getEstado(this.FechaRealizacion) != Autorizacion.Estado.Aprobada )
+ {
+ this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionNoAprobada );
+ return false;
+ }
+
+ if ( this.TipoAutorizacion.Trim() == "Manual" )
+ {
+ if ( aut.GetType() != typeof(AutorizacionManual) )
+ {
+ this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionTipoInvalido );
+ return false;
+ }
+ }
+ else
+ {
+ if ( aut.GetType() != typeof(AutorizacionAutomatica) )
+ {
+ this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionTipoInvalido );
+ return false;
+ }
+ }
+
+ if ( aut.PorcentajeCobertura != this.PorcentajeCobertura )
+ {
+ this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionPorcentajeInvalido );
+ return false;
+ }
+ }
+
+ #endregion Chequeo de la autorización
+
+ #region Chequeo de Prestador
+ if ( (prestador.FechaBaja != DateTime.MinValue) && (prestador.FechaBaja <= this.FechaRealizacion) )
+ {
+ this.MarcarRechazada( MensajeMotivoRechazo.PrestadorDadoDeBaja );
+ return false;
+ }
+ #endregion Chequeo de Prestador
+
+ #region Chequeo del Afiliado
+ Afiliado a = this.getAfiliado( this.CodigoAfiliado );
+ if (a == null)
+ {
+ this.MarcarRechazada( MensajeMotivoRechazo.AfiliadoInexistente );
+ return false;
+ }
+ else
+ if ( (a.FechaBaja != DateTime.MinValue) && (a.FechaBaja <= this.FechaRealizacion) )
+ {
+ this.MarcarRechazada( MensajeMotivoRechazo.AfiliadoDadoDeBaja );
+ return false;
+ }
+ #endregion Chequeo del Afiliado
+
+ #region Chequeo de la prestación
+
+ Prestacion p = this.getPrestacion( this.CodigoPrestacion );
+ if ( p == null )
+ {
+ this.MarcarRechazada( MensajeMotivoRechazo.PrestacionInexistente );
+ return false;
+ }
+ else
+ {
+ if ( (p.FechaBaja != DateTime.MinValue) && (p.FechaBaja <= this.FechaRealizacion) )
+ {
+ this.MarcarRechazada( MensajeMotivoRechazo.PrestacionDadaDeBaja );
+ return false;
+ }
+ }
+
+ #endregion Chequeo de la prestación
+
+ this._aprobada = true;
+ return true;
+ }
+
+ #endregion Métodos Públicos
+
+ #region Métodos Privados
+
+ private Afiliado getAfiliado( int codigo )
+ {
+ this.db = com.db4o.Db4o.openFile("os.yap");
+ ArrayList al = this.ObjectSetToArrayList( db.get( new Afiliado(this.CodigoAfiliado) ) );
+
+ Afiliado a = ( (al.Count == 0)? null : al[0] ) as Afiliado;
+ this.db.close();
+ this.db = null;
+
+ return a;
+ }
+
+ private Prestacion getPrestacion( string codigo )
+ {
+ this.db = com.db4o.Db4o.openFile("os.yap");
+ ArrayList al = this.ObjectSetToArrayList( db.get( new Prestacion(this.CodigoPrestacion) ) );
+
+ Prestacion p = ( (al.Count == 0)? null : al[0] ) as Prestacion;
+ this.db.close();
+ this.db = null;
+
+ return p;
+ }
+
+ private Autorizacion getAutorizacion( int codigo )
+ {
+ this.db = com.db4o.Db4o.openFile("os.yap");
+
+ ArrayList al = new ArrayList();
+
+ al = this.ObjectSetToArrayList( db.get( new AutorizacionManual(codigo) ) );
+ Autorizacion a = ( (al.Count == 0)? null : al[0] ) as AutorizacionManual;
+
+ if ( a == null )
+ {
+ al = this.ObjectSetToArrayList( db.get( new AutorizacionAutomatica(codigo) ) );
+ a = ( (al.Count == 0)? null : al[0] ) as AutorizacionAutomatica;
+ }
+
+ this.db.close();
+ this.db = null;
+
+ return a;
+ }
+
+ private void MarcarRechazada( string motivo )
+ {
+ this._aprobada = false;
+ this._motivoRechazo = motivo;
+ }
+
+ #endregion Métodos Privados
+
+ } //clase
+
+ #region Motivos de rechazo
+
+ public struct MensajeMotivoRechazo
+ {
+ public static string PrestadorDadoDeBaja = "El prestador estaba dado de baja en la fecha de realización de la prestación informada por el prestador";
+ public static string AfiliadoDadoDeBaja = "El afiliado estaba dado de baja en la fecha de realización de la prestación informada por el prestador";
+ public static string AfiliadoInexistente = "El afiliado informado por el prestador no existe en el Sistema";
+ public static string PrestacionDadaDeBaja = "La prestación estaba dada de baja en la fecha de realización de la prestación informada por el prestador";
+ public static string PrestacionInexistente = "La prestación informada por el prestador no existe en el Sistema";
+
+ public static string AutorizacionInexistente = "La autorizacion informada por el prestador no existe en el Sistema";
+ public static string AutorizacionPrestadorInvalido = "La autorizacion informada por el prestador no esta relacionada, en el Sistema, con dicho prestador";
+ public static string AutorizacionAfiliadoInvalido = "La autorizacion informada por el prestador no esta relacionada, en el Sistema, con el afiliado informado";
+ public static string AutorizacionPrestacionInvalida = "La autorizacion informada por el prestador no esta relacionada, en el Sistema, con la prestacion informada";
+ public static string AutorizacionYaRealizada = "La autorizacion informada por el prestador ya ha sido realizada, segun los datos del Sistema";
+ public static string AutorizacionNoAprobada = "La autorizacion no estaba aprobada, segun los datos del Sistema, en la fecha de realizacion informada por el prestador";
+ public static string AutorizacionTipoInvalido = "El tipo de autorizacion informado por el prestador, no coincide con el tipo de autorizacion en el Sistema";
+ public static string AutorizacionPorcentajeInvalido = "El porcentaje de cobertura informado por el prestador, es distinto al que se aplicaba al momento de la aprobación de la autorización, segun los datos del Sistema";
+
}
+
+ #endregion Motivos de rechazo
+
+
}