function CalcolaScadenze($totpag, $giorno, $mese, $anno, $tipdec, $giodec, $numrat, $tiprat, $mesesc, $giosuc) { $ex = new Expiry(); $rs_array = $ex->CalcExpiry($totpag, $anno . '-' . $mese . '-' . $giorno, $tipdec, $giodec, $numrat, $tiprat, $mesesc, $giosuc); $acc = array(); foreach ($rs_array as $k => $v) { $k--; $acc['import'][$k] = $v['amount']; $acc['giorno'][$k] = substr($v['date'], 8, 2); $acc['mese'][$k] = substr($v['date'], 5, 2); $acc['anno'][$k] = substr($v['date'], 0, 4); } return $acc; }
$j=$k; if (isset($v['id'])){ // nuovo rigo unset($new_paymov[$j]['id']); } if ($form['paymov_op_cl'][$i]==1){ // apertura partita $new_paymov[$j]['id_tesdoc_ref']=intval($_POST['date_reg_Y']). intval($_POST['registroiva']). intval($_POST['sezioneiva']). str_pad(intval($_POST['protocollo']),9,0,STR_PAD_LEFT); $new_paymov[$j]['id_rigmoc_doc']=$last_id_rig; if ($v['amount']<0.01){ // se non ho messo manualmente le scadenze lo faccio in automatico require_once("../../library/include/expiry_calc.php"); $ex= new Expiry; $partner=$anagrafica->getPartner(intval($_POST['conto_rc'.$i])); $pag = gaz_dbi_get_row($gTables['pagame'], "codice", $partner['codpag']); $rs_ex=$ex->CalcExpiry(floatval($_POST['importorc'][$i]),$datadoc,$pag['tipdec'],$pag['giodec'],$pag['numrat'],$pag['tiprat'],$pag['mesesc'],$pag['giosuc']); foreach($rs_ex as $ve){ // attraverso le rate $new_paymov[$j]['amount']=$ve['amount']; $new_paymov[$j]['expiry']=$ve['date']; $calc->updatePaymov($new_paymov[$j]); } } else { $new_paymov[$j]['expiry']=gaz_format_date($new_paymov[$j]['expiry'],true); $calc->updatePaymov($new_paymov[$j]); } } else { // chiusura partita $new_paymov[$j]['id_rigmoc_pay']=$last_id_rig; $new_paymov[$j]['expiry']=gaz_format_date($new_paymov[$j]['expiry'],true); $calc->updatePaymov($new_paymov[$j]); } }
function create_XML_invoice($testata, $gTables, $rows = 'rigdoc', $dest = false) { $XMLvars = new invoiceXMLvars(); $domDoc = new DOMDocument(); $domDoc->load("../../library/include/template_fae.xml"); $xpath = new DOMXPath($domDoc); $ctrl_doc = 0; $n_linea = 1; // definisco le variabili dei totali $XMLvars->totimp_body = 0; $XMLvars->taxstamp = 0; $XMLvars->virtual_taxstamp = 0; $XMLvars->tot_trasporto = 0; $XMLvars->body_castle = array(); $XMLvars->ivasplitpay = 0.0; while ($tesdoc = gaz_dbi_fetch_array($testata)) { $XMLvars->setXMLvars($gTables, $tesdoc, $tesdoc['id_tes'], $rows, false); if ($ctrl_doc == 0) { $id_progressivo = substr($XMLvars->docRelDate, 2, 2) . $XMLvars->seziva . str_pad($XMLvars->protoc, 7, '0', STR_PAD_LEFT); //per il momento sono singole chiamate xpath a regime e' possibile usare un array associativo da passare ad una funzione $results = $xpath->query("//FatturaElettronicaHeader/DatiTrasmissione/IdTrasmittente/IdPaese")->item(0); $attrVal = $domDoc->createTextNode('IT'); $results->appendChild($attrVal); $results = $xpath->query("//FatturaElettronicaHeader/DatiTrasmissione/ProgressivoInvio")->item(0); $attrVal = $domDoc->createTextNode($id_progressivo); $results->appendChild($attrVal); $results = $xpath->query("//FatturaElettronicaHeader/DatiTrasmissione/FormatoTrasmissione")->item(0); $attrVal = $domDoc->createTextNode("SDI11"); $results->appendChild($attrVal); $codice_trasmittente = $XMLvars->IdCodice; $results = $xpath->query("//FatturaElettronicaHeader/DatiTrasmissione/IdTrasmittente/IdCodice")->item(0); $attrVal = $domDoc->createTextNode($codice_trasmittente); $results->appendChild($attrVal); $results = $xpath->query("//FatturaElettronicaHeader/CedentePrestatore/DatiAnagrafici/IdFiscaleIVA/IdPaese")->item(0); $attrVal = $domDoc->createTextNode("IT"); $results->appendChild($attrVal); //il IdCodice iva e' la partita iva? $results = $xpath->query("//FatturaElettronicaHeader/CedentePrestatore/DatiAnagrafici/IdFiscaleIVA/IdCodice")->item(0); $attrVal = $domDoc->createTextNode(trim($XMLvars->azienda['pariva'])); $results->appendChild($attrVal); //nodo 1.2.1.2 Codice Fiscale richiesto da alcune amministrazioni come obbligatorio $results = $xpath->query("//FatturaElettronicaHeader/CedentePrestatore/DatiAnagrafici/CodiceFiscale")->item(0); $attrVal = $domDoc->createTextNode(trim($XMLvars->azienda['codfis'])); $results->appendChild($attrVal); $results = $xpath->query("//FatturaElettronicaHeader/DatiTrasmissione/CodiceDestinatario")->item(0); $attrVal = $domDoc->createTextNode(trim($XMLvars->client['fe_cod_univoco'])); $results->appendChild($attrVal); $el = $domDoc->createElement("CodiceFiscale", trim($XMLvars->client['codfis'])); $results = $xpath->query("//CessionarioCommittente/DatiAnagrafici")->item(0); $results1 = $xpath->query("//CessionarioCommittente/DatiAnagrafici/Anagrafica")->item(0); $results->insertBefore($el, $results1); // nodo 1.4.1.1 partita IVA del committente, se disponibile if (!empty($XMLvars->client['pariva'])) { $el = $domDoc->createElement("IdFiscaleIVA", ''); $results = $el->appendChild($domDoc->createElement('IdPaese', 'IT')); $results = $el->appendChild($domDoc->createElement('IdCodice', $XMLvars->client['pariva'])); $results = $xpath->query("//CessionarioCommittente/DatiAnagrafici")->item(0); $results1 = $xpath->query("//CessionarioCommittente/DatiAnagrafici/CodiceFiscale")->item(0); $results->insertBefore($el, $results1); } $results = $xpath->query("//CessionarioCommittente/DatiAnagrafici/Anagrafica/Denominazione")->item(0); $attrVal = $domDoc->createTextNode(substr(trim($XMLvars->client['ragso1']) . " " . trim($XMLvars->client['ragso2']), 0, 80)); $results->appendChild($attrVal); $results = $xpath->query("//CessionarioCommittente/Sede/Indirizzo")->item(0); $attrVal = $domDoc->createTextNode(trim($XMLvars->client['indspe'])); $results->appendChild($attrVal); $el = $domDoc->createElement("Provincia", strtoupper(trim($XMLvars->client['prospe']))); $results = $xpath->query("//CessionarioCommittente/Sede")->item(0); $results1 = $xpath->query("//CessionarioCommittente/Sede/Nazione")->item(0); $results->insertBefore($el, $results1); $results = $xpath->query("//CessionarioCommittente/Sede/Comune")->item(0); $attrVal = $domDoc->createTextNode(trim($XMLvars->client['citspe'])); $results->appendChild($attrVal); $results = $xpath->query("//CessionarioCommittente/Sede/CAP")->item(0); $attrVal = $domDoc->createTextNode(trim($XMLvars->client['capspe'])); $results->appendChild($attrVal); $results = $xpath->query("//CessionarioCommittente/Sede/Nazione")->item(0); $attrVal = $domDoc->createTextNode(trim($XMLvars->client['country'])); $results->appendChild($attrVal); $results = $xpath->query("//FatturaElettronicaBody/DatiGenerali/DatiGeneraliDocumento/TipoDocumento")->item(0); $attrVal = $domDoc->createTextNode($XMLvars->TipoDocumento); $results->appendChild($attrVal); //sempre in euro? $results = $xpath->query("//FatturaElettronicaBody/DatiGenerali/DatiGeneraliDocumento/Divisa")->item(0); $attrVal = $domDoc->createTextNode("EUR"); $results->appendChild($attrVal); $results = $xpath->query("//FatturaElettronicaBody/DatiGenerali/DatiGeneraliDocumento/Data")->item(0); $attrVal = $domDoc->createTextNode(trim($XMLvars->docRelDate)); $results->appendChild($attrVal); $results = $xpath->query("//FatturaElettronicaBody/DatiGenerali/DatiGeneraliDocumento/Numero")->item(0); $attrVal = $domDoc->createTextNode(trim($XMLvars->docRelNum)); $results->appendChild($attrVal); $results = $xpath->query("//FatturaElettronicaHeader/CedentePrestatore/DatiAnagrafici/Anagrafica/Denominazione")->item(0); $attrVal = $domDoc->createTextNode(trim($XMLvars->intesta1 . " " . $XMLvars->intesta1bis)); $results->appendChild($attrVal); //regime fiscale RF01 valido per il regime fiscale ordinario $results = $xpath->query("//FatturaElettronicaHeader/CedentePrestatore/DatiAnagrafici/RegimeFiscale")->item(0); $attrVal = $domDoc->createTextNode(trim($XMLvars->azienda['fiscal_reg'])); $results->appendChild($attrVal); $results = $xpath->query("//FatturaElettronicaHeader/CedentePrestatore/Sede/Indirizzo")->item(0); $attrVal = $domDoc->createTextNode(trim($XMLvars->azienda['indspe'])); $results->appendChild($attrVal); $results = $xpath->query("//FatturaElettronicaHeader/CedentePrestatore/Sede/CAP")->item(0); $attrVal = $domDoc->createTextNode(trim($XMLvars->azienda['capspe'])); $results->appendChild($attrVal); $results = $xpath->query("//FatturaElettronicaHeader/CedentePrestatore/Sede/Comune")->item(0); $attrVal = $domDoc->createTextNode(trim($XMLvars->azienda['citspe'])); $results->appendChild($attrVal); $results = $xpath->query("//FatturaElettronicaHeader/CedentePrestatore/Sede/Nazione")->item(0); $attrVal = $domDoc->createTextNode(trim($XMLvars->azienda['country'])); $results->appendChild($attrVal); $results = $xpath->query("//FatturaElettronicaBody/DatiBeniServizi")->item(0); //$attrVal = $domDoc->createTextNode('IT'); //$results->appendChild($attrVal); } elseif ($ctrl_doc != $XMLvars->docRelNum) { // quando cambia il DdT /* in caso di necessità qui potrò aggiungere linee di codice */ } //elenco beni in fattura $lines = $XMLvars->getXMLrows(); $cig = ""; $cup = ""; $id_documento = ""; while (list($key, $rigo) = each($lines)) { $nl = false; switch ($rigo['tiprig']) { case "0": // normale $el = $domDoc->createElement("DettaglioLinee", ""); $el1 = $domDoc->createElement("NumeroLinea", $n_linea); $el->appendChild($el1); if (isset($rigo['descrittivi'])) { // se ho dei righi descrittivi associati li posso aggiungere fino a che la lunghezza non superi 1000 caratteri quindi ne posso aggiungere al massimo 15*60 foreach ($rigo['descrittivi'] as $k => $v) { if ($k < 16) { $rigo['descri'] .= $v; // ogni $v è lungo al massimo 60 caratteri unset($rigo['descrittivi'][$k]); // lo tolgo in modo da mettere un eventuale accesso sotto } } } $el1 = $domDoc->createElement("Descrizione", $rigo['descri']); $el->appendChild($el1); $el1 = $domDoc->createElement("Quantita", number_format($rigo['quanti'], 2, '.', '')); $el->appendChild($el1); $el1 = $domDoc->createElement("UnitaMisura", $rigo['unimis']); $el->appendChild($el1); $el1 = $domDoc->createElement("PrezzoUnitario", number_format($rigo['prelis'], $XMLvars->decimal_price, '.', '')); $el->appendChild($el1); // sconto/maggiorazione rigo 2.2.1.10 if (abs($rigo['imp_sconto']) >= 0.01) { $el1 = $domDoc->createElement("ScontoMaggiorazione", ""); $el->appendChild($el1); if ($rigo['imp_sconto'] < 0) { // è una maggiorazione $t = 'MG'; } else { $t = 'SC'; } $el2 = $domDoc->createElement("Tipo", $t); $el1->appendChild($el2); $el2 = $domDoc->createElement("Percentuale", number_format(abs($rigo['sconto']), 2, '.', '')); $el1->appendChild($el2); $el2 = $domDoc->createElement("Importo", number_format(abs($rigo['imp_sconto']), 2, '.', '')); $el1->appendChild($el2); } $el1 = $domDoc->createElement("PrezzoTotale", number_format($rigo['importo'], 2, '.', '')); $el->appendChild($el1); $el1 = $domDoc->createElement("AliquotaIVA", number_format($rigo['pervat'], 2, '.', '')); $el->appendChild($el1); if ($rigo['ritenuta'] > 0) { $el1 = $domDoc->createElement("Ritenuta", 'SI'); $el->appendChild($el1); } if ($rigo['pervat'] <= 0) { $el1 = $domDoc->createElement("Natura", $rigo['natura']); $el->appendChild($el1); } if (isset($rigo['descrittivi']) && count($rigo['descrittivi']) > 0) { foreach ($rigo['descrittivi'] as $k => $v) { $el1 = $domDoc->createElement("AltriDatiGestionali", ''); $el->appendChild($el1); $el2 = $domDoc->createElement("TipoDato", 'txt' . $k); $el1->appendChild($el2); $el2 = $domDoc->createElement("RiferimentoTesto", $v); $el1->appendChild($el2); } } $results->appendChild($el); $nl = true; break; case "1": case "T": // forfait o trasporto $el = $domDoc->createElement("DettaglioLinee", ""); $el1 = $domDoc->createElement("NumeroLinea", $n_linea); $el->appendChild($el1); $el1 = $domDoc->createElement("Descrizione", substr($rigo['descri'], 0, 100)); $el->appendChild($el1); $el1 = $domDoc->createElement("PrezzoUnitario", number_format($rigo['importo'], 2, '.', '')); $el->appendChild($el1); $el1 = $domDoc->createElement("PrezzoTotale", number_format($rigo['importo'], 2, '.', '')); $el->appendChild($el1); $el1 = $domDoc->createElement("AliquotaIVA", number_format($rigo['pervat'], 2, '.', '')); $el->appendChild($el1); if ($rigo['ritenuta'] > 0) { $el1 = $domDoc->createElement("Ritenuta", 'SI'); $el->appendChild($el1); } if ($rigo['pervat'] <= 0) { $el1 = $domDoc->createElement("Natura", $rigo['natura']); $el->appendChild($el1); } $results->appendChild($el); $nl = true; break; case "2": // descrittivo /* ! ATTENZIONE: tipo rigo spostato in appendice <2.2.1.16> ai righi "normale" !!! */ break; case "3": // variazione totale fatture /* ! ATTENZIONE: questa tipologia di rigo non si deve utilizzare in caso di PA !!! */ break; case "6": case "8": /* ! ATTENZIONE: tipo rigo spostato in appendice <2.2.1.16> ai righi "normale" !!! */ break; case "11": $cig = $rigo['descri']; break; case "12": $cup = $rigo['descri']; break; case "13": $id_documento = $rigo['descri']; break; } if ($rigo['ritenuta'] > 0) { /* */ } // se c'è un ddt di origine ogni rigo deve avere il suo riferimento in <DatiDDT> if ($XMLvars->ddt_data && $nl) { $results = $xpath->query("//FatturaElettronicaBody/DatiGenerali")->item(0); $el_ddt = $domDoc->createElement("DatiDDT", ""); $el1 = $domDoc->createElement("NumeroDDT", $XMLvars->tesdoc['numdoc']); $el_ddt->appendChild($el1); $el1 = $domDoc->createElement("DataDDT", $XMLvars->tesdoc['datemi']); $el_ddt->appendChild($el1); $el1 = $domDoc->createElement("RiferimentoNumeroLinea", $n_linea); $el_ddt->appendChild($el1); $results->appendChild($el_ddt); $results = $xpath->query("//FatturaElettronicaBody/DatiBeniServizi")->item(0); } if ($nl) { $n_linea++; } } $ctrl_doc = $XMLvars->tesdoc['numdoc']; } // aggiungo le eventuali spese di incasso ma queste essendo cumulative per diversi eventuali DdT non hanno un riferimento if ($XMLvars->tesdoc['speban'] >= 0.01) { $el = $domDoc->createElement("DettaglioLinee", ""); $el1 = $domDoc->createElement("NumeroLinea", $n_linea); $el->appendChild($el1); $el1 = $domDoc->createElement("Descrizione", 'SPESE INCASSO ' . $XMLvars->pagame['numrat'] . ' EFFETTI'); $el->appendChild($el1); $el1 = $domDoc->createElement("PrezzoUnitario", number_format($XMLvars->tesdoc['speban'], 2, '.', '')); $el->appendChild($el1); $el1 = $domDoc->createElement("PrezzoTotale", number_format($XMLvars->tesdoc['speban'] * $XMLvars->pagame['numrat'], 2, '.', '')); $el->appendChild($el1); $el1 = $domDoc->createElement("AliquotaIVA", number_format($XMLvars->expense_pervat['aliquo'], 2, '.', '')); $el->appendChild($el1); $results->appendChild($el); $results = $xpath->query("//FatturaElettronicaBody/DatiGenerali")->item(0); $el_ddt = $domDoc->createElement("DatiDDT", ""); $el1 = $domDoc->createElement("NumeroDDT", $XMLvars->tesdoc['numdoc']); $el_ddt->appendChild($el1); $el1 = $domDoc->createElement("DataDDT", $XMLvars->tesdoc['datemi']); $el_ddt->appendChild($el1); $el1 = $domDoc->createElement("RiferimentoNumeroLinea", $n_linea--); $el_ddt->appendChild($el1); $results->appendChild($el_ddt); $n_linea++; } //dati ordine di acquisto $results = $xpath->query("//FatturaElettronicaBody/DatiGenerali")->item(0); if ($id_documento != "") { $el_datiOrdineAcquisto = $domDoc->createElement("DatiOrdineAcquisto", ""); $el1 = $domDoc->createElement("IdDocumento", $id_documento); $el_datiOrdineAcquisto->appendChild($el1); } if ($id_documento != "" and $cup != "") { $el1 = $domDoc->createElement("CodiceCUP", $cup); $el_datiOrdineAcquisto->appendChild($el1); } if ($id_documento != "" and $cig != "") { $el1 = $domDoc->createElement("CodiceCIG", $cig); $el_datiOrdineAcquisto->appendChild($el1); } //occorre testare qui se presente il ddt altrimeni occorrera' fare l'insertbefore if ($id_documento != "") { $results1 = $xpath->query("//FatturaElettronicaBody/DatiGenerali/DatiDDT")->item(0); if (is_null($results1)) { $results->appendChild($el_datiOrdineAcquisto); } else { $results->insertBefore($el_datiOrdineAcquisto, $results1); } } //Attenzione qui $XMLvars->setXMLtot(); if ($XMLvars->tot_ritenute > 0) { $results = $xpath->query("//FatturaElettronicaBody/DatiGenerali/DatiGeneraliDocumento")->item(0); $el = $domDoc->createElement("DatiRitenuta", ""); $el1 = $domDoc->createElement("TipoRitenuta", $XMLvars->TipoRitenuta); $el->appendChild($el1); $el1 = $domDoc->createElement("ImportoRitenuta", number_format($XMLvars->tot_ritenute, 2, '.', '')); $el->appendChild($el1); $el1 = $domDoc->createElement("AliquotaRitenuta", number_format($XMLvars->azienda['ritenuta'], 2, '.', '')); $el->appendChild($el1); $el1 = $domDoc->createElement("CausalePagamento", $XMLvars->azienda['causale_pagam_770']); $el->appendChild($el1); $results->appendChild($el); } if ($XMLvars->impbol >= 0.01) { $results = $xpath->query("//FatturaElettronicaBody/DatiGenerali/DatiGeneraliDocumento")->item(0); $el = $domDoc->createElement("DatiBollo", ""); $el1 = $domDoc->createElement("BolloVirtuale", $XMLvars->BolloVirtuale); $el->appendChild($el1); $el1 = $domDoc->createElement("ImportoBollo", number_format($XMLvars->impbol, 2, '.', '')); $el->appendChild($el1); $results->appendChild($el); } $results = $xpath->query("//FatturaElettronicaBody/DatiBeniServizi")->item(0); foreach ($XMLvars->cast as $key => $value) { $el = $domDoc->createElement("DatiRiepilogo", ""); $el1 = $domDoc->createElement("AliquotaIVA", number_format($value['periva'], 2, '.', '')); $el->appendChild($el1); if ($value['periva'] < 0.01) { $el1 = $domDoc->createElement("Natura", $value['fae_natura']); $el->appendChild($el1); } // necessario per l'elemento 2.2.2.7 $value['esigibilita'] = 'I'; // I=esigibiltà immediata if ($value['tipiva'] == 'T') { // è un'IVA non esigibile per split payment PA $value['esigibilita'] = 'S'; // S=scissione dei pagamenti } $el1 = $domDoc->createElement("ImponibileImporto", number_format($value['impcast'], 2, '.', '')); $el->appendChild($el1); $el1 = $domDoc->createElement("Imposta", number_format($value['ivacast'], 2, '.', '')); if ($value['fae_natura'] == 'N1' || $value['fae_natura'] == 'N2' || $value['fae_natura'] == 'N3' || $value['fae_natura'] == 'N4' || $value['fae_natura'] == 'N5' || $value['fae_natura'] == 'N6') { //non viene inserito il nodo EsigibilitaIVA } else { $el->appendChild($el1); $el1 = $domDoc->createElement("EsigibilitaIVA", $value['esigibilita']); } $el->appendChild($el1); $el1 = $domDoc->createElement("RiferimentoNormativo", $value['descriz']); $el->appendChild($el1); $results->appendChild($el); } if ($XMLvars->sempl_accom) { // se è una fattura accompagnatoria qui inserisco anche i dati relativi al trasporto $results = $xpath->query("//FatturaElettronicaBody/DatiGenerali")->item(0); $el = $domDoc->createElement("DatiTrasporto", ""); $el1 = $domDoc->createElement("MezzoTrasporto", $XMLvars->tesdoc['spediz']); $el->appendChild($el1); $el1 = $domDoc->createElement("NumeroColli", $XMLvars->tesdoc['units']); $el->appendChild($el1); $el1 = $domDoc->createElement("Descrizione", $XMLvars->tesdoc['imball']); $el->appendChild($el1); $el1 = $domDoc->createElement("UnitaMisuraPeso", 'kg'); $el->appendChild($el1); $el1 = $domDoc->createElement("PesoLordo", $XMLvars->tesdoc['gross_weight']); $el->appendChild($el1); $el1 = $domDoc->createElement("PesoNetto", $XMLvars->tesdoc['net_weight']); $el->appendChild($el1); $el1 = $domDoc->createElement("DataInizioTrasporto", substr($XMLvars->tesdoc['initra'], 0, 10)); $el->appendChild($el1); $el1 = $domDoc->createElement("DataOraConsegna", substr($XMLvars->tesdoc['initra'], 0, 10) . 'T' . substr($XMLvars->tesdoc['initra'], 11, 8)); $el->appendChild($el1); $results->appendChild($el); } // ----- CALCOLO TOTALI E RATE DEL PAGAMENTO $totpag = $XMLvars->totimpfat + $XMLvars->totriport + $XMLvars->totivafat - $XMLvars->tot_ritenute - $XMLvars->ivasplitpay; // ----- INSERITA variabile che calcola il totale della fattura al lordo della RDA e dell'IVA $totpar = $XMLvars->totimpfat + $XMLvars->totriport + $XMLvars->totivafat; if ($XMLvars->virtual_taxstamp == 1 || $XMLvars->virtual_taxstamp == 2) { $totpag = $totpag + $XMLvars->impbol; $totpar = $totpar + $XMLvars->impbol; } $ex = new Expiry(); $ratpag = $ex->CalcExpiry($totpag, $XMLvars->tesdoc["datfat"], $XMLvars->pagame['tipdec'], $XMLvars->pagame['giodec'], $XMLvars->pagame['numrat'], $XMLvars->pagame['tiprat'], $XMLvars->pagame['mesesc'], $XMLvars->pagame['giosuc']); if ($XMLvars->pagame['numrat'] > 1) { $cond_pag = 'TP01'; } else { $cond_pag = 'TP02'; } // elementi dei <DatiPagamento> (2.4) $results = $xpath->query("//FatturaElettronicaBody")->item(0); $el = $domDoc->createElement("DatiPagamento", ""); $el1 = $domDoc->createElement("CondizioniPagamento", $cond_pag); // 2.4.1 $el->appendChild($el1); $results->appendChild($el); foreach ($ratpag as $k => $v) { $results = $xpath->query("//FatturaElettronicaBody/DatiPagamento")->item(0); $el = $domDoc->createElement("DettaglioPagamento", ''); // 2.4.2 $el1 = $domDoc->createElement("Beneficiario", trim($XMLvars->intesta1 . " " . $XMLvars->intesta1bis)); // 2.4.2.1 $el->appendChild($el1); $el1 = $domDoc->createElement("ModalitaPagamento", $XMLvars->pagame['fae_mode']); // 2.4.2.2 $el->appendChild($el1); $el1 = $domDoc->createElement("DataScadenzaPagamento", $v['date']); // 2.4.2.5 $el->appendChild($el1); $el1 = $domDoc->createElement("ImportoPagamento", $v['amount']); // 2.4.2.6 $el->appendChild($el1); if ($XMLvars->pagame['tippag'] == 'B') { // se il pagamento è una RiBa indico CAB e ABI $el1 = $domDoc->createElement("ABI", $XMLvars->banapp['codabi']); // 2.4.2.14 $el->appendChild($el1); $el1 = $domDoc->createElement("CAB", $XMLvars->banapp['codcab']); // 2.4.2.15 $el->appendChild($el1); } elseif (!empty($XMLvars->banacc['iban'])) { // se il pagamento ha un IBAN associato $el1 = $domDoc->createElement("IBAN", $XMLvars->banacc['iban']); // 2.4.2.13 $el->appendChild($el1); } $results->appendChild($el); } //Modifica per il sicoge che richiede obbligatoriamente popolato il punto 2.1.1.9 $results = $xpath->query("//FatturaElettronicaBody/DatiGenerali/DatiGeneraliDocumento")->item(0); // sconto/maggiorazione totale documento 2.1.1.8 $sc = round($XMLvars->totimpmer * $XMLvars->tesdoc['sconto'] / 100, 2); if (abs($sc) >= 0.01) { $el = $domDoc->createElement("ScontoMaggiorazione", ""); if ($sc < 0) { // è una maggiorazione $t = 'MG'; } else { $t = 'SC'; } $el1 = $domDoc->createElement("Tipo", $t); $el->appendChild($el1); $el1 = $domDoc->createElement("Percentuale", $XMLvars->tesdoc['sconto']); $el->appendChild($el1); $el1 = $domDoc->createElement("Importo", number_format(abs($sc), 2, '.', '')); $el->appendChild($el1); $results->appendChild($el); } $el = $domDoc->createElement("ImportoTotaleDocumento", number_format($totpar, 2, '.', '')); // totale fatura al lordo di RDA $results->appendChild($el); // faccio l'encode per ricavare il progressivo unico di invio $data = array('azienda' => $XMLvars->azienda['codice'], 'anno' => $XMLvars->docRelDate, 'sezione' => $XMLvars->seziva, 'protocollo' => $XMLvars->protoc, 'intermediary' => $XMLvars->Intermediary); $progressivo_unico_invio = $XMLvars->encodeSendingNumber($data, 36); //print $XMLvars->decodeFromSendingNumber($progressivo_unico_invio); $nome_file = "IT" . $codice_trasmittente . "_" . $progressivo_unico_invio; $id_tes = $XMLvars->tesdoc['id_tes']; $data_ora_ricezione = $XMLvars->docRelDate; $verifica = gaz_dbi_get_row($gTables['fae_flux'], 'filename_ori', $nome_file . ".xml"); if ($verifica == false) { $valori = array('filename_ori' => $nome_file . ".xml", 'id_tes_ref' => $id_tes, 'exec_date' => $data_ora_ricezione, 'received_date' => $data_ora_ricezione, 'delivery_date' => $data_ora_ricezione, 'filename_son' => '', 'id_SDI' => 0, 'filename_ret' => '', 'mail_id' => 0, 'data' => '', 'flux_status' => '#', 'progr_ret' => '000', 'flux_descri' => ''); fae_fluxInsert($valori); } header("Content-type: text/plain"); header("Content-Disposition: attachment; filename=" . $nome_file . ".xml"); print $domDoc->saveXML(); }