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:
    25
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Fantastic!!!
     
  2. msccmra51

    msccmra51 Nuovo Utente

    Registrato:
    9 Settembre 2017
    Messaggi:
    25
    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.828
    Mi Piace Ricevuti:
    67
    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:
    25
    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:
    25
    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:
    25
    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.
     
Sto caricando...

Condividi questa Pagina