AR Agente - Servicios Impresiones 2G




Introducción

Fiscal Flow ofrece un set de servicios para la gestión de impresoras de 2da generación.

Estas impresoras presenta como características:

  • No guardan rollo testigo, la información de los cierres Z es almacenada digitalmente en la impresora.
  • Genera archivos que contienen la información de los cierre Z (archivo comprimido que contiene 3 archivos PEM), los cuales deben presentarse semanalmente a la AFIP.

Para las compañías que operen con terminales con impresoras 2G, Fiscal Flow ofrece una serie de servicios para:

  • Poder consultar desde la consola de administración los cierres Z de las terminales.
  • Gestionar la presentación automática requerida por AFIP.


Procesos 2G


Servicio: Registrar documento fiscal 2G (authorize2g)

Este método se utiliza para informar o notificar de manera diaria al agente que una terminal 2G ha realizado operaciones en el día actual. Es obligatoria la llamada a este servicio durante el día que la terminal ha operado para que el servidor sepa que debe esperar luego el registro de un cierre diario de dicha terminal para el día en cuestión (agenda diaria). A partir de la primera operación que realice la terminal, esta deberá notificar al agente mediante el uso de este servicio por lo menos una vez. Si la terminal no ha realizado operación para el día en cuestión, no es necesario invocar a este servicio.

Para el uso del servicio es necesario informar un token que se obtiene a través del servicio "Authenticate".

Es un método REST cuyo contenido interno es JSON. Ejemplo:

[post] http://[dirección-ip]:[puerto]/api/v1/invoice/authorize2g

POST - REQUEST

HEADER

x-access-token
Token obtenido a través del servicio "Authenticate"

Ejemplo:

"x-access-token": token

BODY

ElementoDescripciónTipo de datoRequeridoValidación
requestCredential
companyCodeCódigo de compañía, provisto para la empresa que contrata el servicioStringSi

992


storeCodeCódigo de tiendaString
Si
992
terminalCodeCódigo de terminal / punto de ventaStringSi
992
printerInfo
pointOfSale2G: Punto de Venta (Centro Emisor) (Número fiscal)StringSi

fiscalSerial2G: Nro serie impresoraStringSi

Ejemplo:

{
   "requestCredential": {
        "companyCode""napse",
        "storeCode""43",
        "terminalCode""45"
   },
   "printerInfo":{
      "pointOfSale":"12345",
      "fiscalSerial":"11111111"
   }
}

RESPONSE

ElementoDetalleTipo
ack

Código de respuesta:

  • FF-0: ok
  • COMPLETAR CODIGOS DE ERROR
Number

Ejemplo:

{
    "ack"0
}

Servicio: Consultar agendas pendientes de presentación (pendingSchedule)

Este servicio debe ser invocado por el punto de venta para conocer las agendas diarias y semanales que estén pendientes de ser presentadas. (Ver: Consola de administración, módulo Impresoras 2G, sección Agendas).

El sistema genera automáticamente en estado Pendiente:

  • una agenda por día, "diaria".
  • una agenda semanal: son 4 agendas por mes:
    • Del día 1 al 7
    • Del día 8 al 15
    • Del día 16 al 23
    • Del día 24 al último día del mes, según corresponda.

Las agendas diarias no son requeridas por AFIP, pero sirven cómo método de control, ante la ausencia de rollo de control físico.

Las agendas semanales, son presentandas por Fiscal Flow Server a la AFIP, semanalmente.

Ver: Consola de administración, módulo Impresoras 2G, sección Agendas, para conocer las agendas pendientes y procesadas.

Para el uso del servicio es necesario informar un token que se obtiene a través del servicio "Authenticate".

Es un método REST cuyo contenido interno es JSON. Ejemplo:

[post] http://[dirección-ip]:[puerto]/api/v1/pendingSchedule

POST - REQUEST

BODY

ElementoDetalleRequerido
requestCredential 
companyCode Código de compañía, provisto para la empresa que contrata el servicio.990
storeCode Código de tienda992
terminalCode Código de terminal / punto de venta.991
printerInfo

pointOfSale

2G: Punto de Venta (Centro emisor)993

fiscalSerial

2G: Nro serie impresora994
lastDeletedJournalNumber 

El ultimo Z que eliminó la impresora fiscal.

No

Ejemplo:

{
  "requestCredential":{
      "companyCode":"napse",
      "storeCode":"43",
      "terminalCode":"45"
   },
   "printerInfo":{
      "pointOfSale":"12345",
      "fiscalSerial":"11111111",
       "lastDeletedJournalNumber"0
   }
}

RESPONSE

ElementosDetalleTipo
ack

Código de respuesta:

  • FF-0: ok
  • FF-3006 : Falta el token de acceso
  • FF-3020 : La terminal no existe, registrarse a través del método clientStatus

message
  • Detalle del error (si existiese)

detail



type
  • auditFile: pendiente de envío el archivo de auditoría diario (no es presenta en la AFIP)
  • presentationFile: pendiente de envío el archivo de auditoría semanal.
  • agendaDeleteJournalFile: informa rango de archivos Z que la impresora deberá marcar para eliminar.
String
periodFrom

Depende de type:

    • auditFile: fecha de agenda diaria requerida.
    • presentationFile: fecha de inicio de agenda semanal requerida.

String:

Formato YYYY-MM-DDTHH:MI:SS.SSSZ

periodTo

Depende de type:

  • auditFile: idem fecha periodFrom
  • presentationFile: fecha de fin de agenda semanal requerida.

String:

Formato YYYY-MM-DDTHH:MI:SS.SSSZ

force

Se utiliza para forzar que se envíe la agenda indicada como pendiente.

En 4690 se lleva el registro de lo enviado y si viene solicitado como pendiente, se ignora, salvo que se informe este flag.

boolean
minJournalToDelete

Solo para type = agendaDeleteJournalFile

Indica el número desde de agenda que puede ser descartado.

Number
maxJournalToDelete

Solo para type = agendaDeleteJournalFile

Indica el número hasta de agenda que puede ser descartado.

Number

Ejemplo:

{
    "ack"0,
    "detail": [
        {     
            "type""auditFile",
            "periodFrom""2020-11-25T00:00:00.000Z",
            "periodTo""2020-11-25T00:00:00.000Z",
            "force"false
        },
        {  
            "type""presentationFile",
            "periodFrom""2020-11-01T00:00:00.000Z",
            "periodTo""2020-11-07T00:00:00.000Z"
            "force"false
        },
        {  
            "type""agendaDeleteJournalFile",

            "minJournalToDelete"100,
            "maxJournalToDelete": 145,
            "force"true
        }
    ]
}

Servicio: Notificar archivo de presentación (notifyJournalFile)

Este servicio debe ser invocado por el punto de venta para realizar la subida de las presentaciones diarias y semanales a Fiscal Flow Server, según el detalle de las agendas pendientes que se puede obtener a través del servicio pendingSchedule.

  • Agenda diaria (auditFile):
    • Deberá solicitar a la impresora fiscal los z del día correspondiente a la presentación que se está realizando (formato xml)
    • Con los archivos recibidos (puede haber mas de un z por día) armar un archivo comprimido (zip).
  • Agenda semanal (presentationFile):
    • Solicitar a la impresora los archivos a ser presentandos a la AFIP, del período correspondiente.
    • Los archivos obtenidos serán 3, con extensión .pem y cuyos nombres comienzan con código (8011, 8012, 8013) y el cuit de la compañía.
    • Con los archivos recibidos armar un archivo comprimido (zip).

El agente se encarga de notificar al server la recepción de los archivos si se pudieron descargar corectamente (estado de la agenda "Notificada") así como si hubo un error al obtenerlos de la impresora (estado de la agenda "Error descarga"). Asincrónicamente, va subiendo los archivos a una carpeta de la compañía en el server.

Luego el server va tomando automáticamente los archivos subidos y va marcando las agendas como "En server".

Como último paso, el server va tomando las agendas "En server" y las va procesando.

Desde la consola de administración, módulo Impresoras 2G, se pueden consultar los archivos que se van recibiendo.

Para el uso del servicio es necesario informar un token que se obtiene a través del servicio "Authenticate".

Es un método REST cuyo contenido interno es JSON. Ejemplo:

[post] http://[dirección-ip]:[puerto]/api/v1/notifyJournalFile

POST - REQUEST

HEADER

x-access-token
Token obtenido a través del servicio "Authenticate"

Ejemplo:

"x-access-token": token

BODY

ElementoDetalleRequeridoTipo
requestCredential 
companyCodeCódigo de compañía, provisto para la empresa que contrata el servicio.String990
storeCodeCódigo de tiendaString992
terminalCodeCódigo de terminal / punto de venta.String991
fileInfo



path

Path o ruta física donde reside el archivo a ser subido vía FTP por el agente

String
nameFile

Nombre del archivo a ser subido vía FTP por el agente.

Formato según tipo de archivo:

  • auditfile:



  • presentationfile:
String
ack

Indicador de si se pudo obtener correctamente el archivo de la impresora o no:

0: ok

1: error

Number
messageDetalle del error, en caso de haber informado ack = 1NoString

Ejemplo:

Con Error

{
  "requestCredential":{
      "companyCode":"napse",
      "storeCode":"43",
      "terminalCode":"45"
   },
   "fileInfo": {
      "path":"C:\\synthesis\\fiscal-flow-agent",
      "nameFile":"faup-aut-napse-43-45-11111111-12345-auditfile-201125-201125.zip",

      "ack": 1,
     "message""ERROR AL DESCARGAR ARCHIVO"
   }
}


Sin error

{
  "requestCredential":{
      "companyCode":"napse",
      "storeCode":"43",
      "terminalCode":"45"
   },
   "fileInfo": {
      "path":"C:\\synthesis\\fiscal-flow-agent",
      "nameFile":"faup-aut-napse-43-45-11111111-12345-auditfile-201125-201125.zip",

      "ack": 0
   }
}


RESPONSE

ElementoDetalleTipo
ack

Código de respuesta:

  • FF-0: ok
  • FF-3006 : Falta el token de acceso
  • FF-3020 : La terminal no existe. Registrarse mediante el servicio clientStatus
  • FF-3009 : Error al obtener los valores de configuración
  • FF-3007 : Error al cargar archivos al FTP
  • FF-3008 : Error de conexión con el servidor
  • FF-3010 : El archivo no existe
  • FF-3023 : Terminal no registrado para operar en modo 2g. Por favor llame a clientStatus para registrarse (Terminal not registered to operate in 2g mode. Please call clientStatus for register)
Number
messageDetalle de la respuesta.String


Ejemplo:

{
    "ack"0,
    "message""ok"
}

Servicio: Informar último cierre Z eliminado (notifyLastDeletedJournal)

Este servicio debe ser invocado por el punto de venta para informar el último cierre Z que ha sido eliminado de la impresora.

Para el uso del servicio es necesario informar un token que se obtiene a través del servicio "Authenticate".

Es un método REST cuyo contenido interno es JSON. Ejemplo:

[POST] http://[dirección-ip]:[puerto]/api/v1/notifyLastDeletedJournal

POST - REQUEST

BODY

ElementoTipoDetalleRequerido
requestCredential 
companyCode StringCódigo de compañía, provisto para la empresa que contrata el servicio.
storeCode StringCódigo de tienda
terminalCode StringCódigo de terminal / punto de venta.
printerInfo

pointOfSale

String2G: Punto de Venta (Centro emisor)

fiscalSerial

String2G: Nro serie impresora
lastDeletedJournalNumber Number

El ultimo Z que eliminó la impresora fiscal.

Ejemplo:

{
  "requestCredential":{
      "companyCode":"napse",
      "storeCode":"43",
      "terminalCode":"45"
   },
   "printerInfo":{
      "pointOfSale":"12345",
      "fiscalSerial":"11111111",
       "lastDeletedJournalNumber": 10
   }
}

RESPONSE

ElementosDetalleTipo
ack

Código de respuesta:

  • FF-0: ok
  • FF-2005 : Error en tipo de datos.
  • FF-3006 : Falta el token de acceso
  • FF-3020 : La terminal no existe, registrarse a través del método clientStatus
String
message
  • Detalle de la respuesta
String

Ejemplo:

{
    "ack"0,
    "message""Ok"
}

  • Sem rótulos