730 precompilato + di uno snippet

Discussione in 'Snippet PHP' iniziata da marino51, 9 Gennaio 2016.

  1. msccmra51

    msccmra51 Nuovo Utente

    Registrato:
    9 Settembre 2017
    Messaggi:
    27
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Fantastic!!!
     
  2. msccmra51

    msccmra51 Nuovo Utente

    Registrato:
    9 Settembre 2017
    Messaggi:
    27
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Questa fuzioncina fa la stessa cosa e formatta a video l'XML.

    dump_xml("Ultima request", $client->__getLastRequest())

    function dump_xml($title, $body)
    {
    $nl = preg_replace("/\>\</", ">\n<", $body);
    $clean = htmlspecialchars($nl);
    print "\n<b>$title</b>\n<PRE>$clean</PRE>\n";
    }

    Ottengo
    Codice:
    Ultima request
    <?xml version="1.0" encoding="UTF-8"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://documentospesap730.sanita.finanze.it">
    <SOAP-ENV:Body>
    <ns1:inserimentoDocumentoSpesaRequest>
    <ns1:eek:pzionale1>
    </ns1:eek:pzionale1>
    <ns1:eek:pzionale2>
    </ns1:eek:pzionale2>
    <ns1:eek:pzionale3>
    </ns1:eek:pzionale3>
    <ns1:pincode>Iz3Pt1wsT06X9w9S4tRi54owcdSO/O0wSEy3t7U11OGD2uF3ftE6cEXFqFrTvhs2KFs+5j3gkj1CYZApRH3Lc/9PSOfmB+pSV88I4H9fB3f5HWwZldfNxIgxbTmtEI5aeP97x4rxA0bkq95eREIrV4jnO0rgweaPjzP7L1jlwRc=</ns1:pincode>
    <ns1:proprietario>
    <ns1:codiceRegione>130</ns1:codiceRegione>
    <ns1:codiceAsl>202</ns1:codiceAsl>
    <ns1:cfProprietario>PROVAX00X00X000Y</ns1:cfProprietario>
    </ns1:proprietario>
    <ns1:idInserimentoDocumentoFiscale>
    <ns1:idSpesa>
    <ns1:pIva>11954290599</ns1:pIva>
    <ns1:dataEmissione>2017-08-31</ns1:dataEmissione>
    <ns1:numDocumentoFiscale>
    <ns1:dispositivo>1</ns1:dispositivo>
    <ns1:numDocumento>25</ns1:numDocumento>
    </ns1:numDocumentoFiscale>
    </ns1:idSpesa>
    <ns1:dataPagamento>2017-08-31</ns1:dataPagamento>
    <ns1:cfCittadino>htZQPC0C0Hg1ryFlWcqbrX7AJKPIhxJkrpY72jBgOnbFzsV1duYUlevVVbjqX6ViZnlqTZg1lHq0PGxJ4o8dCCmCAn60l5CwAhon7y6JB3WXetHIdo2NXGWZHfo5WzuTvzI6y/8DnvVxlVbDPhV5FaL5p2CIEcoj37wUc+aapH4=</ns1:cfCittadino>
    <ns1:voceSpesa>
    <ns1:tipoSpesa>SR</ns1:tipoSpesa>
    <ns1:flagTipoSpesa>2</ns1:flagTipoSpesa>
    <ns1:importo>80</ns1:importo>
    </ns1:voceSpesa>
    </ns1:idInserimentoDocumentoFiscale>
    </ns1:inserimentoDocumentoSpesaRequest>
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope
     
  3. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    1.917
    Mi Piace Ricevuti:
    71
    Punteggio:
    48
    Occupazione:
    free lance
    Località:
    Lombardia
    posto lo script Report Mensile dei Documenti perchè può avere una importante valenza,
    il report permette di scaricare un file csv con l'elenco degli elementi presenti negli archivi del 730 precompilato
    ovviamente riferiti al soggetto che li ha caricati e nel mese sceto per l'estrazione.
    con questo csv è possibile verificare con i propri archivi, che tutti i documenti sono stati "gestiti" e caricati.
    in pratica il controllo a rovescio, permette di individuare tutti i documenti che per una qualche ragione sono stati esclusi dal processo ( esperienza personale, dal mio 730 mancavano 4 scontrini x circa 100 € ! )
    quindi sottolineo, non un malfunzionamento del web service ma un malfunzionamento della propria gestione
    PHP:
    <?php
    require 'Credenziali.php';

    echo 
    "<h4>REPORT MENSILE DEI DOCUMENTI INVIATI</h4>";

    /* -------------------------------------------------------------------------------- Soap Client */
    $ws                          _ReportMensile_WSDL;
    $SoapClientParam["location"] = $ReportMensile;

    require 
    'SoapClientInit.php';

    /* -------------------------------------------------------------------------------- Soap Request */
    echo "<h4>INVIO L' INTERROGAZIONE</h4>";
    error_log("INVIO L' INTERROGAZIONE"0);

    $SoapRequest = array
    (
        
    "pincode"                 => $pincodeInvianteCifrato,
        
    "Proprietario"            => array
        (
            
    "cfProprietario"      => $cfProprietarioCifrato,
            
    "codiceRegione"       => $codiceRegione,
            
    "codiceAsl"           => $codiceAsl,
            
    "codiceSSA"           => $codiceSSA,
        ),
        
    "opzionale1"              => $opzionale1,
        
    "opzionale2"              => $opzionale2,
        
    "opzionale3"              => $opzionale3,
        
    "tipoEstrazione"          => $ric_tipoEstrazione,
        
    "annoMese"                => $ric_annoMese,
    );
    echo 
    show_var($SoapRequest); echo "<br /><br />";
    log_var($SoapRequest);

    try { 
    $output $client->ReportMensile($SoapRequest); }
    catch ( 
    SoapFault $e )
    {
        require 
    'SoapFault.php';
    }
    /* -------------------------------------------------------------------------------- Soap Receipt */
    echo "<h4>L'INTERROGAZIONE HA AVUTO RISPOSTA</h4>";
    error_log("L'INTERROGAZIONE HA AVUTO RISPOSTA"0);

    print_r($output);       echo "<br /><br />";
    echo 
    show_var($output); echo "<br /><br />";

    /* -------------------------------------------------------------------------------- Esito */
    if ( $output->esitoChiamata == )
    {
        
    $estrazione $ric_tipoEstrazione."-".$ric_annoMese;
        
    $titolo "E' PRESENTE IL REPORT MENSILE DEI DOCUMENTI INVIATI ".$estrazione;

        echo 
    "<h4>".$titolo."</h4>";
        
    error_log($titolo0);

        
    $dati $output->fileCSV;
        if( empty(
    $dati) )
        {
            echo 
    "<h4>IL FILE E' VUOTO</h4>";
            
    error_log("IL FILE E' VUOTO"0);
        }
        else
        {
            
    $nomefile $PercorsoDocRicevuti.$estrazione.".zip";

            echo 
    "<h4>SALVO IL REPORT COME ".$nomefile."</h4>";
            
    error_log("SALVO IL REPORT COME ".$nomefile0);
            
    file_put_contents $nomefile$dati );

            
    $zip = new ZipArchive;
            
    $res $zip->open($nomefile);
            if (
    $res === TRUE)
            {
                
    $fileCSV $zip->getNameIndex(0);
                
    $zip->extractTo($PercorsoDocRicevuti);
                
    $zip->close();

                
    $nomeZIP  $PercorsoDocRicevuti.$fileCSV;
                
    $nomeCSV  $PercorsoDocRicevuti.$estrazione.".csv";

                
    rename($nomeZIP$nomeCSV);

                echo 
    "File csv estratto ".$nomeCSV;
                
    error_log("File csv estratto ".$nomeCSV0);
            }
            else
            {
                echo 
    "Il file ".$nomefile." non è disponibile";
                
    error_log("Il file ".$nomefile." non è disponibile"0);
            }
            echo 
    "<h4>INTERROGAZIONE TERMINATA CON SUCCESSO</h4>";
            
    error_log("INTERROGAZIONE TERMINATA CON SUCCESSO"0);
        }
    }
    else
    {
        
    $response $output->listaMessaggi->messaggio;

        
    ReportOutput("codice");
        
    ReportOutput("descrizione");
        
    ReportOutput("tipo");
        echo 
    "<br /><br />";

        echo 
    "<h4>INTERROGAZIONE TERMINATA CON ERRORE</h4>";
        
    error_log("INTERROGAZIONE TERMINATA CON ERRORE"0);
    }
    echo 
    "<h4>FINE DEL LAVORO</h4>";
    error_log("done ".$_SERVER['PHP_SELF'], 0);
    ?>
    non differisce troppo dai precedenti script postati e chi li ha utilizzati saprà utilizzare anche questo con profitto
    saluti
     
  4. msccmra51

    msccmra51 Nuovo Utente

    Registrato:
    9 Settembre 2017
    Messaggi:
    27
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Bravo Marino. Anche io avevo implementato questa interrogazione e mi resi conto che, in caso di
    Codice:
    $output->esitoChiamata == 1
    l'errore di ritorno dal webservice poteva essere non una singola stringa ma un array,
    quindi un messaggio multiplo. Me ne sono accorto quando ho sbagliato il "tipoEstrazione" ed ho ricevuto il messaggio che vedete nell'immagine (quelli sono due messaggi).
    Non sapendo se quello è l'unico caso di messaggio multiplo ho deciso di verificare sempre come stanno le cose. Ecco
    il codice da inserire

    Codice:
    if ( $output->esitoChiamata == 1 )
    {
       $listamessaggi = $output->listaMessaggi->messaggio;
       if(is_array($listamessaggi))
       {
          foreach( $listamessaggi as $messaggio)
          {
             $testo = $testo.$messaggio->descrizione."<br>";
          }
       }
       else
       {
       $testo = "$listamessaggi->descrizione<br><br>Codice: $listamessaggi->codice<br><br>Tipo: $listamessaggi->tipo";
       }
       echo  $testo;
    }
    
    Spero possa essere di aiuto
     

    Files Allegati:

    Ultima modifica: 28 Ottobre 2017
  5. msccmra51

    msccmra51 Nuovo Utente

    Registrato:
    9 Settembre 2017
    Messaggi:
    27
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Ho implementato anche InterrogazionePuntuale. Eccolo. Io l'ho reso dinamico facendo un ciclo compreso tra due date di emissione fattura in modo da avere un report un po' più completo. Qui di seguito ho messo l'estrazione singola. Essendo interessato all'invio per un medico la voce Propietario ha solo il CF. Aggiungere i codici ASL e Regione se servono.
    Codice:
    <?php
    // DEFINIZIONE PER WSDL SCRIPT INTERROGAZIONE PUNTUALE
    require_once 'Credenziali.php';
    
    //Acquisisco i dati dal form di input
    $DataFattura   = $_POST['dataFattura']);
    $NumFattura  = $_POST['numFattura']);
    $dispositivo     = $_POST['dispositivo']);
    $ws = _InterrogazionePuntale_WSDL;
    $SoapClientParam["location"] = $InterrogazionePuntuale;
    
    $client = new SoapClient($ws, $SoapClientParam);
    
    $SoapRequest = array( "pincode" => $pincodeInvianteCifrato,
                                              "Proprietario" => array("cfProprietario" => $cfProprietarioCifrato),
                                              "opzionale1"    => $opzionale1,
                                              "opzionale2"    => $opzionale2,
                                              "opzionale3"    => $opzionale3,
                                              "idDocumentoFiscale" => array( "pIva" => $piProprietario,"dataEmissione" => $DataFattura,
    "numDocumentoFiscale" => array(  "dispositivo" => $dispositivo,"numDocumento" => $NumFattura,)));
    
    $output = $client->InterrogazionePuntuale($SoapRequest);
    $numDocumento  = $output->documentoFiscale->idDocumentoFiscale->numDocumentoFiscale->numDocumento;
    $dataEmissione = $output->documentoFiscale->idDocumentoFiscale->dataEmissione;
    $dataInvio = $output->documentoFiscale->dataInvio;
    $tipoInvio = $output->documentoFiscale->tipoInvio;
    $protocollo = $output->documentoFiscale->protocollo;
    $importo = $output->documentoFiscale->totaliVociSpesa;
    
    /////////////////////////////////////////////////////////////////////
    // Se totaliVociSpesa è un array devo fare un ciclo foreach per avere il totale
    /////////////////////////////////////////////////////////////////////
    $totale = 0;
    if(!is_array($importo))
        {
        $totale = $importo->importo;
        }
    else
        {
        foreach($importo as $aliasImporto)
            {
            $totale = $totale + $aliasImporto->importo;
            }
        }
    ?>
     
    Ultima modifica: 28 Ottobre 2017
  6. msccmra51

    msccmra51 Nuovo Utente

    Registrato:
    9 Settembre 2017
    Messaggi:
    27
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    In ambiente di produzione del report mensile ricevevo spesso il messaggio "SERVIZIO RICHIESTO NON EROGABILE NELLA FASCIA ORARIA DELLA RICHIESTA". Ho scritto a SOGEI e mi hanno risposto quanto segue:
    I servizi di interrogazione sono disponibili in produzione dalle 22:00 alle 08:00 e dalle 13:00 alle 16:00

    Spero sia utile.
     
  7. manuel_1975

    manuel_1975 Nuovo Utente

    Registrato:
    21 Dicembre 2016
    Messaggi:
    20
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Occupazione:
    Ingegnere libero professionista
    Località:
    Manziana
    Home Page:
    Salve,
    sto provando a fare un nuovo invio relativo alle fatture del 2017.
    La ricevuta pdf mi riporta sempre Errore E011 "FILE NON CONFORME ALLO SCHEMA DI VALIDAZIONE".
    Ho controllato il file xml e mi sembra perfetto. Ho fatto anche una validazione esterna con un tool online rispetto al file XSD di riferimento e sembra tutto ok.
    Vi è mai successo?

    Grazie
     
  8. msccmra51

    msccmra51 Nuovo Utente

    Registrato:
    9 Settembre 2017
    Messaggi:
    27
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Ciao Manuel, a me capitò che il file XML fosse corretto dal punto di vista dei tag, aperti e chiusi tutti regolarmente e validato correttamente, ma non era corretto dal punto di vista 'logico' poiché all'interno di un tag mancava il dato richiesto. Controlla anche questo aspetto.
     
  9. manuel_1975

    manuel_1975 Nuovo Utente

    Registrato:
    21 Dicembre 2016
    Messaggi:
    20
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Occupazione:
    Ingegnere libero professionista
    Località:
    Manziana
    Home Page:
    ok verifico.
    Grazie intanto
     
  10. manuel_1975

    manuel_1975 Nuovo Utente

    Registrato:
    21 Dicembre 2016
    Messaggi:
    20
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Occupazione:
    Ingegnere libero professionista
    Località:
    Manziana
    Home Page:
    Ho provato a generarne un di un solo giorno per poterlo analizzare meglio. Sono solo 7 fatture. Io non ci vedo nulla di strano.....
    Puoi aiutarmi a confrontarlo con uno che a te funziona?

    Grazie
     

    Files Allegati:

  11. manuel_1975

    manuel_1975 Nuovo Utente

    Registrato:
    21 Dicembre 2016
    Messaggi:
    20
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Occupazione:
    Ingegnere libero professionista
    Località:
    Manziana
    Home Page:
    ho risolto.
    Non avevo pulito la directory di sistema e il file zip che inviavo conteneva altri file oltre all'xml da inviare..... e quindi non lo vedeva.

    grazie comunque
     
  12. msccmra51

    msccmra51 Nuovo Utente

    Registrato:
    9 Settembre 2017
    Messaggi:
    27
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
Sto caricando...

Condividi questa Pagina