2 using System.Collections;
\r
4 using Dominio.Afiliados;
\r
5 using Dominio.Autorizaciones;
\r
6 //using Dominio.Planes;
\r
11 /// Clase que representa una linea del Informe de Prestaciones Realizadas enviado por el
\r
14 public class LineaInfoPrestacionesReport
\r
16 #region Constructores
\r
18 public LineaInfoPrestacionesReport( int codAut, string tipoAut, int codAfiliado, string codPrestacion,
\r
19 DateTime fechaRealizacion, float porcentajeCobertura )
\r
21 this._codigoAutorizacion = codAut;
\r
22 this._tipoAutorizacion = tipoAut;
\r
23 this._codigoAfiliado = codAfiliado;
\r
24 this._codigoPrestacion = codPrestacion;
\r
25 this._fechaRealizacion = fechaRealizacion;
\r
26 this._porcentajeCobertura = porcentajeCobertura;
\r
29 #endregion Constructores
\r
31 #region Campos Privados
\r
33 private bool _aprobada = false;
\r
34 private bool _existeAutorizacion = false;
\r
35 private string _motivoRechazo = string.Empty;
\r
37 private int _codigoAutorizacion;
\r
38 private string _tipoAutorizacion;
\r
39 private int _codigoAfiliado;
\r
40 private string _codigoPrestacion;
\r
41 private DateTime _fechaRealizacion;
\r
42 private float _porcentajeCobertura;
\r
44 #endregion Campos Privados
\r
46 #region Propiedades Públicas
\r
49 /// Determina si la linea fue aprobada por el método Validar()
\r
50 /// Sólo tiene sentido si fue ejecutado Validar()
\r
52 public bool Aprobada
\r
54 get { return this._aprobada; }
\r
57 public bool ExisteAutorizacion
\r
59 get { return this._existeAutorizacion; }
\r
63 /// Motivo por el cual se rechazó la línea, si es que se rechazó.
\r
64 /// En caso de haberse aprobado, debe estar vacío
\r
66 public string MotivoRechazo
\r
68 get { return this._motivoRechazo; }
\r
71 public int CodigoAutorizacion
\r
73 get { return this._codigoAutorizacion; }
\r
76 public string TipoAutorizacion
\r
78 get { return this._tipoAutorizacion; }
\r
81 public int CodigoAfiliado
\r
83 get { return this._codigoAfiliado; }
\r
86 public string CodigoPrestacion
\r
88 get { return this._codigoPrestacion; }
\r
91 public DateTime FechaRealizacion
\r
93 get { return this._fechaRealizacion; }
\r
96 public float PorcentajeCobertura
\r
98 get { return this._porcentajeCobertura; }
\r
101 #endregion Propiedades Públicas
\r
104 private com.db4o.ObjectContainer db = null;
106 private ArrayList ObjectSetToArrayList (ObjectSet result)
108 ArrayList lst = new ArrayList ();
113 while ((s = result.next ()) != null)
\r
122 #region Métodos Públicos
\r
125 /// Valida la linea según las reglas de negocio (ver CU "Recibir y Cotejar")
\r
127 /// <returns>True si la linea es válida</returns>
\r
128 public bool Validar( Dominio.Autorizaciones.Prestador prestador )
\r
130 #region Chequeo de la autorización
\r
132 Autorizacion aut = this.getAutorizacion( this.CodigoAutorizacion );
\r
135 this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionInexistente );
\r
136 this._existeAutorizacion = false;
\r
141 this._existeAutorizacion = true;
\r
143 if ( (aut.Prestador == null) || (aut.Prestador.Cuit != prestador.Cuit) )
\r
145 this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionPrestadorInvalido );
\r
149 if ( (aut.Prestacion == null) || (aut.Prestacion.Codigo != this.CodigoPrestacion) )
\r
151 this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionPrestacionInvalida );
\r
155 if ( aut.FechaRealizacion != DateTime.MinValue )
\r
157 this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionYaRealizada );
\r
161 if ( aut.getEstado(this.FechaRealizacion) != Autorizacion.Estado.Aprobada )
\r
163 this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionNoAprobada );
\r
167 if ( this.TipoAutorizacion.Trim() == "Manual" )
\r
169 if ( aut.GetType() != typeof(AutorizacionManual) )
\r
171 this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionTipoInvalido );
\r
177 if ( aut.GetType() != typeof(AutorizacionAutomatica) )
\r
179 this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionTipoInvalido );
\r
184 if ( aut.PorcentajeCobertura != this.PorcentajeCobertura )
\r
186 this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionPorcentajeInvalido );
\r
191 #endregion Chequeo de la autorización
\r
193 #region Chequeo de Prestador
\r
194 if ( (prestador.FechaBaja != DateTime.MinValue) && (prestador.FechaBaja <= this.FechaRealizacion) )
\r
196 this.MarcarRechazada( MensajeMotivoRechazo.PrestadorDadoDeBaja );
\r
199 #endregion Chequeo de Prestador
\r
201 #region Chequeo del Afiliado
\r
202 Afiliado a = this.getAfiliado( this.CodigoAfiliado );
\r
205 this.MarcarRechazada( MensajeMotivoRechazo.AfiliadoInexistente );
\r
209 if ( (a.FechaBaja != DateTime.MinValue) && (a.FechaBaja <= this.FechaRealizacion) )
\r
211 this.MarcarRechazada( MensajeMotivoRechazo.AfiliadoDadoDeBaja );
\r
214 #endregion Chequeo del Afiliado
\r
216 #region Chequeo de la prestación
\r
218 Prestacion p = this.getPrestacion( this.CodigoPrestacion );
\r
221 this.MarcarRechazada( MensajeMotivoRechazo.PrestacionInexistente );
\r
226 if ( (p.FechaBaja != DateTime.MinValue) && (p.FechaBaja <= this.FechaRealizacion) )
\r
228 this.MarcarRechazada( MensajeMotivoRechazo.PrestacionDadaDeBaja );
\r
233 #endregion Chequeo de la prestación
\r
235 this._aprobada = true;
\r
239 #endregion Métodos Públicos
\r
241 #region Métodos Privados
\r
243 private Afiliado getAfiliado( int codigo )
\r
245 this.db = com.db4o.Db4o.openFile("os.yap");
\r
246 ArrayList al = this.ObjectSetToArrayList( db.get( new Afiliado(this.CodigoAfiliado) ) );
\r
248 Afiliado a = ( (al.Count == 0)? null : al[0] ) as Afiliado;
\r
255 private Prestacion getPrestacion( string codigo )
\r
257 this.db = com.db4o.Db4o.openFile("os.yap");
\r
258 ArrayList al = this.ObjectSetToArrayList( db.get( new Prestacion(this.CodigoPrestacion) ) );
\r
260 Prestacion p = ( (al.Count == 0)? null : al[0] ) as Prestacion;
\r
267 private Autorizacion getAutorizacion( int codigo )
\r
269 this.db = com.db4o.Db4o.openFile("os.yap");
\r
271 ArrayList al = new ArrayList();
\r
273 al = this.ObjectSetToArrayList( db.get( new AutorizacionManual(codigo) ) );
\r
274 Autorizacion a = ( (al.Count == 0)? null : al[0] ) as AutorizacionManual;
\r
278 al = this.ObjectSetToArrayList( db.get( new AutorizacionAutomatica(codigo) ) );
\r
279 a = ( (al.Count == 0)? null : al[0] ) as AutorizacionAutomatica;
\r
288 private void MarcarRechazada( string motivo )
\r
290 this._aprobada = false;
\r
291 this._motivoRechazo = motivo;
\r
294 #endregion Métodos Privados
\r
298 #region Motivos de rechazo
\r
300 public struct MensajeMotivoRechazo
\r
302 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
303 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
304 public static string AfiliadoInexistente = "El afiliado informado por el prestador no existe en el Sistema";
\r
305 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
306 public static string PrestacionInexistente = "La prestación informada por el prestador no existe en el Sistema";
\r
308 public static string AutorizacionInexistente = "La autorizacion informada por el prestador no existe en el Sistema";
\r
309 public static string AutorizacionPrestadorInvalido = "La autorizacion informada por el prestador no esta relacionada, en el Sistema, con dicho prestador";
\r
310 public static string AutorizacionAfiliadoInvalido = "La autorizacion informada por el prestador no esta relacionada, en el Sistema, con el afiliado informado";
\r
311 public static string AutorizacionPrestacionInvalida = "La autorizacion informada por el prestador no esta relacionada, en el Sistema, con la prestacion informada";
\r
312 public static string AutorizacionYaRealizada = "La autorizacion informada por el prestador ya ha sido realizada, segun los datos del Sistema";
\r
313 public static string AutorizacionNoAprobada = "La autorizacion no estaba aprobada, segun los datos del Sistema, en la fecha de realizacion informada por el prestador";
\r
314 public static string AutorizacionTipoInvalido = "El tipo de autorizacion informado por el prestador, no coincide con el tipo de autorizacion en el Sistema";
\r
315 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
319 #endregion Motivos de rechazo
\r