gest366/modules/import_pa/upload_modules.php

344 lines
14 KiB
PHP

<?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;
$sconto=0;
$sconto_extra=0;
$sconto_extra1=0;
$tipo_sconto = "0";
$valore_sconto = 0;
$riga=0;
$tipo_sconto =(string)$linea->ScontoMaggiorazione->Tipo;
if ( $tipo_sconto == "SC" ) { // e' presente uno o + sconti
$importo_fisso =(string)$linea_sc->Importo;
if ( $importo_fisso != "" ) {
// e' presente uno sconto fisso
$tipo_sconto = "1";
$sconto= $importo_fisso;
}
else
{
$tipo_sconto = "2";
// e' presente uno sconto in percentuale
// conto quanti sono
foreach($linea->ScontoMaggiorazione as $linea_sc){
$riga=$riga + 1 ;
}
if ( $riga >= 4 ) {
// sommo tutti gli conti in un unico sconto
$riga=0;
$tipo_sconto = "1";
$sconto=0;
$sconto1=0;
$sconto2=0;
$sconto3=0;
$sconto4=0;
$sconto5=0;
foreach($linea->ScontoMaggiorazione as $linea_sc){
if ( $riga == 0 ) {
$valore_sconto =(string)$linea_sc->Percentuale;
$sconto1 = ( ($importo_manuale ) * $valore_sconto)/100;
$sconto=$sconto1;
}
if ( $riga == 1 ) {
$valore_sconto =(string)$linea_sc->Percentuale;
$sconto2 = ( ($importo_manuale - $sconto1) * $valore_sconto)/100;
$sconto= $sconto + $sconto2;
}
if ( $riga == 2 ) {
$valore_sconto =(string)$linea_sc->Percentuale;
$sconto3 = ( ($importo_manuale - $sconto1 - $sconto2 ) * $valore_sconto)/100;
$sconto=$sconto + $sconto3;
}
if ( $riga == 3 ) {
$valore_sconto =(string)$linea_sc->Percentuale;
$sconto4 = ( ($importo_manuale - $sconto1 - $sconto2 - $sconto3) * $valore_sconto)/100;
$sconto=$sconto + $sconto4;
}
if ( $riga == 4 ) {
$valore_sconto =(string)$linea_sc->Percentuale;
$sconto5 = ( ($importo_manuale - $sconto1 - $sconto2 - $sconto3 - $sconto4) * $valore_sconto)/100;
$sconto=$sconto + $sconto5;
}
$riga=$riga + 1 ;
}
}
else
{
$riga=0;
$tipo_sconto = "2";
$sconto=0;
$sconto1=0;
$sconto2=0;
$sconto3=0;
$sconto4=0;
$sconto5=0;
foreach($linea->ScontoMaggiorazione as $linea_sc){
if ( $riga == 0 ) {
$valore_sconto =(string)$linea_sc->Percentuale;
$sconto1 = ( ($importo_manuale ) * $valore_sconto)/100;
$sconto=$sconto1;
}
if ( $riga == 1 ) {
$sconto_extra =(string)$linea_sc->Percentuale;
$sconto2 = ( ($importo_manuale - $sconto1) * $sconto_extra)/100;
$sconto= $sconto + $sconto2;
}
if ( $riga == 2 ) {
$sconto_extra1 =(string)$linea_sc->Percentuale;
$sconto3 = ( ($importo_manuale - $sconto1 - $sconto2 ) * $sconto_extra1)/100;
$sconto=$sconto + $sconto3;
}
$riga=$riga + 1 ;
}
}
}
}
// $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'];
}
// add_articolo_infattura( $iddocumento, $idarticolo, $descrizione, $idiva, $qta, $prezzo*$qta, $sconto, '0', $lotto, $serial, $altro , $idconto,$idtiposconto,$sconto_prc,$sconto_extra,$sconto_extra1 ,$idmagazzino , $riga_canone ,$id_matricola,$per_agente );
addrigafatturapa($iddocumento, $descrizione, $importo_manuale, $qta, $aliva, $um, $ritenuta, $rivalsainps, $rivalsainps_iva, $rivalsainps_ritenuta,$idcodart,$tipo_sconto,$valore_sconto,$sconto,$sconto_extra,$sconto_extra1);
}
$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 !" );
}
?>