<?php // release xml // 2.4.1 fix 0003 include ("../core.php"); function crea_fatturapa($iddocumento){ global $dbo; global $docroot; // query per ricerca archgiviazione $query_fatt = "SELECT (SELECT mail_oggetto FROM co_tipidocumento WHERE id=idtipodocumento) AS mail_oggetto, (SELECT mail_testo FROM co_tipidocumento WHERE id=idtipodocumento) AS mail_testo, (SELECT path_archivio FROM co_tipidocumento WHERE id=idtipodocumento) AS path_archivio,(SELECT txt_suffisso FROM co_tipidocumento WHERE id=idtipodocumento) AS txt_suffisso,(SELECT dir_pdf FROM co_tipidocumento WHERE id=idtipodocumento) AS dir_pdf ,DATE_FORMAT(`data`, '%Y') AS anno, (SELECT descrizione FROM co_tipidocumento WHERE id=idtipodocumento) AS tipo_doc,numero, numero_esterno, idanagrafica, DATE_FORMAT(`data`, '%d/%m/%Y') AS data from co_documenti WHERE id=\"$iddocumento\" "; $rs_testata = $dbo->fetchArray($query_fatt); $anno=$rs_testata[0]['anno']; $path_archivio = $rs_testata[0]['path_archivio']; $nome_modulo = "archivio_".$path_archivio."_".$anno; $tipo_doc = $rs_testata[0]['tipo_doc']; $numero_pri=$rs_testata[0]['numero']; $txt_suffisso=$rs_testata[0]['txt_suffisso']; $dir_pdf=$rs_testata[0]['dir_pdf']; // apertura testata documento $query="select * from co_documenti where id='".$iddocumento."'"; $rs_testata = $dbo->fetchArray($query); // apertura righe documento $query="select * from co_righe_documenti where iddocumento='".$iddocumento."' and riga_varia='0'"; $rs_righe = $dbo->fetchArray($query); // apertura anagrafica cedente $query="select * from an_anagrafiche where idanagrafica='".get_var("Azienda predefinita")."'"; $rs_cedente = $dbo->fetchArray($query); // apertura anagrafica cliente $query="select * from an_anagrafiche where idanagrafica='".$rs_testata[0]['idanagrafica']."'"; $rs_cliente = $dbo->fetchArray($query); // terzo intemediario $query="select * from an_anagrafiche where idanagrafica='".get_var("Terzo intermediario")."'"; $rs_intermediario = $dbo->fetchArray($query); // apertura dati banca $query="select * from co_banche where id='".$rs_testata[0]['idbanca_vendite']."'"; $rs_banca = $dbo->fetchArray($query); $scrivi_ritenuta="NO"; // dati del docuemnto $_DocData = substr($rs_testata[0]['data'],0,10); // cerco iva predifinita $query="select percentuale from co_iva where id='".get_var("Iva predefinita")."'"; $rs_iva = $dbo->fetchArray($query); $id_iva_pred=$rs_iva[0]['percentuale']; // impostazioni variabili $_progressivo = $rs_testata[0]['numero_esterno']; $_IdCodice = $rs_cedente[0]['piva']; $_CodFisc = $rs_cedente[0]['codice_fiscale']; $_Regimefiscale= substr(get_var("Regime Fiscale"), 0, 4) ; $_SedeIndirizzo= substr($rs_cedente[0]['indirizzo'], 0, 60); // 60 indirizzo fornitore $_SedeCap= substr($rs_cedente[0]['cap'], 0, 5); // 5 indirizzo fornitore $_SedeLocalita= substr($rs_cedente[0]['citta'], 0, 60); // 60 indirizzo fornitore $_SedePV= substr($rs_cedente[0]['provincia'], 0, 2); // 2 indirizzo fornitore $_SedeNazione= "IT"; // 2 indirizzo fornitore $_Denominazione = substr($rs_cedente[0]['ragione_sociale'], 0, 80); // 80 caratteri intestazione azienda fornitrice $_Denominazione = html_entity_decode($_Denominazione); $_Denominazione=str_replace("'","",$_Denominazione); $_SedeIndirizzo = html_entity_decode($_SedeIndirizzo, ENT_QUOTES); $_Denominazione = html_entity_decode($_Denominazione, ENT_QUOTES); // calcolo nuovo progressivo $_AnnoData = substr($_DocData,2,2); $query = "SELECT MAX(numero) AS max_progressivo FROM co_documenti_progressivo WHERE DATE_FORMAT( data, '%Y' ) = '".date("Y", strtotime($rs_testata[0]['data']))."'"; $rs_progressivo = $dbo->fetchArray($query); $_progressivo = $rs_progressivo[0]['max_progressivo'] + 1; $rs = $dbo->query("INSERT INTO `co_documenti_progressivo`( inviato,esito,idutente,id_documento, data, numero_esterno, numero ,numero_documento ) VALUES( '1','4',\"".$_SESSION['idutente']."\" , \"".$iddocumento."\", NOW(), \"".$_progressivo."_".$_AnnoData."\", \"".$_progressivo."\" , \"".$rs_testata[0]['numero_esterno']."\")"); $_progressivo = $_progressivo."_".$_AnnoData; $_progressivo=substr($_progressivo, 0, 10); // fine calcolo nuovo progressivo if ($rs_cliente[0]['tipo'] == 'Ente pubblico' ){ $_FormatoTrasmissione="FPA12"; $_CodiceDestinatario= $rs_cliente[0]['cod_sogei']; // 6 caratteri dell'ufficio destinazione della fattura } else { $_FormatoTrasmissione="FPR12"; $_CodiceDestinatario= $rs_cliente[0]['cod_sogei']; // 7 caratteri dell'ufficio destinazione della fattura . Se non asseganto deve essere la pec valorrizata 0000000 $_PECDestinatario= $rs_cliente[0]['cod_sogei_pec']; } if ($rs_cliente[0]['tipo'] == 'Privato' ){ $_FormatoTrasmissione="FPR12"; $_CodiceDestinatario= $rs_cliente[0]['cod_sogei']; // 7 caratteri dell'ufficio destinazione della fattura . Se non asseganto deve essere la pec valorrizata 0000000 $_PECDestinatario= $rs_cliente[0]['cod_sogei_pec']; } $esigibilita_iva = $rs_cliente[0]['esigibilita_iva']; if ( $esigibilita_iva == '' ){ $esigibilita_iva ="I"; } // dati del cliente $_ClienteIdCodice= substr($rs_cliente[0]['piva'], 0, 16); // 11-16 caratteri $_ClienteCodFicale= substr($rs_cliente[0]['codice_fiscale'], 0, 16); // 11-16 caratteri $_ClientePartitaIva= substr($rs_cliente[0]['piva'], 0, 16); // 11-16 caratteri $_ClienteDenominazione= substr($rs_cliente[0]['ragione_sociale'], 0, 80); // 80 caratteri $_ClienteIndirizzo= substr($rs_cliente[0]['indirizzo'], 0, 60); // 60 caratteri $_Clientecap= substr($rs_cliente[0]['cap'], 0, 5); // 5 caratteri $_ClienteComune= substr($rs_cliente[0]['citta'], 0, 60); // 80 caratteri $_ClientePv= substr($rs_cliente[0]['provincia'], 0, 2); // 80 caratteri $_ClienteNazione="IT"; $_ClienteDenominazione = html_entity_decode($_ClienteDenominazione); $_ClienteDenominazione=str_replace("'","",$_ClienteDenominazione); $_ClienteIndirizzo = html_entity_decode($_ClienteIndirizzo, ENT_QUOTES); $_ClienteDenominazione = html_entity_decode($_ClienteDenominazione, ENT_QUOTES); do { $code = date('y').secure_random_string(3); } while ($dbo->fetchNum('SELECT `id` FROM `co_documenti` WHERE `codice_xml` = '.prepare($code)) != 0); $dbo->query("UPDATE co_documenti SET codice_xml=\"".$code."\" WHERE id=\"".$iddocumento."\""); $file = "IT".$_IdCodice."_".$code.".xml"; $nfile = $docroot."/files/pa/".$file; // apertura e creazione file xml $myfile = fopen($nfile, "w") or die("Errore apertura file!"); // scrittura schema $_schema = '<?xml version="1.0" encoding="UTF-8"?>' . "\n"; if ($rs_cliente[0]['tipo'] == 'Ente pubblico' ){ $_schema .= '<p:FatturaElettronica versione="FPA12" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"' . "\n"; } else { $_schema .= '<p:FatturaElettronica versione="FPR12" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"' . "\n"; } $_schema .= 'xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2"' . "\n"; $_schema .= 'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' . "\n"; $_schema .= '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">' . "\n"; fwrite($myfile, $_schema); // scrittura intestazione $_Header = '<FatturaElettronicaHeader>' . "\n"; // SEZIONE 1.1 $_Header .= ' <DatiTrasmissione>' . "\n"; $_Header .= ' <IdTrasmittente>' . "\n"; if ($rs_cedente[0]['identificativo_xml'] == 'I' ){ $_Header .= ' <IdPaese>IT</IdPaese>' . "\n"; $_IdCodice_trasmittente=$_IdCodice; if (get_var("Terzo intermediario") > 0 ) { $_IdCodice_trasmittente=$rs_intermediario[0]['piva'];; } $_Header .= ' <IdCodice>' . $_IdCodice_trasmittente . '</IdCodice>' . "\n"; } if ($rs_cedente[0]['identificativo_xml'] == 'C' ){ $_Header .= ' <IdCodice>' . $rs_cedente[0]['codice_fiscale'] . '</IdCodice>' . "\n"; } $_Header .= ' </IdTrasmittente>' . "\n"; $_Header .= ' <ProgressivoInvio>' . $_progressivo . '</ProgressivoInvio>' . "\n"; $_Header .= ' <FormatoTrasmissione>' . $_FormatoTrasmissione . '</FormatoTrasmissione>' . "\n"; $_Header .= ' <CodiceDestinatario>' . $_CodiceDestinatario . '</CodiceDestinatario>' . "\n"; if ( ($_CodiceDestinatario == "0000000") && ($rs_cliente[0]['tipo'] == 'Privato' ) ){ // caso in cui fattura a privato senza codice sogei asegnato necessita invio indirizzo pec if ($_PECDestinatario !='' ) { $_Header .= ' <PECDestinatario>' . $_PECDestinatario . '</PECDestinatario>' . "\n"; } } $_Header .= ' </DatiTrasmissione>' . "\n"; // SEZIONE 1.2 $_Header .= ' <CedentePrestatore>' . "\n"; $_Header .= ' <DatiAnagrafici>' . "\n"; $_Header .= ' <IdFiscaleIVA>' . "\n"; $_Header .= ' <IdPaese>' . $_SedeNazione . '</IdPaese>' . "\n"; $_Header .= ' <IdCodice>' . $_IdCodice . '</IdCodice>' . "\n"; $_Header .= ' </IdFiscaleIVA>' . "\n"; $_Header .= ' <Anagrafica>' . "\n"; $_Header .= ' <Denominazione>' . $_Denominazione . '</Denominazione>' . "\n"; $_Header .= ' </Anagrafica>' . "\n"; $_Header .= ' <RegimeFiscale>' . $_Regimefiscale . '</RegimeFiscale>' . "\n"; $_Header .= ' </DatiAnagrafici>' . "\n"; $_Header .= ' <Sede>' . "\n"; $_Header .= ' <Indirizzo>' . $_SedeIndirizzo . '</Indirizzo>' . "\n"; $_Header .= ' <CAP>' . $_SedeCap . '</CAP>' . "\n"; $_Header .= ' <Comune>' . $_SedeLocalita . '</Comune>' . "\n"; $_Header .= ' <Provincia>' . $_SedePV . '</Provincia>' . "\n"; $_Header .= ' <Nazione>' . $_SedeNazione . '</Nazione>' . "\n"; $_Header .= ' </Sede>' . "\n"; $_Header .= ' </CedentePrestatore>' . "\n"; // SEZIONE 1.3 // Rappresentante fiscale // SEZIONE 1.4 $_Header .= ' <CessionarioCommittente>' . "\n"; $_Header .= ' <DatiAnagrafici>' . "\n"; if ($rs_cliente[0]['identificativo_xml'] == 'I' ){ $_Header .= ' <IdFiscaleIVA>' . "\n"; $_Header .= ' <IdPaese>IT</IdPaese>' . "\n"; $_Header .= ' <IdCodice>' . $_ClientePartitaIva . '</IdCodice>' . "\n"; $_Header .= ' </IdFiscaleIVA>' . "\n"; } $_Header .= ' <CodiceFiscale>' . $_ClienteCodFicale . '</CodiceFiscale>' . "\n"; $_Header .= ' <Anagrafica>' . "\n"; $_Header .= ' <Denominazione>' . $_ClienteDenominazione . '</Denominazione>' . "\n"; $_Header .= ' </Anagrafica>' . "\n"; $_Header .= ' </DatiAnagrafici>' . "\n"; $_Header .= ' <Sede>' . "\n"; $_Header .= ' <Indirizzo>' . $_ClienteIndirizzo . '</Indirizzo>' . "\n"; $_Header .= ' <CAP>' . $_Clientecap . '</CAP>' . "\n"; $_Header .= ' <Comune>' . $_ClienteComune . '</Comune>' . "\n"; $_Header .= ' <Provincia>' . $_ClientePv . '</Provincia>' . "\n"; $_Header .= ' <Nazione>' . $_ClienteNazione . '</Nazione>' . "\n"; $_Header .= ' </Sede>' . "\n"; $_Header .= ' </CessionarioCommittente>' . "\n"; // SEZIONE 1.5 // Terzo intermediario if (get_var("Terzo intermediario") > 0 ){ $_IdCodice_Intermediario=$rs_intermediario[0]['piva']; $_ClienteCodFicale_Intermediario=$rs_intermediario[0]['piva']; $_Demnominzione_Intermediario=$rs_intermediario[0]['ragione_sociale']; $_Demnominzione_Intermediario = html_entity_decode($_Demnominzione_Intermediario, ENT_QUOTES); $_Header .= '<TerzoIntermediarioOSoggettoEmittente>' . "\n"; $_Header .= ' <DatiAnagrafici>' . "\n"; $_Header .= ' <IdFiscaleIVA>' . "\n"; $_Header .= ' <IdPaese>IT</IdPaese>' . "\n"; $_Header .= ' <IdCodice>' . $_IdCodice_Intermediario . '</IdCodice>' . "\n"; $_Header .= ' </IdFiscaleIVA>' . "\n"; $_Header .= ' <CodiceFiscale>' . $_ClienteCodFicale_Intermediario . '</CodiceFiscale>' . "\n"; $_Header .= ' <Anagrafica>' . "\n"; $_Header .= ' <Denominazione>' . $_Demnominzione_Intermediario . '</Denominazione>' . "\n"; $_Header .= ' </Anagrafica>' . "\n"; $_Header .= ' </DatiAnagrafici>' . "\n"; $_Header .= '</TerzoIntermediarioOSoggettoEmittente>' . "\n"; $_Header .= '<SoggettoEmittente>TZ</SoggettoEmittente>' . "\n"; } // CHIUDO SEZIONE 1 $_Header .= '</FatturaElettronicaHeader>' . "\n"; fwrite($myfile, $_Header); // SEZIONE 2.1 $_intestazione = ' <FatturaElettronicaBody>' . "\n"; $_intestazione .= ' <DatiGenerali>' . "\n"; $_intestazione .= ' <DatiGeneraliDocumento>' . "\n"; $_intestazione .= ' <TipoDocumento>' . get_var_tipodoc2($iddocumento,'el_tipodocumento') . '</TipoDocumento>' . "\n"; $_intestazione .= ' <Divisa>' . get_var_tipodoc2($iddocumento,'el_divisa') . '</Divisa>' . "\n"; $_intestazione .= ' <Data>' . $_DocData . '</Data>' . "\n"; $_intestazione .= ' <Numero>' . $rs_testata[0]['numero_documento'] . '</Numero>' . "\n"; // aggiungere se di tipo ritenuta if ( $rs_testata[0]['ritenutaacconto'] != '0.000' ){ $scrivi_ritenuta="SI"; if ( $rs_cedente[0]['tipo'] == 'Privato' ) $rit='RT01' ; if ( $rs_cedente[0]['tipo'] != 'Privato' ) $rit='RT02' ; $prezzo_ritenuta = number_format($rs_testata[0]['ritenutaacconto'],2,".",""); $query="SELECT percentuale FROM co_ritenutaacconto WHERE id='".$rs_testata[0]['idritenutaacconto']."'"; $rs_ritenuta = $dbo->fetchArray($query); $_intestazione .= ' <DatiRitenuta>' . "\n"; $_intestazione .= ' <TipoRitenuta>' . $rit. '</TipoRitenuta>' . "\n"; $_intestazione .= ' <ImportoRitenuta>' . $prezzo_ritenuta. '</ImportoRitenuta>' . "\n"; $_intestazione .= ' <AliquotaRitenuta>' . $rs_ritenuta[0]['percentuale']. '</AliquotaRitenuta>' . "\n"; $_intestazione .= ' <CausalePagamento>' . get_var("Causale ritenuta d'acconto"). '</CausalePagamento>' . "\n"; $_intestazione .= ' </DatiRitenuta>' . "\n"; } // Bollo if ( $rs_testata[0]['bollo'] != '0.000' ){ $prezzo_bollo = number_format($rs_testata[0]['bollo'],2,".",""); $_intestazione .= ' <DatiBollo>' . "\n"; $_intestazione .= ' <BolloVirtuale>SI</BolloVirtuale>' . "\n"; $_intestazione .= ' <ImportoBollo>' . $prezzo_bollo. '</ImportoBollo>' . "\n"; $_intestazione .= ' </DatiBollo>' . "\n"; } $query="SELECT sum(subtotale - sconto) as tot , sum(iva) as totiva FROM `co_righe_documenti` WHERE iddocumento='".$iddocumento."' and riga_varia='0'"; $rs_totale = $dbo->fetchArray($query); $totale_documento = number_format($rs_totale[0]['tot'] + $rs_totale[0]['totiva'] ,2,".",""); $_intestazione .= ' <ImportoTotaleDocumento>' . $totale_documento . '</ImportoTotaleDocumento>' . "\n"; // Fine if ( $rs_testata[0]['el_causale_1'] <> '' ){ $_intestazione .= ' <Causale>' . $rs_testata[0]['el_causale_1']. '</Causale>' . "\n"; } if ( $rs_testata[0]['el_causale_2'] <> '' ){ $_intestazione .= ' <Causale>' . $rs_testata[0]['el_causale_2']. '</Causale>' . "\n"; } $_intestazione .= ' </DatiGeneraliDocumento>' . "\n"; // aggiungo riferimento ordine di acq se presenti if ( $rs_testata[0]['el_idrif'] <> '' ){ $_intestazione .= ' <DatiOrdineAcquisto>' . "\n"; $_intestazione .= ' <RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>' . "\n"; $_intestazione .= ' <IdDocumento>' . $rs_testata[0]['el_idrif']. '</IdDocumento>' . "\n"; $_intestazione .= ' <NumItem>1</NumItem>' . "\n"; $_intestazione .= ' <CodiceCUP>' . $rs_testata[0]['el_id_codicecup']. '</CodiceCUP>' . "\n"; $_intestazione .= ' <CodiceCIG>' . $rs_testata[0]['el_id_codicecig']. '</CodiceCIG>' . "\n"; $_intestazione .= ' </DatiOrdineAcquisto>' . "\n"; } // aggiungo riferimento al documento di trasporto if ( $rs_testata[0]['el_idrif_ddt1'] <> '' ){ $data_ddt=substr($rs_testata[0]['el_idrif_ddt1_data'],0,10); $_intestazione .= ' <DatiDDT>' . "\n"; $_intestazione .= ' <NumeroDDT>' . $rs_testata[0]['el_idrif_ddt1']. '</NumeroDDT>' . "\n"; $_intestazione .= ' <DataDDT>' . $data_ddt. '</DataDDT>' . "\n"; $_intestazione .= ' </DatiDDT>' . "\n"; } $_intestazione .= ' </DatiGenerali>' . "\n"; fwrite($myfile, $_intestazione); // SEZIONE 2.2 $_beniservizi = ' <DatiBeniServizi>' . "\n"; fwrite($myfile, $_beniservizi); $test_iva_vuota="NO"; for( $i=0; $i<sizeof($rs_righe); $i++ ){ $numero_linea=$i + 1; $prezzo_unitario=$rs_righe[$i]['subtotale'] / $rs_righe[$i]['qta']; $prezzo_totale=$rs_righe[$i]['subtotale'] - $rs_righe[$i]['sconto']; $prezzo_unitario = number_format($prezzo_unitario,2,".",""); $prezzo_totale = number_format($prezzo_totale,2,".",""); $imposta = number_format($rs_righe[$i]['iva'],2,".",""); $query="select percentuale , codice_natura_fe from co_iva where id='".$rs_righe[$i]['idiva']."'"; $rs_iva = $dbo->fetchArray($query); $id_iva=$rs_iva[0]['percentuale']; $codice_natura_fe=$rs_iva[0]['codice_natura_fe']; if ( $id_iva == "") { $id_iva="0.00"; $codice_natura_fe="N2"; $test_iva_vuota="SI"; } if ( $rs_righe[$i]['idiva'] == '0') { $id_iva="0.00"; $codice_natura_fe="N2"; $test_iva_vuota="SI"; } $des_tmp=$rs_righe[$i]['descrizione']; $des_tmp = html_entity_decode($des_tmp); $des_tmp = html_entity_decode($des_tmp, ENT_QUOTES); $des_tmp=str_replace("'","",$des_tmp); // $des_tmp=str_replace("°","",$des_tmp); // $des_tmp=str_replace("’","",$des_tmp); $_beniservizi = ' <DettaglioLinee>' . "\n"; $_beniservizi .= ' <NumeroLinea>' .$numero_linea. '</NumeroLinea>' . "\n"; $_beniservizi .= ' <Descrizione>' .$des_tmp. '</Descrizione>' . "\n"; $_beniservizi .= ' <Quantita>' .$rs_righe[$i]['qta']. '</Quantita>' . "\n"; $_beniservizi .= ' <PrezzoUnitario>' .$prezzo_unitario . '</PrezzoUnitario>' . "\n"; if ($rs_righe[$i]['tipo_sconto'] == '2' ){ if ($rs_righe[$i]['sconto_primo'] != '0.0000' ){ $_beniservizi .= ' <ScontoMaggiorazione>' . "\n"; $_beniservizi .= ' <Tipo>SC</Tipo>' . "\n"; $_beniservizi .= ' <Percentuale>' . number_format($rs_righe[$i]['sconto_primo'],2,".","") . '</Percentuale>' . "\n"; $_beniservizi .= ' </ScontoMaggiorazione>' . "\n"; } if ($rs_righe[$i]['sconto_extra'] != '0.0000'){ $_beniservizi .= ' <ScontoMaggiorazione>' . "\n"; $_beniservizi .= ' <Tipo>SC</Tipo>' . "\n"; $_beniservizi .= ' <Percentuale>' . number_format($rs_righe[$i]['sconto_extra'] ,2,".",""). '</Percentuale>' . "\n"; $_beniservizi .= ' </ScontoMaggiorazione>' . "\n"; } if ($rs_righe[$i]['sconto_extra1'] != '0.0000'){ $_beniservizi .= ' <ScontoMaggiorazione>' . "\n"; $_beniservizi .= ' <Tipo>SC</Tipo>' . "\n"; $_beniservizi .= ' <Percentuale>' . number_format($rs_righe[$i]['sconto_extra1'],2,".","") . '</Percentuale>' . "\n"; $_beniservizi .= ' </ScontoMaggiorazione>' . "\n"; } } else { if ($rs_righe[$i]['sconto'] != '0.0000' ){ $_beniservizi .= ' <ScontoMaggiorazione>' . "\n"; $_beniservizi .= ' <Tipo>SC</Tipo>' . "\n"; $_beniservizi .= ' <Importo>' . number_format(($rs_righe[$i]['sconto'] / $rs_righe[$i]['qta'] ),2,".","") . '</Importo>' . "\n"; $_beniservizi .= ' </ScontoMaggiorazione>' . "\n"; } } $_beniservizi .= ' <PrezzoTotale>' .$prezzo_totale. '</PrezzoTotale>' . "\n"; if ( $id_iva =="" ) $id_iva = $id_iva_pred; $_beniservizi .= ' <AliquotaIVA>' .$id_iva. '</AliquotaIVA>' . "\n"; if ( $scrivi_ritenuta =="SI" ) $_beniservizi .= ' <Ritenuta>SI</Ritenuta>' . "\n"; if ( $id_iva == "0.00") { if ( $codice_natura_fe == "") $codice_natura_fe="N3"; $_beniservizi .= ' <Natura>' .$codice_natura_fe . '</Natura>' . "\n"; } $_beniservizi .= ' </DettaglioLinee>' . "\n"; fwrite($myfile, $_beniservizi); } // riepilogo suddiviso per iva $query="SELECT sum(subtotale - sconto) as tot , sum(iva) as totiva ,idiva FROM `co_righe_documenti` WHERE iddocumento='".$iddocumento."' and riga_varia='0' and idiva<>'0' group by idiva"; $rs_riepiologo = $dbo->fetchArray($query); for( $i=0; $i<sizeof($rs_riepiologo); $i++ ){ $query="select percentuale , codice_natura_fe from co_iva where id='".$rs_riepiologo[$i]['idiva']."'"; $rs_iva = $dbo->fetchArray($query); $id_iva=$rs_iva[0]['percentuale']; $prezzo_unitario = number_format($rs_riepiologo[$i]['tot'],2,".",""); $imposta = number_format($rs_riepiologo[$i]['totiva'],2,".",""); $_beniservizi = ' <DatiRiepilogo>' . "\n"; $_beniservizi .= ' <AliquotaIVA>' .$id_iva. '</AliquotaIVA>' . "\n"; if ( $id_iva == "0.00") { $codice_natura_fe=$rs_iva[0]['codice_natura_fe']; if ( $rs_iva[0]['codice_natura_fe'] == "") $codice_natura_fe="N3"; $_beniservizi .= ' <Natura>' .$codice_natura_fe. '</Natura>' . "\n"; } $_beniservizi .= ' <ImponibileImporto>' .$prezzo_unitario. '</ImponibileImporto>' . "\n"; $_beniservizi .= ' <Imposta>' .$imposta. '</Imposta>' . "\n"; // $_beniservizi .= ' <EsigibilitaIVA>I</EsigibilitaIVA>' . "\n"; $_beniservizi .= ' <EsigibilitaIVA>' .$esigibilita_iva. '</EsigibilitaIVA>' . "\n"; $_beniservizi .= ' </DatiRiepilogo>' . "\n"; fwrite($myfile, $_beniservizi); } if ( $test_iva_vuota == "SI") { $_beniservizi1 = ' <DatiRiepilogo>' . "\n"; $_beniservizi1 .= ' <AliquotaIVA>00.00</AliquotaIVA>' . "\n"; $_beniservizi1 .= ' <Natura>N2</Natura>' . "\n"; $_beniservizi1 .= ' <ImponibileImporto>00.00</ImponibileImporto>' . "\n"; $_beniservizi1 .= ' <Imposta>00.00</Imposta>' . "\n"; // $_beniservizi1 .= ' <EsigibilitaIVA>I</EsigibilitaIVA>' . "\n"; $_beniservizi .= ' <EsigibilitaIVA>' .$esigibilita_iva. '</EsigibilitaIVA>' . "\n"; $_beniservizi1 .= ' </DatiRiepilogo>' . "\n"; fwrite($myfile, $_beniservizi1); } $_beniservizi = ' </DatiBeniServizi>' . "\n"; fwrite($myfile, $_beniservizi); // SEZIONE 2.4 $query="SELECT * FROM `co_scadenziario` WHERE iddocumento='".$iddocumento."'"; $rs_scadenze = $dbo->fetchArray($query); if ( $rs_testata[0]['el_modalitapagamento'] <> '' ){ $_datipagamento = ' <DatiPagamento>' . "\n"; $query="SELECT prc FROM `co_pagamenti` WHERE id='".$rs_testata[0]['idpagamento']."'"; $rs_pagamento = $dbo->fetchArray($query); if ( $rs_pagamento[0]['prc'] == '100' ){ $_datipagamento .= ' <CondizioniPagamento>TP02</CondizioniPagamento>' . "\n"; } else { $_datipagamento .= ' <CondizioniPagamento>TP01</CondizioniPagamento>' . "\n"; } for( $i=0; $i<sizeof($rs_scadenze); $i++ ){ $doc_pagamento = substr($rs_scadenze[$i]['scadenza'],0,10); $prezzo_rata = number_format($rs_scadenze[$i]['da_pagare'],2,".",""); $_datipagamento .= ' <DettaglioPagamento>' . "\n"; $_datipagamento .= ' <ModalitaPagamento>' .$rs_testata[0]['el_modalitapagamento']. '</ModalitaPagamento>' . "\n"; $_datipagamento .= ' <DataScadenzaPagamento>' .$doc_pagamento. '</DataScadenzaPagamento>' . "\n"; $_datipagamento .= ' <ImportoPagamento>' .$prezzo_rata. '</ImportoPagamento>' . "\n"; if( sizeof($rs_banca) > 0 ) { $_datipagamento .= ' <IstitutoFinanziario>' .$rs_banca[0]['nome']. '</IstitutoFinanziario>' . "\n"; $_datipagamento .= ' <IBAN>' .$rs_banca[0]['iban']. '</IBAN>' . "\n"; $_datipagamento .= ' <ABI>' .$rs_banca[0]['abi']. '</ABI>' . "\n"; $_datipagamento .= ' <CAB>' .$rs_banca[0]['cab']. '</CAB>' . "\n"; $_datipagamento .= ' <BIC>' .$rs_banca[0]['bic']. '</BIC>' . "\n"; } $_datipagamento .= ' </DettaglioPagamento>' . "\n"; } $_datipagamento .= ' </DatiPagamento>' . "\n"; } fwrite($myfile, $_datipagamento); // SEZIONE 2.5 // Creo l'allegato se allegato $el_allegato=get_var_tipodoc2($iddocumento,'el_allegato'); if ( $el_allegato == '1' ){ $n_pages = 1; $orientation = 'P'; $body_table_params ="style='width:210mm;'"; $font_size = "10pt"; $ptype = "documenti_pa"; if( @file_exists($docroot."/templates/".$ptype."/custom/pdfgen.".$ptype.".php") ){ include( $docroot."/templates/".$ptype."/custom/pdfgen.".$ptype.".php"); } else{ include( $docroot."/templates/".$ptype."/pdfgen.".$ptype.".php"); } include( $docroot."/templates/pdfgen_variables.php" ); // Completamento e output del report $report = str_replace( '$body$', $body, $report ); $report = str_replace( '$footer$', $footer, $report ); $report = str_replace( '$body_table_params$', $body_table_params, $report ); $report = str_replace( '$font_size$', $font_size, $report ); $report = str_replace( '$docroot$', $docroot, $report ); //html $formato = get_var( 'Formato report' ); ( $formato == 'html' ) ? $html=true : $html=false; require_once( $docroot."/lib/spipu/html2pdf/html2pdf.class.php" ); require_once( $docroot."/lib/spipu/html2pdf/_tcpdf_5.0.002/barcodes.php" ); $file_dir = $docroot.'/files/pa/'.$rs_testata[0]['numero_documento'].'.pdf'; try { $html2pdf = new HTML2PDF($orientation, 'A4', 'it', true, 'UTF-8'); $html2pdf->writeHTML($report, $html); $html2pdf->Output( $file_dir , 'F'); } catch(HTML2PDF_exception $e) { echo $e; exit; } if( is_file($file_dir) ){ $file_64=base64_encode(file_get_contents($file_dir)); $_datiallegato = ' <Allegati>' . "\n"; $_datiallegato .= ' <NomeAttachment>' .$rs_testata[0]['numero_documento'].'.pdf'. '</NomeAttachment>' . "\n"; $_datiallegato .= ' <FormatoAttachment>PDF</FormatoAttachment>' . "\n"; $_datiallegato .= ' <Attachment>' .$file_64. '</Attachment>' . "\n"; $_datiallegato .= ' </Allegati>' . "\n"; fwrite($myfile, $_datiallegato); unlink($file_dir); } // chiusura file } $dati_chiusura = ' </FatturaElettronicaBody>' . "\n"; $dati_chiusura .= '</p:FatturaElettronica> ' . "\n"; fwrite($myfile, $dati_chiusura); fclose($myfile); return $file; } function secure_random_string($length = 32) { if (function_exists('openssl_random_pseudo_bytes')) { $bytes = openssl_random_pseudo_bytes($length * 2); if ($bytes === false) { throw new \LengthException('$length is not accurate, unable to generate random string'); } return substr(str_replace(['/', '+', '='], '', base64_encode($bytes)), 0, $length); } return random_string($length); } ?>