# Generale
Il modulo consente la gestione di due flussi:
* flusso fatturazione: generazione di un archivio o più archivi zip su base giornaliera contente le fatture e note di credito.
* flusso registri iva: generazione di un archivio zip su base mensile contente le movimentazioni (fattura e note di credito).

# Flusso Fatturazione
Il flusso fatturazione è gestito dal metodo `Reply\Invoice\Model\InvoiceBundler::process`.
Lo scopo di questo flusso è di generare gli archivi zip, uno per giorno, da inviare a FEM.

Il metodo accetta 3 parametri:
* **$from**-**$to**: stringhe in formato Y-m-d con il range di date per cui generare gli archivi.
* **$sendArchives**: booleano, se true, gli archivi generati vengono inviata via SFTP.

Il metodo, in ordine, si occupa di:
* Recupero di tutte le fatture e note di credito nel range di date selezionato.
* Per ogni fattura/nota di credito:
  * Generazione del file XML (per fatturazione elettronica SDI) nel path `var/fem_invoices/invoices/WOOCOMM_{date}/xml/01/WOOCOMM_{year}_V{month}_{increment_id}.xml`
  * Generazione del file HDR (csv in formato txt con metadati) nel path `var/fem_invoices/invoices/WOOCOMM_{date}/hdr/01/WOOCOMM_{year}_V{month}_{increment_id}.txt`
* Generazione dei file descrittori (contengono i path dei file generati)
  * `var/fem_invoices/invoices/WOOCOMM_{date}/descr/WOOCOMM_{date}.XMLTDESCR`  
  * `var/fem_invoices/invoices/WOOCOMM_{date}/descr/WOOCOMM_{date}.TXTDESCR`
* Generazione degli archivi zip partendo dalla cartella del giorno di riferimento:
  * **source**: `var/fem_invoices/invoices/WOOCOMM_{date}`
  * **output**:
    * `var/fem_invoices/archives/WOOCOMM_{date}.zip`
    * `var/fem_invoices/archives/WOOCOMM_{date}.OK` (file vuoto con estensione .OK)
* Invio degli archivi via SFTP nella cartella `/fem2_input/from_WOOCOMMERCE`.

# Flusso Registri IVA
Il flusso registri IVA è gestito dal metodo `Reply\Invoice\Model\VatRecordBundler::process`.
Lo scopo di questo flusso è di generare un archivio zip, riferimento del mese, da inviare a FEM.

Il metodo accetta 3 parametri:
* **$month**: stringa in formato Y-m con mese di cui si sta richiedendo la generazione.
* **$sendArchive**: booleano, se true, l'archivio generato viene inviato via SFTP.
* **$sendEmail**: booleano, se true, il file xls generato dal processo viene inviato alle mail configurate sul modulo.

Il metodo, in ordine, si occupa di:
* Recupero di tutte le fatture e note di credito del mese selezionato.
* Generazione del file PDF (elenco movimentazioni) nel path `var/fem_invoices/registri_iva/WOOCOMM.REGISTROFATTURE.{year}{month}/pdf/01/WOOCOMM_{year}_V{month}_01.pdf`
* Generazione del file HDR (csv in formato txt con metadati) nel path `var/fem_invoices/registri_iva/WOOCOMM.REGISTROFATTURE.{year}{month}/hdr/01/WOOCOMM_{year}_V{month}_01.txt`
* Generazione del file XLS (excel con movimentazioni) nel path `var/fem_invoices/registri_iva/WOOCOMM.REGISTROFATTURE.{year}{month}/xls/01/WOOCOMM_{year}_V{month}_01.xls`
* Generazione dei file descrittori (contengono i path dei file generati)
  * `var/fem_invoices/registri_iva/WOOCOMM.REGISTROFATTURE.{year}{month}/descr/WOOCOMM.REGISTROFATTURE.{year}{month}.PDFDESCR`.
  * `var/fem_invoices/registri_iva/WOOCOMM.REGISTROFATTURE.{year}{month}/descr/WOOCOMM.REGISTROFATTURE.{year}{month}.TXTDESCR`
* Generazione dell'archivio zip partendo dalla cartella del mese di riferimento:
  * **source**: `var/fem_invoices/registri_iva/WOOCOMM.REGISTROFATTURE.{year}{month}`
  * **output**: 
     * `var/fem_invoices/archives/WOOCOMM.REGISTROFATTURE.{year}{month}` (archivio zip ma l'estenzione .zip non ci deve essere)
     * `var/fem_invoices/archives/WOOCOMM.REGISTROFATTURE.{year}{month}.OK` (file vuoto con estensione .OK)
* Invio dell'archivio via SFTP nella cartella `/fem2_input/from_WOOCOMMERCE/REGIVA`.

# Debug
Nel modulo sono presenti due comandi per testare il funzionamento del modulo:

### Flusso fatturazione
```bin/magento invoice:invoices-bundle --from="2022-03-20" --to="2022-03-25" --send_archives```
`--send_archives`: Se prensete invia gli archivi generati all'sftp.

### Registri IVA
```bin/magento invoice:vatrecord-bundle --month="2022-03" --send_archive --send_email```
`--send_archive`: Se presente invia lo zip generato all'sftp.
`--send_email`: Se presente invia l'xls generato alle mail configurate sul modulo.