Skip to content

Commit

Permalink
Describe the current status of the project
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
torrocus committed Jun 21, 2024
1 parent 7b912fb commit 23703b6
Showing 1 changed file with 108 additions and 0 deletions.
108 changes: 108 additions & 0 deletions sdi/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

0 comments on commit 23703b6

Please sign in to comment.