scusa le parole improprie, per "voci" intendevo codice di spesa "AD" nel tuo caso, ma controlla se per caso ci sono codici di spesa che rimangono esclusi dalle detrazioni del 730 ma che formano il totale fattura/scontrino (non detraibili)
Fattocommenta la riga incriminata
Mi da:4) prova con queste definizioni
[17-Jan-2017 21:40:54 Europe/Berlin] main _4_FattureInviaWsdl.php
[17-Jan-2017 21:40:54 Europe/Berlin] TEST RUN ***************
[17-Jan-2017 21:40:54 Europe/Berlin] name : Ottico PROVA
[17-Jan-2017 21:40:54 Europe/Berlin] login : A9AZOS61
[17-Jan-2017 21:40:54 Europe/Berlin] password : Salve123
[17-Jan-2017 21:40:54 Europe/Berlin] cfProprietario : PROVAX00X00X000Y
[17-Jan-2017 21:40:54 Europe/Berlin] cfProprietarioCifrato : Ix4OzmfPxB0TTwS6+Hc0enwIhMtunRUkB4CjlDDDns5pCy2iZJ4Qxy+C/X8mMpLRz37tOXnklkkPml5Di32wtQlXpCL2qais/ZjSmwwLldUFvxQPRrwsOSgbH0yK3n+cfgXHbuyTFmjKBAT1dkc5xJ4sTW6qPlaMEIJIevQXvrQ=
[17-Jan-2017 21:40:54 Europe/Berlin] piProprietario : 98765432104
[17-Jan-2017 21:40:54 Europe/Berlin] pincodeInviante : 5485370458
[17-Jan-2017 21:40:54 Europe/Berlin] pincodeInvianteCifrato : KeS5/QE2L6BxTAnSjydhe3kF050HNra3CuQM71Hf6Q9brJ7ymZXW9oWmXEHIu5XiYCf6HB4AGWAjMwLtEC5AZg3t5/xbP6nUB8+RWLgRqknpmy1Ytzc2ilAERg7a0asG4MJ4qFh/JORp8RooYrD0NLvKWVoo+Q/5gdBIAd/kj/E=
[17-Jan-2017 21:40:54 Europe/Berlin] File trattato : Fatture730_2016_completo.zip
[17-Jan-2017 21:40:54 Europe/Berlin] carico in memoria il file Fatture730_2016_completo.zip
[17-Jan-2017 21:40:54 Europe/Berlin] definisco il file wsdl InvioTelematicoSpeseSanitarie730p.wsdl
[17-Jan-2017 21:40:54 Europe/Berlin] definisco the soap server location https://invioSS730pTest.sanita.finanze.it/InvioTelematicoSS730pMtomWeb/InvioTelematicoSS730pMtomPort
[17-Jan-2017 21:40:54 Europe/Berlin] inizio trasferimento del file
[17-Jan-2017 21:40:54 Europe/Berlin] trasferimento terminato
[17-Jan-2017 21:40:54 Europe/Berlin] PHP Notice: Undefined property: stdClass::$protocollo in /home/david/Documenti/php/730precompilato/ottico/_4_FattureInviaWsdl.php on line 68
[17-Jan-2017 21:40:54 Europe/Berlin] PHP Notice: Undefined property: stdClass::$protocollo in /home/david/Documenti/php/730precompilato/ottico/_4_FattureInviaWsdl.php on line 87
[17-Jan-2017 21:40:54 Europe/Berlin] protocollo =
[17-Jan-2017 21:40:54 Europe/Berlin] PHP Notice: Undefined property: stdClass::$protocollo in /home/david/Documenti/php/730precompilato/ottico/_4_FattureInviaWsdl.php on line 88
[17-Jan-2017 21:40:54 Europe/Berlin] PHP Notice: Undefined property: stdClass::$dataAccoglienza in /home/david/Documenti/php/730precompilato/ottico/_4_FattureInviaWsdl.php on line 87
[17-Jan-2017 21:40:54 Europe/Berlin] dataAccoglienza =
[17-Jan-2017 21:40:54 Europe/Berlin] PHP Notice: Undefined property: stdClass::$dataAccoglienza in /home/david/Documenti/php/730precompilato/ottico/_4_FattureInviaWsdl.php on line 88
[17-Jan-2017 21:40:54 Europe/Berlin] PHP Notice: Undefined property: stdClass::$nomeFileAllegato in /home/david/Documenti/php/730precompilato/ottico/_4_FattureInviaWsdl.php on line 87
[17-Jan-2017 21:40:54 Europe/Berlin] nomeFileAllegato =
[17-Jan-2017 21:40:54 Europe/Berlin] PHP Notice: Undefined property: stdClass::$nomeFileAllegato in /home/david/Documenti/php/730precompilato/ottico/_4_FattureInviaWsdl.php on line 88
[17-Jan-2017 21:40:54 Europe/Berlin] PHP Notice: Undefined property: stdClass::$dimensioneFileAllegato in /home/david/Documenti/php/730precompilato/ottico/_4_FattureInviaWsdl.php on line 87
[17-Jan-2017 21:40:54 Europe/Berlin] dimensioneFileAllegato =
[17-Jan-2017 21:40:54 Europe/Berlin] PHP Notice: Undefined property: stdClass::$dimensioneFileAllegato in /home/david/Documenti/php/730precompilato/ottico/_4_FattureInviaWsdl.php on line 88
[17-Jan-2017 21:40:54 Europe/Berlin] codiceEsito = 109
[17-Jan-2017 21:40:54 Europe/Berlin] descrizioneEsito = DATI PROPRIETARIO FORMALMENTE ERRATI
[17-Jan-2017 21:40:54 Europe/Berlin] idErrore = 17011721405475648
[17-Jan-2017 21:40:54 Europe/Berlin] done _4_FattureInviaWsdl.php
Infatti ho fatto il .sh prendendolo dal tuo batch8) confermo che il "codice", qualunque esso sia, va criptato e poi codificato "base64_encode"
quindi dipende da quello che ha fatto il batch che ha criptato i codici
io avevo usato il batch con openssl (per stare nella regola indicata da loro) e la codifica in php, puoi scegliere il meglio per te
openssl rsautl -encrypt -in $nomefile.txt -out $nomefile.enc -inkey SanitelCF.cer -certin -pkcs
Certo, e grazie ancora. Infatti lascerò le voci sul csv 0;0;0; relativo a _ColNotRelevant1, _ColNotRelevant2 e _ColNotRelevant3. Che ci pensa poi il tuo bello script che le defalca.scusa le parole improprie, per "voci" intendevo codice di spesa "AD" nel tuo caso, ma controlla se per caso ci sono codici di spesa che rimangono esclusi dalle detrazioni del 730 ma che formano il totale fattura/scontrino (non detraibili)
TRASFERIMENTO DELLE FATTURE PER IL 730 PRECOMPILATO AL MINISTERO
InvioTelematicoSpeseSanitarie730p.wsdl
https://invioSS730pTest.sanita.finanze.it/InvioTelematicoSS730pMtomWeb/InvioTelematicoSS730pMtomPort
List of available SOAP functions
inviaFileMtomResponse inviaFileMtom(inviaFileMtom $parameters)
List of types described in the WSDL for the Web service
struct ricevutaInvio { string codiceEsito; string dataAccoglienza; string descrizioneEsito; string dimensioneFileAllegato; string nomeFileAllegato; string protocollo; string idErrore; }
struct inviaFileMtom { tipoNomeFileAllegato nomeFileAllegato; string pincodeInvianteCifrato; proprietario datiProprietario; string opzionale1; string opzionale2; string opzionale3; base64Binary documento; }
struct proprietario { varChar3Type codiceRegione; varChar3Type codiceAsl; codSsaType codiceSSA; cfType cfProprietario; }
string cfType
string varChar3Type
string codSsaType
string tipoNomeFileAllegato
struct inviaFileMtomResponse { ricevutaInvio return; }
INIZIO TRASFERIMENTO DEL FILE
====== REQUEST HEADERS =====
string(312) "POST /InvioTelematicoSS730pMtomWeb/InvioTelematicoSS730pMtomPort HTTP/1.1 Host: invioSS730pTest.sanita.finanze.it Connection: Keep-Alive User-Agent: PHP-SOAP/7.0.13-0ubuntu0.16.04.1 Content-Type: text/xml; charset=utf-8 SOAPAction: "" Content-Length: 1867 Authorization: Basic QTlBWk9TNjE6U2FsdmUxMjM= "
========= REQUEST ==========
string(1867) " Fatture730_2016_completo.zipKeS5/QE2L6BxTAnSjydhe3kF050HNra3CuQM71Hf6Q9brJ7ymZXW9oWmXEHIu5XiYCf6HB4AGWAjMwLtEC5AZg3t5/xbP6nUB8+RWLgRqknpmy1Ytzc2ilAERg7a0asG4MJ4qFh/JORp8RooYrD0NLvKWVoo+Q/5gdBIAd/kj/E=PROVAX00X00X000YUEsDBBQAAAAIAButMUqLFFSR6AIAAB0NAAAcAAAARmF0dHVyZTczMF8yMDE2X2NvbXBsZXRvLnhtbO2XyXLiMBCG7/MUKa4pkLyAIaV4Kmxh3+wMHi5Tii2DwLaEJbDh6cdZZlgOs1S5csrN3b9a+tX9ucpGX9MwuNmTWFAW3ReUEizckMhlHo2W94Wd9IvVwlfzC+IxcVnIaYAlvslKInGXCnpfWEnJ7wBIkqSUaCUWL4EKoQKc4cByVyTERRoJiSOXFG6y9XcRG+GQCI5d8qYPmIvl69GGBn+cn1JKhVcwEePHTMYBUUxJUonAWeIkqteieiZq16JmZvdhPKZE4pgyE7n+5Dzupvr4GPqTtA5tO7Eqtx0XkijproZyF82eNnW9sQ6azWYkyrxxUOmip0/Tw20DONVwyAezo2bIsRNtgs1mEgblJtXURE4DhzcG6hZTARZrK0ySQeA9tffpdDKLEzG2ls8deOhr0a3rL53O8+5gt8N1v/5gK97GLac9XdjzynYS4GGr2+uS/dTZx9N7BK7MI3B5N4+5u5BEklmcCGwi6r0/8O4em7WqUSnrmqpAPSt8ySAva34rpOKFCGKqUKkUoVJUNAQuFRTtwuavzdtUuFlns2oqOBNU0j0zlazkLLwoMBXwsnUNVhC4yF+Gv/cFv32/uJjgJX5bfu3vpCA/wMsxJzE+vvrtInCVyebeoFLiDHZmbqVeHo37qrSX9nxRX9jtUadRs6I+6xqzfpsN470X+mFLtPpi0QQPqtNMjdXYbUQH3h85K8fTjUNCbMtquePAGNWU+nTZmPk1Hh3DJJ3s5utvvruwH4Oa2NpOxxrcPjyx/uFpM1hpeAsUdf0YPlftuf9YG3+HfmW0aanbNE1780N328Mj1Tsq9ao4PrqvQz85R3uWvU5vzZGUvw/6oYnAKUI05Cx+7VdJKWfdfA8ROCsG16zkwo5aVPNmR82TnZO/T3b+zI4GSxB+NDt6zuzoObOjf7LzL+yUP5wdrajBnNmp5MnOyd8nO39mp/bh7OhFaOTMjpEnOyd/n+z85XtH/Q92wPkPiPnlJ1BLAQIUAxQAAAAIAButMUqLFFSR6AIAAB0NAAAcAAAAAAAAAAAAAAC2gQAAAABGYXR0dXJlNzMwXzIwMTZfY29tcGxldG8ueG1sUEsFBgAAAAABAAEASgAAACIDAAAAAA== "
========== OUTPUT ==========
object(stdClass)#2 (1) { ["return"]=> object(stdClass)#3 (3) { ["codiceEsito"]=> string(3) "109" ["descrizioneEsito"]=> string(36) "DATI PROPRIETARIO FORMALMENTE ERRATI" ["idErrore"]=> string(17) "17011721405475648" } }
TRASFERIMENTO TERMINATO
protocollo =
dataAccoglienza =
nomeFileAllegato =
dimensioneFileAllegato =
codiceEsito = 109
descrizioneEsito = DATI PROPRIETARIO FORMALMENTE ERRATI
idErrore = 17011721405475648
FINE DEL LAVORO
INIZIO TRASFERIMENTO DEL FILE
TRASFERIMENTO TERMINATO
17011723295875690
protocollo = 17011723295875690
dataAccoglienza = 17-01-2017 23:29:58
nomeFileAllegato = Fatture730_2015_1.zip
dimensioneFileAllegato = 869
codiceEsito = 000
descrizioneEsito = Il file è in attesa di elaborazione, per conoscerne l'esito è necessario verificare la ricevuta
FINE DEL LAVORO
define ("_name", "TEST OTTICO");
define ("_user", "PROVAX00X00X000Y");
define ("_psw", "");
define ("_networkUser", "A9AZOS61");
define ("_networkPsw", "Salve123");
define ("_cfProprietario", "PROVAX00X00X000Y");
define ("_cfProprietarioCifrato", "Ix4OzmfPxB0TTwS6+Hc0enwIhMtunRUkB4CjlDDDns5pCy2iZJ4Qxy+C/X8mMpLRz37tOXnklkkPml5Di32wtQlXpCL2qais/ZjSmwwLldUFvxQPRrwsOSgbH0yK3n+cfgXHbuyTFmjKBAT1dkc5xJ4sTW6qPlaMEIJIevQXvrQ=");
define ("_piProprietario", "98765432104");
define ("_pincodeInviante", "5485370458");
define ("_pincodeInvianteCifrato", "KeS5/QE2L6BxTAnSjydhe3kF050HNra3CuQM71Hf6Q9brJ7ymZXW9oWmXEHIu5XiYCf6HB4AGWAjMwLtEC5AZg3t5/xbP6nUB8+RWLgRqknpmy1Ytzc2ilAERg7a0asG4MJ4qFh/JORp8RooYrD0NLvKWVoo+Q/5gdBIAd/kj/E=");
define ("_codiceRegione", "604");
define ("_codiceAsl", "120");
define ("_codiceSSA", "010011");
$output = $client->inviaFileMtom(Array
(
"nomeFileAllegato" => _Fatture730,
"pincodeInvianteCifrato" => $pincodeInvianteCifrato,
"datiProprietario" => ( Array
(
"codiceRegione" => $codiceRegione,
"codiceAsl" => $codiceAsl,
"codiceSSA" => $codiceSSA,
"cfProprietario" => $cfProprietario
)),
"opzionale1" => '0',
"opzionale2" => '0',
"opzionale3" => '0',
"documento" => $zipfile
));
Ma pensa te... spero solamente in fase di TEST e non in fase REALE....per le credenziali devi usare quelle riferibili ad una struttura (valli a capire ...)
[18-Jan-2017 11:36:27 Europe/Berlin] LA RICHIESTA HA AVUTO RISPOSTA
[18-Jan-2017 11:36:27 Europe/Berlin] E' PRESENTE L' ESITO PER IL PROTOCOLLO 17011811240475897
[18-Jan-2017 11:36:27 Europe/Berlin] protocollo = 17011811240475897
[18-Jan-2017 11:36:27 Europe/Berlin] dataInvio = 18-01-2017 11:24:04
[18-Jan-2017 11:36:27 Europe/Berlin] stato = 5
[18-Jan-2017 11:36:27 Europe/Berlin] descrizione = Scarto in fase di Elaborazione
[18-Jan-2017 11:36:27 Europe/Berlin] nInviati = 0
[18-Jan-2017 11:36:27 Europe/Berlin] nAccolti = 0
[18-Jan-2017 11:36:27 Europe/Berlin] nWarnings = 0
[18-Jan-2017 11:36:27 Europe/Berlin] nErrori = 0
[18-Jan-2017 11:36:27 Europe/Berlin] done FattureInvioEsito.php
Il giorno 18/01/2017 alle ore 11:24:04,
la struttura con codice 604 - 120 - 010011
ha inviato il file Fatture730_2016_completo.zip
protocollato dal sistema centrale con il numero 17011811240475897
L'invio NON E' STATO ACCOLTO
CODICE ERRORE E001
MOTIVAZIONE DI SCARTO - INCONGRUENZA DATI PROPRIETARIO TRA QUELLI INDICATI NEL FILE CON QUELLI INDICATI IN FASE DI INVIO
define ("_codiceRegione", "604");
define ("_codiceAsl", "120");
define ("_codiceSSA", "010011");
...
$pincodeInvianteCifrato = _pincodeInvianteCifrato;
$codiceRegione = _codiceRegione;
$codiceAsl = _codiceAsl;
$codiceSSA = _codiceSSA;
$output = $client->inviaFileMtom(Array
(
"nomeFileAllegato" => _Fatture730,
"pincodeInvianteCifrato" => $pincodeInvianteCifrato,
"datiProprietario" => ( Array
(
"codiceRegione" => $codiceRegione,
"codiceAsl" => $codiceAsl,
"codiceSSA" => $codiceSSA,
"cfProprietario" => $cfProprietario
)),
"opzionale1" => '0',
"opzionale2" => '0',
"opzionale3" => '0',
"documento" => $zipfile
))
;
$proprietario = $xml->addChild('proprietario');
cfProprietario = $proprietario->addChild('cfProprietario', $encFC);
$opzionale1 = $xml->addChild('opzionale1', 'text');
$opzionale2 = $xml->addChild('opzionale2', 'text');
$opzionale3 = $xml->addChild('opzionale3', 'text');
$proprietario = $xml->addChild('proprietario');
$codiceRegione = $xml->addChild('codiceRegione', $codiceRegione);
$$codiceAsl = $xml->addChild('codiceAsl', $codiceAsl);
$codiceSSA = $xml->addChild('codiceSSA', $codiceSSA);
$cfProprietario = $proprietario->addChild('cfProprietario', $encFC);
// </proprietario>
PHP Fatal error: Uncaught Error: Call to a member function addChild() on null in _3_FattureGeneraXMLdaTXT.php:27
27: $codiceRegione = $xml->addChild('codiceRegione', $codiceRegione);
$codiceRegione = $proprietario->addChild('codiceRegione', $codiceRegione);
$codiceAsl = $proprietario->addChild('codiceAsl', $codiceAsl);
$codiceSSA = $proprietario->addChild('codiceSSA', $codiceSSA);
Come non detto ragazzi...avevo inserito io un codice fiscale errato (che a quanto pare in fase di TEST non viene controllato)Buongiorno a tutti, l'anno scorso avevo già seguito e risposto a questa discussione (ma avevo fatto prove - funzionanti - solo sull'ambiente di test).
Ora ho un paio di clienti reali, con relativi dati, di cui inviare le fatture: una struttura e un medico.
Con entrambi ho testato l'invio delle fatture in ambiente di TEST (quindi endpoint + credenziali già citate) e funziona.
In ambiente di PRODUZIONE però, quindi con le loro credenziali, all'invio mi viene sempre restituito l'errore "Credenziali invalide". Eppure invio, crittature e tutto il resto è identico. A qualcuno è successo qualcosa di simile?
Ho letto che altri hanno differenze tra test e produzione ma riguardavano più che altro la modalità di crittografia dei dati e non dovrebbe essere il mio caso.
Non mi sono ancora cimentato in PRODUZIONE ma le differenze per esempio (che non ho ancora capito bene) per gli ottici non struttura è che in fase di test ho dovuto mettere anche codiceRegione, ASL e SSA come suggerito dal mitico marino51, mentre in PRODUZIONE penso di no... visto che non è struttura.Ho letto che altri hanno differenze tra test e produzione ma riguardavano più che altro la modalità di crittografia dei dati e non dovrebbe essere il mio caso.
Mi sembra strano che un codice fiscale errato in fase di test sia passato.... e la cosa mi preoccupa... ma tutto è possibileCome non detto ragazzi...avevo inserito io un codice fiscale errato (che a quanto pare in fase di TEST non viene controllato)
in realtà dovresti mettere tutte le informazioni, controlla il documento che è stato rilasciato in fase di registrazionementre in PRODUZIONE penso di no... visto che non è struttura
Pazzesco! Se noi sbagliamo ci sanzionano ma se sbagliano loro? (scusate lo sfogo)la stupidità ( scusate ) è che il sistema di test non ha "agganciato" i codici fiscali del sistema di "produzione"
se lo fosse, ovviamente, tutti i codici fiscali verrebbero controllati prima di caricarli sul sistema produttivo
com'è oggi, costringe alle "rincorse" per correggere
ma chi lo ha fatto, non ha guardato oltre 2 cm dal suo naso ....
Ok grazie. Controllerò se regione, ssa e asl sono nel documento di registrazione.in realtà dovresti mettere tutte le informazioni, controlla il documento che è stato rilasciato in fase di registrazione
e che contiene anche lo user id e password
dovresti "duplicare" la situazione di test con i dati effettivi