Ciao a tutte e a tutti, innanzi tutto grazie per i preziosi consigli che si trovano in questo thread.
La mia situazione è probabilmente più semplice delle vostre, devo caricare spese per un fisioterapista che ha già una applicazione in PHP+MySQL. In passato esportavo semplicemente le fatture estraendole con SELECT e poi usavo una variazione di un codice in python (leggendo dal mio file CSV invece che da un excel), un upload sincrono una spesa alla volta. Questo il repository da cui partivo:
https://github.com/timendum/sistemats
Quest'anno però la situazione è cambiata e mi dicono che l'invio deve essere fatto mensilmente anziché annualmente, quindi
Ho scritto questa cosa qui:
https://github.com/lavorareperilmale/s5ap (Sistema Sincrono Spesa Singola Soggetto Altri Professionisti), con l'idea di avere un cron job che manda una volta al mese, prima in test e il giorno dopo in prod, piu' o meno in questo modo:
PHP:
use lavorareperilmale\s5ap\Connettore;
// [...]
$connettore = new Connettore(); // Senza parametri per ambiente di test
// oppure per prod usare i propri dati:
// $connettore = new Connettore('Nome ut.','Password','Pin','CFProprietario','Piva');
foreach ($fatture as $fattura ) {
// Assumendo che $fatture siano le fatture che si vogliono inviare
$response = $connettore->invia(
$fattura->data_fattura,
$fattura->id_fattura,
$fattura->data_pagamento,
$fattura->cliente->codice_fiscale,
number_format($fattura->valore,2)
);
if ( is_soap_fault($response) ) {
// Qualcosa e' andato storto. Si puo' stampare messaggio con:
echo $response->getMessage(); // Vedi https://www.php.net/manual/en/class.soapfault.php
die("Qualcosa e' andato storto");
}
if ( $response->esitoChiamata == 0 || $response->esitoChiamata == 2 ) {
// Invio andato a buon fine, magari con warnings
echo $response->protocollo;
// io qui aggiorno il DB fatture con il protocollo
} else {
// Errore nell'invio: dump della risposta
echo (serialize($response));
}
// Alla fine invio una email in automatico con il riassunto.
Ho provato sia in test che in prod e "a me funziona", nel mio caso si parla di circa 50-100 fatture/mese. Posso entrare nei dettagli se vi interessa, ma il mio scopo principale era creare un'astrazione che mi consentisse di dimenticarmi della cifratura dei cf e dei pin e del formato dei tracciati (almeno fino alla prossima volta che cambia qualcosa).
Il codice e' fatto in poco tempo dopo il mio (altro) lavoro, quindi diciamo un po' alla
percio' se volete fare submit di qualche PR, you are welcome!
Ciao e grazie ancora,
LPM.