252 lines
11 KiB
PHP
252 lines
11 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;
|
||
|
|
||
|
$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 !" );
|
||
|
|
||
|
}
|
||
|
|
||
|
?>
|
||
|
|