Clipper 5.x

Out of Topic (Fuera de tema)

 

Artículos:

Pantalla completa en Windows 95/98/Me y deshabilitación de Teclas de método abreviado

Comandos comunes en lenguaje PCL para impresoras Laser y chorro de tinta

Anulación de la tecla Pausa.

Controladores fiscales en la Argentina.

Mas muy pronto...

Esta página se encuentra en construcción, pronto encontraras artículos, código fuente, comentarios, ect.

Lo más Nuevo:
 

Pantalla completa en Windows 95/98/Me y deshabilitación de Teclas de método abreviado
(Por Diego Lucio D'Onofrio)
Hola a todos, bueno hoy les cuento esto que para que les voy a mentir lo descubrí por error, estaba haciendo un .COM de 3 líneas para cambiar el módo de video, teclié mal un número y descubrí una función indocumentada de la interrupción 10h, lo que hace es abrir la ventana DOS al tamaño de pantalla completa e inavilitar las teclas de método abreviado (alt+tab, alt+enter, ect).

Bájate el .COM de solo 7 Bytes : fulldos.com

Comandos comunes en lenguaje PCL para impresoras Laser y chorro de tinta
Debido a la masiva consulta de los programadores he colocado en estas páginas los códigos PCL.

Anulación de la tecla Pausa. (13-Dic-02)
(Por Diego Lucio D'Onofrio)

Hace unos días mi gerente de sistemas me solicitó que solucionara un problema que aparentemente no tenía arreglo, el punto era que en ciertas pantallas los usuarios de nuestro sistema realizado en Clipper presionaban la tecla [Pausa], si esto sucedía cuando el programa estaba bloqueando una base de datos, la misma quedaba bloqueada y se detenían todas las consultas a la misma, frenando así todo el sistema.
Como fue imposible quitarles este "vicio" a los usuarios, se recurrió a mi para que lo solucionara.
Primer problema : El primer problema que tuve era que la tecla pausa no puede ser definida desde Clipper, y que no hay biblioteca ni programa ni función de nadie que permita anularla.
Luego entendí que cuando esta tecla es presionada el sistema operativo hace caer en un "loop" al programa y lo saca de ahí recién cuando es presionada otra tecla la cual no es colocada en el buffer, por lo que aunque pudiera advertir que fue presionada mi programa se detendría antes de poder ejecutar cualquier línea de código.
Como era evidente que no podría solucionar esto desde un lenguaje de alto nivel, decidí atacar al fuego con fuego, me volqué al assembler.
Antes que nada consulté al "NG" (inglés) alt.lang.asm en tres oportunidades y no tuve ninguna respuesta, por lo que traté de desarrollarla yo por mis propios medios.
Segundo problema : ¿Cómo detener algo que detiene cualquier proceso?
Pasé toda una noche pensando en eso hasta que llegué a una nueva conclusión.
La tecla pausa no detiene el reloj de tiempo real (real time clock), por lo que decidí hacer en assembler un residente que se "cuelgue" de esta interrupción.
Tercer problema : ¿Y después que?
No tenía idea de cómo trabajaba la pausa, ni mucho menos de cómo anularla, por lo que decidí utilizar el programa "Soft Ice" para averiguarlo.
Luego de cargar el Soft Ice me paré en el "Prompt" del DOS y toqué la tecla pausa, luego activé el debuger y pude observar que el sistema se encontraba en un bucle en el cual se comparaba la dirección de memoria hexadecimal 40:18 (Justo una después de la que controla el estado de las teclas [Num Lock], [Caps Lock] y [Scroll Lock]), con el valor (08).
Reemplacé este valor por 00 y noté que la pausa había sido liberada, al fin respiré.
Hacer un pequeño archivo .COM que verifique el valor de 40:18h y en el caso de ser 08 lo reemplace por 00 no fue una tarea complicada, con menos de 1 K y menos de 512 Bytes en memoria al cabo de una hora este pequeño y compacto residente quedó terminado.
Le agregue la opción de descargarlo corriéndolo una vez que se encuentra en memoria.
Debo decir que a pesar de las complicaciones disfruté mucho resolviendo este problema, por un lado porque hacía por lo menos cuatro años que no programaba en assembler, lo cual me transporto a viejos tiempos.
Algo que me costó mucho fue tipear .ASM en la extensión del archivo en lugar de .PRG, y acordarme de usar TASM y TLINK en lugar de CL3 (que es el .BAT que usamos nosotros para compilar con 5.3 y Exoespace).
Fue gracioso que al terminar me pidieron una modificación de un programa en Clipper y al editar el .PRG lo primero que traté de abrir fue MENU.ASM, entonces pensé, es una tarea complicada el programar en distintos lenguajes.
Bueno, espero que les haya gustado mi anécdota y que les sirva para resolver algún problema similar en el futuro.

Nota: Este programa no funciona en una ventana de DOS bajo Windows.

Bajate el Nopause.com

 

Controladores fiscales homologados en la Argentina.

La AFIP y Cia.

Debido a la resolución 963/2001 de la Administración Federal de Ingresos Públicos (AFIP), en la Argentina en el año 2001 la gran mayoría de las pequeñas y medianas empresas que atienden al público, y que sus clientes son consumidores finales, fueron obligados a adquirir costosos e improductivos controladores fiscales.
Digo costosos porque cada uno vale mas del doble del sueldo de cualquier empleado de esos comercios, e improductivos porque lejos de ser una solución, representan una verdadera complicación en todo sentido, la cual mas abajo detallo, para el comerciante que apenas puede mantener los costos de su pequeño negocio.
Para que se den una idea de donde viene el tema, en la página de la AFIP, que obviamente es una página gubernamental, se pueden encontrar los manuales de las tres marcas de controladores fiscales que hay en el país, los cuales son manufacturados por empresas particulares que no deberían tener nada que ver con el fisco, como si esto fuese poco hay una opción para buscar servicios técnicos para estos controladores, y sea cual fuere el dato ingresado aparece siempre la compañía Hasar, lo que me hace acordar al los "enlaces patrocinados" del buscador Google.
Por supuesto en la web, página principal, de la compañía Hasar hay un link a la página de la AFIP, es evidente que también se reparten las visitas.

Funcionamiento en general.

Un controlador fiscal es un impresor de documentos fiscales el cual posee una memoria EPROM llamada memoria fiscal, ja, la cual graba todas las transacciones realizadas con este, para asegurarse de que esta EPROM no sea alterada la envolvieron en un mazacote de "resina epoxy" así como esas que se usan para reforzar los cascos, si la observamos detenidamente podremos ver las huellas digitales del empleado que armó el controlador, la ubicaron dentro del gabinete, protegiendo la apertura del mismo con un precinto inviolable, ja.

Sistemas.

Obviamente y como era de esperarse la compañía Hasar desarrolla sistemas para sus controladores, pero increíblemente la AFIP permitió a los damnificados utilizar otro tipo de sistemas.

Mi primer contacto con un controlador.

Fue a principios del 2001 cuando uno de mis clientes el cual posee una ferretería se vio agraciado con la noticia de que tendría que cambiar su facturación manual por un controlador fiscal.
El me llamó y solicitó que le realizara las modificaciones pertinentes a su sistema para que pueda operar con semejante engendro electrónico.
Por un tema de costos los controladores fiscales no traían, no se si ahora traen, manuales impresos, solo incluían un disquete, sin etiqueta, con unos programas de demostración y un archivo MS-Word como manual, con lo cual pensé que Microsoft también entraba en el negocio ya que sin el MS-Word era imposible leer el archivo .DOC porque este incluía imágenes y otras señalizaciones las cuales no se podían leer con cualquier editor.
Me hice una copia de este disquete, espero no haber incurrido en la piratería informática con esta acción, y me lo llevé a mi casa donde iba a desarrollar las modificaciones al sistema en cuestión.

Espanto.

Esa fue la cara que puse cuando comencé a leer las primeras líneas del mismo, y juro que después no mejoró.
Ahora no tengo el manual, ja, a mano, pero recuerdo que decía algo muy similar a esto:

El CF, a partir de ahora así nombraré al controlador fiscal, posee tres estadios de vida, el pre natal, la vida útil y la vida pos mortem (Juro que decía esto, por mas increíble que parezca).
Hecha esta introducción al manual comenzaba a expandir el tema diciendo...
La vida pre natal, es como un período de prueba donde el controlador puede ser usado para pruebas, esto era antes de que el técnico habilitado ponga en marcha el controlador, y durante este período ningún tiquet sería grabado en la memoria fiscal.
La vida útil, ó inútil mejor dicho, esta comienza cuando el controlador es habilitado por el técnico.
La vida después de la muerte, con estas mismas palabras se describía al la memoria fiscal agotada, ya que en aquel entonces estas memorias traían unos 1700 cierres lo cual en teoría y si todo iba bien le alcanzarían al usuario para unos 5 años.

Se imaginaran lo duro que fue leer el pseudo manual, pero mi horror llegó a niveles extremos cuando leí que solo traía 2 decimales, e independientemente de esto se pasaba la alícuota de IVA (Impuesto al Valor Agregado).
Para que se den una idea, analicemos el siguiente ejemplo:

Una tuerca vale $0,02 final, con lo cual mi programa le pasaba al controlador el valor sin el IVA

0,02 / 1.21 = 0,0165289
El controlador solo maneja dos decimales, por lo que leía 0,01
Luego mi sistema le pasaba la alícuota : 21%
Y el controlador determinaba el precio final:
0,01 * 1.21 = 0,01 (ya que solo tiene 2 decimales.

En pocas palabras el controlador fiscal hacía un descuento del 50% cada vez que mi cliente vendía un puñado de tuercas.
Obviamente el cliente se quejó conmigo, seguido de lo cual me comuniqué con la compañía Hasar quienes me dieron la solución divina, me dijeron que mi cliente debería cambiar el factor de venta del producto hasta al punto que el redondeo de decimales no afectara la transacción.

Un tiempo después solucionaron este problema con los decimales, pero para lo cual obligaban a los comerciantes a comprar nuevos controladores que traían llamativas etiquetas en forma de estrellas en su caja con claras leyendas que decían "Ahora con 4 decimales" ó "Soporta hasta 10 decimales" ó la más patética de todas "Nuevo con punto decimal flotante", Ja, no es para reír, es para llorar.

Epson también hizo su introducción en el mercado de los CF's, con comandos un tanto mas complicados su modelo de impresores homologados no fueron mejores, ya que traían grandes problemas de hardware, con lo cual obligaban al comerciante a abonarse a un servicio técnico fiscal, ja, ó pagar grandes cantidades de dinero por cotidianas reparaciones.

Bueno, creo que ahora tienen una leve idea de cómo va el negocio de los controladores fiscales en la Argentina.

 

Nota: Está sección aún no se encuentra terminada, fue puesta en funcionamiento solo para cubrir las necesidades de los miles de programadores de Ca-Clipper que esperaban una solución como esta.

   

Esta sección sobre CA-Clipper está coordinada íntegramente por Diego Lucio D'Onofrio


la Luna del Guille o... el Guille que está en la Luna... tanto monta...

Estadísticas desde el 01/Nov/2002 23:15