730 precompilato + di uno snippet

  • Creatore Discussione Creatore Discussione marino51
  • Data di inizio Data di inizio
AGGIORNAMENTI 3:

Nonostante con la versione "essenziale" della variabile $SoapClientParam funzionasse e non mi restituisse errori.. ho fatto ulteriori prove seguendo i tuoi suggerimenti.

Sostanzialmente:
  • ho ri-settato la variabile $SoapClientParam come da te suggerito;
  • ho tolto la linea 80 che serviva a restituirmi il NUM. di PROTOCOLLO, ma che spesso non veniva valorizzata e mi dava l'errore;
  • ho quindi sostituito la ricezione del NUM. di PROTOCOLLO attraverso le funzioni show_var($output) e log_var($output) ...e ottengo sempre il NUM. di PROTOCOLLO a video.. o nel file di LOG. In questo modo posso fare copia/incolla per richiedere l'Esito e/o la RicevutaPDF, passandolo attraverso l'indirizzo .php?protocollo=...
Pertanto (in fase di test) posso asserire che sia tutto RISOLTO! :)

Domattina faccio l'invio definitivo e speriamo bene!

PS: l'alert nel LOG "PHP Deprecated: capture_session_meta is deprecated; its information is now available via stream_get_meta_data() in .../FattureInviaWsdl.php on line ..." rimane comunque.
 
Dopo il patema d'animo iniziale, mi sono armato di coraggio. Ho operato in modalità EFFETTIVA.

I webservices della Sogei non mi hanno aiutato.. dopo aver accolto il file .ZIP mi hanno restituito il codice stato 0 per circa mezz'ora. Poi finalmente il codice è passato ad 1 (stato di elaborazione) ed infine a 3 (ACCOLTO).

Delle oltre 4'000 ricevute fiscali ottengo alla fine "soli" 23 warnings → con COD. W003 (CF non in archivio). Adesso provvedo a modificare manualmente questi warnings, laddove possibile.


marino51,
io ti devo fare un monumento! Senza il tuo prezioso e costante aiuto non ce l'avrei mai fatta!! :)

Se decidi di pubblicare il codice ONLINE, attraverso github o cose simili.. metti il pulsante "donazione" perché è il minimo che possiamo fare!
 
Ciao Marino,
grazie per il link.
Ho fatto varie prove con più tipologie di nominativi sempre in area test. Mi è capitato spesso che un invio andava liscio senza problemi e dopo qualche ora riprovandolo dava a volte credenziali non valide, altre volte problemi di collegamento. Comunque l'invio ufficiale dei dati da parte dei commercialisti sta andando liscio senza problemi.
Ti ringrazio molto dell'aiuto
Ciao
Claudio
 
il nuovo valore deve essere esposto tra <cfCittadino> e <voceSpesa> ossia:
<cfCittadino>EvdSXiVCOvd................</cfCittadino>
<pagamentoTracciato>NO</pagamentoTracciato>
<voceSpesa>

Spero di essere stato di aiuto
Claudio
Ti ringrazio anche io, non sapevo come fare. Per favore puoi dirmi dove hai trovato questa informazione? Sul portale sistemaTS non trovo più le specifiche tecniche per gli invii. Grazie.
 
Ciao a tutta la comunità. E' da sabato che il sito test mi restituisce questo errore quando tento di connettermi "HTTPError Fetching http headers". C'è qualcuno che lo sta provando ed ha lo stesso problema? Non ho toccato nulla nella sezione SOAP. Grazie a tutti
 
ciao, questa mattina ho fatto 2 invii sul sistema di test,
il primo, con win 10/2004 e IE11, mi ha dato errore (generico, non specificato),
il secondo, con win 10/2004 e EDGE, è andato a buon fine, ho eseguito lo script con il link costruito così
%windir%\explorer.exe microsoft-edge:http://localhost/test_site/php/test/XML/FattureInviaWsdl.php

questo il risultato
1601965564691.png
 
Grazie Marino, in effetti ieri pomeriggio ha ripreso a funzionare, tutto il WE è stato off. Non sai mai se è colpa tua o loro.
 
Ciao ragazzi, e veramente complimenti per il bel lavoro, in particolare a Marino e Rudy, vi devo una birra o due :) , condivido il suggerimento di pubblicare su GitHub in modo da raccogliere anche la mia donazione agli autori!

Scrivo qui perché ho due problemini interessanti
Ho scaricato i sorgenti e adattato FattureGeneraXMLdaTXT.php in modo da recepire gli ultimi aggiornamenti richiesti per l'invio delle fatture di mia moglie (Biologa Nutrizionista, categoria Atri Professionisti) per quest'anno, ovvero:

PHP:
        $pagamentoTracciato = $documentoSpesa->addChild('pagamentoTracciato', $col[_ColPagTracciato]);
        
        $tipoDocumento = $documentoSpesa->addChild('tipoDocumento', 'F');
        
        $flagOpposizione = $documentoSpesa->addChild('flagOpposizione', '0');

            $naturaIVA = $voceSpesa->addChild('naturaIVA', 'N4');

in questo modo ottengo, per una fattura di esempio il bellissimo XML che segue:
XML:
<?xml version="1.0" encoding="utf-8"?>
<precompilata xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="730_precompilata.xsd">
    <proprietario>
        <cfProprietario>Ix4OzmfPxB0TTwS6+Hc0enwIhMtunRUkB4CjlDDDns5pCy2iZJ4Qxy+C/X8mMpLRz37tOXnklkkPml5Di32wtQlXpCL2qais/ZjSmwwLldUFvxQPRrwsOSgbH0yK3n+cfgXHbuyTFmjKBAT1dkc5xJ4sTW6qPlaMEIJIevQXvrQ=</cfProprietario>
    </proprietario>
    <documentoSpesa>
        <idSpesa>
            <pIva>00265910661</pIva>
            <dataEmissione>2020-01-07</dataEmissione>
            <numDocumentoFiscale>
                <dispositivo>1</dispositivo>
                <numDocumento>1</numDocumento>
            </numDocumentoFiscale>
        </idSpesa>
        <dataPagamento>2020-01-07</dataPagamento>
        <flagOperazione>I</flagOperazione>
        <cfCittadino>DsinnfxT7GCe+bZsbwq/q0FP99qJCIYVn4PM0k7crNea+2O60gTMzhL6uQ+2pZjyEwWNFIYMVdjbeTTqcFpzvTjNY2W/5WGfcEeDxYerKBN0jmyu3f43PqC1yxKU59lGHgj5yu+bZgCvaSDtkAblZ/IvniSJ65KChIL3eSDlUHQ=</cfCittadino>
        <pagamentoTracciato>NO</pagamentoTracciato>
        <tipoDocumento>F</tipoDocumento>
        <flagOpposizione>0</flagOpposizione>
        <voceSpesa>
            <tipoSpesa>SR</tipoSpesa>
            <importo>40.00</importo>
            <naturaIVA>N4</naturaIVA>
        </voceSpesa>
    </documentoSpesa>
</precompilata>

che su www.xmlvalidation.com viene validato con il nuovo xsd del kit 730_precompilata.xsd, ma una volta che procedo con l'invio ottengo l'errore:

E011 FILE NON CONFORME ALLO SCHEMA DI VALIDAZIONE

leggevo a diversi capitavano errori simili a causa di date non coerenti o P.IVA più lunghe.. io è da due giorni che ci sbatto la testa senza venirne a capo..



Il secondo problema invece riguarda lo script di invio. Ora una volta generato il file ho provveduto alla spedizione tramite SoapUI perché nei log di FattureInviaWsdl.php trovo l'errore

PHP Fatal error: Uncaught Error: Call to undefined function each() in C:\Users\...\730precompilato\FattureInviaWsdl.php:30

l'istruzione è while (list ($key, $val) = each ($output) ) echo $val."<br />"; echo "<p> </p>";

Codice:
[30-Dec-2020 22:12:25 UTC] main .\FattureInviaWsdl.php
[30-Dec-2020 22:12:25 UTC] TEST RUN ***************
[30-Dec-2020 22:12:25 UTC] name                   : Dr. PROVA
[30-Dec-2020 22:12:25 UTC] login                  : PROVAX00X00X000Y
[30-Dec-2020 22:12:25 UTC] password               : Salve123
[30-Dec-2020 22:12:25 UTC] cfProprietario         : PROVAX00X00X000Y
[30-Dec-2020 22:12:25 UTC] cfProprietarioCifrato  : Ix4OzmfPxB0TTwS6+Hc0enwIhMtunRUkB4CjlDDDns5pCy2iZJ4Qxy+C/X8mMpLRz37tOXnklkkPml5Di32wtQlXpCL2qais/ZjSmwwLldUFvxQPRrwsOSgbH0yK3n+cfgXHbuyTFmjKBAT1dkc5xJ4sTW6qPlaMEIJIevQXvrQ=
[30-Dec-2020 22:12:25 UTC] piProprietario         : 00265910661
[30-Dec-2020 22:12:25 UTC] pincodeInviante        : 1234567890
[30-Dec-2020 22:12:25 UTC] pincodeInvianteCifrato : HmhwvMEtyHOwDm5K3YEQ9RZiNAkJ+FvRwXodiABj9HpRbdQUaLa4cyYZU8YqaBsSs4Lq6u85uDci6xowmF7ZrVgLhZ83q4nSi8bSvVDPS5pPStBlOJfvo8AisqDiKdJvEPbkIhBVnbmf28gh28G/vQLkp2RgVEYinPA0LUCz8PQ=
[30-Dec-2020 22:12:25 UTC] PHP Warning:  Undefined array key 1 in C:\Users\Guido\Dropbox\Cartella Condivisa Guido-Luana\Nutrizione Luana\Fatturazione Elettronica e Tessera Sanitaria\Sistema Tessera Sanitaria 2021\php_scripts_GR\Nuova versione\730precompilato\Credenziali.php on line 133
[30-Dec-2020 22:12:25 UTC] File trattato          : Fatture730.zip
[30-Dec-2020 22:12:25 UTC] carico in memoria il file Fatture730.zip
[30-Dec-2020 22:12:25 UTC] definisco il file wsdl InvioTelematicoSpeseSanitarie730p.wsdl
[30-Dec-2020 22:12:25 UTC] definisco the soap server location https://invioSS730pTest.sanita.finanze.it/InvioTelematicoSS730pMtomWeb/InvioTelematicoSS730pMtomPort
[30-Dec-2020 22:12:25 UTC] PHP Fatal error:  Uncaught Error: Call to undefined function each() in C:\Users\...\730precompilato\FattureInviaWsdl.php:30
Stack trace:
#0 {main}
  thrown in C:\Users\...\730precompilato\FattureInviaWsdl.php on line 30

L'errore può dipendere dal fatto che sto usando php 8 ? (da assoluto ignorante di php ho scaricato l'ultima versione che ho trovato sul sito, mentre poi ho letto voi usate la 5.xx )

Grazie mille, e buon San Silvestro :D
 
Ho risolto il primo problema! Lo racconto perché spero possa essere utile ad altri :)
Visivamente il file XML era corretto, ma..... c'era un "carattere sporco" nel numero della prima fattura scovato andando a guardare l'esadecimale.

il mio txt di partenza ha (aveva) questa struttura:
numero fattura;data;CF;importo;tracciabile

1;07/01/2020;CFCFCF1;40.00;NO;
2;07/01/2020;CFCFCF2;90.00;SI;
3;07/01/2020;CFCFCF3;90.00;NO;
4;10/01/2020;CFCFCF4;90.00;NO;

il fatto che il numero fattura fosse il primo campo ha fatto sì che lo script che genera l'xml includesse il BOM di UTF-8 come numero fattura insieme al numero 1... in questo modo nell'xml era incluso anche  (hex EF BB BF ) tra <numDocumento>1</numDocumento>

modificherò il txt / csv di partenza in modo da saltare la prima colonna tra gli import per generare gli xml....



invece il secondo problema
PHP Fatal error: Uncaught Error: Call to undefined function each()
ancora non l'ho indagato bene / risolto...
 
Sto aggiornando lo script per inserire i nuovi campi obbligatori da gennaio e vedo che ce n'è uno, pure obbligatorio, che non ricordavo e riguarda l'opposizione all'invio della fattura. Ma se il cittadino si oppone io non la mando, quindi a cosa serve quel campo? Oppure va comunque mandata validandolo alla opposizione? Auguro buon anno a tutti.
 

Allegati

  • 1609443303654.png
    1609443303654.png
    42,1 KB · Visite: 242
Sto aggiornando lo script per inserire i nuovi campi obbligatori da gennaio e vedo che ce n'è uno, pure obbligatorio, che non ricordavo e riguarda l'opposizione all'invio della fattura. Ma se il cittadino si oppone io non la mando, quindi a cosa serve quel campo? Oppure va comunque mandata validandolo alla opposizione? Auguro buon anno a tutti.
In questo momento lo sto considerando un caso abbastanza teorico, infatti valorizzo l'XML con uno 0 fisso.. però il dubbio è lecito, in caso di opposizione = 1 gli altri campi come vanno valorizzati? si potrebbe chiedere a [email protected]
 
Spulciando i messaggi di errore che ho ricevuto ho scoperto quanto segue:
se invio una fattura con il flag per opposizione =1 (si oppone) ricevo il messaggio
Codice errore: S050
Descrizione: E' STATO INDICATO IL CF DEL CITTADINO SEBBENE FLG OPPOSIZIONE UGUALE A 1
Quindi deduco che le fatture vanno mandate comunque ma senza il CF se il citadino si oppone.
Vediamo cosa succederà ancora. Bello che nelle FAQ sel Sistema non se ne parli....
 
Il secondo problema invece riguarda lo script di invio. Ora una volta generato il file ho provveduto alla spedizione tramite SoapUI perché nei log di FattureInviaWsdl.php trovo l'errore

PHP Fatal error: Uncaught Error: Call to undefined function each() in C:\Users\...\730precompilato\FattureInviaWsdl.php:30

l'istruzione è while (list ($key, $val) = each ($output) ) echo $val."<br />"; echo "<p> </p>";

si effettivamente sembra un problema collegata alla versione di php che sto usando.
nella documentazione PHP.net vedo che each() è definita (e deprecata) solo per le versioni 4, 5 e 7.
Se interpreto bene però ho visto che le due istruzioni dove compare each() sono per stampare a video le functions e i Type definiti nel WSDL.. non vitale per l'esecuzione, siete d'accordo?

echo "<p><h4>List of available SOAP functions</h4></p>"; $output = $client->__getFunctions(); while (list ($key, $val) = each ($output) ) echo $val."<br />"; echo "<p> </p>"; echo "<p><h4>List of types described in the WSDL for the Web service</h4></p>"; $output = $client->__getTypes(); while (list ($key, $val) = each ($output) ) echo $val."<br />"; echo "<p> </p>";

ho provato a commentare i due while, ora l'esecuzione si interrompe con questo errore PHP Fatal error: SOAP Fault: (faultcode: HTTP, faultstring: Could not connect to host)

che vedo da questa discussione hanno incontrato in tanti e dipende dalla versione di php e/o versione di TLS, ho provato la soluzione di perseo
https://forum.mrw.it/threads/730-precompilato-di-uno-snippet.44833/post-186503 che ha testato su php7, ma con la 8 che ho io non funziona
e la soluzione che suggeriva Marino
https://forum.mrw.it/threads/730-precompilato-di-uno-snippet.44833/post-211496

ma continuo ad avere lo stesso errore.
@msccmra51 come avevi risolto alla fine?
 
Con un banale If: se il cliente si oppone metto il suo CodFis="" nell'XML. Ho poi cercato in rete ed effettivamente l'invio, a differenza di quanto è stato finora, va fatto sempre col flag opposizione opportunamente configurato.
No scusa, mi riferisco all'errore PHP Fatal error: SOAP Fault: (faultcode: HTTP, faultstring: Could not connect to host)

qui https://forum.mrw.it/threads/730-precompilato-di-uno-snippet.44833/post-211518 dicevi di aver risolto inserendo
stream_context => ecc
, ma usando il suggerimento di Marino di questo post: https://forum.mrw.it/threads/730-precompilato-di-uno-snippet.44833/post-211496 io continuo ad ottenere Could not connect to host

PHP:
$SoapClientParam = array
(
    "useMTOM"        => TRUE,
    "location"       => "x",  // sostituita nello script con l'endpoint specifico
    "login"          => $login,
    "password"       => $password,
    "authentication" => SOAP_AUTHENTICATION_BASIC,
    "keep_alive"     => TRUE,
    "cache_wsdl"     => WSDL_CACHE_NONE,
    "trace"          => TRUE,
    "exceptions"     => TRUE,
    "stream_context" => stream_context_create(array
    (
        "ssl" => array
        (
            "verify_peer"          => FALSE,
            "verify_peer_name"     => FALSE,
            "capture_session_meta" => TRUE,
        ),
    )),
);
 

Discussioni simili