//*********
//
// 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');