Skip to content

JSON Comandos Para impresora Fiscal

Gonzalo Hourcade edited this page Jan 22, 2019 · 27 revisions

Listado de comandos fiscales


dailyClose

Realiza el cierre fiscal. Acepta como parámetro el tipo de cierre (X o Z) y si no se le pasa parámetro realiza el cierre X.

Parametros del comando

Tipo CHAR que puede ser "X" o "Z" dependiendo lo que se quiera imprimir

Ejemplo:

//JSON que se envía al servidor desde el cliente según el tipo de cierre:

// imprime un Zeta
{
  "dailyClose": "Z"
}
Imprime un cierre tipo X
{
  "dailyClose": "X"
}

Respuesta

Recibe un JSON con toda la informacion que viene de la fiscal.

//JSON que recibe el cliente como respuesta:

{ 
  _RESERVADO_SIEMPRE_CERO_: "0" (Integer)  
  _cant_doc_fiscales_: "0" (Integer)  
  _cant_doc_fiscales_a_emitidos_: "0" (Integer)  
  _cant_doc_fiscales_bc_emitidos_: "0" (Integer)  
  _cant_doc_fiscales_cancelados_: "0" (Integer)  
  _cant_doc_nofiscales_: "1" (Integer)  
  _cant_doc_nofiscales_homologados_: "0" (Integer)  
  _cant_nc_a_fiscales_a_emitidos_: "0" (Integer)  
  _cant_nc_bc_emitidos_: "0" (Integer)  
  _cant_nc_canceladas_: "0" (Integer)  
  _monto_credito_nc_: "0.00" (Float)  
  _monto_imp_internos_: "0.00" (Float)  
  _monto_imp_internos_nc_: "0.00" (Float)  
  _monto_iva_doc_fiscal_: "0.00" (Float)  
  _monto_iva_nc_: "0.00" (Float)  
  _monto_iva_no_inscripto_: "0.00" (Float)  
  _monto_iva_no_inscripto_nc_: "0.00" (Float)  
  _monto_percepciones_: "0.00" (Float)  
  _monto_percepciones_nc_: "0.00" (Float)  
  _monto_ventas_doc_fiscal_: "0.00"(Float)  
  _status_fiscal_: "0600" (Hexadecimal)  
  _status_impresora_: "C080" (Hexadecimal)  
  _ultima_nc_a_: "30" (Integer)  
  _ultima_nc_b_: "327" (Integer)  
  _ultimo_doc_a_: "2262" (Integer)  
  _ultimo_doc_b_: "66733" (Integer)  
  _ultimo_remito_: "0" (Integer)  
  _zeta_numero_: "1" (Integer)  
}  

JSON Accion: printTicket

Imprime el ticket, se le deben pasar parametros como, el encabezado, items, pagos que son listas [], addAdditional, setHeader, setTrailer. Devuelve lo que _cerrarComprobante() a su vez devolvió.

Protocolo para formar un JSON con el objetivo de imprimir un ticket. Se compone de 3 distintas partes:

  • Encabezado
  • Ítems
  • Pagos (opcional)

Al imprimir un ticket el servidor enviará 3 comandos previos que pueden resultar en un mensaje de warning: "comando no es valido para el estado de la impresora fiscal ". Esto no es un error, sino que antes de imprimir un tiquet envia:

  • CANCELAR CUALQUIER TIQUET ABIERTO
  • CANCELAR COMPROBANTE NO FISCAL
  • CANCELAR NOTA ED CREDITO O DEBITO Es una comprobación útil que ahorrará dolores de cabeza y posibilidades de bloquear la impresora fiscal.

Encabezado (Obligatorio)

tipo: Json

{
"encabezado": {
			        "tipo_cbte": "FA", // tipo tiquet VARIABLE ESTATICA *obligatorio
			        "nro_doc": "20267565393", // identificacion cliente
			        "domicilio_cliente": "Rua 76 km 34.5 Alagoas", // domicilio
			        "tipo_doc": "DNI", // tipo documento VARIABLE ESTATICA (mas abajo se detallan)
			        "nombre_cliente": "Joao Da Silva", // nombre cliente
			        "tipo_responsable": "RESPONSABLE_INSCRIPTO" // VARIABLE ESTATICA
			    }
}


// ejemplo Nota de Crédito "B"
{
"encabezado": {
			        "tipo_cbte": "NCB", // tipo tiquet VARIABLE ESTATICA *obligatorio		        
				"referencia": "000100012" // numero de comprobante impreso
			    }
}
                
```json


##### Variables Estáticas Para Encabezado

	tipo_cbte
	        "T"  # tiques
	        "FA", 
	        "FB", 
	        "NDA", 
	        "NCA", 
	        "NDB", 
	        "NCB", 
	        "FC", 
	        "NDC", 
	        "NDC",


	        
	tipo_responsable
	        "RESPONSABLE_INSCRIPTO"
	        "RESPONSABLE_NO_INSCRIPTO"
	        "NO_RESPONSABLE"
	        "EXENTO"
	        "CONSUMIDOR_FINAL"
	        "RESPONSABLE_MONOTRIBUTO"
	        "NO_CATEGORIZADO"
	        "PEQUENIO_CONTRIBUYENTE_EVENTUAL"
	        "MONOTRIBUTISTA_SOCIAL"
	        "PEQUENIO_CONTRIBUYENTE_EVENTUAL_SOCIAL"
	                        

	tipo_doc
	        "DNI"
	        "CUIT"
	        "LIBRETA_ENROLAMIENTO"
	        "LIBRETA_CIVICA"
	        "CEDULA"
	        "PASAPORTE"
	        "SIN_CALIFICADOR"


#### addAdditional (opcional)
tipo: dict
Sirve para poner descuento o recargo general a todo el ticket

```javascript
{addAdditional: {
  description: "Descuento",
  amount: 200,
  iva: 21,
  negative: True
}}

{
  description: "Recargo por algo",
  amount: 200,
  iva: 21,
  negative: False
}

Ítems (Obligatorio)

tipo: list

{
 "items": [
    {
        "alic_iva": 21.0, // * Obligatorio
        "importe": 0.01, // * Obligatorio
        "ds": "Descripcion Producto", // * Obligatorio
        "qty": 1.0 // * Obligatorio
    },
    {
        "alic_iva": 21.0,
        "importe": 0.22,
        "ds": "COCA COLA",
        "qty": 2.0
    }
]
}               
                

Todos los campos del ítem son obligatorios

Percepciones (Opcional)

tipo: list

{
 "percepciones": [
    {
        "importe": 0.01, // * Obligatorio
        "ds": "Tasa de seguridad e higiene" // * Obligatorio
    },
    {
        "importe": 0.22,
        "ds": "Descripcion Tasa"
    }
]
}               
                

Todos los campos de la percepción son obligatorios

Pagos (Opcional)

tipo: list

{
"pagos": [
        {
        "ds": "efectivo", // * Obligatorio
        "importe": 1.0    // * Obligatorio
        }
    ]
}

Ejemplo completo de "printTicket"

		json = {		
			"printTicket": {
				"encabezado": {
			        "tipo_cbte": "FA",
			        "nro_doc": "20267565393",
			        "domicilio_cliente": "Rua 76 km 34.5 Alagoas",
			        "tipo_doc": "DNI",
			        "nombre_cliente": "Joao Da Silva",
			        "tipo_responsable": "RESPONSABLE_INSCRIPTO"
			    },
			    "items": [
			        {
			            "alic_iva": 21.0,
			            "importe": 0.01,
			            "ds": "PIPI",
			            "qty": 1.0
			        },
			        {
			            "alic_iva": 21.0,
			            "importe": 0.22,
			            "ds": "COCA",
			            "qty": 2.0
			        }
			    ],
			    "pagos": [
			        {
			            "ds": "efectivo",
			            "importe": 1.0
			        }
			    ]
				}
			}

		json = {
				"printTicket": {
					"encabezado": {
						"tipo_cbte": "T"
					},
					"items": [{
						"alic_iva": 21.0,
						"importe": 0.01,
						"ds": "PEPSI",
						"qty": 1.0
					}, {
						"alic_iva": 21.0,
						"importe": 0.12,
						"ds": "COCA",
						"qty": 2.0
					}]
				}
			}

			// ejemplo de Nota de Credito
			json = {
				"printTicket": {
					"encabezado": {
						"tipo_cbte": "NCB",
						"referencia": "001000000025"
					},
					"items": [{
						"alic_iva": 21.0,
						"importe": 0.01,
						"ds": "PEPSI",
						"qty": 1.0
					}, {
						"alic_iva": 21.0,
						"importe": 0.12,
						"ds": "COCA",
						"qty": 2.0
					}]
				}
			}

'setHeader' -->

Setea el encabezado del ticket Se le debe pasar una Lista con los renglones a colocar donde cada item es un renglon []

{
    "setHeader": [
        "Linea 1",
        "Linea 22 22",
        "Linea 3 3 3 3 3"
    ]
}

'setTrailer' -->

Setea el pie de pagina Se le debe pasar una Lista con los renglones a colocar donde cada item es un renglon []

{
    "setTrailer": [
        "Linea 1",
        "Linea 22 22",
        "Linea 3 3 3 3 3"
    ]
}

// cada item de la lista es una linea a modificar, por ejemplo
{
    "setTrailer": [
        "", 				// dejara la linea 1 vacia
        "Linea 22 modif",   // modificara la linea 2		
    ]
}

'openDrawer' --> Abre caja registradora, no parametros

'getlastNumber' --> Devuelve el último número de comprobante

// EJ: ultimo numero de tiquet
{
    "getLastNumber": "T"
}

// EJ: ultimo comprobante Factura A
{
    "getLastNumber": "FA"
}


// EJ: ultimo comprobante Nota de Credito A
{
    "getLastNumber": "NCA"
}

'cancelDocument' --> Se cancela documento en curso, no parametros