gest366/lib/function_fatpa.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("&#039;","",$_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("&#039;","",$_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("&#039;","",$des_tmp);
// $des_tmp=str_replace("&deg;","",$des_tmp);
// $des_tmp=str_replace("&rsquo;","",$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);
}
?>