<?php
	// 2.3.6

	include_once($docroot."/modules/import_pa/modutil.php");
	include_once($docroot."/modules/documenti/modutil.php");
	include_once($docroot."/modules/articoli/modutil.php");

if ( isset($_FILES['blob']['name'])) {

	// leggo impostazioni
	$legg_codi = get_var("Leggi eventuale codici articolo fornitore") ;
	$agg_prezzo = get_var("Aggiorna prezzo") ;
	$crea_articolo = get_var("Crea articolo") ;


	$filename	= $_FILES['blob']['name'];

	$idtipodocumento = save( $_POST['idintervento'] );	
	
	move_uploaded_file($_FILES["blob"]["tmp_name"], $docroot."/modules/import_pa/upload/".$filename);

	$tmpName = $docroot."/modules/import_pa/upload/".$filename;	
	$copia= $docroot."/files/import_xml/".$filename;
	
	if  ( copy($tmpName,$copia) ){
	
	}
	
	$extensions = array('XML', 'xml');

	$fattura = new SimpleXMLElement($tmpName, null, true);          


	

	$denominazione = $fattura->FatturaElettronicaHeader->CedentePrestatore->DatiAnagrafici->Anagrafica->Denominazione;
	$idsecondario = $fattura->FatturaElettronicaBody->DatiGenerali->DatiGeneraliDocumento->Numero;
	$data_dattura = $fattura->FatturaElettronicaBody->DatiGenerali->DatiGeneraliDocumento->Data;
	
	$file_allegato = $fattura->FatturaElettronicaBody->Allegati->Attachment;
	$file_nome = $fattura->FatturaElettronicaBody->Allegati->NomeAttachment;
	
	
	
	$data = $fattura->FatturaElettronicaBody->DatiGenerali->DatiGeneraliDocumento->Data;
	$codice_ufficio = $fattura->FatturaElettronicaHeader->DatiTrasmissione->CodiceDestinatario;
	$codice_ufficio_trasmittente = $fattura->FatturaElettronicaHeader->DatiTrasmissione->IdTrasmittente->IdCodice;
		
		$denominazione_trasmittente = $fattura->FatturaElettronicaHeader->CedentePrestatore->DatiAnagrafici->Anagrafica->Denominazione;	

		$denominazione_trasmittente_nome = $fattura->FatturaElettronicaHeader->CedentePrestatore->DatiAnagrafici->Anagrafica->Nome;	
		$denominazione_trasmittente_cognome = $fattura->FatturaElettronicaHeader->CedentePrestatore->DatiAnagrafici->Anagrafica->Cognome;	
		
		$denominazione_regime_fiscale = $fattura->FatturaElettronicaHeader->CedentePrestatore->DatiAnagrafici->RegimeFiscale;		
		$denominazione_codicefiscale = $fattura->FatturaElettronicaHeader->CedentePrestatore->DatiAnagrafici->CodiceFiscale;		
		$denominazione_piva = $fattura->FatturaElettronicaHeader->CedentePrestatore->DatiAnagrafici->IdFiscaleIVA->IdCodice;		
		$denominazione_indirizzo = $fattura->FatturaElettronicaHeader->CedentePrestatore->Sede->Indirizzo;		
		$denominazione_cap = $fattura->FatturaElettronicaHeader->CedentePrestatore->Sede->CAP;		
		$denominazione_comune = $fattura->FatturaElettronicaHeader->CedentePrestatore->Sede->Comune;		
		$denominazione_provincia = $fattura->FatturaElettronicaHeader->CedentePrestatore->Sede->Provincia;		
			
	
	
		
	
	
	$ritenuta = $fattura->FatturaElettronicaBody->DatiGenerali->DatiGeneraliDocumento->DatiRitenuta->AliquotaRitenuta;
	$rivalsainps = $fattura->FatturaElettronicaBody->DatiGenerali->DatiGeneraliDocumento->DatiCassaPrevidenziale->AlCassa;
	$rivalsainps_iva = $fattura->FatturaElettronicaBody->DatiGenerali->DatiGeneraliDocumento->DatiCassaPrevidenziale->AliquotaIVA;
	$rivalsainps_ritenuta = $fattura->FatturaElettronicaBody->DatiGenerali->DatiGeneraliDocumento->DatiCassaPrevidenziale->Ritenuta;
	
	$query = "SELECT count(numero_esterno) as esiste FROM co_documenti co where co.numero_esterno='".$idsecondario."'";
	
	$rs = $dbo->fetchArray($query);

	$procedi=$rs[0]['esiste'];
	
	 if( $idtipodocumento == '' ) $procedi="2";

	switch( $procedi){
		case "2":			
			array_push( $_SESSION['errors'], "Nessuna tipologia di documento e' stata selezionata" );
			
			break;
		case "1":			
			array_push( $_SESSION['errors'], "Errore durante l'inserimento del file ".$idsecondario.". Il documento e' giĆ  presente!" );
			break;
		case "0":
			if ( $codice_ufficio == "0000000" ) $codice_ufficio = $codice_ufficio_trasmittente;
		//	$query = "SELECT idanagrafica  FROM an_anagrafiche an where an.cod_sogei='".$codice_ufficio."'";
			$query = "SELECT an_anagrafiche.idanagrafica  FROM an_anagrafiche inner join an_tipianagrafiche_anagrafiche on an_anagrafiche.idanagrafica = an_tipianagrafiche_anagrafiche.idanagrafica
			where ( codice_fiscale='".$denominazione_codicefiscale."' or piva='".$denominazione_piva."' ) and an_tipianagrafiche_anagrafiche.idtipoanagrafica='4'";
			
			
			$rs = $dbo->fetchArray($query);
			$idanagrafica=$rs[0]['idanagrafica'];					
			
			if($idanagrafica==""){
				// inserisco l'anagarfica
				if($denominazione_trasmittente == ""){
					$denominazione_trasmittente=$denominazione_trasmittente_cognome." ".$denominazione_trasmittente_nome;				
				}
				
				$idanagrafica = nuova_anagrafica($codice_ufficio,$denominazione_trasmittente,$denominazione_regime_fiscale,$denominazione_indirizzo,$denominazione_cap,$denominazione_comune,$denominazione_provincia,$denominazione_codicefiscale,$denominazione_piva) ;
			}

			if($idanagrafica==""){
				array_push( $_SESSION['errors'], "Errore, non trovo un'anagrafica con il seguente Codice Sogei: ".$codice_ufficio."!" 	);				
			}else{
			
				$dir=get_var_tipodoc($idtipodocumento,'dir');
				$idconto=get_var_tipodoc($idtipodocumento,'idconto');
				$numerazione_progressiva=get_var_tipodoc($idtipodocumento,'mod_num');
				if( $numerazione_progressiva==0) $numero = get_new_numerofattura( $data );	
				if( $numerazione_progressiva==1) $numero=get_new_numerofattura_multi($data,$idtipodocumento);									
				if( $dir=='entrata' ){
					if( $numerazione_progressiva==0) $numero_esterno = get_new_numerosecondariofattura( $data,$idtipodocumento );
					if( $numerazione_progressiva==1) $numero_esterno = get_new_numerosecondariofattura_multi( $data,$idtipodocumento );
					
				}
				else{
					$numero_esterno = '';
					
				}		
				$numero_documento=$idsecondario;
				
				$note="Generato da documento elettronico ".$filename ;
				//Tipo di pagamento predefinito dall'anagrafica
				$query = "SELECT id FROM co_pagamenti WHERE id=(SELECT idpagamento FROM an_anagrafiche WHERE idanagrafica='".$idanagrafica."')";
				$rs = $dbo->fetchArray($query);
				$idpagamento = $rs[0]['id'];


					$query = "INSERT INTO co_documenti ( nome_file_xml_import , note_aggiuntive , numero, numero_esterno, numero_documento , idanagrafica, idconto, idtipodocumento, idpagamento, data, idstatodocumento, idsede ) VALUES 
					( \"".$filename."\",  \"".$note."\", \"".$numero."\", \"".$numero_documento."\", \"".$numero_documento."\", \"".$idanagrafica."\", \"".$idconto."\", \"".$idtipodocumento."\", \"".$idpagamento."\",\"".$data_dattura."\", (SELECT `id` FROM `co_statidocumento` WHERE `descrizione`='Bozza'), (SELECT idsede_fatturazione FROM an_anagrafiche WHERE idanagrafica=\"".$idanagrafica."\") )";
				
					$dbo->query($query);
					
					$iddocumento = $dbo->last_inserted_id();
				
					foreach($fattura->FatturaElettronicaBody->DatiBeniServizi->DettaglioLinee as $linea){						
						$descrizione = (string)$linea->Descrizione;
						$importo_manuale=(string)$linea->PrezzoUnitario;
						$qta=(string)$linea->Quantita;
						$aliva = (string)$linea->AliquotaIVA;
						$um = (string)$linea->UnitaMisura;		
						
						$codice_tipo	=(string)$linea->CodiceArticolo->CodiceTipo;
						$codicevalore	=(string)$linea->CodiceArticolo->CodiceValore;	

						$tipo_sconto	=(string)$linea->ScontoMaggiorazione->Tipo;		
						$sconto="0";		
						if ( $tipo_sconto == "SC" ) {
							$tipo_sconto = "2";
							$valore_sconto	=(string)$linea->ScontoMaggiorazione->Percentuale;								
							$sconto = ($importo_manuale * $valore_sconto)/100;															
							
							$importo_fisso	=(string)$linea->ScontoMaggiorazione->Importo;	
							if ( $importo_fisso != "" ) {
								$tipo_sconto = "2";
								$sconto=$importo_fisso;
							}
						}
							else
						{
							$tipo_sconto = "0";
							$valore_sconto	= "0";
						}	
						
								
						
						
						
						
						
						
						
						$idcodart ="0";
						
						if ( ( $legg_codi =="1" ) && ( $codicevalore != '' )) {
							$query = "SELECT id  FROM mg_articoli where cod_fornitore='".$codicevalore."'";			
							$rs_mag = $dbo->fetchArray($query);
							$idcodart = "0";
							if( $rs_mag[0]['id'] != "" ){
								$idcodart=$rs_mag[0]['id'];
								// testo se aggiornare il prezzo di acq
								if ( $agg_prezzo == "1" ) {
									$dbo->query("UPDATE mg_articoli SET prezzo_acquisto=\"".$importo_manuale."\" WHERE id=\"".$idcodart."\"");									
								}
							
							}
						}
						if ( ( $crea_articolo =="1" ) && ( $codicevalore != '' ) & ( $idcodart == '0')) {
							// lo inserisco come nuovo
						//	$query = "INSERT INTO mg_articoli(cod_fornitore,codice, descrizione, prezzo_acquisto, qta , attivo) VALUES (\"$codicevalore\",\"$codicevalore\", \"$descrizione\",\"$importo_manuale\",\"$qta\",  1)";
							$query = "INSERT INTO mg_articoli(cod_fornitore,codice, descrizione, prezzo_acquisto,  attivo) VALUES (\"$codicevalore\",\"$codicevalore\", \"$descrizione\",\"$importo_manuale\",  1)";
							$dbo->query($query);
							$query = "SELECT * FROM mg_articoli WHERE cod_fornitore=\"$codicevalore\"";
							$rs = $dbo->fetchArray($query);
							$idcodart = $rs[0]['id'];	
						}
						
						
						
						

						addrigafatturapa($iddocumento, $descrizione, $importo_manuale, $qta, $aliva, $um, $ritenuta, $rivalsainps, $rivalsainps_iva, $rivalsainps_ritenuta,$idcodart,$tipo_sconto,$valore_sconto,$sconto);
					}
					
				
				
				$module_name_path= $docroot."/files/import_xml/";
				$rs = $dbo->query("INSERT INTO `zz_files`( nome, data, filename, module, externalid,categoria ) VALUES( 'File elettronico', NOW(), \"".$filename."\", 'import_xml', \"".$iddocumento."\",'Import Fattura elettronica' )");
				
				
				// testo presenza alelgato
					$file_allegato = base64_decode($fattura->FatturaElettronicaBody->Allegati->Attachment);
					$file_nome = $fattura->FatturaElettronicaBody->Allegati->NomeAttachment;				
					$estensione=$fattura->FatturaElettronicaBody->Allegati->FormatoAttachment;
					$extension = '';
					if (!empty($estensione)) {
						$extension = '.'.strtolower($estensione);
					}
					
					file_put_contents($module_name_path.$file_nome.$extension, $file_allegato);

					if ($file_nome != '' ) {
						$rs = $dbo->query("INSERT INTO `zz_files`( nome, data, filename, module, externalid,categoria ) VALUES( 'Documento Allegato', NOW(), \"".$file_nome.$extension."\", 'import_xml', \"".$iddocumento."\",'Import Fattura elettronica' )");
					}
				// fine test
				
				header( "Location: ".$rootdir."/editor.php?id_module=14&id_record=".$iddocumento );										
				array_push( $_SESSION['infos'], "Aggiunta Documento numero ".$numero.", ".$idsecondario."!" );
				exit;				
				
				
			}
			break;
		
	}

	   

} else {
	 
	array_push( $_SESSION['errors'], "Nessun file selezionato !" );

}

?>