<?xml version="1.0" encoding="utf-8"?>
 <feed xmlns="http://www.w3.org/2005/Atom">
  <id>http://bitacora.burdjia.com/</id>
  <title>Soliloquios del Guiller - Archivo de la etiqueta " Meteduras de pata" en la bitácora</title>
  <link href="http://bitacora.burdjia.com/" />
  <updated>2012-02-08T01:10:13+01:00</updated>
  <subtitle>Neuras e idas de olla de un informático y artista frustrado</subtitle>
  <link href="http://bitacora.burdjia.com/atom/" rel="self"/>

 <entry>
  <id>http://bitacora.burdjia.com/el-valor-de-medio-centimo/</id>
  <link href="http://bitacora.burdjia.com/el-valor-de-medio-centimo/" />
  <title>El valor de medio céntimo</title>
  <updated>2011-02-09T22:00:48+01:00</updated>
  <author>
   <name>Momar</name>
  </author>
  <content type="xhtml" xml:lang="es">
   <div xmlns="http://www.w3.org/1999/xhtml"><p>Hoy voy a contar un nuevo episodio en mi vida como desarrollador contra-corriente.  Como ya conté en mi <a href="http://bitacora.burdjia.com/por-que-no-confio-en-los-colectores-de-basuras/">artículo sobre los colectores de basuras</a>, llevo tiempo trabajando en un megaprograma de gestión de clientes, pedidos, facturas, análisis, seguimiento y más cosas. También dije que hay varias cosas de este proyecto con las que no estoy de acuerdo y de las que me he quejado en repetidas ocasiones, empezando por que la planificación no fue suficiente en su momento.  Precisamente esta falta de planificación ha sido la causante de un problema que reventó hace pocos días.</p>
<p>Hace tiempo, al principio, sugerí que íbamos a tener problemas con el redondeo. Este no es un problema trivial, porque si no se hace bien aparecerán discrepancias y luego no hay forma de cuadrar las cuentas.  Ya entonces propuse una forma de evitarlo que usé con éxito hace años en un Terminal Punto de Venta que desarrollé cuando trabajaba en la empresa <em>Asintec Gestión</em>.  En aquel programa, en lugar de almacenar el valor real de los productos guardábamos un valor ficticio y lo guardábamos como un número entero.  Para obtener el valor real se dividía este número ficticio por un factor que dependía de la divisa;  así para los euros dividíamos por 100.000, mientras que para obtenerlo en pesetas dividíamos por 601.  Con este método nos quitamos dos problemas:  la conversión entre divisas (importante, porque se hizo para un hotel, y además coincidió con el paso de la peseta al euro) y teníamos una precisión de hasta la milésima de céntimo de euro, más de lo necesario.  Además, los ordenadores son pésimos con el cálculo fraccionario, siendo mucho más precisos si calcula con números enteros.</p>
<p>Con la aplicación que estoy desarrollando ahora, sin embargo, tampoco en esto se me hizo caso y se me obligó a almacenar y realizar todos los cálculos con euros “reales”.  Y no sólo eso, sino que la precisión se limitó a dos decimales, esto es, a un céntimo:  ni siquiera una fracción de céntimos, sino a céntimos enteros.  Esto ya es un problema con el cálculo de impuestos.  La cosa empeoró cuando en Julio entró en vigor el nuevo IVA<sup><a href="#nota_valor_centimo">1</a></sup>.  El cliente quiso que los precios finales se mantuvieran invariables aun con el cambio de IVA, sin embargo al hacer el cálculo siempre faltaban o sobraban uno o dos céntimos en cada producto.  Canté aquello de “os lo dije” con toda la sutileza de la que fui capaz y volví a sugerir la solución que he explicado antes, pero de nuevo no me hicieron caso y la solución impuesta fue aumentar en un decimal la precisión (es decir, hasta la décima de céntimo) porque así ya no faltaban ni sobraban céntimos al sumar el nuevo impuesto y se solucionaba el problema.</p>
<p>Hasta que se demostró que no era así.  Hace unos días, un cliente se quejó porque hizo un pedido por un importe aproximado de 1.500€, pero la factura que le enviaron había una diferencia de 21 céntimos a favor de la empresa.  Por más que revisé los cálculos, todos eran correctos, tanto en el albarán de pedido como en la factura, sin embargo la discrepancia permanecía.  Yo sabía que era un problema de redondeo, pero no lograba descubrir dónde se producía la diferencia.  Al final lo descubrí por casualidad.</p>
<p>Resulta que del cambio en la base de datos se encargó mi jefe, y lo realizó sólo en la tabla que almacena la información de los productos en venta.  Sin embargo, en nuestro programa el precio de los productos se almacena también en cada factura, de forma que aunque cambie el precio de los productos este no varía también en las facturas, y en la tabla donde se almacena el precio en factura no se hizo el cambio.  Es decir, que el precio del producto se guarda con tres decimales, mientras que el precio en factura se guarda con dos.  ¿Y dónde está el problema?  Pues sencillo:  en unos productos el precio es de tantos euros, tantos céntimos y menos de medio céntimo, lo que al redondear a dos decimales no afecta al precio salvo si son muchas unidades (por ejemplo, si el precio es de 10'652 al redondear queda 10'65), pero en otros es de tantos euros, tantos céntimos y más de medio céntimo, por lo que al redondear a dos decimales ese “más de medio céntimo” hace que el precio suba al céntimo siguiente (por ejemplo, de 10'656 queda 10'66).  Es decir, el mismo problema que existía al calcular el nuevo valor neto para ajustarlo a los nuevos IVA y Recargo de Equivalencia; era una bomba de relojería.</p>
<p>Todavía no sé si está arreglado, ya que conseguí cargarle el mochuelo a quien realmente tuvo la culpa.  Me gustaría pensar que en el próximo proyecto me harán más caso pero, visto lo visto, me temo que voy a tener que sufrir estas cosas durante mucho tiempo, todavía.</p>
<hr />
<p id="nota_valor_centimo"><sup>1</sup> Lo del IVA fue otra buena, porque se puso "en duro", es decir, que para añadir los nuevos IVAs tuve que cambiar varias fórmulas matemáticas y comprobaciones en un buen número de archivos.  Evidentemente también rechazaron mi propuesta de guardar los impuestos en la base de datos para poder añadirlos y eliminarlos a gusto sin tener que cambiar ninguna fórmula;  recuerdo perfectamente que me dijo que no porque, total, era muy poco probable que cambiaran los impuestos.</p></div>
  </content>
 </entry>

 <entry>
  <id>http://bitacora.burdjia.com/kitt-y-las-descargas-de-internet/</id>
  <link href="http://bitacora.burdjia.com/kitt-y-las-descargas-de-internet/" />
  <title>KITT y las descargas de Internet</title>
  <updated>2009-08-30T18:40:03+02:00</updated>
  <author>
   <name>Momar</name>
  </author>
  <content type="xhtml" xml:lang="es">
   <div xmlns="http://www.w3.org/1999/xhtml"><p>Me gusta <a href="http://www.rtve.es/television/coche-fantastico/">el nuevo Coche Fantástico</a>. Bueno, siendo sinceros me gusta más el viejo Pontiac Firebird que el nuevo Mustang. ¿Y quién no prefiere un estilizado deportivo frente a un ladrillo pintado de negro, eh?</p>
<p style="text-align:center"><img src="http://bitacora.burdjia.com/fotos/coches-fantasticos.jpg" title="Los Coches Fantásticos" /><br />Que se atreva alguien a decirme que el mustang es más bonito.</p>
<p>Lo de la serie es distinto. Por mucho que la nostalgia tire de mi, he de reconocer que la nueva serie es estupenda. He leído y oído a mucha gente quejarse porque no les gusta la nueva voz. Por mi parte la nueva personalidad de KITT me gusta más, ya que es más <em>real</em>, más robot, con menos humanidad, lo que hace que se sugieran multitud de escenas divertidas. Lo cierto es que los guionistas se lo están currando en este aspecto. Y este es uno de los detalles que los guionistas, aun teniendo en cuenta las fantasmadas típicas de una serie de ficción como esta, están siendo bastante creíbles. Y ojo, que digo creíble, no realista, lo cual es diferente como me explicó mi profesor de interpretación de la Escuela Municipal de Teatro.</p>
<p>Sin embargo esta credibilidad a veces salta por los aires, y es lo que pasó hace unos pocos capítulos. A mi me rechinó enormemente, puesto que soy informático, pero cualquiera que sepa cómo funciona Internet se habrá dado cuenta.</p>
<p>Resulta que la empresa propietaria de <acronym style="border-bottom-color: black;border-bottom-width: 1px;border-bottom-style: dotted;" title="Knight Industries Three Thousand">KITT</acronym> está siendo desmantelada, por razones que se arrastran desde el primer capítulo por lo que no contaré aquí. El propio KITT es desconectado, pero antes de que lo hagan, el coche hace una copia de seguridad de sí mismo y la sube a Internet, a un servidor y <span style="border-bottom-color: black;border-bottom-width: 1px;border-bottom-style: dotted;" title="Esto es, un nombre que se le da a un ordenador conectado a Internet para poder acceder a él con facilidad.">dominio</span> que él mismo ha creado, con la esperanza de que Michael Knight Jr. (sí: se llama igual que su predecesor ochentero) y sus colegas puedan recuperarlo. Es difícil pero entra dentro de lo posible, especialmente dentro de la premisa de la serie, por lo que nos lo podemos creer sin más. Los problemas aparecen cuando se descargan la copia de seguridad.</p>
<p>Resulta que en la descarga falta uno de los paquetes en los que se divide la copia de seguridad. ¿La razón? Que un chaval se lo ha descargado con su consola de videojuegos <strong>así que ya no está disponible</strong>. No, no he omitido nada. Al parecer, según los guionistas del nuevo Coche Fantástico, cuando te descargas un archivo de Internet este deja de existir, dado que te lo has descargado. A ver, por si alguien no lo sabe, los archivos que hay disponibles en Internet se encuentran en el disco duro de un ordenador conectado a la red. Cuando alguien <em>se lo descarga</em> lo que hace es conectar con ese ordenador, este lee el archivo (igual que nuestro ordenador lee los archivos de nuestro ordenador cuando lo marcamos con el cursor del ratón) y envía a nuestro ordenador la información leída, pero evidentemente el archivo sigue estando en el disco duro del otro ordenador, al igual que los archivos que hay en el nuestro no desaparecen cada vez que los cargamos con el editor de textos, de fotos o lo que sea. ¡Menuda papeleta si no fuera así!</p>
<p>Pero la cosa no termina aquí. Resulta que para poder recuperar dicho paquete hay que ir a casa del chaval que se lo ha descargado, lo cual es lógico, y acceder a su videoconsola, lo cual es evidente. Lo que ya escapa a mi compresión es que para obtener el archivo <strong>tiene que jugar a un juego y encontrar una esfera dentro del mismo</strong>, así, sin anestesia ni nada. A ver, lo único que tienen que hacer es poner una tarjeta de memoria al aparato y copiar el archivo desde el disco a la tarjeta utilizando el menú del mismo, lo cual no sólo entra dentro de lo creíble sino dentro de lo posible, ya que estos aparatos lo permiten para poder copiar cosas como las puntuaciones conseguidas en los juegos, o fotografías y vídeos. Pues no: tienen que jugar un juego... Incluso la película <a href="http://www.imdb.com/title/tt0084827/">TRON</a> tenía más lógica, sinceramente.</p>
<p>En fin, nadie es perfecto.</p></div>
  </content>
 </entry>

 </feed>

