En este artículo se describe cómo utilizar la interfaz de archivos del servicio fiscal.
Requisitos previos
- FiskalClient a partir de la versión 1.2.11
- FiscalClient como servicio (no se admiten implementaciones de nuget)
Países compatibles
Actualmente, solo se admiten los países que se enumeran a continuación a través de la interfaz de archivos:
- Austria
- Dinamarca (a partir de la versión 1.3)
Información adicional
La interfaz de archivos solo admite una parte muy reducida de la funcionalidad del client fiscal para transmitir los datos necesarios para la fiscalización. Si se desean comandos más específicos, el servicio puede integrarse con herramientas como CURL a través de la interfaz REST. No obstante, esto no se explica en este artículo.
Activación
La interfaz del sistema de archivos puede habilitarse de la siguiente manera:
- Configurando la ruta de acceso a la supervisión en el archivo appsettings.json.
- Creando un directorio en C:\ProgramData\RetailForce\Fiscal web service con el nombre «fileSystemInterface».
Importante: Para activar el sistema, es necesario reiniciar el servicio tras realizar estos ajustes.
appsettings.json
"AppSettings": {
...,
"FileSystemInterfacePath": "c:/temp/filesysteminterface",
...
}
Las entradas anteriores y posteriores no se incluyen en el ejemplo. «c:\temp\filesysteminterface» es la ruta supervisada.
Funcionamiento
La interfaz de archivos del servicio fiscal supervisa un directorio en busca de nuevos archivos con una estructura de nombres determinada. Tan pronto como se crea en este directorio un nuevo archivo que se ajuste a las convenciones de nomenclatura, este se procesa.
Atención: En el caso de archivos de gran tamaño, es recomendable guardar primero el archivo en el directorio como archivo temporal y, a continuación, cambiarle el nombre por el nombre correcto mediante la orden RENAME.
Procedimiento
El procedimiento es el siguiente:
- El archivo se transfiere al directorio y se reconoce (*.request)
- El archivo se procesa
- El archivo *.response o *.error se almacena en el directorio «response» (subdirectorio del directorio de importación) con el mismo nombre de archivo antes de la extensión.
Ejemplo
- Se transfiere el archivo 20220308135010236.document.request
- El archivo se está procesando
- Se ha almacenado el archivo response/20220308135010236.document.response.
o, en caso de error
- Se ha transferido 20220308135010236.document.request
- El archivo se encuentra en proceso
- Se ha almacenado el archivo «response/20220308135010236.document.error».
Responsabilidades
La interfaz de archivos mueve los archivos de solicitud procesados al subdirectorio «processed».
La interfaz de archivos nunca eliminará ningún archivo. No obstante, se recomienda archivar los archivos más antiguos (reconocibles por su fecha) tras un determinado periodo de tiempo.
Garantía de la secuencia correcta
La secuencia de procesamiento queda garantizada gracias a un nombre único y ordenable del archivo.
Estructura del nombre del archivo
AAAAMMDDHHNNSSZZZ.{tipo}.solicitud
AAAA = Año (2022), rango de valores: 2022-3000
MM = Mes (03 para marzo), rango de valores: 01-12
DD = Día (02 para el 2 del mes), rango de valores: 01-31
HH = Hora en formato de 24 horas, rango de valores: 00-23
NN = Minutos (04 para 4 minutos), rango de valores: 00-59
SS = Segundos (05 para 5 segundos), rango de valores: 00-59
ZZZ = Milisegundos (010 para 10 milisegundos), rango de valores: 000-999
Tipo
{type} indica el tipo de solicitud; existen los siguientes tipos:
- Document: para transmitir un recibo
- validateDocument: para validar un recibo
- command: para ejecutar un comando
Documentación sobre tipos y modelos
Para obtener más información sobre el modelo de documento y las respuestas correspondientes, consulte la documentación del modelo de objetos y la documentación de Swagger del Cliente Fiscal (http://localhost:7678/swagger/index.html).
La devolución de errores es la misma para todos los tipos: la excepción que se ha producido se devuelve en el archivo de retorno (*.error).
Tipo «document»: transmisión de recibos
El contenido del archivo en este caso es un documento en el formato de documento de RetailForce (Document).
El formato del documento puede consultarse en la documentación del modelo de objetos o en la documentación de Swagger del servicio fiscal (http://localhost:7678/swagger/index.html).
Respuesta
La respuesta fiscalResponse del país correspondiente se transmite en el archivo de respuesta.
Tipo «validateDocument»: validación de un recibo
El contenido del archivo en este caso es, al igual que con el tipo «document», un documento en el formato de documento de RetailForce.
Respuesta
En el archivo de respuesta se devuelve una posible lista de errores (y advertencias) resultantes de la validación.
Tipo «createClient»: creación de un FiscalClient
El contenido del archivo en este caso es un FiscalClient en formato JSON (véase la documentación).
Respuesta
«OK» cuando la solicitud se haya procesado correctamente.
Tipo «createClientByCloud»: creación de un FiscalClient con datos de la Cloud
El contenido del archivo es un documento JSON con la siguiente estructura:
{
"CompanyIdentification":
{
"Type": 0,
"Identification": "UID"
},
"StoreNumber": "001",
"TerminalNumber": "01",
"ApiKey": "{ApiKey}",
"ApiSecret": "{ApiSecret}"
}
Devuelve
El uniqueClientId del cliente creado.
Tipo «restoreClientByCloud»: restauración de un FiscalClient con datos de la Cloud
El contenido del archivo es un documento JSON con la siguiente estructura:
{
"CompanyIdentification":
{
"Type": 0,
"Identification": "UID"
},
"StoreNumber": "001",
"TerminalNumber": "01",
"ApiKey": "{ApiKey}",
"ApiSecret": "{ApiSecret}"
}
Resultado
El uniqueClientId del cliente restaurado.
Tipo «getClientId»: búsqueda de un cliente y obtención de su ID
Disponible a partir de la versión 1.2.12
El contenido del archivo es un documento JSON con la siguiente estructura:
{
"CompanyIdentification":
{
"Type": 0,
"Identification": "UID"
},
"StoreNumber": "001",
"TerminalNumber": "01"
}
Resultado
El uniqueClientId del client creado.
Escriba «InitializeClient»: inicialización del FiscalClient
El contenido del archivo es un documento JSON con la siguiente estructura:
{
"UniqueClientId": "9607625f-1147-43a4-bf05-49319acbd9f6",
"BookDate": "2022-03-10T08:52:33.3556282Z",
"User":
{
"Id": "1",
"Caption": "Test",
"LastName": "Test",
"FirstName": "Test",
"DateOfEntry": "2022-03-10T08:52:33.3556282Z"
}
}
Los datos proporcionados son datos de prueba y deben sustituirse por los datos correctos.
Resultado
O bien vacío, o bien un objeto «fiscalResponse» del país correspondiente.
Tipo «CloudConnect»: inicialización de la conexión a la nube
El contenido del archivo es un documento JSON con la siguiente estructura:
{
"UniqueClientId": "9607625f-1147-43a4-bf05-49319acbd9f6",
"ApiKey": "{ApiKey}",
"ApiSecret": "{ApiSecret}",
"PersistDays": {days} // optional, days until credentials are stored
}
Devuelve
«OK» cuando la solicitud se haya procesado correctamente.
Tipo «AuditLog»: transmisión de una entrada del registro de auditoría
El contenido del archivo es un objeto JSON con la siguiente estructura:
{
"RecordDateTime": "2022-03-11T15:17:57.9859527",
"UniqueClientId": "9607625f-1147-43a4-bf05-49319acbd9f6",
"LogEntryType": 200,
"Message": "OpenDrawer",
"DocumentGuid": null,
"User": null
}
Devuelve
Puede dejarse vacío o devolver un objeto «fiscalResponse» del país correspondiente, si así se requiere en dicho país.
Tipo «digitalReceipt»: envío de un recibo digital
Este tipo de archivo puede utilizarse para transmitir un recibo digital.
El contenido del archivo es un objeto JSON con la siguiente estructura:
{
"UniqueClientId": "d5ecc344-e37a-40c6-bed4-a6b1e60e68c8",
"ReceiptMetaData": {
"DocumentType": 0,
"CustomDocumentType": null,
"DocumentGuid": "2394fef4-2339-459a-817e-e4cd86ce23f6",
"DocumentNumber": "1",
"DocumentId": "CS_01_01_1",
"BookDate": "2021-11-17T06:45:03.8203317",
"Amount": 141.0,
"Partner": null,
"Users": null,
"ProcessId": null,
"CancelledDocumentGuid": null,
"ItemIdArray": [
"1231",
"SW4471"
],
"ItemCodeArray": null
},
"PdfDataBase64": "JVBERi0xLjcKJeLjz9MKMSAwIG9iaiAKPDwKL0NvbG9yU3Bh..."
}
La propiedad «ReceiptMetaData» es el objeto ReceiptMetaData que también debe pasarse al realizar la llamada a través de la interfaz REST.
En el ejemplo, el stream de datos del PDF se ha abreviado con «...».
Resultado
En el archivo de respuesta se devuelve un enlace QrCode (en forma de string) para que se muestre al cliente.
Configuración
La interfaz del sistema de archivos puede activarse en la configuración del cliente mediante un valor en el campo «FiscalClient.FileSystemInterfacePath». Si este campo está vacío (valor por defecto), la interfaz de archivos no está activa.
Este artículo ha sido traducido automáticamente.
Comentarios
0 comentarios
Inicie sesión para dejar un comentario.