]> git.llucax.com Git - z.facultad/75.10/miklolife.git/blobdiff - demo/src/Reportes/LineaInfoPrestacionesReport.cs
Bocha de cosas difíciles y largas de explicar :P
[z.facultad/75.10/miklolife.git] / demo / src / Reportes / LineaInfoPrestacionesReport.cs
index 1d2518503dbd2dce56b1edd22b2c785e468fbf29..61e2533e09c6944fffc2cdbe258a9a7a27872177 100644 (file)
@@ -1,4 +1,9 @@
 using System;\r
 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
 namespace Reportes\r
 {\r
@@ -10,10 +15,308 @@ namespace Reportes
        {\r
                #region Constructores\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
                {\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
                }\r
 \r
                #endregion Constructores\r
+\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
+               \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
+               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
+               /// </summary>\r
+               public string MotivoRechazo\r
+               {\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
+               /// 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( Dominio.Autorizaciones.Prestador prestador )\r
+               {       \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
+                       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
+\r
+       #endregion Motivos de rechazo\r
+\r
+\r
 }\r
 }\r