730 precompilato + di uno snippet

  • Creatore Discussione Creatore Discussione marino51
  • Data di inizio Data di inizio
Salve a tutti.
Premesso che tempo fa avevo fatto prove in ambiente TEST e funzionava tutto.
Ora sto provando con un invio in ambiente operativo e la chiamata SOAP mi da errore: "SOAP Fault: (faultcode: env:Client, faultstring: Credenziali invalide)".
Si tratta di un poliambluatorio, quindi credo struttura autorizzata.
Riguardo user e password devo usare quelle indicate nel file credenziali con:

Codice:
$login            = _networkUser;
    $password            = _networkPsw;

Giusto?


Il file XML è perfetto l'ho anche controllato con Notepadd++.
Avete qualche idea?

Grazie
 
scusate, non mi piace lasciare questa discussione "non terminata", quindi posto l'ultimo scambio privato,
manuel_1975 ha scritto:
non so cosa hai fatto ma funziona!!!
sono contento che funzioni,
in realtà eseguendo solo credenziali, mi sono stati segnalati errori nello script che ho corretto, null'altro di particolare
 
Salve a tutti, mi sono iscritto da poco e questo è il mio primo intervento. Sono capitato qui cercando notizie sul modo di inviare le fatture al sistemats ed i realtà ho trovato la pappa già bella e pronta! Un grazie di cuore a tutti coloro che hanno reso possibile ciò. Mi permetto di inviare una modifica al file FattureInvioEsito.php che ora può ricevere anche i reports filtrati in un intervallo di date. Se invece delle date di inizio e fine ricerca si sceglie il protocollo si avrà la risposta solo per quello. Con l'occasione voglio segnalare un problema con FattureInvioRicevutaPdf.php. Funziona tutto alla perfezione ma non riesco ad aprire il pdf, ricevo sempre l'avviso che "non è un file pdf o è corrotto", sia con Acrobat reader che con altri lettori pdf. Se invece lo apro direttamente nel browser nessun problema. E' capitato a qualcuno? Grazie a tutti.
Codice:
<?php
require_once 'Credenziali.php';
//$protocollo = "qui il protocollo";
if(isset($protocollo))
{
$dataInizio = "";
$dataFine   = "";
}
else
{
$dataInizio = "01-01-2017";
$dataFine   = "20-09-2017";
}
echo "<p><h4>RICHIESTA DELL' ESITO DOPO IL TRASFERIMENTO DELLE FATTURE</h4></p>";

$ws = _EsitoInvio_WSDL;
$SoapClientParam["location"] = $EsitoInvio;

error_log("definisco il file wsdl ".$ws, 0);
echo $ws."<p> </p>";

error_log("definisco the soap server location ".$SoapClientParam["location"], 0);
echo $SoapClientParam["location"]."<p> </p>";


$client = new SoapClient($ws, $SoapClientParam);

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>";


echo "<p><h4>INVIO LA RICHIESTA</h4></p>";
echo $protocollo."<p> </p>";

error_log("invio la richiesta", 0);
error_log("pinCode    = ".$pincodeInvianteCifrato, 0);
error_log("Protocollo = ".$protocollo, 0);

$output = $client->EsitoInvii(Array
    (
    "DatiInputRichiesta"    => (Array
        (
        "pinCode"     => $pincodeInvianteCifrato,
        "dataInizio"  => $dataInizio,
        "dataFine"    => $dataFine,
        "protocollo"  => $protocollo,
        "opzionale1"  => '0',
        "opzionale2"  => '0',
        "opzionale3"  => '0'
        ))
    ));
if (is_soap_fault($output))
    {
    $err = "SOAP Fault: (faultcode: {$output->faultcode}, faultstring: {$output->faultstring})";
    error_log("richiesta terminata con errori", 0);
    echo "<p><h4>RICHIESTA TERMINATA CON ERRORI</h4></p>"."<p>$err</p>";
    var_dump($err); echo "<p> </p>";
    trigger_error($err, E_USER_ERROR);
    }
else
    {
    error_log("LA RICHIESTA HA AVUTO RISPOSTA", 0);
    echo "<p><h4>LA RICHIESTA HA AVUTO RISPOSTA</h4></p>";

    $esito = $output->DatiOutputRichiesta->esitoChiamata;
   echo "<p><h4>ESITO PER QUESTA RICHIESTA: ".$esito."</h4></p>";
  
    if ( $esito == "0" )          
        {
           if(empty($protocollo))//eseguo questo if se non c'è un protocollo
           {
               echo "<p><h4>E' PRESENTE LA RISPOSTA PER QUESTA RICHIESTA dal ".$dataInizio."al ".$dataFine."</h4></p>";
               $invii_object = $output->DatiOutputRichiesta->esitiPositivi->dettagliEsito;
               foreach ($invii_object as $invii_array)
               {
               $protocollo  = $invii_array->protocollo;
               $dataInvio   = $invii_array->dataInvio;
               $stato       = $invii_array->stato;
               $descrizione = $invii_array->descrizione;
               $nInviati    = $nInviati+$invii_array->nInviati;
               $nAccolti    = $nAccolti+$invii_array->nAccolti;
               $nWarnings   = $nWarnings+$invii_array->nWarnings;
               $nErrori     = $nErrori+$invii_array->nErrori;
               $invvii[]    = array($protocollo,$dataInvio,$descrizione);
               }
               echo "<p><h4>ARRAY CONTENENTE GLI INVII</h4></p>";
               print_r($invvii);
               echo "<p><h4>REPORT INVII DEL PERIODO SCELTO</h4></p>";
               echo '--inviati '.$nInviati ;
               echo '--accolti '.$nAccolti  ;
               echo '--warnings '.$nWarnings;
               echo '--nerrori '.$nErrori ;
           }
           else // se c'è il protocollo
           {
               ReportOutput("protocollo");
               ReportOutput("dataInvio");
               ReportOutput("stato");
               ReportOutput("descrizione");
               ReportOutput("nInviati"); 
               ReportOutput("nAccolti");
               ReportOutput("nWarnings");
               ReportOutput("nErrori");
           }      
        }
    else
        {
        error_log("ERRORE: NON E' PRESENTE L' ESITO PER QUESTA INTERROGAZIONE ", 0);
        echo "<p><h4>ERRORE: NON E' PRESENTE L' ESITO PER QUESTA INTERROGAZIONE </h4></p>";
        }
    }

error_log("done ".$_SERVER['PHP_SELF'], 0);
echo "<p><h4>FINE DEL LAVORO</h4></p>";



function ReportOutput($var)
    {
    global $output;
    error_log($var." = ".$output->DatiOutputRichiesta->esitiPositivi->dettagliEsito->{$var}, 0);
    echo $var." = ".$output->DatiOutputRichiesta->esitiPositivi->dettagliEsito->{$var}."<br />";
    }
?>
 
Ultima modifica:
Mi permetto di inviare una modifica al file FattureInvioEsito.php che ora può ricevere anche i reports filtrati in un intervallo di date
se non ricordo male, in qualche post successivo al primo ci sono zip con versioni aggiornate degli script,
che prevedono l'uso dei filtri, da indicare nel file credenziali ...

per quanto riguarda il pdf, forse viene gestito male, perché,con un invio di prova fatto or ora, ricevo il pdf correttamente e riesco ad aprirlo con adobe acrobat 7.1 senza nessuna segnalazione particolare

upload_2017-9-23_23-7-39.png
 
Grazie Marino, in effetti i post sono talmente tanti che mi ci sono perso e magari qualcuno lo aveva già fatto. Ne abbiamo uno in più.
Cosa intendi quando dici che il pdf viene gestito male? Io uso il tuo script, non ho cambiato nulla a parte il nome del file. Ho tolto i rem, come da te indicato, in modo che si apra automaticamente.
 
Ultima modifica:
"non è un file pdf o è corrotto",
diverse prove e riesco ad aprirlo bene in ogni caso,
ho comunque modificato lo script FattureInvioRicevutaPdf.php in questo modo,
PHP:
        file_put_contents ( $nomefile, $dati );
//      ****************
//      rimuovere i commenti qui sotto per  aprire direttamente il file  
//      ****************
        echo "<script>window.open( 'PdfReportDisplay.php?pdf=" . $nomefile . "' )</script>";

        error_log("RICHIESTA COMPLETATA CON SUCCESSO", 0);
e nella stessa cartella ho aggiunto lo script PdfReportDisplay.php
PHP:
<?php
$nomefile = $_GET['pdf'];

if(file_exists($nomefile))
{
    header('Content-type: application/pdf');
    header('Content-Length: ' . filesize($nomefile));
    header('Content-Disposition: inline; filename="' . $nomefile . '"');
    header('Content-Transfer-Encoding: binary');
    header('Accept-Ranges: bytes');
    readfile($nomefile);
}
die;
?>
ed apre il pdf regolarmente in una nuova finestra
upload_2017-9-24_12-17-44.png

può essere che da qualche parte (configurazione browser e/o pc) sia indicato un lettore pdf non valido ?
 
Togliendo l'Header con il filesize funziona alla grande. Se lo lascio viene visualizzata una pagina vuota grigia. Come sempre sei la panacea per tutti i mali. Grazie!!
 
Con grande rammarico mi correggo, ne apre solo uno tra quelli che arrivano nel periodo scelto con datainizio e datafine.
 
Ecco come si prentano i pdf. L'unico che si visulizza ha comunque un warning che potrebbe essere utile per capire il problema. Ciao
 

Allegati

  • pdf1.PNG
    pdf1.PNG
    115,5 KB · Visite: 486
  • pdf2.PNG
    pdf2.PNG
    106,5 KB · Visite: 536
Con grande rammarico mi correggo, ne apre solo uno tra quelli che arrivano nel periodo scelto con datainizio e datafine.
puoi modificare lo script in modo da gestire più pdf

non so come lavori tu, ma preferisco iniziare un invio e concluderlo con tutta la sua documentazione,
in modo da creare un insieme da consegnare al professionista
ed al contempo essere immediatamente sicuro della "qualità" dell'invio
per questa ragione non ho mai dato peso all'uso dei filtri che non siano il semplice protocollo
 
Ultima modifica:
Ciao Marino, ho capito il problema ma necessita una premessa. Se si interroga il sistemaTs alla voce 'Ricevute spese sanitarie' si ottiene una tabella di una o più righe che contiene anche l'icona PDF (conoscerai perfettamente la procedura). Cliccandola sia apre sempre il file allegato per tutti i risultati ricevuti (ti semplifico la cosa allegando una schermata). Il nostro script 'FattureInvioRicevutaPdf.php' non salva sempre la ricevuta protocollo.pdf, e questo perché "$esito = $output->DatiOutputRichiesta->esitoChiamata;" ritorna il valore 1 che appunto dice che il file è vuoto. Riepilogando:
1) il sistemats restituisce SEMPRE un file pdf
2) il nostro script giustamente, ricevendo 1 come esito della chiamata, non salva nulla. Io ho forzato comunque il salvataggio ed il file pdf è vuoto.
Ho fatto la prova, con lo stesso protocollo , interrogando prima direttamente il sistemats e subito dopo col nostro script : il sistemats restituisce il file pdf e la nostra interrogazione no. Uso il tuo script senza aver toccato nulla ed interrogando il server di esercizio per le mie ricevute.
Idee?

Grazie!
 

Allegati

  • Schermata 2017-09-25 alle 12.38.40.png
    Schermata 2017-09-25 alle 12.38.40.png
    135,9 KB · Visite: 399
la ricevuta è sempre presente sul sistema effettivo !
mentre sul sistema di prova mi risulta che i dati vengano periodicamente cancellati,
immediatamente, si può ottenere una risposta dal sistema di prova, coerente con l'operazione fatta,
al secondo caricamento ottengo
upload_2017-9-25_16-46-39.png


a distanza di giorni (quanti ? ) il protocollo viene dato per inesistente sul sistema di prova
quindi non "afferro" il problema .... se puoi spiegare meglio, riferendoti al sistema effettivo, non a quello di prova
 
Infatti, il problema era che il pdf esisteva, tu non lo trovi perché interroghi il web_test mentre sta sul server di esercizio.
Da circa mezz'ora rifunziona tutto alla perfezione (mistero SOGEI) e grazie a te si apre automaticamente. Grazie infinite.
 
Ciao a tutti, scrivo perchè ormai ho esaurito le mie conoscenze nel tentativo di risolvere il seguente problema. Sto implementando InterrogazionePuntuale e, se non ho sbagliato, il codice dovrebbe essere


Codice:
$datiProprietario    = array('cfProprietario' => $cfProprietarioCifrato);
$numdocumentofiscale = array('dispositivo'    => 1,'numDocumento' => $numDocumento );
$iddocumentofiscale  = array('pIva'=> $piProprietario, 
                              'dataEmissione' => $dataEmissione,
                              'numDocumentoFiscale' => $numdocumentofiscale);  
                                                                       
                                                                         
$output = $client->InterrogazionePuntuale(array("interrogazionePuntualeRequest" =>(array("pinCode" => $pincodeInvianteCifrato,
                                                                                        "datiProprietario"  => $datiProprietario,
                                                                                        "idDocumentoFiscale" => $iddocumentofiscale))));

In effetti il file log mi da il seguente errore:
PHP Fatal error: SOAP-ERROR: Encoding: object has no 'pincode' property in

Evidentemente c'è un errore col pincode ma non riesco ad individuarlo. Confermo che la variabile $pincodeInvianteCifrato contiene il giusto valore.

Anche LinuxHoYeah ha segnalato il medesimo problema un anno fa (https://forum.mrw.it/threads/730-precompilato-di-uno-snippet.44833/page-12#post-186743), ma non c'è stata risposta qui sul forum. Qualcuno si è trovato nella medesima situazione ed ha risolto? Grazie a tutti!
Mauro
 
prova a compilare l'array in modo completo, (così la puoi anche controllare)
PHP:
$SoapRequest = array
(
    "pincode"                 => $pincodeInviante,
    "datiProprietario"        => array
    (
        "cfProprietario"      => $cfProprietarioCifrato,
        "codiceRegione"       => $codiceRegione,
        "codiceAsl"           => $codiceAsl,
        "codiceSSA"           => $codiceSSA,
    ),
    "opzionale1"              => $opzionale1,
    "opzionale2"              => $opzionale2,
    "opzionale3"              => $opzionale3,
    "idDocumentoFiscale"      => array
    (
        "pIva"                => $piProprietario,
        "dataEmissione"       => $ric_dataEmissione,
        "numDocumentoFiscale" => array
        (
            "dispositivo"     => $ric_dispositivo,
            "numDocumento"    => $ric_numDocumento,
        )
    )
);

try { $output = $client->InterrogazionePuntuale($SoapRequest); }
catch ( SoapFault $e )
....
....
fai sapere grazie
 
Grazie Marino, ora è sparito l'errore PHP. Vedo che non hai usato l'elemento "interrogazionePuntualeRequest", forse era quello l'errore. Il print_r($output) riporta:

stdClass Object ( [esitoChiamata] => 1 [listaMessaggi] => stdClass Object ( [messaggio] => stdClass Object ( [codice] => WS99 [descrizione] => OPERAZIONE NON COMPLETATA [tipo] => E ) ) )
 

Discussioni simili