Fatturazione elettronica xml e invio SDI

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 ".$filexml, 0);
$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
 
'scrivere' l'xml, putroppo, è il minimo dei problemi
In verità se si invia via PEC basta solo fare l'XML.

Tranne modifiche in parlamento sembra ufficiale:
Ade ha scritto:
L’obbligo di fattura elettronica, introdotto dalla Legge di Bilancio 2018, vale sia nel caso in cui la cessione del bene o la prestazione di servizio è effettuata tra due operatori Iva (operazioni B2B, cioè Business to Business ), sia nel caso in cui la cessione/prestazione è effettuata da un operatore Iva verso un consumatore finale (operazioni B2C, cioè Business to Consumer ).
e
Per tutte le fatture elettroniche inviate a privati (altri operatori Iva o consumatori finali), il SdI accetta anche file non firmati digitalmente. Nel caso in cui, però, il file della fattura elettronica sia firmato digitalmente, il SdI esegue controlli sulla validità del certificato di firma.
 
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:
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:
File non conforme al formato (nella descrizione del messaggio è riportata lâ¬"indicazione puntuale della non conformità ) - Invalid content was found starting with element 'AliquotaIVA'. One of '{EsigibilitaIVA, RiferimentoNormativo}' is expected. riga: 62 - colonna: 17 Verificare che il file inviato sia conforme al formato previsto 00200

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.
File non conforme al formato (nella descrizione del messaggio è riportata lâ¬"indicazione puntuale della non conformità ) - Invalid content was found starting with element 'AliquotaIVA'. One of '{RiferimentoNormativo}' is expected. riga: 62 - colonna: 17 Verificare che il file inviato sia conforme al formato previsto 00200

Quindi in realtà sono obbligatori tutti e due anche se il tabellare dice di no?

Basta tenerlo in un server/cloud ? O ne serve uno in particolare ? Basta tenerlo nel proprio PC ?
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.

AdE ha scritto:
Il processo di conservazione elettronica a norma è usualmente fornito da operatori privati certificati facilmente individuabili in internet; tuttavia, l’Agenzia delle Entrate mette gratuitamente a disposizione un servizio di conservazione elettronica a norma per tutte le fatture emesse e ricevute elettronicamente attraverso il Sistema di Interscambio.
 
  • Like
Reactions: joomeph
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.

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 ?
 
Scusate ma forse il mio non è un intervento pertinente!
Ma usare dei servizi o dei software già pronti non si eviterebbe tanti problemi?
 
Ma usare dei servizi o dei software già pronti non si eviterebbe tanti problemi?
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 :)
 
  • Like
Reactions: joomeph
Scusate ma forse il mio non è un intervento pertinente!
Ma usare dei servizi o dei software già pronti non si eviterebbe tanti problemi?

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:
  • Like
Reactions: ziovanja
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?
 
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 ;)
 
Controlla il file cli_001.txt
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
 
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:
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:
  • Like
Reactions: joomeph
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.
;)
 
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
 
Si si, dicevo solo di spiegare quei 4 punti a chi non sapeva i link, ma hai fatto meglio a metterli.
Perfetto
 
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

Mentre il vero problema nasce nell'inviare una PEC da PHP, ma ho già risolto.
se ci fai partecipi della tua soluzione è un passo avanti per la gestione automatica

grazie ragazzi
 
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';
    }
 
  • Like
Reactions: fratt and joomeph
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
 
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?
 

Discussioni simili