]> git.llucax.com Git - z.facultad/75.10/miklolife.git/blob - demo/src/Reportes/InfoPrestacionesReport.cs
* 99% done, unos pequeños ajusten faltan
[z.facultad/75.10/miklolife.git] / demo / src / Reportes / InfoPrestacionesReport.cs
1 using System;\r
2 using System.Collections;\r
3 using System.Xml;\r
4 using System.Globalization;\r
5 \r
6 namespace Reportes\r
7 {\r
8         /// <summary>\r
9         /// Clase que representa un archivo de Información de Prestaciones Realizadas enviado por el \r
10         /// Prestador.\r
11         /// </summary>\r
12         public class InfoPrestacionesReport\r
13         {\r
14                 #region Constructores\r
15 \r
16                 public InfoPrestacionesReport( string pathNombreArchivo )\r
17                 {\r
18                         this._pathArchivo = pathNombreArchivo;\r
19                 }\r
20 \r
21                 #endregion Constructores\r
22 \r
23                 #region Campos Privados\r
24 \r
25                 private bool _esBienFormado = true;\r
26 \r
27                 private string _pathArchivo = string.Empty;\r
28                 private string _cuitPrestador;\r
29                 private DateTime _fechaEnvio;\r
30 \r
31                 private LineaInfoPrestacionesReport[] _lineas = null;\r
32 \r
33                 #endregion Campos Privados\r
34 \r
35                 #region Propiedades Públicas\r
36                 \r
37                 public string PathArchivo\r
38                 {\r
39                         get { return this._pathArchivo; }\r
40                         set { this._pathArchivo = value; }\r
41                 }\r
42 \r
43                 public string CuitPrestador\r
44                 {\r
45                         get { return this._cuitPrestador; }\r
46                         set { this._cuitPrestador = value; }\r
47                 }\r
48 \r
49                 public DateTime FechaEnvio\r
50                 {\r
51                         get { return this._fechaEnvio; }\r
52                         set { this._fechaEnvio = value; }\r
53                 }\r
54 \r
55                 public LineaInfoPrestacionesReport[] Lineas\r
56                 {\r
57                         get { return this._lineas; }\r
58                         set { this._lineas = value; }\r
59                 }\r
60 \r
61                 #endregion Propiedades Públicas\r
62 \r
63                 #region Métodos públicos\r
64 \r
65                 public bool ValidarFormato()\r
66                 {\r
67                         XmlDocument xmlDoc = new System.Xml.XmlDocument();\r
68                         try\r
69                         {\r
70                                 xmlDoc.Load( this._pathArchivo );\r
71                         }\r
72                         catch ( XmlException xmlEx )\r
73                         {\r
74                                 #warning Ver como mostrar los errores\r
75                                 return false;\r
76                         }\r
77                         \r
78                         if ( this.ValidarContraSchema( xmlDoc ) )\r
79                         {\r
80                                 this.CargarXml( xmlDoc );\r
81                         }\r
82                         else\r
83                         {\r
84                                 //Mostrar error y retornar\r
85                                 return false;\r
86                         }\r
87 \r
88                         return true;\r
89                 }\r
90 \r
91                 public void ValidarLineas( Dominio.Autorizaciones.Prestador prestador )\r
92                 {\r
93                         foreach ( LineaInfoPrestacionesReport linea in this._lineas )\r
94                         {\r
95                                 linea.Validar( prestador );\r
96                         }\r
97                 }\r
98 \r
99                 #endregion Métodos públicos\r
100 \r
101                 #region Métodos privados\r
102 \r
103                 private bool ValidarContraSchema( XmlDocument xmlDoc )\r
104                 {\r
105                         #warning Seguir acá\r
106                         return true;\r
107                 }\r
108 \r
109                 /// <summary>\r
110                 /// Toma un xmlDoc valido contra el schema\r
111                 /// </summary>\r
112                 /// <param name="xmlDoc"></param>\r
113                 private void CargarXml( XmlDocument xmlDoc )\r
114                 {\r
115                         XmlNode root = xmlDoc["infoPrestaciones"];\r
116                         \r
117                         this.FechaEnvio = DateTime.Parse( root.Attributes["fechaEnvio"].InnerText );\r
118                         \r
119                         XmlElement prestador = root["prestador"];\r
120                         this.CuitPrestador = prestador["CUIT"].InnerText;\r
121                         \r
122                         XmlElement lineasXml = root["lineas"];\r
123                         if ( lineasXml.HasChildNodes )\r
124                         {\r
125                                 this._lineas = new LineaInfoPrestacionesReport[ lineasXml.ChildNodes.Count ];\r
126                                 \r
127                                 XmlNode node; int cod; string tipoAut; int codAfiliado; string codPrestacion;\r
128                                 DateTime fechaRealizacion; float porcentajeCobertura;\r
129 \r
130                                 NumberFormatInfo nfi = new NumberFormatInfo();\r
131                                 nfi.NumberDecimalDigits = 2;\r
132                                 nfi.NumberDecimalSeparator = ".";\r
133                                 nfi.NumberGroupSeparator = ",";\r
134 \r
135                                 for ( int i = 0; i < lineasXml.ChildNodes.Count; i++ )\r
136                                 {\r
137                                         node = lineasXml.ChildNodes[i];\r
138                                         cod = int.Parse( node.Attributes["codigoAutorizacion"].InnerText );\r
139                                         tipoAut = node["tipoAutorizacion"].InnerText;\r
140                                         codAfiliado = int.Parse( node["codigoAfiliado"].InnerText );\r
141                                         codPrestacion = node["codigoPrestacion"].InnerText;\r
142                                         fechaRealizacion = DateTime.Parse( node["fechaRealizacion"].InnerText );\r
143                                         \r
144                                         porcentajeCobertura = float.Parse( node["porcentajeCobertura"].InnerText.Trim(), nfi );\r
145                                         \r
146                                         this._lineas[i] = new LineaInfoPrestacionesReport( cod, tipoAut, codAfiliado, codPrestacion,\r
147                                                 fechaRealizacion, porcentajeCobertura );\r
148                                 }\r
149                         }\r
150                 }\r
151 \r
152                 #endregion Métodos privados\r
153         }\r
154 }\r