670 lines
27 KiB
PHP
670 lines
27 KiB
PHP
|
<?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);
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
?>
|