Ver Mensaje Individual
  #6  
Antiguo 11-05-2006
Avatar de noshy
noshy noshy is offline
Miembro
 
Registrado: jul 2003
Posts: 139
Reputación: 21
noshy Va por buen camino
El siguiente es un breve ejemplo que demuestra en pocas líneas cómo imprimir un ticket:

Hasar1.Puerto = 1
Hasar1.Comenzar
Hasar1.TratarDeCancelarTodo
Hasar1.AbrirComprobanteFiscal TICKET_C
Hasar1.ImprimirItem "Item 1", 10, 1, 21, 0
Hasar1.Subtotal True
Hasar1.ImprimirPago "Efectivo", 100
Hasar1.CerrarComprobanteFiscal
Hasar1.Finalizar


Propiedades

1. Propiedades de Configuración del Controlador:

• PrecioBase [Booleana]

Define el modo de trabajo de los precios. Si este valor es verdadero, se trabaja con base imponible, caso contrario con precio final (impuestos incluídos)


• EventosIndividuales [Booleana]

Determina si los eventos de estado se generan por cada uno de los componentes del estado, o todos juntos en un valor comprendiendo todos los bits que forman el estado. Trabajar según la primer modalidad es más cómoda para procesar los diferentes estados, ya que no requiere lógica de bits, pero la segunda es más rápida, y consume menos recursos.


• UsarDisplay [Booleana]

Determina si se usará el display (si el impresor poseee uno) en los comandos que soportan uso automático de display.


• kIVA [Booleana]

Determina si se usará kIVA en vez de porcentaje de impuestos internos. El controlador trabaja directamente con kIVA; si esta propiedad tiene el valor Falso (default), se realizará una conversión interna para convertir de porcentaje de impuestos internos a kIVA. Esto no afecta en absoluto si los impuestos internos son fijos.


• ImpuestoInternoFijo [Booleana]

Indica si la próxima venta tendrá impuestos internos fijos no afectado por descuentos/recargos. Luego de la operación de venta siguiente vuelve a su valor default (False: impuestos internos porcentuales).


• ImpuestoIntFijoPorMonto [Booleana]

Indica si la próxima venta tendrá impuestos internos fijos indicados por coeficiente o por monto. Solo tiene efecto cuando la propiedad anterior, ImpuestoInternoFijo, indique que la venta siguiente tendrá impuestos internos fijos. Luego de la operación de venta siguiente vuelve a su valor default (False: impuestos internos fijos expresados por coeficiente).


• UsarASCII [Booleana]

Si esta propiedad es verdadera, no se realizará internamente la conversión para compatibilizar el juego de caracteres de Windows con el de la impresora fiscal. El default es false.





• ReintentoConstante [Booleana]

Si esta propiedad es verdadera, el número de reintentos en la transmisión de paquetes hacia el Controlador Fiscal cuando el mismo no responde (error de Time Out) se hace infinito. En tal caso, cada vez que se produzca un error de Time Out, este se reportará por medio del evento ‘Impresora No Responde’. El proceso de reintento constante podrá ser interrumpido por medio del método ‘Abortar’. El default es false.


• Modelo [Tipo ModelosDeImpresoras]

Indica el modelo de impresora a usar. Las posiblidades son: MODELO_614, MODELO_615, MODELO_PR4, MODELO_950, MODELO_951, MODELO_262, MODELO_PJ20 y MODELO_P320. Esta elección condicionará los comandos según estén soportados por las distintas reglamentaciones a las que se somete cada modelo.

• ModoStatPrn [Booleana]

Indica si se va a usar la modalidad StatPRN o no, es decir, si el impresor retorna inmediatamente al ver que estando ocupado, demoraría cierto tiempo en entregar la respuesta. Este modo es útil para controlar falta de papel o demoras sin trabajar con eventos. Ver la propiedad HuboStatPrn y el comando EnviarStatPrn. Sólo funciona en los nuevos controladores.

• DescripcionesLargas [Booleana]

Este valor decide si las descripciones de los artículos son truncadas al superar el tamaño máximo soportado por el impresor (Falso), o extendidas usando el comando de impresión de texto fiscal (Verdadero, default).


• Puerto [Entero Largo]

Indica el puerto físico donde está conectado el impresor fiscal. Debe ser especificado antes de cualquier operación que implique comandos al impresor.


• Baudios

Velocidad que se espera encontrar al controlador. Debe ponerse antes de Comenzar().



2. Propiedades del Impresor Fiscal:

• FechaHoraFiscal [Tipo DATE (fecha OLE) ]

La Fecha/Hora del impresor en un momento dado. Si se quiere fijar la fecha/hora sólo será posible después de una Z y antes del primer comprobante de la jornada fiscal.


• Encabezado(n) [Cadena]

Dado un número (n) se recupera o se especifica una línea del encabezado del ticket/factura. Si el número de línea se refiere a las diez primeras, se trata del encabezado en sí. Si está en el rango de once a veinte, es el pie.


• Respuesta(n) [Cadena]

Se refiere a la respuesta del controlado fiscal, relacionada con el último comando enviado. Dado un número de campo (n), se obtiene la porción de la respuesta requerida. Si el número de campo es 0 (cero), se obtiene la respuesta cruda.



3. Propiedades de Estado:

• UltimaFactura [Entero Largo]

Indica el número de la última factura A emitida, si el impresor soporta el uso de facturas. Sólo lectura.


• UltimoTicket [Entero Largo]

Indica el número del último ticket o factura tipo B/C. Sólo lectura.


• CajonAbierto [Booleana]

Esta propiedad es sólo lectura, y refleja el estado del cajón de dinero. Si posee un valor verdadero, el cajón se encuentra abierto.


• HuboErrorFiscal [Booleana]

Refleja si hubo un error de controlador fiscal en el último comando. Sólo lectura.


• HuboErrorMecanico [Booleana]

Refleja si hubo un error mecánico al finalizar el último comando enviado. Sólo lectura.


• HuboFaltaPapel [Booleana]

Refleja si hubo falta de papel al finalizar el último comando enviado. Sólo lectura.


• HuboStatPrn [Booleana]

Refleja si el impresor está ocupado imprimiendo, y no ha finalizado aún el comando enviado. Se puede volver a chequear el estado del impresor usando el comando EnviarStatPrn, ya que mientras este flag esté en True, la respuesta no corresponde al comando original enviado sino al estado actual del impresor (ocupado).


• ContadorImpresoraOcupada [Entero Largo]

Muestra la cantidad de veces que el impresor se ha reportado como ocupado durante la ejecución del último comando. Asociado al evento ImpresoraOcupada.


• IndicadorFiscal(Flag) [Booleana]

Constata si el bit requerido (flag) se halla encendido en la última respuesta fiscal. Los valores posibles son aquellos manejados en los eventos fiscales (F_FISCAL_MEMORY_FAIL, etc.). Devuelve True o False dependiendo si está o no señalizado.


• IndicadorImpresora(Flag) [Booleana]

Constata si el bit requerido (flag) se halla encendido en la última respuesta fiscal. Los valores posibles son aquellos manejados en los eventos de impresora (P_PRINTER_ERROR, etc.). Devuelve True o False dependiendo si está o no señalizado.


• EstadoControlador [Entero Largo]

Devuelve el estado extendido del controlador fiscal, si el modelo que se está usando lo soporta. Este estado es un número que indica el estado exacto en el que está el controlador, entre los siguientes:

S_NONFORMATTED_MEMORY (Memoria fiscal no formateada)
S_NONINITIALIZED_MEMORY (Memoria fiscal no inicializada)
S_RECEIPT_NOT_OPENED (No hay ningún comprobante abierto)
S_FISCAL_RECEIPT_OPENED (Un comprobante fiscal se encuentra abierto)
S_FISCAL_TEXT_ISSUED (Comprobante fiscal abierto. Se acaba de imprimir un texto fiscal)
S_NONFISCAL_RECEIPT_OPENED (Un comprobante no fiscal se encuentra abierto)
S_TENDER (Comprobante fiscal abierto. Se realizó al menos un pago)
S_TENDER_CLEARED (Comprobante fiscal abierto. Se saldó el monto)
S_PERCEPTION (Comprobante fiscal abierto. Se ha emitido el comando de percepciones)
S_KILLED (El controlador ha sido dado de baja)
S_RETURN_RECHARGE (Comprobante fiscal abierto. Se realizó un descuento/recargo general)
S_DISCOUNT_CHARGE (Comprobante fiscal abierto. Se realizó una bonificación/recargo/devolución de envases)
S_RECEIPT_CONCEPT (Recibo fiscal abierto. Se acaba de imprimir una línea con el concepto del recibo)
S_CREDIT_NOTE (Una nota de crédito se encuenta abierta. Se puede hacer un crédito)
S_CREDIT_NOTE_DISCOUNT (Nota de crédito abierta. Se realizó un descuento/recargo general)
S_CREDIT_NOTE_RETURN (Nota de crédito abierta. Se realizó una bonificación/recargo/devolución de envases)
S_CREDIT_NOTE_PERCEPTION (Nota de crédito abierta. Se ha emitido el comando de percepciones)
S_CREDIT_NOTE_TEXT (Nota de crédito abierta. Se acaba de escribir una línea de texto)
S_INTERNAL_USE_RECEIPT (Recibo de uso interno abierto. Se acaba de imprimir una línea con el concepto del recibo)
S_QUOTATION (Una cotización se encuentra abierta)
S_EMBARK (Un remito/orden de salida se encuentra abierto)
S_ACCOUNT (Un resumen de cuenta / cargo a la habitación se encuentra abierto)


• DescripcionEstadoControlador [Cadena]

Devuelve un string conteniendo la descripción del estado actual del controlador, si el modelo que se está usando lo soporta.

Métodos:

1. Métodos de Inicialización/Comandos crudos:

• Comenzar()

El primer método a llamarse. Como condición se ha de especificar la propiedad de puerto de comunicaciones asociado antes de llamar a este método. Iniciará la comunicación con el impresor y generará un error atrapable si hay problemas físicos.

Nota: si en el momento de ejecutar este método con la propiedad ‘ReintentoConstante’ en True se produce un Error de Time Out (el Controlador Fiscal no responde), automaticamente se generará el evento ‘ImpresoraNoResponde’, señalando de este único modo la situación anómala.


• ReComenzar()

Verifica si el puerto especificado en la propiedad ‘Puerto’ ya se encontraba abierto. Generará un error atrapable si el puerto especificado no se encontraba abierto.

Nota: este método no modifica el estado de ninguna de las propiedades del objeto en relación al valor que tenían al momento de ejecutar el método ‘Comenzar’ previo.


• Finalizar()

Cierra el puerto de comunicaciones y libera los recursos asociados. Recomendable llamarlo a la salida del programa.


• CambiarVelocidad(Velocidad)

Cambia la velocidad de transmisión del controlador fiscal. Los valores posibles (en baudios) son: 1.200,
2.400, 4.800, 9.600, 19200, 38400 y 57600. A diferencia de la propiedad Baudios, este comando le cambia la velocidad al controlador, debiendo ya estar comunicado con él para ejecutarlo. Una vez finalizado el comando, se deberá Finalizar() y volver a Comenzar() con la velocidad elegida en la propiedad Baudios.


• AutodetectarControlador(Puerto)

Busca en todas las velocidades posibles un controlador fiscal. Equivale a un Comenzar() sabiendo de antemano la velocidad. Si este comando no fracasa, en Baudios estará la velocidad detectada, y ya no se necesita usar Comenzar().

Nota: Cada vez que en medio de la ejecución de este método se intenta realizar la conexión con el Controlador Fiscal a una nueva velocidad se dispara el evento ‘ProgresoDetección’.


• Enviar (Comando)

Envía un comando crudo al controlador. Se usará sólo en caso que los métodos propuestos por el objeto sean insuficientes.

• Recibir (Respuesta)

Recibe la respuesta referente al último comando enviado al controlador fiscal. No es necesario si se usa la propiedad Respuesta.


• PedidoDeStatus ()

Fuerza un pedido de estado al controlador. Genera todos los eventos asociados y actualiza la respuesta.


• DescripcionStatusImpresor(Numero), DescripcionStatusFiscal(Numero)

Dado un número de estado obtenido por intermedio de los eventos ErrorImpresora y EventoImpresora (DescripcionStatusImpresor) o ErrorFiscal y EventoFiscal (DescripcionStatusFiscal), devuelve un string asociado. Si EventosIndividuales es Falso no se podrá usar el número crudo generado por el evento (hay que separar los bits individuales previamente).


• Abortar()

Se utiliza para interrumpir el proceso en curso (interrupción por parte del usuario). Tipicamente se utiliza cuando, estando la propiedad ‘ReintentoConstante’ seteada en True, se produzca una situación de Time Out en la comunicación con el Controlador Fiscal y el usuario desee interrumpirla luego de aguardar un número de reintentos por el decidido.

• EnviarStatPrn()

Cuando el impresor responde StatPrn (reflejado en la propiedad HuboStatPrn), la respuesta que volvió no corresponde al comando pedido sino que se informa la situación del impresor en este momento, que está en espera sea porque el comando tardó en ejecturarse por su naturaleza, o sea porque el impresor tiene algún problema de índole mecánica. Se puede volver a preguntar entonces con este comando si la situación ha cambiado, hasta que el flag HuboStatPrn no esté más puesto, y se pueda leer la respuesta verdadera.



2. Métodos de Documentos Fiscales:

• AbrirComprobanteFiscal (Tipo)

Abre un documento fiscal. El tipo permitido es alguno de los siguientes: TICKET_C, TICKET_FACTURA_A, TICKET_FACTURA_B, FACTURA_A, FACTURA_B, RECIBO_A, RECIBO_B, NOTA_DEBITO_A, NOTA_DEBITO_B. Este comando está condicionado por el modelo de impresor que se posea. Para que funcione en caso de tickets-factura o factura, debe usarse antes el comando DatosCliente.


• ImprimirTextoFiscal (Texto)

Imprime un texto relacionado con un item de venta en un comprobante fiscal. Debe ir obligatoriamente seguido de otro comando de impresión de texto fiscal o de un comando de venta.



• ImprimirItem (Descripcion, Cantidad, Monto, IVA, ImpuestosInternos)

Imprime una venta en un comprobante fiscal. La descripción se comportará de acuerdo a la propiedad DescripcionesLargas, y los impuestos internos de acuerdo a la propiedad kIVA.


• Subtotal (Imprime)

Genera un comando de subtotal para el controlador. Si el parámetro booleano Imprime es verdadero, se imprime el ticket el subtotal. En cualquier caso, los valores de subtotal pueden ser consultados usando la propiedad Respuesta.


• ImprimirPago (Descripcion, Monto)

Imprime un pago en el ticket, con los parámetros pasados a esta función. Consultar en el manual del controlador por límites en la cantidad de pagos que se pueden usar.


• CerrarComprobanteFiscal()

Cierra un comprobante fiscal. Consultar el manual por restricciones a este comando (el total debe ser positivo, no puede haber contadores de IVA en negativo, etc.)


• CancelarComprobanteFiscal()

Cancela un comprobante fiscal, si el estado del controlador lo permite.


• TratarDeCancelarTodo()

Vuelve el impresor a un estado conocido, no importa dónde se encontrase. Lo hace por intermedio de cancelaciones y cierres.


• CancelarComprobante()

Cancela cualquier tipo de comprobante en curso. Sólo soportado en algunos modelos de controladores.


• DescuentoUltimoItem (Descripcion, Monto, EnNegativo)

Realiza un descuento o un recargo sobre el último ítem. El monto se ve afectado por el parámetro booleano EnNegativo, que si es verdadero, invertirá el signo del monto. Si el monto resulta ser positivo, se tratará de un recargo, mientras si es negativo será un descuento. Está supeditado al modelo del impresor.


• DescuentoGeneral (Descripcion, Monto, EnNegativo)

Realiza un descuento o un recargo sobre el total del comprobante. Verificar anterior comando para su uso.



• DevolucionDescuento (Descripcion, Monto, IVA, ImpuestosInternos,
EnNegativo, Tipo)

Devuelve envases o genera una venta negativa especial, según lo indicado en el parámetro Tipo, que puede asumir alguno de los siguientes valores: DESCUENTO_RECARGO o DEVOLUCION_DE_ENVASES. El comportamiento es idéntico al comando DescuentoUltimoItem.


• PedirPrimerIVA(), PedirSiguienteIVA()

Recuperan los valores de IVA del último ticket. Consultar la documentación para saber en qué modelos está soportado este comando. Los valores resultantes se recuperan con la propiedad Respuesta.



3. Métodos de Facturas Fiscales:

• DatosCliente (Nombre, NroDocumento, TipoDocumento, ResponsabilidadIVA,
Dirección)

Especifica el cliente relacionado con el próximo ticket-factura a abrir. En NroDocumento se espera un número de CUIT o documento (sin espacios ni guiones), cuyo tipo está especificado en el siguiente parámetro según los siguientes valores: TIPO_CUIT, TIPO_LE, TIPO_LC, TIPO_DNI, TIPO_PASAPORTE, TIPO_CI o TIPO_NINGUNO. La responsabilidad frente al IVA será alguna de las siguientes: RESPONSABLE_INSCRIPTO, RESPONSABLE_NO_INSCRIPTO, RESPONSABLE_EXENTO, NO_RESPONSABLE, CONSUMIDOR_FINAL, BIENES_DE_USO, MONOTRIBUTO o NO_CATEGORIZADO. Dirección especificará el domicilio comercial del cliente (es obligatorio en algunos modelos de impresores). Este comando es mandatorio para la apertura de un ticket factura. No todos los tipos de clientes están soportados en todos los controladores.

Nota: el campo de Dirección es obligatorio para los modelos MODELO_P320 y MODELO_PJ20, y no debe cargarse para el resto de los modelos. De no cumplirse cualquiera de estas situaciones según el modelo de controlador, se producira un error de “Parámetro opcional no válido o ausente cuando es necesario”.
__________________
\_--> NoShY <--_/
Responder Con Cita