From 23703b6efd1fdef0f93f70a66e37ee8e9e542162 Mon Sep 17 00:00:00 2001 From: Alex Malaszkiewicz Date: Fri, 21 Jun 2024 16:14:49 +0200 Subject: [PATCH] Describe the current status of the project I added a TODO section in which I listed a list of complete and incomplete tasks. This will allow us to move forward with the project in the future. --- sdi/README.md | 108 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) diff --git a/sdi/README.md b/sdi/README.md index 64eea20..8512d57 100644 --- a/sdi/README.md +++ b/sdi/README.md @@ -150,3 +150,111 @@ Any attempts from SdI will only be visible in the simulation section of the "Manage the channel" interface. --- + +## TODO + +- [X] completed tasks +- [ ] uncompleted tasks + +Below is a checklist. +It is intended to help us determine the current status of the project. + +### Sending invoices + +The functionality related to sending invoices +and simple invoices works correctly (tested in test env for SdI). +The status of sent invoices is visible +in the "Interoperability Test" section of "Manage the channel". + +- [X] Sending invoices to SdI + - [X] Building the client along with configuration + - [X] Preparation of SOAP request for SdI + - [X] Creation of "transmit" command for CLI + - [X] Adding SSL support to the HTTP client for sending invoices +- [X] Receiving responses after sending invoices: + - [X] Parses a multipart HTTP response (XOP+XML) + - [X] Deserialization of response into appropriate structure +- [X] Handling errors: + - [X] Empty invoice (File vuoto) + - [X] Service unavailable (Servizio non disponibile) + - [X] Unauthorized user (Utente non abilitato) + - [X] File type not correct (Tipo file non corretto) +- [X] Preparation of structures for Message Types (based on MessaggiTypes_v1.1.xsd) + +### Receiving invoices + +The functionality of receiving invoices and notifications is not working +because we couldn't configure SSL communication correctly. +When we send an invoice to the recipient specified in the "Manage the channel" +simulation section, the our server should receive it. +SdI makes three attempts to deliver the invoice or notification. +However, for this to happen, SdI tries to authenticate the server +it sends data to at the SSL level. + +If any requests were to arrive, we would see them in the server logs. +Currently, the status of sent requests is visible only in "Manage the channel", +with the following message: + +> javax.net.ssl.SSLHandshakeException [1]: General SSLEngine problem + +Despite SSL issues, some tasks were successfully completed (based on tests). + +- [ ] Receiving invoices from SdI + - [X] Simple HTTP server listening on the selected port + - [X] Adding SSL support to the HTTPS server + - [X] Building a message handler + - [ ] Handling transmission service endpoint (out) + - [ ] Handling reception service endpoint (in) + - [X] Creation of "server" command for CLI + - [ ] Parsing request from SdI with the invoice + - [ ] Assign parsed invoice to GOBL format +- [ ] Receiving notifications from SdI + - [X] Handling different SdI requests + - [ ] Receiving actual requests from SDI for testing purposes + - [X] Mocking real communication with SDI for testing purposes +- [X] Parsing SDI messages: + - [X] Rejection Receipt (RicevutaScarto) + - [ ] Invoice Transmission Confirmation (AttestazioneTrasmissioneFattura) + - [X] File Submission Metadata (MetadatiInvioFile) + - [ ] Delivery Failure Notification (NotificaMancataConsegna) +- [ ] Server configuration + - [X] Analysis of requirements needed for server configuration + - [ ] Setting up the server for "Interoperability Tests" + - [ ] Setting up the server for production +- [X] Preparing the structure based on XSD files: + - [X] Invoice Data Message (DatiFatturaMessaggi_v2.0.xsd) + - [X] Receipt Types (RicezioneTypes_v1.0.xsd) + - [X] Submission File Types + - [X] Transmission File Types (TrasmissioneFileTypes_v2.0.xsd) + - [X] Transmission Types (TransmissioneTypes_v1.1.xsd) + +The above tasks likely do not cover all the preparations required. +However, without the ability to receive requests from SdI, +the development process is hindered. + +### Interoperability Test + +To pass the "Interoperability Test", a correctly configured environment +with an active server is required. SdI does not allow the use of two different +certificates, so the staging environment should be on the same domain +as the production environment. The difference may lie in a different path, +which can be set in the "Change Endpoint" section of "Manage the Channel". + +Necessary tests to pass: + +- [ ] Invoice Reception (Ricezione Fattura) +- [ ] Delivery Receipt (Ricevuta consegna) +- [ ] Non-Delivery Notification (B2G)/Undeliverable Notification (B2B, B2C) (Notifica mancata consegna (B2G)/Notifica impossibilità di recapito (B2B, B2C)) +- [ ] Rejection Notification (B2G)/Rejection Receipt (B2B, B2C) (Notifica scarto (B2G)/Ricevuta di scarto (B2B, B2C)) + +Further tests for FatturaPA: + +- [ ] Outcome Notification from PA (Notifica di esito da PA) +- [ ] Rejection Notification of Outcome to PA (Notifica di Scarto esito a PA) +- [ ] Deadline Notification to PA (Notifica Decorrenza Termini a PA) +- [ ] Outcome Notification to Economic Operator (Notifica esito a Operatore Economico) +- [ ] Deadline Notification to Economic Operator (Notifica Decorrenza Termini a Operatore Economico) +- [ ] Transmission Confirmation (Attestazione avvenuta trasmissione) + +After successfully passing the interoperability tests, SdI will be unlocked +to communicate with the production environment of the SDICoop Web Service.