Fatturazione elettronica xml e invio SDI

Discussione in 'Discussioni Varie' iniziata da Simone P, 29 Marzo 2018.

  1. rudycox

    rudycox Nuovo Utente

    Registrato:
    12 Gennaio 2016
    Messaggi:
    25
    Mi Piace Ricevuti:
    3
    Punteggio:
    3
    ciao, 'scrivere' l'xml, putroppo, è il minimo dei problemi.
    questo è il codice che uso per sistema ts
    PHP:
    $xml=new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><precompilata
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:noNamespaceSchemaLocation="730_precompilata.xsd"></precompilata>');

        $opzionale1 = $xml->addChild('opzionale1', 'text');
        $opzionale2 = $xml->addChild('opzionale2', 'text');
        $opzionale3 = $xml->addChild('opzionale3', 'text');

        $proprietario = $xml->addChild('proprietario');
        $codiceRegione = $proprietario->addChild("codiceRegione",$datiStruttura[0]);
        $codiceAsl = $proprietario->addChild("codiceAsl",$datiStruttura[1]);
        $codiceSSA = $proprietario->addChild("codiceSSA",$datiStruttura[2]);
    etc etc ed alla fine

    PHP:
    $dom = new DOMDocument('1.0');
    $dom->preserveWhiteSpace false;
    $dom->formatOutput true;
    $dom->loadXML($xml->asXML());
    $ilfile=[percorso e nome del file senza estensione]
    $filexml=$ilfile.".xml";
    error_log("salvo il file ".$filexml0);
    $dom->save($filexml);
    come vedi è abbastanza semplice, ovviamente cambiando tag ed i dati

    il problema qui è che oltre alla trasmissione bisogna tenere aperto un canale per la ricezione dei messaggi di trasmissione (accettazione, rifiuto etc) dei file di consegna e per la ricezione delle fatture in arrivo.

    Cmq se il grande marino è disponibile si potrebbe tentare
     
  2. LinuxOhYeah

    LinuxOhYeah Utente Attivo

    Registrato:
    26 Novembre 2016
    Messaggi:
    189
    Mi Piace Ricevuti:
    6
    Punteggio:
    18
    In verità se si invia via PEC basta solo fare l'XML.

    Tranne modifiche in parlamento sembra ufficiale:
    e
     
  3. joomeph

    joomeph Nuovo Utente

    Registrato:
    29 Agosto 2017
    Messaggi:
    14
    Mi Piace Ricevuti:
    1
    Punteggio:
    3
    Sesso:
    Maschio
    Discussione molto interessante, grazie per le molteplici risposte che avete dato alle mie ultra-molteplici domande :):):).
    Per cui, se ho capito bene :
    1. creo l'XML (non c'è l'obbligo di firmarlo digitalmente)
    2. lo spedisco attraverso PEC
    e fin qui va tutto bene, ma poi per la conservazione ? Basta tenerlo in un server/cloud ? O ne serve uno in particolare ? Basta tenerlo nel proprio PC ?
     
    Ultima modifica: 2 Novembre 2018
  4. LinuxOhYeah

    LinuxOhYeah Utente Attivo

    Registrato:
    26 Novembre 2016
    Messaggi:
    189
    Mi Piace Ricevuti:
    6
    Punteggio:
    18
    Pnesavo di aver fatto un file xml di prova conforme prelevando dai dati in csv e quindi l'ho dato in pasto all'AdE su 'Controllare la FatturaPA - Questa funzionalità consente di effettuare su ogni file FatturaPA i controlli formali necessari per garantire il corretto inoltro al destinatario'. ovviamente sbagliavo visto che mi da errore a parte gli errori 3xx per il CF e Partita IVA di prova:


    Secondo il tabellare:
    2.2.2.7 <EsigibilitaIVA> L'elemento esprime il momento nel quale l'IVA diventa esigibile (immediata ai sensi dell'Art. 6 comma 5 del DPR 633 1972, oppure differita) oppure il fatto che le modalità di versamento dell'imposta sono differenti da quelle ordinarie (scissione dei pagamenti) - Obbligatorietà e occorrenze <0.1> (<A.B> A = 0 elemento non obbligatorio A = 1 elemento obbligatorio) quindi non sembra obbligatorio
    2.2.2.8 <RiferimentoNormativo> Norma di riferimento (nei casi in cui l'elemento informativo 2.2.2.2 <Natura> è valorizzato) peccato che non ho messo l'elemento <Natura> - Obbligatorietà e occorrenze <0.1>

    Ho provato a mettere <EsigibilitaIVA> a Immediata : niente.
    Quindi in realtà sono obbligatori tutti e due anche se il tabellare dice di no?

    Assolutamente no. Se lo mandi allo sdi via PEC dovrebbe conservarlo direttamente l'AdE visto che 'è possibile attivare il servizio gratuito di conservazione elettronica' dell'AdE stessa che bisogna attivare.

     
    A joomeph piace questo elemento.
  5. joomeph

    joomeph Nuovo Utente

    Registrato:
    29 Agosto 2017
    Messaggi:
    14
    Mi Piace Ricevuti:
    1
    Punteggio:
    3
    Sesso:
    Maschio
    Perfetto, questa è una ulteriore conferma per me che il gigante ha partorito un topolino.
    Per ciò che riguarda i nodi dell'XML me li devo ancora guardare, per cui in questo momento non ne sò nulla.
    Credo però di aver letto su una guida che le obbligatorietà le hanno cambiate.
    Ho visto che esiste un Codice per ogni azienda che viene assegnato credo dall'AdE, quello, per esempio, si deve richiedere ?
     
  6. Max 1

    Max 1 Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    29 Febbraio 2012
    Messaggi:
    3.358
    Mi Piace Ricevuti:
    257
    Punteggio:
    83
    Sesso:
    Maschio
    Scusate ma forse il mio non è un intervento pertinente!
    Ma usare dei servizi o dei software già pronti non si eviterebbe tanti problemi?
     
  7. LinuxOhYeah

    LinuxOhYeah Utente Attivo

    Registrato:
    26 Novembre 2016
    Messaggi:
    189
    Mi Piace Ricevuti:
    6
    Punteggio:
    18
    Servizi o software già pronti, a parte quelli dell'AdE (c'è anche una app), sono quasi sempre a pagamento e comunque in qualche maniera bisogna interfacciare il proprio gestionale, che devi comunque continuare ad utilizzare visto che devi dare una copia cartacea a chi te la richiede, con il servizio / software quindi devi comunque fare un lavoro di esportazione: a questo punto esporti direttamente in xml, mandi via pec e non devi pagare terzi per un servizio che puoi fare da solo. alcuni servizi che ho testato hanno più bug del mio script oppure devi mettere i dati via web con username e password: allora meglio utilizzare quello diretto dell'AdE

    per me poi c'è anche un fatto di privacy. se per obbligo bisogna mandarlo all'AdE non ci puoi fare nulla.
    darli ad un terzo che non sai esattamente cosa faccia dei tuoi dati e di quelli dei tuoi clienti è una scelta sicuramente che faranno in molti. io personalmente non vorrei farla e non lo consiglierei.
    imho :)
     
    A joomeph piace questo elemento.
  8. joomeph

    joomeph Nuovo Utente

    Registrato:
    29 Agosto 2017
    Messaggi:
    14
    Mi Piace Ricevuti:
    1
    Punteggio:
    3
    Sesso:
    Maschio
    Per quello che mi riguarda ho già dei software che fatturano (cioè sviluppati da me) e non posso dire ai miei 'clienti' : veditela da solo, paga un servizio terzo e fatti le fatture a mano inserendo dati che già hai nel tuo DB. Come ora creo i PDF, è semplicissimo creare l'XML sapendo in quali nodi mettere i dati ed inviarlo via PEC. Il 'cliente' non deve far nulla, e soprattutto non deve pagare nulla perchè l'aggiornamento è gratis, essendo per manutenzione ordinaria.

    No, perchè poi si parla di privacy, ma intanto con quei servizi a pagamento di cui parli, riempi un database che non è il tuo, di dati di decine, centinaia, e forse migliaia di aziende, perchè si è vero che lo usi tu, ma si trova su un server loro. Chi ti assicura che quando tu smetti di pagare, loro cancellano tutto ? NESSUNO.
    E se pure qualcuno me lo assicurasse, non ci crederei lo stesso. :)
     
    Ultima modifica: 2 Novembre 2018
    A ziovanja piace questo elemento.
  9. LinuxOhYeah

    LinuxOhYeah Utente Attivo

    Registrato:
    26 Novembre 2016
    Messaggi:
    189
    Mi Piace Ricevuti:
    6
    Punteggio:
    18
    il mio script linux funziona, sostanzialmente non sono altro che echo e calcoli con bc, e quindi stavo riprendendo con lo script in php ma mi succede una cosa particolare: mi si raddoppiano gli elementi quando sono dentro alla if()! sto provando ad usare $xml=new SimpleXMLElement. forse non va bene SimpleXMLElement

    PHP:
    $DatiTrasmissione $FatturaElettronicaHeader->addChild('DatiTrasmissione');

    $IdTrasmittente $DatiTrasmissione->addChild('IdTrasmittente');
    $IdTrasmittente->addChild('IdCodice''01234567890');
    $IdTrasmittente->addChild('IdPaese''IT');

    $DatiTrasmissione->addChild('ProgressivoInvio''00001');
    $DatiTrasmissione->addChild('FormatoTrasmissione''FPR12');

    $file fopen('cli_001.txt'"r");
    while( !
    feof($file) )
        {
        
    $row fgets($file);
        
    $col explode(";"$row);
       
    $v_CodiceDestinatario $col[0];
       ...
       
    $DatiTrasmissione->addChild('CodiceDestinatario'$v_CodiceDestinatario);
       ...
       }
    fclose($file);

    print (
    $xml->asXML('test.xml'));
    e mi esce
    Codice:
    <DatiTrasmissione>
    <IdTrasmittente>
      <IdCodice>01234567890</IdCodice>
      <IdPaese>IT</IdPaese>
    </IdTrasmittente>
    <ProgressivoInvio>00001</ProgressivoInvio>
    <FormatoTrasmissione>FPR12</FormatoTrasmissione>
    <CodiceDestinatario>0000000</CodiceDestinatario>
    <CodiceDestinatario/>
    </DatiTrasmissione>
    Da dove viene fuori il 2° <CodiceDestinatario/> ? Se continuo mi si raddoppiano tutti. idee?
     
  10. joomeph

    joomeph Nuovo Utente

    Registrato:
    29 Agosto 2017
    Messaggi:
    14
    Mi Piace Ricevuti:
    1
    Punteggio:
    3
    Sesso:
    Maschio
    Controlla il file cli_001.txt
    Cmq non vedo che bisogno c'è di usare simpleXML quando puoi scrivere l'XML direttamente da php senza classi.
    Lunedì ti posto un po' di codice ;)
     
  11. LinuxOhYeah

    LinuxOhYeah Utente Attivo

    Registrato:
    26 Novembre 2016
    Messaggi:
    189
    Mi Piace Ricevuti:
    6
    Punteggio:
    18
    grazie della risposta ma il file va bene, infatti ha perfettamente caricato CodiceDestinatario con il dato corretto ovvero '0000000'
    Codice:
    0000000;;;PROVAX00X00X000Y
    peccato che ha aggiunto un <CodiceDestinatario/> totalmente inutile e anche sbagliato come sintassi
    simpleXML? perchè anche lo snippet per il 730 era stato fatto con quello e ha funzionato alla perfezione.
    anche io pensavo di usare un'altro metodo visto che la fattura elettronica utilizza i namespaces che non vengono gestiti bene da simpleXML
     
  12. joomeph

    joomeph Nuovo Utente

    Registrato:
    29 Agosto 2017
    Messaggi:
    14
    Mi Piace Ricevuti:
    1
    Punteggio:
    3
    Sesso:
    Maschio
    Eccomi, scusa il ritardo ma ho avuto molto da fare ieri.
    Ecco come scrivere un XML in puro php. Lo so, è un pò spartano, ma questo metodo non sbaglia mai.

    Codice:
    $txt = "";
    $filename = 'fattura.xml';
    
    $miofile = fopen($filename, "w") or die("Unable to open file!");
    $txt  = '<?xml version="1.0" encoding="utf-8"?>'."\n"; //QUESTO VA CAMBIATO CON LE SPECIFICHE DELLA FATTURA ELETTRONICA
    $txt .= '<nodopadre>'."\n";
    $txt .= "\t".'<nodofiglio>'.$VALORENODOFIGLIO.'</nodofiglio>'."\n";
    $txt .= "\t".'<nodopadre2>'."\n";
    $txt .= "\t\t".'<nodofiglio2>'.$VALORENODOFIGLIO2.'</nodofiglio2>'."\n";
    $txt .= "\t".'</nodopadre2>'."\n";
    $txt .= </nodopadre>'."\n";
    fwrite($miofile, $txt);
    fclose($miofile);
    provo a spiegare, ma credo sia talmente facile che non ce ne sarebbe nemmeno bisogno :
    dopo aver dichiarato la variabile txt vuota e il nome del file (in questo caso nella stessa root del file php che stai scrivendo),
    nella prima riga creo il file con il nome fattura.xml
    nella seconda riga scrivo l'intestazione dell'xml
    dalla terza riga inizio a scrivere i nodi iniziando dal primo padre ed usando \n per il line feed e \t per dargli il TAB per cui :
    il primo nodo è a capo riga, il primo figlio ha un tab come pure il padre2 ed il secondo figlio ha 2 tab.
    con fwrite scrivo la variavile txt nel file e chiudo con fclose.
    Niente di più semplice.

    N.B. : i TAB e i LINE FEED sono divisi con il . altrimenti potrebbero NON FUNZIONARE CORRETTAMENTE

    Mentre il vero problema nasce nell'inviare una PEC da PHP, ma ho già risolto.
     
    Ultima modifica: 6 Novembre 2018
  13. rudycox

    rudycox Nuovo Utente

    Registrato:
    12 Gennaio 2016
    Messaggi:
    25
    Mi Piace Ricevuti:
    3
    Punteggio:
    3
    Se vi interessa questo è il codice che ho usato per creare il file xml della fattura (è una ricevuta sanitaria, ovvero esente iva e con marca da bollo)
    la verifica ha dato esito positivo senza alcun errore
    Ho messo tra parentesi quadre i dati da cambiare.

    il blocco righe puo' essere ripetuto n volte

    Nota sulla seguente riga:
    $FatturaElettronicaHeader = $xml->addChild('FatturaElettronicaHeader', '' , '');

    facendo semplicemente
    $FatturaElettronicaHeader = $xml->addChild('FatturaElettronicaHeader');
    ogni riga successiva aggiunta con addChild avrebbe come namespace p:
    es:
    <p:DatiTrasmissione>
    <p:IdTrasmittente>

    facendo invece
    $FatturaElettronicaHeader = $xml->addChild('FatturaElettronicaHeader', '' , '');
    il namespace diventa vuoto e soltanto nelle prime righe child della root verrà scritto xmlns=""
    , ovvero solo in:
    <FatturaElettronicaHeader xmlns="">
    <FatturaElettronicaBody xmlns="">

    il comando
    preg_replace('/xmlns=""\s?/', '', $xml->asXML())

    rimuove tutti gli xmlns="" prima di stampare l'xml



    PHP:
    //*********
    //
    // il nome FILE deve essere IT[PARTITAIVA]_[CONTATORE]  CONTATORE=CHAR(5) ES: 00001
    //
    //*********

    $xml=new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><p:FatturaElettronica versione="FPR12" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2 http://www.fatturapa.gov.it/export/fatturazione/sdi/fatturapa/v1.2/Schema_del_file_xml_FatturaPA_versione_1.2.xsd"></p:FatturaElettronica>',LIBXML_NOERROR, FALSE, 'p', FALSE);

    // *************
    // HEADER
    // *************
    $FatturaElettronicaHeader = $xml->addChild('FatturaElettronicaHeader', '' , ''); //il namespace ora sarà  xmlns="" che verrà rimosso alla fine
        $DatiTrasmissione = $FatturaElettronicaHeader->addChild('DatiTrasmissione');
            $IdTrasmittente = $DatiTrasmissione->addChild('IdTrasmittente');
            $IdPaese = $IdTrasmittente->addChild('IdPaese','IT');
            $IdCodice =$IdTrasmittente->addChild('IdCodice','[PARTITAIVA]');

            $ProgressivoInvio = $DatiTrasmissione->addChild('ProgressivoInvio', '[PROGRESSIVO]'); // cambiare: formato alfanumerico; lunghezza massima di 10 caratteri.
            $FormatoTrasmissione = $DatiTrasmissione->addChild('FormatoTrasmissione', 'FPR12'); //cambiare
            $CodiceDestinatario  = $DatiTrasmissione->addChild('CodiceDestinatario', '0000000'); //cambiare  char(6) PA oppure char(7) altri

        //    $PECDestinatario = $DatiTrasmissione->addChild('PECDestinatario');

        $CedentePrestatore = $FatturaElettronicaHeader->addChild('CedentePrestatore');
            $DatiAnagrafici = $CedentePrestatore->addChild('DatiAnagrafici');
                $IdFiscaleIVA = $DatiAnagrafici->addChild('IdFiscaleIVA');
                        $IdPaese  = $IdFiscaleIVA->addChild('IdPaese', 'IT');
                        $IdCodice = $IdFiscaleIVA->addChild('IdCodice', '[PARTITAIVA]');

                $Anagrafica = $DatiAnagrafici->addChild('Anagrafica');
                        $Denominazione = $Anagrafica->addChild('Denominazione', '[RAGIONE SOCIALE]');
                $RegimeFiscale = $DatiAnagrafici->addChild('RegimeFiscale', '[REGIMEFISCALE]'); //verificare

            $Sede = $CedentePrestatore->addChild('Sede');
                $Indirizzo = $Sede->addChild('Indirizzo', '[INDIRIZZO]');
                $CAP = $Sede->addChild('CAP', '[CAP]');
                $Comune =  $Sede->addChild('Comune' , '[COMUNE]');
                $Provincia = $Sede->addChild('Provincia', '[PROV]');
                $Nazione = $Sede->addChild('Nazione', 'IT');
           

           
        $CessionarioCommittente = $FatturaElettronicaHeader->addChild('CessionarioCommittente');
            $DatiAnagrafici = $CessionarioCommittente->addChild('DatiAnagrafici');
                $CodiceFiscale = $DatiAnagrafici->addChild('CodiceFiscale', $pivacf);
                $Anagrafica = $DatiAnagrafici->addChild('Anagrafica');
                    $Denominazione = $Anagrafica ->addChild('Denominazione', $cognomenome);

            $Sede = $CessionarioCommittente->addChild('Sede');
                $Indir = $Sede->addChild('Indirizzo', $Indirizzo);
                $CAP_2 = $Sede->addChild('CAP', $cap);
                $Comune = $Sede->addChild('Comune', $citta);
                $Provincia =$Sede->addChild('Provincia', $prov);
                $Nazione_2 = $Sede->addChild('Nazione', $nazione); // controllare se italiano o no!!!!
    // *************
    // FINE HEADER
    // *************

    // *************      
    // BODY
    // *************

    //TESTATA BODY
       
    $FatturaElettronicaBody = $xml->addChild('FatturaElettronicaBody', '' , '');
        $DatiGenerali = $FatturaElettronicaBody->addChild('DatiGenerali');
            $DatiGeneraliDocumento = $DatiGenerali->addChild('DatiGeneraliDocumento');
                //TipoDocumento:
                //TD01 Fattura
                //TD02 Acconto/Anticipo su fattura
                //TD03 Acconto/Anticipo su parcella
                //TD04 Nota di Credito
                //TD05 Nota di Debito
                //TD06 Parcella
                //TD20 Autofattura  
                $TipoDocumento = $DatiGeneraliDocumento->addChild('TipoDocumento', '[TIPODOCUMENTO]'); //modificare
                $Divisa = $DatiGeneraliDocumento->addChild('Divisa','EUR');
                $Data = $DatiGeneraliDocumento->addChild('Data', '[DATAFATTURA]');
                $Numero = $DatiGeneraliDocumento->addChild('Numero', '[N_FATTURA]');
                $DatiBollo = $DatiGeneraliDocumento->addChild('DatiBollo');
                    $BolloVirtuale = $DatiBollo->addChild('BolloVirtuale', 'SI');
                    $ImportoBollo = $DatiBollo->addChild('ImportoBollo', '[BOLLO]'); // usare  number_format($bollo, 2);
       
    // DETTAGLIO FATTURA
    $DatiBeniServizi = $FatturaElettronicaBody->addChild('DatiBeniServizi');


    // *************  
    //RIGHE FATTURA  
    //BLOCCO DA RIPETERE PER OGNI RIGA
    // *************
            $DettaglioLinee = $DatiBeniServizi->addChild('DettaglioLinee');
                $NumeroLinea = $DettaglioLinee->addChild('NumeroLinea', '[N_RIGA]');
                $Descrizione = $DettaglioLinee->addChild('Descrizione', 'DESCRIZIONE]');
                $Quantita = $DettaglioLinee->addChild('Quantita', '[QTA]'); //[number_format($qta, 2);
                $PrezzoUnitario = $DettaglioLinee->addChild('PrezzoUnitario', '[PREZZO_U]'); // number_format($prezzo, 2);
                $PrezzoTotale = $DettaglioLinee->addChild('PrezzoTotale', '[TOTALE_RIGA]'); //number_format($totale, 2));
                $AliquotaIVA = $DettaglioLinee->addChild('AliquotaIVA', '0.00');
                //Natura:
                //N1 escluse ex art.15
                //N2 non soggette
                //N3 non imponibili
                //N4 esenti
                //N5 regime del margine / IVA non esposta in fattura
                //N6 inversione contabile (per le operazioni in reverse charge
                //   ovvero nei casi di autofatturazione per acquisti extra UE
                //   di servizi ovvero per importazioni di beni nei soli casi
                //   previsti)
                //N7 IVA assolta in altro stato UE (vendite a distanza ex art.
                //   40 commi 3 e 4 e art. 41 comma 1 lett. b, DL 331/93;
                //   prestazione di servizi di telecomunicazioni, teleradiodiffusione
                //   ed elettronici ex art. 7-sexies lett. f, g,
                //   DPR 633/72 e art. 74-sexies, DPR 633/72)
                $Natura = $DettaglioLinee->addChild('Natura', 'N4');
    // *************
    // FINE RIGHE/A
    // *************


    // *************
    //RIEPILOGO      
    // *************      
    $DatiRiepilogo = $DatiBeniServizi->addChild('DatiRiepilogo');
        $AliquotaIVA = $DatiRiepilogo->addChild('AliquotaIVA', '0.00');
        $Natura = $DatiRiepilogo->addChild('Natura', 'N4');
        $ImponibileImporto = $DatiRiepilogo->addChild('ImponibileImporto', '[IMPONIBILE]'); //number_format(($cassain-$bollo), 2));
        $Imposta = $DatiRiepilogo->addChild('Imposta', '0.00');
        $RiferimentoNormativo=$DatiRiepilogo->addChild('RiferimentoNormativo', 'Esente da IVA ai sensi dell\'art. 10 comma 1,  n.18 del DPR 633/72 e successive modifiche');
           
    // FINE DETTAGLIO FATTURA

    // *************
    // FINE BODY
    // *************
    $dom = new DOMDocument('1.0');
    $dom->preserveWhiteSpace = false;
    $dom->formatOutput = true;
    $dom->loadXML(preg_replace('/xmlns=""\s?/', '', $xml->asXML()));
    $dom->save('[PERCORSO]/[NOMEFILE_CONTATORE].xml');
     
    Ultima modifica: 7 Novembre 2018
    A joomeph piace questo elemento.
  14. joomeph

    joomeph Nuovo Utente

    Registrato:
    29 Agosto 2017
    Messaggi:
    14
    Mi Piace Ricevuti:
    1
    Punteggio:
    3
    Sesso:
    Maschio
    Bel lavoro Rudycox, solo che sarebbe opportuno a questo punto spiegare a tutti :
    cosa è il regime fiscale e dove si trova, il formato trasmissione, in che formato scrivere le date e cosa è la natura.
    ;)
     
  15. rudycox

    rudycox Nuovo Utente

    Registrato:
    12 Gennaio 2016
    Messaggi:
    25
    Mi Piace Ricevuti:
    3
    Punteggio:
    3
    i dettagli si trovano tutti nei documenti messi a disposizione dalla agenzia delle entrate all'indirizzo:
    http://www.fatturapa.gov.it/export/fatturazione/it/normativa/f-2.htm

    Direi che è fondamentale consultare:
    e visionare anche la struttura degli xml di esempio che più si adattano alla propria esigenza.

    Gli esempi sono per fatture "standard", per adattarli alle proprie esigenze vanno assolutamente consultati i doc sopra.

    se non si fa così direi che è impossibile

    alla fine validare il proprio xml con lo strumento apposito: http://sdi.fatturapa.gov.it/SdI2FatturaPAWeb/AccediAlServizioAction.do?pagina=controlla_fattura
     
  16. joomeph

    joomeph Nuovo Utente

    Registrato:
    29 Agosto 2017
    Messaggi:
    14
    Mi Piace Ricevuti:
    1
    Punteggio:
    3
    Sesso:
    Maschio
    Si si, dicevo solo di spiegare quei 4 punti a chi non sapeva i link, ma hai fatto meglio a metterli.
    Perfetto
     
  17. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    2.265
    Mi Piace Ricevuti:
    112
    Punteggio:
    63
    Occupazione:
    free lance
    Località:
    Lombardia
    vorrei solo suggerire di fare attenzione alle fatture PA (pubblica amministrazione), rispetto alle PR (privati)

    qui trovate quello che mi sembra il "portale" più aggiornato con la documentazione (spero) ultima
    https://assistenza.agenziaentrate.g...ew,Kb=FattElettr_UIKIT,t=startup.tem,Company={01B847AC-1BB9-4912-B3C2-81EC51E6FD8F}

    per ora ho scelto la strada manuale installando l'applicazione per pc messa a disposizione dall'AdE che genera il file xml e pdf

    ma sto anch'io lavorando per creare xml

    se ci fai partecipi della tua soluzione è un passo avanti per la gestione automatica

    grazie ragazzi
     
  18. rudycox

    rudycox Nuovo Utente

    Registrato:
    12 Gennaio 2016
    Messaggi:
    25
    Mi Piace Ricevuti:
    3
    Punteggio:
    3
    Se vi interessa questo è il codice per l'invio a mezzo PEC usando phpmailer attraverso SMTP di Aruba.
    Attenzione a che sistema operativo usate. Se windows dovete usare la classe per windows altrimenti non invia in ssl

    Io non ho ancora effettuato invii al SDI, se qualcuno lo ha già fatto, puo' cortesemente indicarmi cosa viene risposto?
    Suppongo arrivi una pec di risposta, ma con degli allegati o solo testo?

    PHP:
    require_once("../class/class.phpmailer_windows.php");
    include(
    "../class/class.smtp.php");
    //error_reporting(E_ALL);
    date_default_timezone_set('Europe/Rome');


     
    $mail = new PHPMailer;
     
    //***Enable SMTP debugging.
    //    $mail->SMTPDebug = 2;
    //    $mail->Debugoutput = 'html';
    //***

        
    $mail->isSMTP();
         
    $mail->Host 'smtps.pec.aruba.it';//gethostbyname('smtps.pec.aruba.it');
         
    $mail->SMTPAuth true;
        
        
    //Provide username and password     
        
    $mail->Username '[nomeutente]';
        
    $mail->Password '[password]';

        
    $mail->SMTPSecure 'ssl';
        
    $mail->Port 465;

        
    $mail->From '[indirizzoPEC_mittente]'
        
    $mail->FromName '[ilVsNome]';
        
    $mail->addAddress('[indirizzoPEC_destinatario]');
        
    $mail->isHTML(true);
        
    $mail->Subject "trasmissione n. ####"//$Subject;
        
    $mail->Body "invio fattura n. ###x##"//  $Body;
        
    $mail->AltBody "This is the plain text version of the email content";
        
    $mail->addAttachment('[percorso_completo_e nomefile.xml]');
        if (!
    $mail->send()) {
            echo 
    "Mailer Error: " $mail->ErrorInfo;
        }
        else {
               echo 
    'Mail Sent Successfully';
        }
     
    A joomeph piace questo elemento.
  19. Acrobata

    Acrobata Nuovo Utente

    Registrato:
    13 Novembre 2018
    Messaggi:
    1
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Buongiorno a tutti,
    sono il responsabile dell'area amministrativa di un'azienda industriale che utilizza PANTHERA ERP
    Con l'imminente obbligo della fattura elettronica tra privati, il distributore del software ci ha proposto l'implementazione dei moduli fatturazione elettronica e conservazione che permetterebbe che ci permetterebbe di raccogliere tutti i dati necessari alla fatturazione elettronica B2B direttamente in anagrafica, di generare e firmare digitalmente fatture in XML e di inviarle automaticamente all’Agenzia delle Entrate, di gestire le notifiche di accettazione o di scarto dello SdI e di gestire analogamente il ciclo di fatturazione passiva.
    Sarebbe inoltre possibile appoggiarsi ai loro servizi in outsourcing per dimenticare gli oneri e le responsabilità della conservazione per 10 anni.
    Il problema è che i costi da sostenere per suddetta implementazione sono notevoli:
    circa 2.560,00 euro per la licenza d'uso con successivo canone annuale ricorrente di 512,00 euro; 540,00 per l'accreditamento allo SDI; 800,00 di canone annuale ricorrente per la conservazione sostitutiva e 385,00 quale costo annuale per l'invio di 5.000,00 documenti e per finire 1500,00/2000,00 euro per le attività di "modellazione" da parte del consulente applicativo.
    Sicuramente la soluzione migliore per gestire la fatturazione elettronica con circa 3.500,00 fatture emesse e ricevute è il modulo integrato in Panthera Erp, che consente la gestione del ciclo passivo e attivo della fatturazione elettronica da e verso SDI direttamente dall'applicativo stesso e in modo totalmente trasparente ma tale funzionalità aggiuntiva ci è sembrata proposta ad un costo eccessivo.
    Qualcuno dei presenti nel Forum può esprimere il proprio parere o la propria esperienza ?
    Grazie
     
  20. Ezio88

    Ezio88 Nuovo Utente

    Registrato:
    19 Gennaio 2016
    Messaggi:
    8
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Buongiorno a tutti e bel lavoro con gli script (anche se io ne sto già usando uno mio per il gestionale che ho sviluppato su CakePHP).
    Una domanda tecnica sul formato, a cui non ho ancora risposta: Ma nel campo AliquotaIVA del riepilogo delle righe quale aliquota devo inserire se ho aliquote differenti a seconda della riga? Non capisco perché abbiano messo quel campo se c'è già l'indicazione di AliquotaIVA per ogni riga (quindi è già calcolabile la tassazione).
    Da quello che ho letto so che quel parametro non può essere diverso dalle aliquote indicate per le righe, ma ci sono anche controlli di valore che impongono che il valore sia legato al campo Imposta.

    Quindi se ho una voce al 10% di iva e una al 22% cosa metterò in DatiRipilogo.AliquotaIVA?
     
Sto caricando...

Condividi questa Pagina