using System;\r
+using System.Collections;\r
+using com.db4o;\r
+using Dominio.Afiliados;\r
+using Dominio.Autorizaciones;\r
+//using Dominio.Planes;\r
\r
namespace Reportes\r
{\r
{\r
#region Constructores\r
\r
- public LineaInfoPrestacionesReport()\r
+ public LineaInfoPrestacionesReport( int codAut, string tipoAut, int codAfiliado, string codPrestacion,\r
+ DateTime fechaRealizacion, float porcentajeCobertura )\r
{\r
+ this._codigoAutorizacion = codAut;\r
+ this._tipoAutorizacion = tipoAut;\r
+ this._codigoAfiliado = codAfiliado;\r
+ this._codigoPrestacion = codPrestacion;\r
+ this._fechaRealizacion = fechaRealizacion;\r
+ this._porcentajeCobertura = porcentajeCobertura;\r
}\r
\r
#endregion Constructores\r
#region Campos Privados\r
\r
private bool _aprobada = false;\r
+ private bool _existeAutorizacion = false;\r
private string _motivoRechazo = string.Empty;\r
\r
+ private int _codigoAutorizacion;\r
+ private string _tipoAutorizacion;\r
+ private int _codigoAfiliado;\r
+ private string _codigoPrestacion;\r
+ private DateTime _fechaRealizacion;\r
+ private float _porcentajeCobertura;\r
+\r
#endregion Campos Privados\r
\r
#region Propiedades Públicas\r
get { return this._aprobada; }\r
}\r
\r
+ public bool ExisteAutorizacion\r
+ {\r
+ get { return this._existeAutorizacion; }\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
get { return this._motivoRechazo; }\r
}\r
\r
+ public int CodigoAutorizacion\r
+ {\r
+ get { return this._codigoAutorizacion; }\r
+ }\r
+\r
+ public string TipoAutorizacion\r
+ {\r
+ get { return this._tipoAutorizacion; }\r
+ }\r
+\r
+ public int CodigoAfiliado\r
+ {\r
+ get { return this._codigoAfiliado; }\r
+ }\r
+\r
+ public string CodigoPrestacion\r
+ {\r
+ get { return this._codigoPrestacion; }\r
+ }\r
+\r
+ public DateTime FechaRealizacion\r
+ {\r
+ get { return this._fechaRealizacion; }\r
+ }\r
+\r
+ public float PorcentajeCobertura\r
+ {\r
+ get { return this._porcentajeCobertura; }\r
+ }\r
+\r
#endregion Propiedades Públicas\r
\r
+ #region DB\r
+ 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) \r
+ {
+ lst.Add (s);
+ }
+ return lst;
+ }
+
+ #endregion DB\r
+\r
#region Métodos Públicos\r
\r
/// <summary>\r
/// <returns>True si la linea es válida</returns>\r
public bool Validar( Dominio.Autorizaciones.Prestador prestador )\r
{ \r
- bool resultado = false;\r
+ #region Chequeo de la autorización\r
+\r
+ Autorizacion aut = this.getAutorizacion( this.CodigoAutorizacion );\r
+ if ( aut == null )\r
+ {\r
+ this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionInexistente );\r
+ this._existeAutorizacion = false;\r
+ return false;\r
+ }\r
+ else\r
+ {\r
+ this._existeAutorizacion = true;\r
+\r
+ if ( (aut.Prestador == null) || (aut.Prestador.Cuit != prestador.Cuit) )\r
+ {\r
+ this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionPrestadorInvalido );\r
+ return false;\r
+ }\r
+\r
+ if ( (aut.Prestacion == null) || (aut.Prestacion.Codigo != this.CodigoPrestacion) )\r
+ {\r
+ this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionPrestacionInvalida );\r
+ return false;\r
+ }\r
+\r
+ if ( aut.FechaRealizacion != DateTime.MinValue )\r
+ {\r
+ this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionYaRealizada );\r
+ return false;\r
+ }\r
+ \r
+ if ( aut.getEstado(this.FechaRealizacion) != Autorizacion.Estado.Aprobada )\r
+ {\r
+ this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionNoAprobada );\r
+ return false;\r
+ }\r
+\r
+ if ( this.TipoAutorizacion.Trim() == "Manual" )\r
+ {\r
+ if ( aut.GetType() != typeof(AutorizacionManual) )\r
+ {\r
+ this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionTipoInvalido );\r
+ return false;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ if ( aut.GetType() != typeof(AutorizacionAutomatica) )\r
+ {\r
+ this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionTipoInvalido );\r
+ return false;\r
+ }\r
+ }\r
+\r
+ if ( aut.PorcentajeCobertura != this.PorcentajeCobertura )\r
+ {\r
+ this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionPorcentajeInvalido );\r
+ return false;\r
+ }\r
+ }\r
+\r
+ #endregion Chequeo de la autorización\r
+\r
+ #region Chequeo de Prestador\r
+ if ( (prestador.FechaBaja != DateTime.MinValue) && (prestador.FechaBaja <= this.FechaRealizacion) )\r
+ {\r
+ this.MarcarRechazada( MensajeMotivoRechazo.PrestadorDadoDeBaja );\r
+ return false;\r
+ }\r
+ #endregion Chequeo de Prestador\r
+\r
+ #region Chequeo del Afiliado\r
+ Afiliado a = this.getAfiliado( this.CodigoAfiliado );\r
+ if (a == null) \r
+ {\r
+ this.MarcarRechazada( MensajeMotivoRechazo.AfiliadoInexistente );\r
+ return false;\r
+ }\r
+ else\r
+ if ( (a.FechaBaja != DateTime.MinValue) && (a.FechaBaja <= this.FechaRealizacion) )\r
+ {\r
+ this.MarcarRechazada( MensajeMotivoRechazo.AfiliadoDadoDeBaja );\r
+ return false;\r
+ }\r
+ #endregion Chequeo del Afiliado\r
+ \r
+ #region Chequeo de la prestación\r
\r
- return resultado;\r
+ Prestacion p = this.getPrestacion( this.CodigoPrestacion );\r
+ if ( p == null )\r
+ {\r
+ this.MarcarRechazada( MensajeMotivoRechazo.PrestacionInexistente );\r
+ return false;\r
+ }\r
+ else\r
+ {\r
+ if ( (p.FechaBaja != DateTime.MinValue) && (p.FechaBaja <= this.FechaRealizacion) )\r
+ {\r
+ this.MarcarRechazada( MensajeMotivoRechazo.PrestacionDadaDeBaja );\r
+ return false;\r
+ }\r
+ }\r
+\r
+ #endregion Chequeo de la prestación\r
+\r
+ this._aprobada = true;\r
+ return true;\r
}\r
\r
#endregion Métodos Públicos\r
\r
+ #region Métodos Privados\r
+\r
+ private Afiliado getAfiliado( int codigo )\r
+ {\r
+ this.db = com.db4o.Db4o.openFile("os.yap");\r
+ ArrayList al = this.ObjectSetToArrayList( db.get( new Afiliado(this.CodigoAfiliado) ) );\r
+\r
+ Afiliado a = ( (al.Count == 0)? null : al[0] ) as Afiliado;\r
+ this.db.close();\r
+ this.db = null;\r
+\r
+ return a;\r
+ }\r
+\r
+ private Prestacion getPrestacion( string codigo )\r
+ {\r
+ this.db = com.db4o.Db4o.openFile("os.yap");\r
+ ArrayList al = this.ObjectSetToArrayList( db.get( new Prestacion(this.CodigoPrestacion) ) );\r
+\r
+ Prestacion p = ( (al.Count == 0)? null : al[0] ) as Prestacion;\r
+ this.db.close();\r
+ this.db = null;\r
+\r
+ return p;\r
+ }\r
+\r
+ private Autorizacion getAutorizacion( int codigo )\r
+ {\r
+ this.db = com.db4o.Db4o.openFile("os.yap");\r
+ \r
+ ArrayList al = new ArrayList();\r
+\r
+ al = this.ObjectSetToArrayList( db.get( new AutorizacionManual(codigo) ) );\r
+ Autorizacion a = ( (al.Count == 0)? null : al[0] ) as AutorizacionManual;\r
+\r
+ if ( a == null )\r
+ {\r
+ al = this.ObjectSetToArrayList( db.get( new AutorizacionAutomatica(codigo) ) );\r
+ a = ( (al.Count == 0)? null : al[0] ) as AutorizacionAutomatica;\r
+ }\r
+\r
+ this.db.close();\r
+ this.db = null;\r
+\r
+ return a;\r
+ }\r
+\r
+ private void MarcarRechazada( string motivo )\r
+ {\r
+ this._aprobada = false;\r
+ this._motivoRechazo = motivo;\r
+ }\r
+\r
+ #endregion Métodos Privados\r
+\r
+ } //clase\r
+\r
+ #region Motivos de rechazo\r
+\r
+ public struct MensajeMotivoRechazo\r
+ {\r
+ public static string PrestadorDadoDeBaja = "El prestador estaba dado de baja en la fecha de realización de la prestación informada por el prestador";\r
+ public static string AfiliadoDadoDeBaja = "El afiliado estaba dado de baja en la fecha de realización de la prestación informada por el prestador";\r
+ public static string AfiliadoInexistente = "El afiliado informado por el prestador no existe en el Sistema";\r
+ 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";\r
+ public static string PrestacionInexistente = "La prestación informada por el prestador no existe en el Sistema";\r
+\r
+ public static string AutorizacionInexistente = "La autorizacion informada por el prestador no existe en el Sistema";\r
+ public static string AutorizacionPrestadorInvalido = "La autorizacion informada por el prestador no esta relacionada, en el Sistema, con dicho prestador";\r
+ public static string AutorizacionAfiliadoInvalido = "La autorizacion informada por el prestador no esta relacionada, en el Sistema, con el afiliado informado";\r
+ public static string AutorizacionPrestacionInvalida = "La autorizacion informada por el prestador no esta relacionada, en el Sistema, con la prestacion informada";\r
+ public static string AutorizacionYaRealizada = "La autorizacion informada por el prestador ya ha sido realizada, segun los datos del Sistema";\r
+ public static string AutorizacionNoAprobada = "La autorizacion no estaba aprobada, segun los datos del Sistema, en la fecha de realizacion informada por el prestador";\r
+ public static string AutorizacionTipoInvalido = "El tipo de autorizacion informado por el prestador, no coincide con el tipo de autorizacion en el Sistema";\r
+ 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";\r
+\r
}\r
+\r
+ #endregion Motivos de rechazo\r
+\r
+\r
}\r