<?php
	
	function add_storico_doc($iddocumento,$descrizione){
		global $dbo;
		$dbo->query("INSERT INTO zz_log_documenti( iddocumento, idutente,data_log,username,descrizione ) VALUES( \"".$iddocumento."\", \"".$_SESSION['idutente']."\",NOW(),\"".$_SESSION['username']."\",\"".$descrizione."\" )");
	}
	
	
	function get_new_numerofattura_multi( $data , $tipodoc ){
		global $dbo;
		global $dir;

	
		$id_gruppodoc=get_var_tipodoc($tipodoc,'id_gruppo_tipologia');
		
		if( $id_gruppodoc=='0' )
			$query = "SELECT IFNULL(MAX(numero),'0') AS max_numerofattura FROM co_documenti WHERE DATE_FORMAT( data, '%Y' ) = '".date("Y", strtotime($data))."' AND 
			idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir='".$dir."' and idtipodocumento='".$tipodoc."' )   ORDER BY CAST(numero AS UNSIGNED) DESC LIMIT 0,1";
		else
			$query = "SELECT IFNULL(MAX(numero),'0') AS max_numerofattura FROM co_documenti WHERE DATE_FORMAT( data, '%Y' ) = '".date("Y", strtotime($data))."' and id_gruppo_tipologia='".$id_gruppodoc."' AND 
			idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir='".$dir."'  )   ORDER BY CAST(numero AS UNSIGNED) DESC LIMIT 0,1";
		
		
		$rs = $dbo->fetchArray($query);


		$numero = $rs[0]['max_numerofattura']+1;

		return $numero;
	}
	
	function get_new_numerosecondariofattura_multi( $data , $tipodoc ){
		global $dbo;
		global $dir;
		global $idtipodocumento;

		$id_gruppodoc=get_var_tipodoc($tipodoc,'id_gruppo_tipologia');

		
		if( $id_gruppodoc=='0' )
			$query = "SELECT numero_esterno FROM co_documenti WHERE DATE_FORMAT( data, '%Y' ) = '".date("Y", strtotime($data) )."'  
			AND idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir='".$dir."' and idtipodocumento='".$tipodoc."' )  ORDER BY CAST(numero_esterno AS UNSIGNED) DESC LIMIT 0,1";
		else
			$query = "SELECT numero_esterno FROM co_documenti WHERE DATE_FORMAT( data, '%Y' ) = '".date("Y", strtotime($data) )."' and id_gruppo_tipologia='".$id_gruppodoc."' 
			AND idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir='".$dir."' )  ORDER BY CAST(numero_esterno AS UNSIGNED) DESC LIMIT 0,1";
		
		
		$rs = $dbo->fetchArray($query);
		$numero_secondario = $rs[0]['numero_esterno'];

		//Calcolo il numero secondario se stabilito dalle impostazioni e se documento di vendita
		$formato_numero_secondario=get_var_tipodoc($tipodoc,'var_formato_num');
		
		if( $numero_secondario=='' )
			$numero_secondario = $formato_numero_secondario;

	//	if( $formato_numero_secondario!='' && $dir=='entrata' )
		if( $formato_numero_secondario!=''  )	
			$numero_esterno = get_next_code( $numero_secondario, 1, $formato_numero_secondario );
		else
			$numero_esterno = '';
			

		return $numero_esterno;
	}
	
	
	
	/**
	  * Funzione per generare un nuovo numero per la fattura
	  */
	function get_new_numerofattura( $data ){
		global $dbo;
		global $dir;

		$query = "SELECT IFNULL(MAX(numero),'0') AS max_numerofattura FROM co_documenti WHERE DATE_FORMAT( data, '%Y' ) = '".date("Y", strtotime($data))."' AND idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir='".$dir."') ORDER BY CAST(numero AS UNSIGNED) DESC LIMIT 0,1";
		$rs = $dbo->fetchArray($query);

		$numero = $rs[0]['max_numerofattura']+1;

		return $numero;
	}
	
	
	/**
	  * Funzione per calcolare il numero secondario successivo utilizzando la maschera dalle impostazioni
	  */
	function get_new_numerosecondariofattura( $data ){
		global $dbo;
		global $dir;
		global $idtipodocumento;
	
		//DATE_FORMAT( data, '%Y' ) = '".date("Y", strtotime($data))."'
		$query = "SELECT numero_esterno FROM co_documenti WHERE DATE_FORMAT( data, '%Y' ) = '".date("Y", strtotime ( '+3 month' , strtotime ( $data) ))."' AND idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir='".$dir."') ORDER BY CAST(numero_esterno AS UNSIGNED) DESC LIMIT 0,1";
		$rs = $dbo->fetchArray($query);
		$numero_secondario = $rs[0]['numero_esterno'];

		//Calcolo il numero secondario se stabilito dalle impostazioni e se documento di vendita
		$formato_numero_secondario = get_var("Formato numero secondario fattura");

		if( $numero_secondario=='' )
			$numero_secondario = $formato_numero_secondario;


	//	if( $formato_numero_secondario!='' && $dir=='entrata' )
		if( $formato_numero_secondario!=''  )	
			$numero_esterno = get_next_code( $numero_secondario, 1, $formato_numero_secondario );
		else
			$numero_esterno = '';

		return $numero_esterno;
	}
	
	
	/**
	  * Elimina una scadenza in base al codice documento
	  */
	function elimina_scadenza( $iddocumento ){
		global $dbo;

		$query2 = "DELETE FROM co_scadenziario WHERE iddocumento='".$iddocumento."'";
		$dbo->query($query2);
	}
	
	
	/**
	  * Funzione per ricalcolare lo scadenziario di una determinata fattura
	  * $iddocumento	string		E' l'id del documento di cui ricalcolare lo scadenziario
	  * $pagamento		string		Nome del tipo di pagamento. Se è vuoto lo leggo da co_pagamenti_documenti, perché significa che devo solo aggiornare gli importi
	  */
	function aggiungi_scadenza( $iddocumento, $pagamento='' ){
		global $dbo;

		$totale_da_pagare = 0.00;
		$totale_fattura = get_totale_fattura($iddocumento);
		$netto_fattura = get_netto_fattura($iddocumento);
		$imponibile_fattura = get_imponibile_fattura($iddocumento);
		$totale_iva = abs($totale_fattura)-abs($imponibile_fattura);
	
	
		
	
		//Lettura data di emissione fattura
		$query3 = "SELECT split_p,ritenutaacconto, data , bollo , idbanca_vendite FROM co_documenti WHERE id='".$iddocumento."'";
		$rs = $dbo->fetchArray($query3);
		$data = $rs[0]['data'];
		$ritenutaacconto = $rs[0]['ritenutaacconto'];
		$idbanca = $rs[0]['idbanca_vendite'];
		$split_p = $rs[0]['split_p'];
		
		$query4 = "SELECT nome  FROM co_banche WHERE id='".$idbanca."'";
		$rs_banca = $dbo->fetchArray($query4);
		$nome_banca = $rs_banca[0]['nome'];
		
		
		// tolgo il bollo dalla scadenza
		// $netto_fattura=$netto_fattura - $rs[0]['bollo'];
		if ( $split_p == '1' ) $netto_fattura=abs($netto_fattura)-abs($totale_iva);
		
		//Verifico se la fattura è di acquisto o di vendita per scegliere che segno mettere nel totale
		$query2 = "SELECT dir FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_documenti.id='$iddocumento'";
		$rs2 = $dbo->fetchArray($query2);
		$dir = $rs2[0]['dir'];
	
		/*
			Inserisco la nuova scadenza (anche più di una riga per pagamenti multipli
		*/
		//Se il pagamento non è specificato lo leggo dal documento
		if( $pagamento=='' ){
			$query = "SELECT descrizione FROM co_pagamenti WHERE id=(SELECT idpagamento FROM co_documenti WHERE id='".$iddocumento."')";
			$rs = $dbo->fetchArray($query);
			$pagamento = $rs[0]['descrizione'];
		}

		$query4 = "SELECT * FROM co_pagamenti WHERE descrizione=\"".$pagamento."\"";
		$rs = $dbo->fetchArray($query4);
		for( $i=0; $i<sizeof($rs); $i++ ){
			 // X giorni esatti
			if ($rs[$i]['giorno'] == 0) {
				$scadenza = date('Y-m-d', strtotime($data.' +'.$rs[$i]['num_giorni'].' day'));
			}

			// Ultimo del mese
			elseif ($rs[$i]['giorno'] < 0) {
				$date = new DateTime($data);

				$add = floor($rs[$i]['num_giorni'] / 30);
				for ($c = 0; $c < $add; ++$c) {
					$date->modify('last day of next month');
				}

				// Ultimo del mese più X giorni
				$giorni = -$rs[$i]['giorno'] - 1;
				if ($giorni > 0) {
					$date->modify('+'.($giorni).' day');
				} else {
					$date->modify('last day of this month');
				}

				$scadenza = $date->format('Y-m-d');
			}

			// Giorno preciso del mese
			else {
				$scadenza = date('Y-m-'.$rs[$i]['giorno'], strtotime($data.' +'.$rs[$i]['num_giorni'].' day'));
			}

			//All'ultimo ciclo imposto come cifra da pagare il totale della fattura meno gli importi già inseriti in scadenziario per evitare di inserire cifre arrotondate "male"
			if( $i==(sizeof($rs)-1) ){
				$da_pagare = number_format($netto_fattura,2,".","")-number_format($totale_da_pagare,2,".","");
			}
			
			//Totale da pagare (totale x percentuale di pagamento nei casi pagamenti multipli)
			else{
				$da_pagare = number_format($netto_fattura/100*$rs[$i]['prc'], 2, ".", "");
			}
			$totale_da_pagare += abs($da_pagare);
			
			if( $dir=='uscita' )
				$da_pagare = -$da_pagare;

			$dbo->query("INSERT INTO co_scadenziario(iddocumento, banca,idbanca , data_emissione, scadenza, da_pagare, pagato, tipo) VALUES('$iddocumento','$nome_banca','$idbanca', '$data', '$scadenza', '$da_pagare', '0', 'fattura')");
		}
		
		//Se c'è una ritenuta d'acconto, la aggiungo allo scadenzario
		if( $dir == "uscita" && $ritenutaacconto > 0 ){
			$dbo->query("INSERT INTO co_scadenziario(iddocumento, banca,idbanca , data_emissione, scadenza, da_pagare, pagato, tipo) VALUES('$iddocumento', '$nome_banca','$idbanca', '$data', '".date("Y-m", strtotime($data." +1 month"))."-15', '".-$ritenutaacconto."', '0', 'ritenutaacconto')");
		}
		
		return true;
	}
	
	
	function aggiungi_scadenza_OLD( $iddocumento, $pagamento='' ){
		global $dbo;

		$totale_da_pagare = 0.00;
		$totale_fattura = get_totale_fattura($iddocumento);
		$netto_fattura = get_netto_fattura($iddocumento);
		$imponibile_fattura = get_imponibile_fattura($iddocumento);
		$totale_iva = abs($totale_fattura)-abs($imponibile_fattura);
	
	
		
	
		//Lettura data di emissione fattura
		$query3 = "SELECT ritenutaacconto, data , bollo , idbanca_vendite FROM co_documenti WHERE id='".$iddocumento."'";
		$rs = $dbo->fetchArray($query3);
		$data = $rs[0]['data'];
		$ritenutaacconto = $rs[0]['ritenutaacconto'];
		$idbanca = $rs[0]['idbanca_vendite'];
		
		$query4 = "SELECT nome  FROM co_banche WHERE id='".$idbanca."'";
		$rs_banca = $dbo->fetchArray($query4);
		$nome_banca = $rs_banca[0]['nome'];
		
		
		// tolgo il bollo dalla scadenza
		// $netto_fattura=$netto_fattura - $rs[0]['bollo'];
		
		
		//Verifico se la fattura è di acquisto o di vendita per scegliere che segno mettere nel totale
		$query2 = "SELECT dir FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_documenti.id='$iddocumento'";
		$rs2 = $dbo->fetchArray($query2);
		$dir = $rs2[0]['dir'];
	
		/*
			Inserisco la nuova scadenza (anche più di una riga per pagamenti multipli
		*/
		//Se il pagamento non è specificato lo leggo dal documento
		if( $pagamento=='' ){
			$query = "SELECT descrizione FROM co_pagamenti WHERE id=(SELECT idpagamento FROM co_documenti WHERE id='".$iddocumento."')";
			$rs = $dbo->fetchArray($query);
			$pagamento = $rs[0]['descrizione'];
		}

		$query4 = "SELECT * FROM co_pagamenti WHERE descrizione=\"".$pagamento."\"";
		$rs = $dbo->fetchArray($query4);
		for( $i=0; $i<sizeof($rs); $i++ ){
			//X giorni esatti
			if( $rs[$i]['giorno']==0 )
				$scadenza = date( "Y-m-d", strtotime($data." +".$rs[$i]['num_giorni']." day") );
		
			//Ultimo del mese
			else if( $rs[$i]['giorno']==-1 )
				$scadenza = date( "Y-m-t", strtotime($data." +".$rs[$i]['num_giorni']." day") );

			//Giorno preciso del mese
			else
				$scadenza = date( "Y-m-".$rs[$i]['giorno'], strtotime($data." +".$rs[$i]['num_giorni']." day") );

			//All'ultimo ciclo imposto come cifra da pagare il totale della fattura meno gli importi già inseriti in scadenziario per evitare di inserire cifre arrotondate "male"
			if( $i==(sizeof($rs)-1) ){
				$da_pagare = number_format($netto_fattura,2,".","")-number_format($totale_da_pagare,2,".","");
			}
			
			//Totale da pagare (totale x percentuale di pagamento nei casi pagamenti multipli)
			else{
				$da_pagare = number_format($netto_fattura/100*$rs[$i]['prc'], 2, ".", "");
			}
			$totale_da_pagare += abs($da_pagare);
			
			if( $dir=='uscita' )
				$da_pagare = -$da_pagare;

			$dbo->query("INSERT INTO co_scadenziario(iddocumento, banca,idbanca , data_emissione, scadenza, da_pagare, pagato, tipo) VALUES('$iddocumento','$nome_banca','$idbanca', '$data', '$scadenza', '$da_pagare', '0', 'fattura')");
		}
		
		//Se c'è una ritenuta d'acconto, la aggiungo allo scadenzario
		if( $dir == "uscita" && $ritenutaacconto > 0 ){
			$dbo->query("INSERT INTO co_scadenziario(iddocumento, banca,idbanca , data_emissione, scadenza, da_pagare, pagato, tipo) VALUES('$iddocumento', '$nome_banca','$idbanca', '$data', '".date("Y-m", strtotime($data." +1 month"))."-15', '".-$ritenutaacconto."', '0', 'ritenutaacconto')");
		}
		
		return true;
	}
	
	
	
	/**
	  * Funzione per aggiornare lo stato dei pagamenti nello scadenziario
	  * $iddocumento			int			ID della fattura
	  * $totale_pagato			float		Totale importo pagato
	  * $data_pagamento			datetime	Data in cui avviene il pagamento (yyyy-mm-dd)
	  */
	function aggiorna_scadenziario( $iddocumento, $totale_pagato, $data_pagamento ){
		global $dbo;

		//Lettura righe scadenziario
		$query = "SELECT * FROM co_scadenziario WHERE iddocumento='$iddocumento' AND ABS(pagato) < ABS(da_pagare) ORDER BY scadenza ASC";
		$rs = $dbo->fetchArray($query);
		$netto_fattura = get_netto_fattura( $iddocumento );
		$rimanente = $netto_fattura;
		$rimanente_da_pagare = abs($rs[0]['pagato']) + $totale_pagato;

		//Verifico se la fattura è di acquisto o di vendita per scegliere che segno mettere nel totale
		$query2 = "SELECT dir FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_documenti.id='$iddocumento'";
		$rs2 = $dbo->fetchArray($query2);
		$dir = $rs2[0]['dir'];
		
		//Ciclo tra le rate dei pagamenti per inserire su `pagato` l'importo effettivamente pagato.
		//Nel caso il pagamento superi la rata, devo distribuirlo sulle rate successive
		for( $i=0; $i<sizeof($rs); $i++ ){
			if( $rimanente_da_pagare > 0 ){
				//...riempio il pagato della rata con il totale della rata stessa se ho ricevuto un pagamento superiore alla rata stessa
				if( abs($rimanente_da_pagare) >= abs($rs[$i]['da_pagare']) ){
					$pagato = abs($rs[$i]['da_pagare']);
					$rimanente_da_pagare -= abs($rs[$i]['da_pagare']);
				}
		
				else{
					//Se si inserisce una somma maggiore al dovuto, tengo valido il rimanente per saldare il tutto...
					if( abs($rimanente_da_pagare) > abs($rs[$i]['da_pagare']) ){
						$pagato = abs($rs[$i]['da_pagare']);
						$rimanente_da_pagare -= abs($rs[$i]['da_pagare']);
					}
			
					//...altrimenti aggiungo l'importo pagato
					else{
						$pagato = abs($rimanente_da_pagare);
						$rimanente_da_pagare -= abs($rs[$i]['da_pagare']) - abs($rs[$i]['pagato']);
					}
				}
		
				if( $dir=='uscita' ){
					$rimanente_da_pagare = -$rimanente_da_pagare;
				}
			
				if( $pagato > 0 ){
					if( $dir == 'uscita' ){
						$dbo->query("UPDATE co_scadenziario SET pagato='".(-$pagato)."', data_pagamento='".$data_pagamento."' WHERE id='".$rs[$i]['id']."'");
					} else {
						$dbo->query("UPDATE co_scadenziario SET pagato='".$pagato."', data_pagamento='".$data_pagamento."' WHERE id='".$rs[$i]['id']."'");
					}
				}
			}
		}
	}
	
	

	
	/**
	  * Elimina i movimenti collegati ad una fattura
	  */
	function elimina_movimento( $iddocumento, $anche_prima_nota=0 ){
		global $dbo;
		
		$query2 = "DELETE FROM co_movimenti WHERE iddocumento='".$iddocumento."' AND primanota=$anche_prima_nota";
		$dbo->query($query2);
	}




	/**
	  * Funzione per aggiungere la fattura in prima nota
	  * $iddocumento	string		E' l'id del documento da collegare alla prima nota
	  * $dir			string		Direzione dell'importo (entrata, uscita)
	  * $primanota		boolean		Indica se il movimento è un movimento di prima nota o un movimento normale (di default movimento normale)
	  */
	
	function aggiungi_movimento( $iddocumento, $dir, $primanota=0 ){
		global $dbo;

		//Totale marca da bollo, inps, ritenuta, idagente
		$query = "SELECT data, bollo, ritenutaacconto, rivalsainps FROM co_documenti WHERE id='".$iddocumento."'";
		$rs = $dbo->fetchArray($query);
		$totale_bolli = $rs[0]['bollo'];
		$totale_ritenutaacconto = $rs[0]['ritenutaacconto'];
		$totale_rivalsainps = $rs[0]['rivalsainps'];
		$data_documento = $rs[0]['data'];



		$netto_fattura = get_netto_fattura($iddocumento);
		$totale_fattura = get_totale_fattura($iddocumento);
		$imponibile_fattura = get_imponibile_fattura($iddocumento);

		//Leggo l'iva predefinita per calcolare l'iva aggiuntiva sulla rivalsa inps
		$qi = "SELECT percentuale FROM co_iva WHERE id='".get_var("Iva predefinita")."'";
		$rsi = $dbo->fetchArray($qi);
		$iva_rivalsainps = $totale_rivalsainps/100*$rsi[0]['percentuale'];


		//Lettura iva indetraibile fattura
		$query = "SELECT SUM(iva_indetraibile) AS iva_indetraibile FROM co_righe_documenti GROUP BY iddocumento HAVING iddocumento='$iddocumento'";
		$rs = $dbo->fetchArray($query);
		$iva_indetraibile_fattura = $rs[0]['iva_indetraibile'];

		//Lettura iva delle righe in fattura
		$query = "SELECT SUM(iva) AS iva FROM co_righe_documenti GROUP BY iddocumento HAVING iddocumento='$iddocumento'";
		$rs = $dbo->fetchArray($query);
		$iva_fattura = $rs[0]['iva'] + $iva_rivalsainps - $iva_indetraibile_fattura;


		//Imposto i segni + e - in base se la fattura è di acquisto o vendita
		if( $dir=='uscita' ){
			$segno_mov1_cliente = -1;
			$segno_mov2_ricavivendite = 1;
			$segno_mov3_iva = 1;

			$segno_mov4_inps = 1;
			$segno_mov5_ritenutaacconto = -1;
			$segno_mov6_bollo = 1;

			//Lettura conto fornitore
			$query = "SELECT idconto_fornitore FROM an_anagrafiche INNER JOIN co_documenti ON an_anagrafiche.idanagrafica=co_documenti.idanagrafica WHERE co_documenti.id='".$iddocumento."'";
			$rs = $dbo->fetchArray($query);
			$idconto_controparte = $rs[0]['idconto_fornitore'];

			if( $idconto_controparte == '' ){
				$query = "SELECT id FROM co_pianodeiconti3 WHERE descrizione='Riepilogativo fornitori'";
				$rs = $dbo->fetchArray($query);
				$idconto_controparte = $rs[0]['idconto_fornitore'];
			}
		}

		else{
			$segno_mov1_cliente = 1;
			$segno_mov2_ricavivendite = -1;
			$segno_mov3_iva = -1;

			$segno_mov4_inps = -1;
			$segno_mov5_ritenutaacconto = 1;
			$segno_mov6_bollo = -1;

			//Lettura conto cliente
			$query = "SELECT idconto_cliente FROM an_anagrafiche INNER JOIN co_documenti ON an_anagrafiche.idanagrafica=co_documenti.idanagrafica WHERE co_documenti.id='".$iddocumento."'";
			$rs = $dbo->fetchArray($query);
			$idconto_controparte = $rs[0]['idconto_cliente'];

			if( $idconto_controparte == '' ){
				$query = "SELECT id FROM co_pianodeiconti3 WHERE descrizione='Riepilogativo clienti'";
				$rs = $dbo->fetchArray($query);
				$idconto_controparte = $rs[0]['idconto_cliente'];
			}
		}

		//Lettura info fattura
		$query = "SELECT *, co_documenti.note, co_documenti.idpagamento, co_documenti.id AS iddocumento, co_statidocumento.descrizione AS `stato`, co_tipidocumento.descrizione AS `descrizione_tipodoc` FROM ((co_documenti LEFT OUTER JOIN co_statidocumento ON co_documenti.idstatodocumento=co_statidocumento.id) INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica) INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_documenti.id=\"$iddocumento\"";
		$rs = $dbo->fetchArray( $query );
		$n = sizeof($rs);
		$data = $rs[0]['data'];
		$idanagrafica = $rs[0]['idanagrafica'];
		$ragione_sociale = $rs[0]['ragione_sociale'];
		$stato = $rs[0]['stato'];
		$idconto = $rs[0]['idconto'];

		//Scrivo il movimento solo se è stato selezionato un conto
		if( $idconto!='' ){
			$idmastrino = get_new_idmastrino();

			//Prendo il numero doc. esterno se c'è, altrimenti quello normale
			if( $rs[0]['numero_esterno']!='' )
				$numero = $rs[0]['numero_esterno'];
			else
				$numero = $rs[0]['numero'];

			$descrizione = $rs[0]['descrizione_tipodoc']." numero $numero";

			/*
				Il mastrino si apre con almeno 3 righe di solito (esempio fattura di vendita):
				1) dare imponibile+iva al conto cliente
				2) avere imponibile sul conto dei ricavi
				3) avere iva sul conto dell'iva a credito (ed eventuale iva indetraibile sul rispettivo conto)

				aggiuntivo:
				4) eventuale rivalsa inps
				5) eventuale ritenuta d'acconto
				6) eventuale marca da bollo
			*/
			//1) Aggiungo la riga del conto cliente
			
				$query2 = "INSERT INTO co_movimenti( idmastrino, data, data_documento, iddocumento, idanagrafica,  descrizione, idconto, totale, primanota ) VALUES
				( \"$idmastrino\", \"$data\", \"$data_documento\", \"$iddocumento\", \"\",  \"$descrizione del ".date("d/m/Y", strtotime($data))." ($ragione_sociale)\", \"".$idconto_controparte."\", 
				\"".(($totale_fattura+$totale_bolli)*$segno_mov1_cliente)."\", $primanota )";
				$dbo->query($query2);
	


			//2) Aggiungo il totale sul conto dei ricavi/spese scelto
			//Lettura descrizione conto ricavi/spese
			$query = "SELECT descrizione FROM co_pianodeiconti3 WHERE id='$idconto'";
			$rs = $dbo->fetchArray($query);
			$descrizione_conto = $rs[0]['descrizione'];

			
			//se non specificato l'idconto per la riga seleziono quello della fattura
			$query = "SELECT id, idconto AS idconto_rd, IF(idconto!=0, idconto, '".$idconto."' ) AS idconto, SUM(subtotale-sconto) AS imponibile FROM co_righe_documenti WHERE iddocumento='$iddocumento' GROUP BY idconto";
			$rs = $dbo->fetchArray($query);
			
			for( $i=0; $i<sizeof($rs); $i++ ){
				
				$imponibile_righe_fattura = $rs[$i]['imponibile'];
				$query2 = "INSERT INTO co_movimenti( idmastrino, data, data_documento, iddocumento, idanagrafica,  descrizione, idconto, totale, primanota ) VALUES
				( \"$idmastrino\", \"$data\", \"$data_documento\", \"$iddocumento\", \"\",  \"$descrizione del ".date("d/m/Y", strtotime($data))." ($ragione_sociale)\", 
				\"".$rs[$i]['idconto']."\", \"".($imponibile_righe_fattura*$segno_mov2_ricavivendite)."\", $primanota )";
				$dbo->query($query2);
				
				/* se idconto della riga è 0 lo allineo con l'idconto della fattura*/
				if ($rs[$i]['idconto_rd'] == 0){
					$queryrd = "UPDATE co_righe_documenti SET idconto = ".$rs[$i]['idconto']." WHERE id = ".$rs[$i]['id']." ";
					$dbo->query($queryrd);
				}
				
			}
			



			//3) Aggiungo il totale sul conto dell'iva
			//Lettura id conto iva
			if( $iva_fattura!=0 ){
				( $dir=='entrata' ) ? $descrizione_conto_iva="Iva su vendite" : $descrizione_conto_iva="Iva su acquisti";
				$query = "SELECT id, descrizione FROM co_pianodeiconti3 WHERE descrizione='$descrizione_conto_iva'";
				$rs = $dbo->fetchArray($query);
				$idconto_iva = $rs[0]['id'];
				$descrizione_conto_iva = $rs[0]['descrizione'];

				$query2 = "INSERT INTO co_movimenti( idmastrino, data, data_documento, iddocumento, idanagrafica,  descrizione, idconto, totale, primanota ) VALUES
				( \"$idmastrino\", \"$data\", \"$data_documento\", \"$iddocumento\", \"\",  \"$descrizione del ".date("d/m/Y", strtotime($data))." ($ragione_sociale)\", \"$idconto_iva\", \"".($iva_fattura*$segno_mov3_iva)."\", $primanota )";
				$dbo->query($query2);
			}

			//Lettura id conto iva indetraibile
			if( $iva_indetraibile_fattura!=0 ){
				$descrizione_conto_iva2="Iva indetraibile";
				$query = "SELECT id, descrizione FROM co_pianodeiconti3 WHERE descrizione='$descrizione_conto_iva2'";
				$rs = $dbo->fetchArray($query);
				$idconto_iva2 = $rs[0]['id'];
				$descrizione_conto_iva2 = $rs[0]['descrizione'];

				$query2 = "INSERT INTO co_movimenti( idmastrino, data, data_documento, iddocumento, idanagrafica,  descrizione, idconto, totale, primanota ) VALUES
				( \"$idmastrino\", \"$data\", \"$data_documento\", \"$iddocumento\", \"\",  \"$descrizione del ".date("d/m/Y", strtotime($data))." ($ragione_sociale)\", \"$idconto_iva2\", \"".($iva_indetraibile_fattura*$segno_mov3_iva)."\", $primanota )";
				$dbo->query($query2);
			}



			//4) Aggiungo la rivalsa INPS se c'è
			//Lettura id conto inps
			if( $totale_rivalsainps!=0 ){
				$query = "SELECT id, descrizione FROM co_pianodeiconti3 WHERE descrizione='Erario c/INPS'";
				$rs = $dbo->fetchArray($query);
				$idconto_inps = $rs[0]['id'];
				$descrizione_conto_inps = $rs[0]['descrizione'];

				$query2 = "INSERT INTO co_movimenti( idmastrino, data, data_documento, iddocumento, idanagrafica,  descrizione, idconto, totale, primanota ) VALUES( \"$idmastrino\", \"$data\", \"$data_documento\", \"$iddocumento\", \"\",  \"$descrizione del ".date("d/m/Y", strtotime($data))." ($ragione_sociale)\", \"$idconto_inps\", \"".($totale_rivalsainps*$segno_mov4_inps)."\", $primanota )";
				$dbo->query($query2);
			}



			//5) Aggiungo la ritenuta d'acconto se c'è
			//Lettura id conto ritenuta e la storno subito
			if( $totale_ritenutaacconto!=0 ){
				$query = "SELECT id, descrizione FROM co_pianodeiconti3 WHERE descrizione=\"Erario c/ritenute d'acconto\"";
				$rs = $dbo->fetchArray($query);
				$idconto_ritenutaacconto = $rs[0]['id'];
				$descrizione_conto_ritenutaacconto = $rs[0]['descrizione'];

				//DARE nel conto ritenuta
				$query2 = "INSERT INTO co_movimenti( idmastrino, data, data_documento, iddocumento, idanagrafica,  descrizione, idconto, totale, primanota ) VALUES( \"$idmastrino\", \"$data\", \"$data_documento\", \"$iddocumento\", \"\",  \"$descrizione del ".date("d/m/Y", strtotime($data))." ($ragione_sociale)\", \"$idconto_ritenutaacconto\", \"".($totale_ritenutaacconto*$segno_mov5_ritenutaacconto)."\", $primanota )";
				$dbo->query($query2);

				//AVERE nel riepilogativo clienti
				$query2 = "INSERT INTO co_movimenti( idmastrino, data, data_documento, iddocumento, idanagrafica,  descrizione, idconto, totale, primanota ) VALUES( \"$idmastrino\", \"$data\", \"$data_documento\", \"$iddocumento\", \"\",  \"$descrizione del ".date("d/m/Y", strtotime($data))." ($ragione_sociale)\", \"".$idconto_controparte."\", \"".(($totale_ritenutaacconto*$segno_mov5_ritenutaacconto)*-1)."\", $primanota )";
				$dbo->query($query2);
			}

			//6) Aggiungo la marca da bollo se c'è
			//Lettura id conto marca da bollo
			if( $totale_bolli!=0 ){
				$query = "SELECT id, descrizione FROM co_pianodeiconti3 WHERE descrizione=\"Rimborso spese marche da bollo\"";
				$rs = $dbo->fetchArray($query);
				$idconto_bolli = $rs[0]['id'];
				$descrizione_conto_bolli = $rs[0]['descrizione'];

				$query2 = "INSERT INTO co_movimenti( idmastrino, data, data_documento, iddocumento, idanagrafica,  descrizione, idconto, totale, primanota ) VALUES( \"$idmastrino\", \"$data\", \"$data_documento\", \"$iddocumento\", \"\",  \"$descrizione del ".date("d/m/Y", strtotime($data))." ($ragione_sociale)\", \"$idconto_bolli\", \"".($totale_bolli*$segno_mov6_bollo)."\", $primanota )";
				$dbo->query($query2);
			}
		}
	}
	
	
	
	
	
	/**
	  * Funzione per generare un nuovo codice per il mastrino
	  */
	function get_new_idmastrino(){
		global $dbo;
		
		$query = "SELECT MAX(idmastrino) AS maxidmastrino FROM co_movimenti";
		$rs = $dbo->fetchArray($query);
		return (intval($rs[0]['maxidmastrino'])+1);
	}
	
	
	/**
	  * Calcolo imponibile fattura (totale_righe - sconto)
	  */
	function get_imponibile_fattura($iddocumento){
		global $dbo;
		
		$query = "SELECT SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto) AS imponibile FROM co_righe_documenti GROUP BY iddocumento HAVING iddocumento='".$iddocumento."'";
		$rs = $dbo->fetchArray($query);
		return $rs[0]['imponibile'];
	}
	
	
	/**
	  * Calcolo totale fattura (imponibile + iva)
	  */
	function get_totale_fattura($iddocumento){
		global $dbo;
		
		//Sommo l'iva di ogni riga al totale
		$query = "SELECT SUM(iva) AS iva FROM co_righe_documenti GROUP BY iddocumento HAVING iddocumento='".$iddocumento."'";
		$rs = $dbo->fetchArray($query);
		
		//Aggiungo la rivalsa inps se c'è
		$query2 = "SELECT rivalsainps FROM co_documenti WHERE id='".$iddocumento."'";
		$rs2 = $dbo->fetchArray($query2);
		
		//Leggo l'iva predefinita per calcolare l'iva aggiuntiva sulla rivalsa inps
		$qi = "SELECT percentuale FROM co_iva WHERE id='".get_var("Iva predefinita")."'";
		$rsi = $dbo->fetchArray($qi);
		$iva_rivalsainps = $rs2[0]['rivalsainps']/100*$rsi[0]['percentuale'];
		
		
		return get_imponibile_fattura($iddocumento) + $rs[0]['iva'] + $iva_rivalsainps + $rs2[0]['rivalsainps'];
	}
	
	
	/**
	  * Calcolo netto a pagare fattura (totale - ritenute - bolli)
	  */
	function get_netto_fattura($iddocumento){
		global $dbo;
		
		$query = "SELECT ritenutaacconto, bollo FROM co_documenti WHERE id='".$iddocumento."'";
		$rs = $dbo->fetchArray($query);
		return get_totale_fattura($iddocumento)-$rs[0]['ritenutaacconto'] + $rs[0]['bollo'];
	}
	
	
	/**
	  * Calcolo iva detraibile fattura
	  */
	function get_ivadetraibile_fattura($iddocumento){
		global $dbo;

		$query = "SELECT SUM(iva)-SUM(iva_indetraibile) AS iva_detraibile FROM co_righe_documenti GROUP BY iddocumento HAVING iddocumento='".$iddocumento."'";
		$rs = $dbo->fetchArray($query);
		return $rs[0]['iva_detraibile'];
	}
	
	
	/**
	  * Calcolo iva indetraibile fattura
	  */
	function get_ivaindetraibile_fattura($iddocumento){
		global $dbo;

		$query = "SELECT SUM(iva_indetraibile) AS iva_indetraibile FROM co_righe_documenti GROUP BY iddocumento HAVING iddocumento='".$iddocumento."'";
		$rs = $dbo->fetchArray($query);
		return $rs[0]['iva_indetraibile'];
	}
	
	
	/**
	  * Ricalcola i costi aggiuntivi in fattura (rivalsa inps, ritenuta d'acconto, marca da bollo)
	  * Deve essere eseguito ogni volta che si aggiunge o toglie una riga
	  * $iddocumento		int		ID della fattura
	  * $idrivalsainps		int		ID della rivalsa inps da applicare. Se omesso viene utilizzata quella impostata di default
	  * $idritenutaacconto	int		ID della ritenuta d'acconto da applicare. Se omesso viene utilizzata quella impostata di default
	  * $bolli				float	Costi aggiuntivi delle marche da bollo. Se omesso verrà usata la cifra predefinita
	  */
	function ricalcola_costiagg_fattura( $iddocumento, $idrivalsainps='', $idritenutaacconto='', $bolli='' ){
		global $dbo;
		global $dir;

		//Se ci sono righe in fattura faccio i conteggi, altrimenti azzero gli sconti e le spese aggiuntive (inps, ritenuta, marche da bollo)
		$query = "SELECT COUNT(id) AS righe FROM co_righe_documenti WHERE iddocumento='$iddocumento'";
		$rs = $dbo->fetchArray($query);
		if( $rs[0]['righe']>0 ){
			$totale_imponibile = get_imponibile_fattura($iddocumento);
			$totale_fattura = get_totale_fattura($iddocumento);

			//Leggo gli id dei costi aggiuntivi
			if( $dir=='uscita' ){
				$query2 = "SELECT bollo FROM co_documenti WHERE id='$iddocumento'";
				$rs2 = $dbo->fetchArray($query2);
				$bollo = $rs2[0]['bollo'];
			}

			$query = "SELECT SUM(rivalsainps) AS rivalsainps, SUM(ritenutaacconto) AS ritenutaacconto FROM co_righe_documenti GROUP BY iddocumento HAVING iddocumento='".$iddocumento."'";
			$rs = $dbo->fetchArray($query);
			$rivalsainps = $rs[0]['rivalsainps'];
			$ritenutaacconto = $rs[0]['ritenutaacconto'];
			
			if( $dir == "entrata" ){
				//Leggo l'iva predefinita per calcolare l'iva aggiuntiva sulla rivalsa inps
				$qi = "SELECT percentuale FROM co_iva WHERE id='".get_var("Iva predefinita")."'";
				$rsi = $dbo->fetchArray($qi);
				$iva_rivalsainps = $rivalsainps/100*$rsi[0]['percentuale'];
			}
			
			else{
				//Leggo l'iva predefinita per calcolare l'iva aggiuntiva sulla rivalsa inps
				$qi = "SELECT percentuale FROM co_iva WHERE id='".get_var("Iva predefinita")."'";
				$rsi = $dbo->fetchArray($qi);
				$iva_rivalsainps = $rivalsainps/100*$rsi[0]['percentuale'];
			}



			//Leggo la ritenuta d'acconto se c'è
			$totale_fattura = get_totale_fattura($iddocumento);
			$query = "SELECT percentuale FROM co_ritenutaacconto WHERE id='".$idritenutaacconto."'";
			$rs = $dbo->fetchArray($query);
			$netto_a_pagare = $totale_fattura - $ritenutaacconto;

			
			$soglia_minima_marca=get_var_tipodoc2($iddocumento,'ges_marca');
			$importo_marca_bollo=get_var_tipodoc2($iddocumento,'marca_bollo');
			
			//Leggo la marca da bollo se c'è e se il netto a pagare supera la soglia
			$bolli = str_replace( ",", ".", $bolli);
			$bolli = floatval($bolli);
			if( $dir=='uscita' ){
				if( $bolli!=0.00 ){
					$bolli = str_replace( ",", ".", $bolli );
					if( abs($bolli)>0 && abs($netto_a_pagare>$soglia_minima_marca) )						
						$marca_da_bollo = str_replace( ",", ".", $bolli );
					else
						$marca_da_bollo = 0.00;
				}
			}
			
			else{
				$bolli = str_replace( ",", ".", $importo_marca_bollo );
				if( abs($bolli)>0 && abs($netto_a_pagare)>abs($soglia_minima_marca) )
					$marca_da_bollo = str_replace( ",", ".", $bolli );
					
				else
					$marca_da_bollo = 0.00;
				
				//Se l'importo è negativo può essere una nota di accredito, quindi cambio segno alla marca da bollo
				if( $netto_a_pagare<0 )
					$marca_da_bollo *= -1;
			}
		
			$dbo->query("UPDATE co_documenti SET ritenutaacconto='$ritenutaacconto', rivalsainps='".$rivalsainps."', iva_rivalsainps='".$iva_rivalsainps."', bollo='$marca_da_bollo' WHERE id='$iddocumento'");
		}
		
		else{
			$dbo->query("UPDATE co_documenti SET ritenutaacconto='0', bollo='0', rivalsainps='0', iva_rivalsainps='0' WHERE id='$iddocumento'");
		}
		aggiorna_sconto($iddocumento);
	}
	
	
	
	
	/**
	  * Questa funzione aggiunge un articolo in fattura. E' comoda quando si devono inserire
	  * degli interventi con articoli collegati o preventivi che hanno interventi con articoli collegati!
	  * $iddocumento	integer		id della fattura
	  * $idarticolo		integer		id dell'articolo da inserire in fattura
	  * $idiva			integer		id del codice iva associato all'articolo
	  * $qta			float		quantità dell'articolo in fattura
	  * $prezzo			float		prezzo totale dell'articolo (prezzounitario*qtà)
	  * $idintervento	integer		id dell'intervento da cui arriva l'articolo (per non creare casini quando si rimuoverà un articolo dalla fattura)
	  */
	
	
	// function add_articolo_infattura( $iddocumento, $idarticolo, $descrizione, $idiva, $qta, $prezzo, $sconto, $idintervento=0, $lotto='', $serial='', $altro='' , $idconto , $idtiposconto ,$sconto_prc, $sconto_extra,$sconto_extra1){
	function add_articolo_infattura( $iddocumento, $idarticolo, $descrizione, $idiva, $qta, $prezzo, $sconto, $idintervento=0, $lotto='', $serial='', $altro='' , $idconto , $idtiposconto ,$sconto_prc, $sconto_extra,$sconto_extra1 , $idmagazzino,$riga_canone,$id_matricola,$per_agente=0){
	
		global $dbo;
		global $dir;

		global $idddt;		
		if( $idddt=='' ) $idddt = 0;
		
		// cerco dati agente
		$query = "SELECT idanagrafica , id_contratto FROM co_documenti WHERE id='".$iddocumento."'";
		$rs = $dbo->fetchArray($query);
		$idcontratto=$rs[0]['id_contratto'];
		$query = "SELECT idagente ,default_ritenuta_acconto , default_rivalsa_inps FROM an_anagrafiche WHERE idanagrafica='".$rs[0]['idanagrafica']."'";
		$rs = $dbo->fetchArray($query);
		
		$default_ritenuta_acconto = $rs[0]['default_ritenuta_acconto'];
		$default_rivalsa_inps = $rs[0]['default_rivalsa_inps'];
		
		
		$query = "SELECT * FROM an_anagrafiche WHERE idanagrafica='".$rs[0]['idagente']."'";
		$rs_agente = $dbo->fetchArray($query);		
		$perc_agente = $rs_agente[0]['perc_agente'];
		$perc_netto = $rs_agente[0]['perc_netto'];
		$perc_iva = $rs_agente[0]['perc_iva'];
		
		if ($per_agente != '0'	) {	
			$perc_agente=$per_agente;
		}
		
		//calcolo percentuali agente				
			if($perc_netto =='1'){
				$val_agente=($prezzo )  - $sconto ;							
				$val_agente = ($val_agente * $perc_agente)/100;
			}else{
				$val_agente = (($prezzo ) * $perc_agente)/100;					
			}
			if( $perc_iva =='1'){
				$rs2 = $dbo->fetchArray("SELECT * FROM co_iva WHERE id='".$idiva."'");
				$agente_iva= ($val_agente/100)*$rs2[0]['percentuale'];
				$val_agente=$val_agente + $agente_iva ;														
			}
		
		$esegue_movimento=get_var_tipodoc2($iddocumento,"mod_mov");
		$esegue_giacenza = get_var_tipodoc2($iddocumento,"mod_mag");
		$id_magazzino_e = get_var_tipodoc2($iddocumento,"id_magazzino_e");
		$id_magazzino_u = get_var_tipodoc2($iddocumento,"id_magazzino_u");
		$id_tipo_u = get_var_tipodoc2($iddocumento,"id_tipo_u");
		// VERSIONE PRO testo verifica aggiornaemnti prezzi
		$agg_prezzo_e = get_var_tipodoc2($iddocumento,"agg_prezzo_e");
		$agg_prezzo_u = get_var_tipodoc2($iddocumento,"agg_prezzo_u");
		
		
		$esegue_giacenza_articolo = query_secca("","ges_magazzino","mg_articoli","where id ='".$idarticolo."'");
		
		if ( $esegue_giacenza_articolo == '0' ) $esegue_giacenza="0";
		
		
		if ( $idmagazzino >= '0' ) $id_magazzino_e=$idmagazzino;
		
		$dir = get_var_tipodoc2($iddocumento,"dir");	
		
		
		
		
		$query = "SELECT idum , um , id_conto , id_conto_u FROM mg_articoli WHERE id='".$idarticolo."'";
		$rs = $dbo->fetchArray($query);
		$um = $rs[0]['um'];
		
		$um	= query_secca("","valore","mg_unitamisura","where id ='".$rs[0]['idum']."'");
		
		
		$idconto = $rs[0]['id_conto'];
		$idconto_u = $rs[0]['id_conto_u'];
	
		$idconto_doc=query_secca("","idconto","co_documenti","where id='".$iddocumento."'");
	
		if ( $idconto == '0' ) $idconto=$idconto_doc;
		if ( $idconto_u == '0' ) $idconto_u=$idconto_doc;
	
		//Lettura iva dell'articolo
		$rs2 = $dbo->fetchArray("SELECT * FROM co_iva WHERE id='".$idiva."'");
		$iva = ($prezzo-$sconto)/100*$rs2[0]['percentuale'];
		$iva_indetraibile = $iva/100*$rs2[0]['indetraibile'];
		$desc_iva = $rs2[0]['descrizione'];
		
			
		
	//	$ritenutaacconto="0";
	//	$rivalsainps="0";
		$idritenutaacconto="0";
		$idrivalsainps="0";
		
		
		
		
		
		
		if( get_var("Percentuale rivalsa INPS") != ""  ){
			//Calcolo rivalsa inps
			$idrivalsainps=get_var("Percentuale rivalsa INPS");			
			$query = "SELECT * FROM co_rivalsainps WHERE id='".$idrivalsainps."'";
			$rs = $dbo->fetchArray($query);
			$rivalsainps = $prezzo * $qta / 100 * $rs[0]['percentuale'];
		}
		
		//Ritenuta d'acconto
		if( get_var("Percentuale ritenuta d'acconto")!= ""  ){					
			$idritenutaacconto=get_var("Percentuale ritenuta d'acconto");			
			//Calcolo ritenuta d'acconto
			$query = "SELECT * FROM co_ritenutaacconto WHERE id='".$idritenutaacconto."'";
			$rs = $dbo->fetchArray($query);
			$ritenutaacconto = (($prezzo*$qta) + $rivalsainps) / 100 * $rs[0]['percentuale'];	
		}
		/*
			testo se rivalsa e acconto preimpostati in anagrafica
		*/
		
		if( $default_rivalsa_inps != "0"  ){		
			$idrivalsainps=$default_rivalsa_inps;	
			$query = "SELECT * FROM co_rivalsainps WHERE id='".$default_rivalsa_inps."'";
			$rs = $dbo->fetchArray($query);
			$rivalsainps = $prezzo * $qta / 100 * $rs[0]['percentuale'];
		}
		
		if( $default_ritenuta_acconto != "0"  ){							
			//Calcolo ritenuta d'acconto
			$idritenutaacconto=$default_ritenuta_acconto;	
			$query = "SELECT * FROM co_ritenutaacconto WHERE id='".$default_ritenuta_acconto."'";
			$rs = $dbo->fetchArray($query);
			$ritenutaacconto = (($prezzo*$qta) + $rivalsainps) / 100 * $rs[0]['percentuale'];	
		}
		
		
		
		
		
		
		
		/*
			Fatture di vendita
		*/
		
		// Info matricola
		$qana = "SELECT *  FROM my_impianti WHERE matricola='".$id_matricola."'";
		$rs_matricola = $dbo->fetchArray($qana);
		$matricola_impianto=$rs_matricola[0]['id'];
		
		
		if( $dir=='entrata' ){
		
			//Verifico se nella fattura c'è già questo articolo
			$rs = $dbo->fetchArray("SELECT id, idddt, qta FROM co_righe_documenti WHERE idddt=0 and id_riferimento=0 AND idarticolo='".$idarticolo."' AND iddocumento='".$iddocumento."' AND idintervento='".$idintervento."' AND lotto=\"".$lotto."\" AND serial=\"".$serial."\" AND altro=\"".$altro."\" AND sconto=\"".$sconto."\" AND id_magazzino_e=\"".$id_magazzino_e."\"");

			//Inserisco la riga in fattura: se nella fattura c'è già questo articolo incremento la quantità e l'iva...
			// aggiungo condizione: se un articolo proviene da un ddt aggiungo sempre la riga
			if( sizeof($rs) > 0 && $rs[0]['qta'] >= 0 && $idddt==0 ){
			//	$dbo->query("UPDATE co_righe_documenti SET qta=qta+".$qta.", subtotale='".$prezzo."', iva=iva+".$iva.", iva_indetraibile=iva_indetraibile+".$iva_indetraibile." WHERE id='".$rs[0]['id']."'");
				$qta_new=$qta + $rs[0]['qta'];
				$prezzo=$prezzo * $qta_new;
				
				$dbo->query("UPDATE co_righe_documenti SET qta=qta+".$qta.", subtotale='".$prezzo."', iva=iva+".$iva.", iva_indetraibile=iva_indetraibile+".$iva_indetraibile." WHERE id='".$rs[0]['id']."'");
				
				
				$idriga = $rs[0]['id'];
			}
			//...altrimenti inserisco la scorta nella fattura da zero
			else{
				$dbo->query("INSERT INTO co_righe_documenti( id_impianto , matricola_impianto , iddocumento, idcontratto, idarticolo, idintervento, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, um, qta, serial,  idconto,tipo_sconto,sconto_primo,sconto_extra ,
				sconto_extra1,idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto,importo_agente,importo_iva_agente,perc_agente,id_magazzino_e,riga_canone) VALUES 
				( '".$matricola_impianto."','".$id_matricola."','".$iddocumento."', '".$idcontratto."', '".$idarticolo."', '".$idintervento."', \"".$idiva."\", \"".$desc_iva."\", '".$iva."', '".$iva_indetraibile."', \"".$descrizione."\", '".$prezzo."', '".$sconto."', '".$um."', 
				'".$qta."', \"".$serial."\",  \"".$idconto."\", \"".$idtiposconto."\", \"".$sconto_prc."\",\"".$sconto_extra."\",\"".$sconto_extra1."\",
				\"".$idrivalsainps."\",\"".$rivalsainps."\",\"".$idritenutaacconto."\",\"".$ritenutaacconto."\",\"".$val_agente."\",\"".$agente_iva."\",\"".$perc_agente."\",\"".$id_magazzino_e."\",\"".$riga_canone."\"	)");
				$idriga = $dbo->last_inserted_id();

			
			}

			
			if( $esegue_giacenza== 1 ) {
				if( $id_magazzino_e == 0 ) {
					$tabella=" mg_articoli ";
					$where =" WHERE id='".$idarticolo."'";
				} else{
					$tabella=" mg_articoli_magazzini ";
					$where 	=" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_e."' ";
				}
				$dbo->query( "UPDATE ".$tabella." SET qta=qta-".$qta.$where );
			}
				// testo se devo fare movimenti su altri magazzini
				if( $id_magazzino_u != 0 ) {					
					( $id_tipo_u == '1' ) ? $sign='-' : $sign='+';
					$tabella=" mg_articoli_magazzini ";
					$where 	=" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_u."' ";
					
					$rs_test = $dbo->fetchArray("SELECT id FROM mg_articoli_magazzini WHERE idarticolo='".$idarticolo."' AND idmagazzino='".$id_magazzino_u."'");
					if( sizeof($rs_test) > 0  ){					
						$dbo->query( "UPDATE ".$tabella." SET qta=qta-".$old_qta.$sign.$qta.$where );
					} else {
						$dbo->query("INSERT INTO mg_articoli_magazzini( idarticolo, idmagazzino, qta ) VALUES ( '".$idarticolo."', '".$id_magazzino_u."', '".$qta."' )");
					}
				}
				
			if( $agg_prezzo_e == 1 ) {		// aggiornaemnto prezzo di aquisto
				$dbo->query( "UPDATE mg_articoli SET prezzo_acquisto=".$prezzo." WHERE id='".$idarticolo."'");
			}
			if( $agg_prezzo_u == 1 ) {		// aggiornaemnto prezzo di vendita
				$dbo->query( "UPDATE mg_articoli SET prezzo_vendita=".$prezzo." WHERE id='".$idarticolo."'");
			}
			
			if( $esegue_movimento== 1 ) add_movimento_magazzino( $idarticolo, -$qta, '', '0', '0', $iddocumento, '0' );			
			
			
		}
		
		/*
			Fatture di acquisto
		*/
		else if( $dir=='uscita' ){
			//Verifico se nella fattura c'è già questo articolo
			$rs = $dbo->fetchArray("SELECT id, qta FROM co_righe_documenti WHERE idddt=0 AND idarticolo='".$idarticolo."' AND iddocumento='".$iddocumento."' AND idintervento='".$idintervento."' AND lotto=\"".$lotto."\" AND serial=\"".$serial."\" AND altro=\"".$altro."\" AND sconto=\"".$sconto."\"");
			
			//Inserisco la riga in fattura: se nella fattura c'è già questo articolo incremento la quantità e l'iva...
			// aggiungo condizione: se un articolo proviene da un ddt aggiungo sempre la riga
			if( sizeof($rs) > 0 && $rs[0]['qta'] >= 0 && $idddt==0 ){
				$qta_new=$qta + $rs[0]['qta'];
				$prezzo=$prezzo * $qta_new;
				
				$dbo->query("UPDATE co_righe_documenti SET qta=qta+".$qta.", subtotale='".$prezzo."', iva=iva+".$iva.", iva_indetraibile=iva_indetraibile+".$iva_indetraibile." WHERE id='".$rs[0]['id']."'");
				$idriga = $rs[0]['id'];
			}

			//...altrimenti inserisco la scorta nella fattura da zero
			else{
				$dbo->query("INSERT INTO co_righe_documenti( iddocumento, idarticolo, idintervento, desc_iva,idiva, iva, iva_indetraibile, descrizione, subtotale, sconto, um, qta, serial,idconto,tipo_sconto,sconto_primo,sconto_extra,sconto_extra1 ) 
				VALUES ( '".$iddocumento."', '".$idarticolo."', '".$idintervento."', \"".$desc_iva."\",\"".$idiva."\", '".$iva."', '".$iva_indetraibile."', \"".$descrizione."\", '".$prezzo."', '".$sconto."', '".$um."', 
				'".$qta."',  \"".$serial."\" , \"".$idconto_u."\", \"".$idtiposconto."\", \"".$sconto_prc."\",\"".$sconto_extra."\",\"".$sconto_extra1."\" )");
				$idriga = $dbo->last_inserted_id();
			}

			
			if( $esegue_giacenza== 1 ) {
				if( $id_magazzino_e == 0 ) {
					$tabella=" mg_articoli ";
					$where =" WHERE id='".$idarticolo."'";
				} else{
					$tabella=" mg_articoli_magazzini ";
					$where 	=" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_e."' ";
				}
				$dbo->query( "UPDATE ".$tabella." SET qta=qta+".$qta.$where );
			}
				// testo se devo fare movimenti su altri magazzini
				if( $id_magazzino_u != 0 ) {					
					( $id_tipo_u == '1' ) ? $sign='-' : $sign='+';
					$tabella=" mg_articoli_magazzini ";
					$where 	=" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_u."' ";
					
					$rs_test = $dbo->fetchArray("SELECT id FROM mg_articoli_magazzini WHERE idarticolo='".$idarticolo."' AND idmagazzino='".$id_magazzino_u."'");
					if( sizeof($rs_test) > 0  ){					
						$dbo->query( "UPDATE ".$tabella." SET qta=qta-".$old_qta.$sign.$qta.$where );
					} else {
						$dbo->query("INSERT INTO mg_articoli_magazzini( idarticolo, idmagazzino, qta ) VALUES ( '".$idarticolo."', '".$id_magazzino_u."', '".$qta."' )");
					}
				}
			if( $agg_prezzo_e == 1 ) {		// aggiornaemnto prezzo di aquisto
				$dbo->query( "UPDATE mg_articoli SET prezzo_acquisto=".$prezzo." WHERE id='".$idarticolo."'");
			}
			if( $agg_prezzo_u == 1 ) {		// aggiornaemnto prezzo di vendita
				$dbo->query( "UPDATE mg_articoli SET prezzo_vendita=".$prezzo." WHERE id='".$idarticolo."'");
			}	

			if( $esegue_movimento== 1 ) add_movimento_magazzino( $idarticolo, $qta, '', '0', '0', $iddocumento, '0' );		
		}

		// log anagrafiche
		add_storico_doc($iddocumento,"Aggiunto articolo ".$descrizione);
		
		//Inserisco il riferimento del ddt alla riga
		$dbo->query( "UPDATE co_righe_documenti SET idddt='".$idddt."' WHERE id='".$idriga."'" );
		//Inserisco idorine alla riga
		// $dbo->query( "UPDATE co_righe_documenti SET ordine='".$idriga."' WHERE id='".$idriga."'" );
		
		
		
		
		return $idriga;
	}
	
	/**
	  * Questa funzione aggiunge un articolo in fattura. E' comoda quando si devono inserire - NON MODIFICA LA QTA SE ARTICOLO GIA PRESENTE
	  * degli interventi con articoli collegati o preventivi che hanno interventi con articoli collegati!
	  * $iddocumento	integer		id della fattura
	  * $idarticolo		integer		id dell'articolo da inserire in fattura
	  * $idiva			integer		id del codice iva associato all'articolo
	  * $qta			float		quantità dell'articolo in fattura
	  * $prezzo			float		prezzo totale dell'articolo (prezzounitario*qtà)
	  * $idintervento	integer		id dell'intervento da cui arriva l'articolo (per non creare casini quando si rimuoverà un articolo dalla fattura)
	  */
	
	
	function add_articolo_infattura2( $iddocumento, $idarticolo, $descrizione, $idiva, $qta, $prezzo, $sconto, $idintervento=0, $lotto='', $serial='', $altro='' , $idconto , $idtiposconto ,$sconto_prc, $sconto_extra,$sconto_extra1 , $idmagazzino,$riga_canone , $id_matricola){
	
		global $dbo;
		global $dir;

		global $idddt;		
		if( $idddt=='' ) $idddt = 0;
		
		// cerco dati agente
		$query = "SELECT idanagrafica , id_contratto FROM co_documenti WHERE id='".$iddocumento."'";
		$rs = $dbo->fetchArray($query);
		$idcontratto=$rs[0]['id_contratto'];
		$query = "SELECT idagente ,default_ritenuta_acconto , default_rivalsa_inps FROM an_anagrafiche WHERE idanagrafica='".$rs[0]['idanagrafica']."'";
		$rs = $dbo->fetchArray($query);		
		$default_ritenuta_acconto = $rs[0]['default_ritenuta_acconto'];
		$default_rivalsa_inps = $rs[0]['default_rivalsa_inps'];
		
		$query = "SELECT * FROM an_anagrafiche WHERE idanagrafica='".$rs[0]['idagente']."'";
		$rs_agente = $dbo->fetchArray($query);		
		$perc_agente = $rs_agente[0]['perc_agente'];
		$perc_netto = $rs_agente[0]['perc_netto'];
		$perc_iva = $rs_agente[0]['perc_iva'];
		
		//calcolo percentuali agente				
				if($perc_netto =='1'){
					$val_agente=($prezzo )  - $sconto ;							
					$val_agente = ($val_agente * $perc_agente)/100;
				}else{
					$val_agente = (($prezzo ) * $perc_agente)/100;					
				}
				if( $perc_iva =='1'){
					$rs2 = $dbo->fetchArray("SELECT * FROM co_iva WHERE id='".$idiva."'");
					$agente_iva= ($val_agente/100)*$rs2[0]['percentuale'];
					$val_agente=$val_agente + $agente_iva ;														
				}
		
		$esegue_movimento=get_var_tipodoc2($iddocumento,"mod_mov");
		$esegue_giacenza = get_var_tipodoc2($iddocumento,"mod_mag");
		$id_magazzino_e = get_var_tipodoc2($iddocumento,"id_magazzino_e");
		$id_magazzino_u = get_var_tipodoc2($iddocumento,"id_magazzino_u");
		$id_tipo_u = get_var_tipodoc2($iddocumento,"id_tipo_u");
		
				
		if ( $idmagazzino >= '0' ) $id_magazzino_e=$idmagazzino;
		
		$dir = get_var_tipodoc2($iddocumento,"dir");	
		
		
		$query = "SELECT um , id_conto , id_conto_u FROM mg_articoli WHERE id='".$idarticolo."'";
		$rs = $dbo->fetchArray($query);
		$um = $rs[0]['um'];
		
		$idconto = $rs[0]['id_conto'];
		$idconto_u = $rs[0]['id_conto_u'];
	
		$idconto_doc=query_secca("","idconto","co_documenti","where id='".$iddocumento."'");
	
		if ( $idconto == '0' ) $idconto=$idconto_doc;
		if ( $idconto_u == '0' ) $idconto_u=$idconto_doc;
	
		//Lettura iva dell'articolo
		$rs2 = $dbo->fetchArray("SELECT * FROM co_iva WHERE id='".$idiva."'");
		$iva = ($prezzo-$sconto)/100*$rs2[0]['percentuale'];
		$iva_indetraibile = $iva/100*$rs2[0]['indetraibile'];
		$desc_iva = $rs2[0]['descrizione'];
		
			
		
	//	$ritenutaacconto="0";
	//	$rivalsainps="0";
		$idritenutaacconto="0";
		$idrivalsainps="0";
		
		
		if( get_var("Percentuale rivalsa INPS") != ""  ){
			//Calcolo rivalsa inps
			$idrivalsainps=get_var("Percentuale rivalsa INPS");			
			$query = "SELECT * FROM co_rivalsainps WHERE id='".$idrivalsainps."'";
			$rs = $dbo->fetchArray($query);
			$rivalsainps = $prezzo * $qta / 100 * $rs[0]['percentuale'];
		}
		
		//Ritenuta d'acconto
		if( get_var("Percentuale ritenuta d'acconto")!= ""  ){					
			$idritenutaacconto=get_var("Percentuale ritenuta d'acconto");			
			//Calcolo ritenuta d'acconto
			$query = "SELECT * FROM co_ritenutaacconto WHERE id='".$idritenutaacconto."'";
			$rs = $dbo->fetchArray($query);
			$ritenutaacconto = (($prezzo*$qta) + $rivalsainps) / 100 * $rs[0]['percentuale'];	
		}
		
		if( $default_rivalsa_inps != "0"  ){		
			$idrivalsainps=$default_rivalsa_inps;	
			$query = "SELECT * FROM co_rivalsainps WHERE id='".$default_rivalsa_inps."'";
			$rs = $dbo->fetchArray($query);
			$rivalsainps = $prezzo * $qta / 100 * $rs[0]['percentuale'];
		}
		
		if( $default_ritenuta_acconto != "0"  ){							
			//Calcolo ritenuta d'acconto
			$idritenutaacconto=$default_ritenuta_acconto;	
			$query = "SELECT * FROM co_ritenutaacconto WHERE id='".$default_ritenuta_acconto."'";
			$rs = $dbo->fetchArray($query);
			$ritenutaacconto = (($prezzo*$qta) + $rivalsainps) / 100 * $rs[0]['percentuale'];	
		}
		
		
		/*
			Fatture di vendita
		*/
		if( $dir=='entrata' ){
		
			//Verifico se nella fattura c'è già questo articolo
			$rs = $dbo->fetchArray("SELECT id, idddt, qta FROM co_righe_documenti WHERE idddt=0 and id_riferimento=0 AND idarticolo='".$idarticolo."' AND iddocumento='".$iddocumento."' AND idintervento='".$idintervento."' AND lotto=\"".$lotto."\" AND serial=\"".$serial."\" AND altro=\"".$altro."\" AND sconto=\"".$sconto."\" AND id_magazzino_e=\"".$id_magazzino_e."\"");
				$dbo->query("INSERT INTO co_righe_documenti( iddocumento, idcontratto, idarticolo, idintervento, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, um, qta, serial,  idconto,tipo_sconto,sconto_primo,sconto_extra ,
				sconto_extra1,idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto,importo_agente,importo_iva_agente,perc_agente,id_magazzino_e,riga_canone) VALUES 
				( '".$iddocumento."', '".$idcontratto."', '".$idarticolo."', '".$idintervento."', \"".$idiva."\", \"".$desc_iva."\", '".$iva."', '".$iva_indetraibile."', \"".$descrizione."\", '".$prezzo."', '".$sconto."', '".$um."', 
				'".$qta."', \"".$serial."\",  \"".$idconto."\", \"".$idtiposconto."\", \"".$sconto_prc."\",\"".$sconto_extra."\",\"".$sconto_extra1."\",
				\"".$idrivalsainps."\",\"".$rivalsainps."\",\"".$idritenutaacconto."\",\"".$ritenutaacconto."\",\"".$val_agente."\",\"".$agente_iva."\",\"".$perc_agente."\",\"".$id_magazzino_e."\",\"".$riga_canone."\"	)");
				$idriga = $dbo->last_inserted_id();

			if( $esegue_giacenza== 1 ) {
				if( $id_magazzino_e == 0 ) {
					$tabella=" mg_articoli ";
					$where =" WHERE id='".$idarticolo."'";
				} else{
					$tabella=" mg_articoli_magazzini ";
					$where 	=" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_e."' ";
				}
				$dbo->query( "UPDATE ".$tabella." SET qta=qta-".$qta.$where );
			}
				// testo se devo fare movimenti su altri magazzini
				if( $id_magazzino_u != 0 ) {					
					( $id_tipo_u == '1' ) ? $sign='-' : $sign='+';
					$tabella=" mg_articoli_magazzini ";
					$where 	=" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_u."' ";
					
					$rs_test = $dbo->fetchArray("SELECT id FROM mg_articoli_magazzini WHERE idarticolo='".$idarticolo."' AND idmagazzino='".$id_magazzino_u."'");
					if( sizeof($rs_test) > 0  ){					
						$dbo->query( "UPDATE ".$tabella." SET qta=qta-".$old_qta.$sign.$qta.$where );
					} else {
						$dbo->query("INSERT INTO mg_articoli_magazzini( idarticolo, idmagazzino, qta ) VALUES ( '".$idarticolo."', '".$id_magazzino_u."', '".$qta."' )");
					}
				}
			
			
			
			if( $esegue_movimento== 1 ) add_movimento_magazzino( $idarticolo, -$qta, '', '0', '0', $iddocumento, '0' );			
			
			
		}
		
		/*
			Fatture di acquisto
		*/
		else if( $dir=='uscita' ){
			//Verifico se nella fattura c'è già questo articolo
			$rs = $dbo->fetchArray("SELECT id, qta FROM co_righe_documenti WHERE idddt=0 AND idarticolo='".$idarticolo."' AND iddocumento='".$iddocumento."' AND idintervento='".$idintervento."' AND lotto=\"".$lotto."\" AND serial=\"".$serial."\" AND altro=\"".$altro."\" AND sconto=\"".$sconto."\"");
			$dbo->query("INSERT INTO co_righe_documenti( iddocumento, idarticolo, idintervento, desc_iva,idiva, iva, iva_indetraibile, descrizione, subtotale, sconto, um, qta, serial,idconto,tipo_sconto,sconto_primo,sconto_extra,sconto_extra1 ) 
			VALUES ( '".$iddocumento."', '".$idarticolo."', '".$idintervento."', \"".$desc_iva."\",\"".$idiva."\", '".$iva."', '".$iva_indetraibile."', \"".$descrizione."\", '".$prezzo."', '".$sconto."', '".$um."', 
			'".$qta."',  \"".$serial."\" , \"".$idconto_u."\", \"".$idtiposconto."\", \"".$sconto_prc."\",\"".$sconto_extra."\",\"".$sconto_extra1."\" )");
			$idriga = $dbo->last_inserted_id();
			

			
			if( $esegue_giacenza== 1 ) {
				if( $id_magazzino_e == 0 ) {
					$tabella=" mg_articoli ";
					$where =" WHERE id='".$idarticolo."'";
				} else{
					$tabella=" mg_articoli_magazzini ";
					$where 	=" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_e."' ";
				}
				$dbo->query( "UPDATE ".$tabella." SET qta=qta+".$qta.$where );
			}
				// testo se devo fare movimenti su altri magazzini
				if( $id_magazzino_u != 0 ) {					
					( $id_tipo_u == '1' ) ? $sign='-' : $sign='+';
					$tabella=" mg_articoli_magazzini ";
					$where 	=" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_u."' ";
					
					$rs_test = $dbo->fetchArray("SELECT id FROM mg_articoli_magazzini WHERE idarticolo='".$idarticolo."' AND idmagazzino='".$id_magazzino_u."'");
					if( sizeof($rs_test) > 0  ){					
						$dbo->query( "UPDATE ".$tabella." SET qta=qta-".$old_qta.$sign.$qta.$where );
					} else {
						$dbo->query("INSERT INTO mg_articoli_magazzini( idarticolo, idmagazzino, qta ) VALUES ( '".$idarticolo."', '".$id_magazzino_u."', '".$qta."' )");
					}
				}

			if( $esegue_movimento== 1 ) add_movimento_magazzino( $idarticolo, $qta, '', '0', '0', $iddocumento, '0' );		
		}

		//Inserisco il riferimento del ddt alla riga
		$dbo->query( "UPDATE co_righe_documenti SET idddt='".$idddt."' WHERE id='".$idriga."'" );
		
		return $idriga;
	}
	
	/**
	  * Questa funzione rimuove un articolo dalla fattura data e lo riporta in magazzino nel primo lotto libero
	  * a partire dal lotto più vecchio
	  * 	$idarticolo		integer		codice dell'articolo da scollegare dalla fattura
	  * 	$iddocumento 	integer		codice della fattura da cui scollegare l'articlo
	  */
	function rimuovi_articolo_dafattura( $idarticolo, $iddocumento, $idrigadocumento ){
		global $dbo;
		global $dir;
		
		$esegue_movimento=get_var_tipodoc2($iddocumento,"mod_mov");
		$esegue_giacenza = get_var_tipodoc2($iddocumento,"mod_mag");
		$dir = get_var_tipodoc2($iddocumento,"dir");	
		$id_magazzino_e = get_var_tipodoc2($iddocumento,"id_magazzino_e");
		$id_magazzino_u = get_var_tipodoc2($iddocumento,"id_magazzino_u");
		$id_tipo_u = get_var_tipodoc2($iddocumento,"id_tipo_u");
		
		$idmagazzino=query_secca("","id_magazzino_e","co_righe_documenti","where id ='".$idrigadocumento."'");	
		
		$esegue_giacenza_articolo = query_secca("","ges_magazzino","mg_articoli","where id ='".$idarticolo."'");
		if ( $esegue_giacenza_articolo == '0' ) $esegue_giacenza="0";
		
		
		if ( $idmagazzino >= '0' ) $id_magazzino_e=$idmagazzino;
		
		
		//Leggo la quantità di questo articolo in fattura
		$query = "SELECT qta , qta_evasa , qta_da_transazione , id_riferimento , descrizione , id_riferimento_riga_ordine , idordine FROM co_righe_documenti WHERE id='".$idrigadocumento."'";
		$rs = $dbo->fetchArray($query);		
		$qta = $rs[0]['qta'];	
		$qta_evasa = $rs[0]['qta_evasa'];
		$qta_da_transazione = $rs[0]['qta_da_transazione'];
		$id_riferimento = $rs[0]['id_riferimento'];	
		$id_riferimento_riga_ordine = $rs[0]['id_riferimento_riga_ordine'];	
		$idordine = $rs[0]['idordine'];	
		$descrizione = $rs[0]['descrizione'];			
		
		// log anagrafiche
		add_storico_doc($iddocumento,"Rimozione articolo ".$descrizione);
		
		
		
	// testo se riga associata da ordine fornitore	
		if( $id_riferimento_riga_ordine > 0 ){
			$dbo->query( "UPDATE or_righe_ordini SET qta_evasa=qta_evasa-".$qta." WHERE id=\"".$id_riferimento_riga_ordine."\""  );
			// testo righe evasione dell'ordine
				$rs_testostato = $dbo->fetchArray("SELECT *  FROM or_righe_ordini WHERE qta <> qta_evasa and idordine='".$idordine."'");
				if( sizeof($rs_testostato) > 0 ){
					$dbo->query( "UPDATE or_ordini SET idstatoordine = 3 where id='".$idordine."'");				
				}
				else{
					$dbo->query( "UPDATE or_ordini SET idstatoordine = 2 where id='".$idordine."'");
				}
				$rs_testostato = $dbo->fetchArray("SELECT *  FROM or_righe_ordini WHERE qta_evasa > 0 and idordine='".$idordine."'");
				if( sizeof($rs_testostato) > 0 ){						
				}
				else{
					$dbo->query( "UPDATE or_ordini SET idstatoordine = 1 where id='".$idordine."'");		
				}	
		}
		
		if( $qta > 0 ){
			if( $dir=='entrata' ){
				if( $esegue_giacenza== 1 ) {
					if( $id_magazzino_e == 0 ) {
						$tabella=" mg_articoli ";
						$where =" WHERE id='".$idarticolo."'";
					} else{
						$tabella=" mg_articoli_magazzini ";
						$where 	=" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_e."' ";
					}
					$dbo->query( "UPDATE ".$tabella." SET qta=qta+".$qta.$where );
				}
				if( $esegue_movimento==1 ) add_movimento_magazzino( $idarticolo, $qta, '', '0', '0', $iddocumento, '0' );										
			}		
			else{
				if( $esegue_giacenza== 1 ) {
					if( $id_magazzino_e == 0 ) {
						$tabella=" mg_articoli ";
						$where =" WHERE id='".$idarticolo."'";
					} else{
						$tabella=" mg_articoli_magazzini ";
						$where 	=" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_e."' ";
					}
					$dbo->query( "UPDATE ".$tabella." SET qta=qta-".$qta.$where );
				}
				if( $esegue_movimento==1 ) add_movimento_magazzino( $idarticolo, $qta, '', '0', '0', $iddocumento, '0' );	
			}					
		
			// testo se devo fare movimenti su altri magazzini
			if( $id_magazzino_u != 0 ) {					
				( $id_tipo_u == '1' ) ? $sign='+' : $sign='-';
				$tabella=" mg_articoli_magazzini ";
				$where 	=" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_u."' ";
				if( $id_tipo_u == "1" ){									
					$dbo->query( "UPDATE ".$tabella." SET qta=qta-".$qta.$where );
				}	
				else{				
					$dbo->query( "UPDATE ".$tabella." SET qta=qta+".$qta.$where );
				}
				$dbo->query( $query );
			}

		}
		if( $id_riferimento > 0 ) $dbo->query("UPDATE co_righe_documenti SET qta_evasa = qta_evasa-".$qta_da_transazione." WHERE id='".$id_riferimento."'");				
		
		
		// Elimino la riga dal documento
		$dbo->query('DELETE FROM `co_righe_documenti` WHERE id='.prepare($idrigadocumento).' AND iddocumento='.prepare($iddocumento));
		
		//Elimino la riga dal documento
		$dbo->query("DELETE FROM `co_righe_documenti` WHERE id=\"$idrigadocumento\"");
		
		//Elimino i movimenti avvenuti nel magazzino
		$dbo->query("DELETE FROM `mg_movimenti` WHERE idarticolo=\"$idarticolo\" AND iddocumento=\"".$iddocumento."\"");
		
	
		
	}

	
	function storico_transazioni($iddocumento){	
		global $dbo;
		$rw = $dbo->fetchArray( "select  * from co_documenti_transazioni where idpadre='".$iddocumento."'");
		for($i = 0; $i < sizeof($rw); $i ++) {				
			$sale_id=$rw[$i][idfiglio];	
			$data_transazione=$rw[$i][data_transazione];
			$data_transazione=date("d/m/Y H:i:s", strtotime($data_transazione));
			$rw_transazione = $dbo->fetchArray( "select  *  from co_documenti where id='".$sale_id."'  ");								
			$rw_tot = $dbo->fetchArray( "select  SUM(subtotale - sconto + iva + rivalsainps - ritenutaacconto) as totale  FROM co_righe_documenti  where iddocumento = $sale_id ");				
			$customer_name=username_name($_SESSION['idutente'],"username");
			$descrizione=get_var_tipodoc2($sale_id,"descrizione");
			$num_cod=$rw_transazione[0]['numero_documento'];
			$date_added=$rw_transazione[0]['data'];
			
			list($date,$hora)=explode(" ",$date_added);
			list($Y,$m,$d)=explode("-",$date);
			$data=$d."-".$m."-".$Y;
			$total=$rw_tot[0]['totale'] +$rw_transazione[$i]['bollo'] + $rw_transazione[$i]['iva_rivalsainps'] ;
			
			?>
		<tr>	
				<td><a class='btn btn-sm btn-info' href="editor.php?id_module=14&id_record=<?php echo $sale_id;?>"><i class='fa fa-search'></a></td>
			<td><?php echo $customer_name;?></td>
			<td><?php echo $data_transazione;?></td>			
			<td><?php echo $num_cod;?></td>
			<td><?php echo $descrizione;?></td>
			<td><?php echo $data;?></td>
			
			<td class='text-right'><?php echo number_format($total,2);?></td>
		</tr>
			<?php
				;
		}
	}
	

	// funzioni creqazione Ordini
	
	
	function get_new_numeroordine( $data ){
		global $dbo;
		global $dir;
		$dir="uscita";
		$query = "SELECT numero AS max_numeroordine FROM or_ordini WHERE DATE_FORMAT( data, '%Y' ) = '".date("Y", strtotime($data))."' AND idtipoordine IN(SELECT id FROM or_tipiordine WHERE dir='".$dir."') ORDER BY CAST(numero AS UNSIGNED) DESC LIMIT 0,1";
		$rs = $dbo->fetchArray($query);
		$numero = $rs[0]['max_numeroordine']+1;

		
		
		return $numero;
	}
	
	function get_new_numerosecondarioordine( $data ){
		global $dbo;
		global $dir;
	
	
		$query = "SELECT numero_esterno FROM or_ordini WHERE DATE_FORMAT( data, '%Y' ) = '".date("Y", strtotime ( '+3 month' , strtotime ( $data) ))."'  ORDER BY CAST(numero_esterno AS UNSIGNED) DESC LIMIT 0,1";
		$rs = $dbo->fetchArray($query);
		$numero_secondario = $rs[0]['numero_esterno'];

		//Calcolo il numero secondario se stabilito dalle impostazioni e se documento di vendita
		$formato_numero_secondario = get_var("Formato numero secondario ordine");

		if( $numero_secondario=='' )
			$numero_secondario = $formato_numero_secondario;


		if( $formato_numero_secondario!='' )
			$numero_esterno = get_next_code( $numero_secondario, 1, $formato_numero_secondario );
		else
			$numero_esterno = '';

		return $numero_esterno;
	}
	
	
	function add_articolo_inordine( $idriferimento_doc, $idriga,$idordine, $idarticolo, $descrizione, $idiva, $qta, $prezzo, $sconto=0, $lotto='', $serial='', $altro='' ){
		global $dbo;
		global $dir;

		$lotto="";
		$serial="";
		$altro="";
		$query = "SELECT um FROM mg_articoli WHERE id='".$idarticolo."'";
		$rs = $dbo->fetchArray($query);
		$um = $rs[0]['um'];

			//Lettura iva dell'articolo
			$rs2 = $dbo->fetchArray("SELECT percentuale, indetraibile FROM co_iva WHERE id='".$idiva."'");
			$iva = ($prezzo-$sconto)/100*$rs2[0]['percentuale'];
			$iva_indetraibile = $iva/100*$rs2[0]['indetraibile'];
			//Verifico se nell'ordine c'è già questo articolo allo stesso prezzo unitario
			$rs = $dbo->fetchArray("SELECT id, qta FROM or_righe_ordini WHERE idarticolo='".$idarticolo."' AND idordine='".$idordine."' AND lotto=\"".$lotto."\" AND serial=\"".$serial."\" AND altro=\"".$altro."\" AND sconto=\"".$sconto."\"");
		
		
			//Inserisco la riga nell'ordine: se nell'ordine c'è già questo articolo incremento la quantità e l'iva...
		//	if( sizeof($rs) > 0 ){
		//		$dbo->query("UPDATE or_righe_ordini SET qta=qta+".$qta.", subtotale=subtotale+".$prezzo.", iva=iva+".$iva.", iva_indetraibile=iva_indetraibile+".$iva_indetraibile." WHERE id='".$rs[0]['id']."'");
		//	}

		//	//...altrimenti inserisco la scorta nell'ordine da zero
		//	else{
				$dbo->query("INSERT INTO or_righe_ordini( idordine, idarticolo, idiva, iva, iva_indetraibile, descrizione, subtotale, sconto, um, qta, lotto, serial, altro , idriga_doc , idriferimento_doc ) VALUES ( '".$idordine."', '".$idarticolo."', '".$idiva."', '".$iva."', '".$iva_indetraibile."', \"".$descrizione."\", '".$prezzo."', \"".$sconto."\", '".$um."', '".$qta."', \"".$lotto."\", \"".$serial."\", \"".$altro."\" , \"".$idriga."\",\"".$idriferimento_doc."\")");
		//	}
		
	}
	
	function scadenze($iddocumento){
		global $dbo;
		$year=date('Y');
		$month=date('m');	
		$rw = $dbo->fetchArray( "SELECT * , co_scadenziario.id as id_scad , co_tipidocumento.descrizione as des_doc
		FROM (co_scadenziario INNER JOIN (((co_documenti INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica) 
		INNER JOIN co_pagamenti ON co_documenti.idpagamento=co_pagamenti.id) 
		INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id) ON co_scadenziario.iddocumento=co_documenti.id) 
		INNER JOIN co_statidocumento ON co_documenti.idstatodocumento=co_statidocumento.id HAVING 1=1  
		and co_documenti.id='".$iddocumento."' 	ORDER BY `scadenza` ASC");		
		for($i = 0; $i < sizeof($rw); $i ++) {				
			$sale_id=$rw[$i][id_scad];		
			$sale_number=$rw[$i]['numero'];
			$idanagrafica=$rw[$i]['idanagrafica'];
			$customer_name=$rw[$i]['ragione_sociale'];
			$descrizione=$rw[$i]['des_doc'];
			$date_added=$rw[$i]['scadenza'];
			$date_pag=$rw[$i]['data_pagamento'];
			list($date,$hora)=explode(" ",$date_added);
			list($Y,$m,$d)=explode("-",$date);
			$data=$d."-".$m."-".$Y;
			$total=$rw[$i]['da_pagare']  ;
			$pagato=$rw[$i]['pagato']  ;
				
			?>
			
			
			
		<tr>
			<td><a href="editor.php?id_module=18&id_record=<?php echo $sale_id;?>"><?php echo $i +1;?></a></td>
			<td><?php echo date( "d/m/Y", strtotime($rw[$i]['scadenza']));?></td>
			<td><?php echo number_format($total,2);?></td>
			<td><?php echo number_format($pagato,2);?></td>
			
			 
		</tr>
			<?php
				;
		}
	}
	// documento differito
	function doc_differito_crea( $id_record,$iddocumento_padre,$sta_sucessivo  ){		
		global $dbo;		
		if( $id_record ){
			
			$sta_sucessivo=get_var_tipodoc2($id_record,'differito_sta_suc');
			$rs_ori = $dbo->fetchArray("SELECT * FROM co_documenti WHERE id=\"".$id_record."\"");		
		// assegno iddocumento differito
			
			if ( $sta_sucessivo != '0' ){ 	
				$dbo->query( "UPDATE co_documenti SET id_differito='".$id_record."' , id_statoprecedente = idstatodocumento , idstatodocumento='".$sta_sucessivo."' WHERE id='".$iddocumento_padre."'" );		
			}
			else{
				$dbo->query( "UPDATE co_documenti SET id_differito='".$id_record."'  WHERE id='".$iddocumento_padre."'" );
			}
		//inserimento righe
			$rs = $dbo->fetchArray("SELECT * FROM co_righe_documenti WHERE iddocumento=\"".$iddocumento_padre."\"");
			for( $i=0; $i<sizeof($rs); $i++ ){																	
				$idriga = add_articolo_infattura( $id_record, $rs[$i]['idarticolo'], $rs[$i]['descrizione'], $rs[$i]['idiva'], $rs[$i]['qta'], $rs[$i]['subtotale'], $rs[$i]['sconto'],'0', 
				$rs[$i]['lotto'],
				$rs[$i]['serial'],
				$rs[$i]['altro'],
				$rs[$i]['idconto'],
				$rs[$i]['tipo_sconto'],
				$rs[$i]['sconto_primo'],$rs[$i]['sconto_extra'],$rs[$i]['sconto_extra1'],'','','','');	

					
				$riv= $rs[$i]['rivalsainps'];				
				$dbo->query( "UPDATE co_righe_documenti SET   id_riferimento='".$rs[$i]['id']."' , idritenutaacconto='".$rs[$i]['idritenutaacconto']."' , 
				idrivalsainps='".$rs[$i]['idrivalsainps']."' , rivalsainps='".$riv."'  WHERE id='".$idriga."'" );									
				
				// aggiorno qta evasa nel documento padre
				$dbo->query( "UPDATE co_righe_documenti SET  qta_evasa='".$rs[$i]['qta']."' WHERE id=\"".$rs[$i]['id']."\"" );
			
			}
			$tab_transazione=" co_documenti_transazioni ";
			$query="Insert into ".$tab_transazione." (idpadre,idfiglio,data_transazione,idutente) values (\"".$iddocumento_padre."\", \"".$id_record."\",NOW(), '".$_SESSION['idutente']."')";
			$dbo->query($query);
						
			//Ricalcolo inps, ritenuta e bollo (se la fattura non è stata pagata)
			if( $dir=='entrata' ){
				ricalcola_costiagg_fattura( $id_record );
			}
			else{
				ricalcola_costiagg_fattura( $id_record, $rs_ori[0]['idrivalsainps'], $rs_ori[0]['idritenutaacconto'], $rs_ori[0]['bollo'] );
			}			
		}	
	}
	
	function doc_duplica( $id_record,$idtipodocumento,$sta_sucessivo  ){		
	global $dbo;	
	
	if( $id_record ){
		$rs = $dbo->fetchArray("SELECT data FROM co_documenti WHERE id=\"".$id_record."\"");
		$data = $rs[0]['data'];
		$id_doc_padre=$id_record;			
		// ricerca se la numerazione e' progressiva o propria
		$query = "SELECT mod_num , dir , idconto , idpagamento , sta_apertura FROM co_tipidocumento  WHERE id='".$idtipodocumento."'";
		$rs_parametri = $dbo->fetchArray($query);
		$numerazione_progressiva = $rs_parametri[0]['mod_num'];
		$dir = $rs_parametri[0]['dir'];
		$idconto = $rs_parametri[0]['idconto'];
		$idpagamento_new = $rs_parametri[0]['idpagamento'];
		$idstato = $rs_parametri[0]['sta_apertura'];
		$suffisso=get_var_tipodoc($idtipodocumento,'txt_suffisso');
		$suffisso_anno=get_var_tipodoc($idtipodocumento,'suffisso_anno');
		$idstato = get_var_tipodoc($idtipodocumento,'sta_apertura');
		$doc_sucessivo_stato_padre = get_var_tipodoc2($id_record,'doc_sucessivo_stato_padre');
		
		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 = '';
			$forza_numerazione=get_var_tipodoc($idtipodocumento,'forza_numerazione');
			if( $forza_numerazione =='1' ){
				// forzatura numero progressivo
				if( $numerazione_progressiva==0) $numero_esterno = get_new_numerosecondariofattura( $data,$idtipodocumento );
				if( $numerazione_progressiva==1) $numero_esterno = get_new_numerosecondariofattura_multi( $data,$idtipodocumento );
			}				
		}			
	
		if( $sta_sucessivo=='0' ){
			$idstatodocumento=$idstato;
		}
		else{
			$idstatodocumento=$sta_sucessivo;			
		}
		$numero_documento=$suffisso.$numero_esterno;
		if( $suffisso_anno==1) $numero_documento = $numero_documento."_".date("Y");
				
		//lettura gruppo
		$id_gruppodoc=get_var_tipodoc($idtipodocumento,'id_gruppo_tipologia');
		
		//Lettura dati fattura attuale
		$rs = $dbo->fetchArray("SELECT * FROM co_documenti WHERE id=\"".$id_record."\"");
		
		
		// creo nuova testata documento
		$dbo->query("INSERT INTO co_documenti( numero_documento,id_gruppo_tipologia,id_doc_padre,numero, numero_esterno, data, idanagrafica, idcausalet, idspedizione, idporto, idaspettobeni, idvettore, n_colli, idsede, idtipodocumento, idstatodocumento, idpagamento, idconto, idrivalsainps, idritenutaacconto, rivalsainps, iva_rivalsainps, ritenutaacconto, bollo, note, note_aggiuntive, buono_ordine , matricola) 
		VALUES( \"".$numero_documento."\",\"".$id_gruppodoc."\",\"".$id_doc_padre."\",\"".$numero."\", \"".$numero_esterno."\", \"".$rs[0]['data']."\", \"".$rs[0]['idanagrafica']."\", \"".$rs[0]['idcausalet']."\", \"".$rs[0]['idspedizione']."\", \"".$rs[0]['idporto']."\", \"".$rs[0]['idaspettobeni']."\", \"".$rs[0]['idvettore']."\", \"".$rs[0]['n_colli']."\", \"".$rs[0]['idsede']."\", \"".$idtipodocumento."\" , \"".$idstatodocumento."\", \"".$rs[0]['idpagamento']."\", \"".$rs[0]['idconto']."\", \"".$rs[0]['idrivalsainps']."\", \"".$rs[0]['idritenutaacconto']."\", \"".$rs[0]['rivalsainps']."\", \"".$rs[0]['iva_rivalsainps']."\", \"".$rs[0]['ritenutaacconto']."\", \"".$rs[0]['bollo']."\", \"".$rs[0]['note']."\", \"".$rs[0]['note_aggiuntive']."\", \"".$rs[0]['buono_ordine']."\" ,\"".$rs[0]['matricola']."\" )");
		$iddocumento = $dbo->last_inserted_id();
		// inserisco storico transazione		
		$tab_transazione=" co_documenti_transazioni ";
		$query="Insert into ".$tab_transazione." (idpadre,idfiglio,data_transazione,idutente) values (\"".$id_record."\", \"".$iddocumento."\",NOW(), '".$_SESSION['idutente']."')";
		$dbo->query($query);
		
		//aggiorno lo stato documento padre
		if ( $doc_sucessivo_stato_padre != '0' ){ 	
			$dbo->query( "UPDATE co_documenti SET  id_statoprecedente = idstatodocumento , idstatodocumento='".$doc_sucessivo_stato_padre."' WHERE id='".$id_record."'" );	
		}
				
		//Duplicazione righe
		$rs = $dbo->fetchArray("SELECT * FROM co_righe_documenti WHERE iddocumento=\"".$id_record."\"");
		for( $i=0; $i<sizeof($rs); $i++ ){	
				$idriga = add_articolo_infattura( $iddocumento, $rs[$i]['idarticolo'], $rs[$i]['descrizione'], $rs[$i]['idiva'], $rs[$i]['qta'], $rs[$i]['subtotale'], $rs[$i]['sconto'],'0', 
				$rs[$i]['lotto'],
				$rs[$i]['serial'],
				$rs[$i]['altro'],
				$rs[$i]['idconto'],
				$rs[$i]['tipo_sconto'],
				$rs[$i]['sconto_primo'],$rs[$i]['sconto_extra'],$rs[$i]['sconto_extra1']);	
					
				$riv= $rs[$i]['rivalsainps'];				
				$dbo->query( "UPDATE co_righe_documenti SET   id_riferimento='".$rs[$i]['id']."' , idritenutaacconto='".$rs[$i]['idritenutaacconto']."' , 
				idrivalsainps='".$rs[$i]['idrivalsainps']."' , rivalsainps='".$riv."'  WHERE id='".$idriga."'" );									
				
				// aggiorno qta evasa nel documento padre
				$dbo->query( "UPDATE co_righe_documenti SET  qta_evasa='".$rs[$i]['qta']."' WHERE id=\"".$rs[$i]['id']."\"" );		
		}
		//Ricalcolo inps, ritenuta e bollo (se la fattura non è stata pagata)
		if( $dir=='entrata' ){
			ricalcola_costiagg_fattura( $iddocumento );
		}
		else{
			ricalcola_costiagg_fattura( $iddocumento, $rs[0]['idrivalsainps'], $rs[0]['idritenutaacconto'], $rs[0]['bollo'] );
		}
	//	$id_record = $iddocumento;	
		return  $iddocumento;	
	}	
	}
	
	
	function inserisci_myimpianti( $id_record , $matricola ){	
		global $dbo;
		global $dir;
		$dbo->query( "DELETE FROM my_impianti_righe WHERE iddocumento='$id_record'" );
		
		$rs = $dbo->fetchArray("SELECT id   FROM my_impianti WHERE matricola=\"".$matricola."\"");
		$id_myimpianto=	$rs[0]['id'];
		
		$rs = $dbo->fetchArray("SELECT co_righe_documenti.idarticolo , descrizione , mg_prodotti.serial as n_seriale , qta ,id_impianto  FROM co_righe_documenti 
			left  join mg_prodotti on co_righe_documenti.id = mg_prodotti.id_riga_documento
			WHERE co_righe_documenti.iddocumento=\"".$id_record."\"");
		for( $i=0; $i<sizeof($rs); $i++ ){	
			$idarticolo = $rs[$i]['idarticolo'];
			$descrizione = $rs[$i]['descrizione'];
			$seriale = $rs[$i]['n_seriale'];
			$qta = $rs[$i]['qta']	;
			$id_myimpianto=	$rs[$i]['id_impianto'];
			$d_seriale=$descrizione." - N°Seriale : ".$seriale;
			if ( $seriale == '') {
				$dbo->query("INSERT INTO my_impianti_righe( iddocumento , d_seriale,n_seriale,matricola, idarticolo, descrizione , qta ) VALUES 
				( '".$id_record."', '','','".$id_myimpianto."', '".$idarticolo."',  \"".$descrizione."\", '".$qta."' )");	
			}
			else{				
				$dbo->query("INSERT INTO my_impianti_righe( iddocumento , d_seriale,n_seriale,matricola, idarticolo, descrizione , qta ) VALUES 
				( '".$id_record."', '".$d_seriale."','".$seriale."','".$id_myimpianto."', '".$idarticolo."',  \"".$descrizione."\", '1' )");	
			}
		
		}		
		
		
	}
	
	function aggiorna_sconto( $id_record){
		global $dbo;
		global $dir;
		aggiorna_costo_km($id_record);
		
		if ( get_var_tipodoc2($id_record,"colli_automatico") == 1) {
			aggiorna_colli($id_record);
		}
		
		$query = "SELECT tipo_sconto_globale,sconto_globale FROM co_documenti WHERE id='".$id_record."'";
		$rs = $dbo->fetchArray($query);
		$tipo_sconto = $rs[0]['tipo_sconto_globale'];
		$sconto_globale = $rs[0]['sconto_globale'];
	
		$descrizione = "Sconto incondizionato";

		$str_sql="DELETE FROM co_righe_documenti WHERE descrizione ='Sconto incondizionato'  AND iddocumento='".$id_record."'";
		$dbo->query($str_sql);
	
		
	
		if ($sconto_globale > 0) {
	
			$rs = $dbo->fetchArray("SELECT SUM(subtotale - sconto) AS imponibile, SUM(iva) AS iva FROM co_righe_documenti WHERE iddocumento='".$id_record."'");            
			$subtotale = $rs[0]['imponibile'];
			$iva = $rs[0]['iva'];			
			$idiva = get_var("Iva predefinita");
	
			if ($tipo_sconto == 'Fisso') {
				$rs2 = $dbo->fetchArray("SELECT * FROM co_iva WHERE id='".$idiva."'");
				$val_iva= ($sconto_globale/100)*$rs2[0]['percentuale'];
				$desc_iva= $rs2[0]['descrizione'];
				$subtot=-$sconto_globale;
				$qta=1;
				$val_iva=-$val_iva;
				
				$query = "INSERT INTO co_righe_documenti( iddocumento, idiva, desc_iva, iva,  descrizione, subtotale, qta,idconto)  
				VALUES( \"$id_record\", \"".$idiva."\", \"$desc_iva\", \"$val_iva\",  \"$descrizione\", \"$subtot\",  \"$qta\",  
				\"".$idconto."\" )";
				$dbo->query($query) ;

			} else {
				$val_sconto= ($subtotale/100)*$sconto_globale;
				$rs2 = $dbo->fetchArray("SELECT * FROM co_iva WHERE id='".$idiva."'");
				$val_iva= ($val_sconto/100)*$rs2[0]['percentuale'];
				$desc_iva= $rs2[0]['descrizione'];
				$subtot=-$val_sconto;
				$qta=1;
				$val_iva=-$val_iva;
				$query = "INSERT INTO co_righe_documenti( iddocumento, idiva, desc_iva, iva,  descrizione, subtotale, qta,idconto)  
				VALUES( \"$id_record\", \"".$idiva."\", \"$desc_iva\", \"$val_iva\",  \"$descrizione\", \"$subtot\",  \"$qta\",  
				\"".$idconto."\" )";
				$dbo->query($query) ;				
			}
		}
		


	}
	
	function aggiorna_colli( $id_record){
		global $dbo;
		global $dir;
		$str_sql="select sum(co_righe_documenti.qta / qta_colli) as tot_colli FROM co_righe_documenti inner join mg_articoli on mg_articoli.id = co_righe_documenti.idarticolo WHERE iddocumento='".$id_record."' and co_righe_documenti.idarticolo <> 0";
		$rs = $dbo->fetchArray($str_sql);
		$dbo->query("UPDATE co_documenti SET n_colli='".ceil($rs[0]['tot_colli'])."' WHERE id='$id_record'");		
	}
	
	function aggiorna_costo_km( $id_record){
		global $dbo;
		global $dir;

		$descrizione=get_var_tipodoc2($id_record,'testo_km');		
		
		$query = "SELECT id_contratto , idanagrafica , idsede FROM co_documenti WHERE id='".$id_record."'";
		$rs = $dbo->fetchArray($query);
		$idanagrafica=$rs[0]['idanagrafica'];
		$idsede=$rs[0]['idsede'];
		
		
		if( $rs[0]['id_contratto'] != "0" && $rs[0]['id_contratto'] != "" ){	
		//	$descrizione = "Costo Km";	
			$str_sql="DELETE FROM co_righe_documenti WHERE descrizione ='".$descrizione."'  AND iddocumento='".$id_record."'";
			$dbo->query($str_sql);
	
			$rs = $dbo->fetchArray("SELECT id_tipocanone FROM co_contratti WHERE id='".$rs[0]['id_contratto']."'");            
			$id_tipocanone = $rs[0]['id_tipocanone'];			
			$rs = $dbo->fetchArray("SELECT costo_km FROM co_contratti_tipi WHERE id='".$id_tipocanone."'");            
			$costo_km = $rs[0]['costo_km'];
			if ( $costo_km  != '0') {
			
			if( $idsede != "0" ){	
				$query = "SELECT km  FROM an_sedi WHERE id='".$idsede."'";
				$rs_ana = $dbo->fetchArray($query);
				$km = $rs_ana[0]['km'];
			} else {
				$query = "SELECT km  FROM an_anagrafiche WHERE idanagrafica='".$idanagrafica."'";
				$rs_ana = $dbo->fetchArray($query);
				$km = $rs_ana[0]['km'];
			}
			
			
			
			$idiva = get_var("Iva predefinita");
	
			$importo_km=$km * $costo_km;
			$rs2 = $dbo->fetchArray("SELECT * FROM co_iva WHERE id='".$idiva."'");
			$val_iva= ($importo_km/100)*$rs2[0]['percentuale'];
			$desc_iva= $rs2[0]['descrizione'];			
			$qta=1;
			
			$query = "INSERT INTO co_righe_documenti( iddocumento, idiva, desc_iva, iva,  descrizione, subtotale, qta,idconto)  
			VALUES( \"$id_record\", \"".$idiva."\", \"$desc_iva\", \"$val_iva\",  \"$descrizione\", \"$importo_km\",  \"$qta\",  
			\"".$idconto."\" )";
			$dbo->query($query) ;
			}
							
			
		}
	
		

	}
	
	function storico_transazioni_xml($iddocumento){	
		global $dbo;
		$rw = $dbo->fetchArray( "select  * from co_documenti_progressivo where id_documento='".$iddocumento."' order by data");
		for($i = 0; $i < sizeof($rw); $i ++) {				
			$id_progressivo=$rw[$i][id];	
			$data_transazione=$rw[$i][data];
			$data_transazione=date("d/m/Y H:i:s", strtotime($data_transazione));
			
			$data_invio="";
			$data_esito="";
			
			if ( $rw[$i][data_invio] !="0000-00-00 00:00:00" ) $data_invio=date("d/m/Y H:i:s", strtotime($rw[$i][data_invio]));
			if ( $rw[$i][data_esito] !="0000-00-00 00:00:00" ) $data_esito=date("d/m/Y H:i:s", strtotime($rw[$i][data_esito]));
		
			$customer_name=username_name($rw[$i][idutente],"username");
			$num_progressivo=$rw[$i][numero_esterno];
			
			if ( $rw[$i][inviato] == '1') {	
				$icona_invio="fa fa-cloud";
				$titolo_invio="Da inviare";
				$colore_icona="info";		
			}
			
			if ( $rw[$i][inviato] == '2') {	
				$icona_invio="fa fa-cloud-upload";
				$titolo_invio="Inviata";
				$colore_icona="success";	
			}

			
			if ( $rw[$i][esito] == '1') {	
				$icona_esito="fa fa-check-square";
				$titolo_esito="Positivo";
				$colore_icona_esito="success";	
			}
			if ( $rw[$i][esito] == '2') {	
				$icona_esito="fa fa-exclamation-circle";
				$titolo_esito="Errata";
				$colore_icona_esito="danger";	
			}
			if ( $rw[$i][esito] == '3') {	
				$icona_esito="fa fa-exclamation-triangle";
				$titolo_esito="Scartata";
				$colore_icona_esito="danger";	
			}
			if ( $rw[$i][esito] == '4') {	
				$icona_esito="fa fa-hourglass-o";
				$titolo_esito="In attesa";
				$colore_icona_esito="info";	
			}

			
			?>
		<tr>	
			<td class='text-center'><?php echo $customer_name;?></td>
			<td class='text-center'><?php echo $data_transazione;?></td>			
			<td class='text-center'><?php echo $num_progressivo;?></td>

			<td class='text-center'><a class="btn btn-sm btn-<?php echo $colore_icona ?>" title="<?php echo $titolo_invio ?>" data-href="modules/documenti/add_stato_xml.php?iddocumento=<?php echo $iddocumento ?>&id_progressivo=<?php echo $id_progressivo ?>" data-toggle="modal" data-title="Stato Invio file" data-target="#bs-popup"><i class="<?php echo $icona_invio ?>"></i></a></td>															
			<td class='text-center'><?php echo $data_invio;?></td>	
			
			<td class='text-center'><a class="btn btn-sm btn-<?php echo $colore_icona_esito ?>" title="<?php echo $titolo_esito ?>"data-href="modules/documenti/add_esito_xml.php?iddocumento=<?php echo $iddocumento ?>&id_progressivo=<?php echo $id_progressivo ?>" data-toggle="modal" data-title="Esito Invio file" data-target="#bs-popup"><i class="<?php echo $icona_esito ?>"></i></a></td>															
			<td class='text-center'><?php echo $data_esito;?></td>	
		
		
		
		</tr>
			<?php
				;
		}
	}
	
	function all_storico_transazioni_xml(){	

		global $dbo;
		
		$str_slq="select  * from co_documenti_progressivo where `data` >= '".$_SESSION['period_start']."' AND `data` <= '".$_SESSION['period_end']."'";
		// cerco filtri
		
			$rw_filtri = $dbo->fetchArray( "select  * from co_xml_filtri ");
			$id_esito = $rw_filtri[0][id_esito];
			$id_invio = $rw_filtri[0][id_invio];

		if( $id_esito != "0" ) $str_slq = $str_slq." and esito='".$id_esito."'";
		if( $id_invio != "0" ) $str_slq = $str_slq." and inviato='".$id_invio."'";
			
		$str_slq = $str_slq." order by data";
		
		$rw = $dbo->fetchArray($str_slq);
		for($i = 0; $i < sizeof($rw); $i ++) {				
			$id_progressivo=$rw[$i][id];	
			$id_documento=$rw[$i][id_documento];	
				$rw_doc = $dbo->fetchArray( "select  * from co_documenti where id >= '".$id_documento."'");
				$rw_ana = $dbo->fetchArray( "select ragione_sociale from an_anagrafiche where idanagrafica >= '".$rw_doc[0][idanagrafica]."'");
			$data_transazione=$rw[$i][data];
			$data_transazione=date("d/m/Y H:i:s", strtotime($data_transazione));
			
			$data_invio="";
			$data_esito="";
			
			if ( $rw[$i][data_invio] !="0000-00-00 00:00:00" ) $data_invio=date("d/m/Y H:i:s", strtotime($rw[$i][data_invio]));
			if ( $rw[$i][data_esito] !="0000-00-00 00:00:00" ) $data_esito=date("d/m/Y H:i:s", strtotime($rw[$i][data_esito]));
		
			$customer_name=username_name($rw[$i][idutente],"username");
			$num_progressivo=$rw[$i][numero_esterno];
			
			if ( $rw[$i][inviato] == '1') {	
				$icona_invio="fa fa-cloud";
				$titolo_invio="Da inviare";
				$colore_icona="info";		
			}
			
			if ( $rw[$i][inviato] == '2') {	
				$icona_invio="fa fa-cloud-upload";
				$titolo_invio="Inviata";
				$colore_icona="success";	
			}

			
			if ( $rw[$i][esito] == '1') {	
				$icona_esito="fa fa-check-square";
				$titolo_esito="Positivo";
				$colore_icona_esito="success";	
			}
			if ( $rw[$i][esito] == '2') {	
				$icona_esito="fa fa-exclamation-circle";
				$titolo_esito="Errata";
				$colore_icona_esito="danger";	
			}
			if ( $rw[$i][esito] == '3') {	
				$icona_esito="fa fa-exclamation-triangle";
				$titolo_esito="Scartata";
				$colore_icona_esito="danger";	
			}
			if ( $rw[$i][esito] == '4') {	
				$icona_esito="fa fa-hourglass-o";
				$titolo_esito="In attesa";
				$colore_icona_esito="info";	
			}

			
			?>
				<tr>	
					
				
					<td><a class='btn btn-sm btn-info' href="editor.php?id_module=14&id_record=<?php echo $id_documento;?>" title='Analizza documento'><i class='fa fa-search'></a></td>
					<td class='text-left'><?php echo $rw_doc[0][numero_documento];?></td>
					<td class='text-left'><?php echo $rw_ana[0][ragione_sociale];?></td>
					<td class='text-center'><?php echo $customer_name;?></td>
					<td class='text-center'><?php echo $data_transazione;?></td>			
					<td class='text-center'><?php echo $num_progressivo;?></td>

					<td class='text-center'><a class="btn btn-sm btn-<?php echo $colore_icona ?>" title="<?php echo $titolo_invio ?>"><i class="<?php echo $icona_invio ?>"></i></a></td>															
					<td class='text-center'><?php echo $data_invio;?></td>	
					
					<td class='text-center'><a class="btn btn-sm btn-<?php echo $colore_icona_esito ?>" title="<?php echo $titolo_esito ?>"><i class="<?php echo $icona_esito ?>"></i></a></td>															
					<td class='text-center'><?php echo $data_esito;?></td>	

				</tr>
			<?php
				;
		}
	}
	
	function lettura_file_xml_ordacq( $id_record, $path){
		global $dbo;
		global $dir;
		$rs = $dbo->fetchArray("SELECT * FROM zz_files WHERE module='import_xml' and nome='File elettronico' AND externalid=\"".$id_record."\"");					
		$tmpName = $path."/files/import_xml/".$rs[0]['filename'];	
		$extensions = array('XML', 'xml');		
		$fattura = new SimpleXMLElement($tmpName, null, true);  		
		foreach($fattura->FatturaElettronicaBody->DatiGenerali->DatiOrdineAcquisto as $linea){
			$iddocumento = (string)$linea->IdDocumento;
			$codicecommessa = (string)$linea->CodiceCommessaConvenzione;
			
			$data = (string)$linea->Data;
			$data=date("d/m/Y", strtotime($data));
			
			$CodiceCUP = (string)$linea->CodiceCUP;
			$CodiceCIG = (string)$linea->CodiceCIG;
			

			if ( $data == '01/01/1970' ) {
				$data="Non indicata";			
			}
			?>
			<tr>	
				<td class='text-left'><?php echo $data;?></td>
				<td class='text-right'><?php echo $iddocumento;?></td>			
				<td class='text-left'><?php echo $codicecommessa;?></td>
				<td class='text-left'><?php echo $CodiceCUP;?></td>
				<td class='text-left'><?php echo $CodiceCIG;?></td>
			</tr>
			<?php
		}		
	}
	
	function lettura_file_xml_ddt( $id_record, $path , $idanagrafica){
		global $dbo;
		global $dir;
		$rs = $dbo->fetchArray("SELECT * FROM zz_files WHERE module='import_xml' and nome='File elettronico' AND externalid=\"".$id_record."\"");					
		$tmpName = $path."/files/import_xml/".$rs[0]['filename'];	
		$extensions = array('XML', 'xml');		
		$fattura = new SimpleXMLElement($tmpName, null, true);  		
		foreach($fattura->FatturaElettronicaBody->DatiGenerali->DatiDDT as $linea){
			$NumeroDDT = (string)$linea->NumeroDDT;
			$data = (string)$linea->DataDDT;
			$data=date("d/m/Y", strtotime($data));
			$RiferimentoNumeroLinea=(string)$linea->RiferimentoNumeroLinea;
			$query = "SELECT * FROM co_documenti WHERE idanagrafica='".$idanagrafica."' and  numero_documento='".$NumeroDDT."'"; 			
			$rs_test_ddt = $dbo->fetchArray($query);
			

			
			
			if ( $data == '01/01/1970' ) {
				$data="Non indicata";			
			}
			?>
			<tr>	
				<td class='text-left'><?php echo $RiferimentoNumeroLinea;?></td>
				<td class='text-left'><?php echo $data;?></td>
				<td class='text-right'><?php echo $NumeroDDT;?></td>
				<?php 
				if ( sizeof($rs_test_ddt) > 0 ) {
				?>
				<td><a  class='btn btn-sm btn-info' href="editor.php?id_module=14&id_record=<?php echo $rs_test_ddt[0]['id'];?>"><i class='fa fa-search'></a></td>
				<td class='text-center'><a class="btn btn-sm btn-success" data-href="modules/documenti/add_link_xml.php?iddocumento=<?php echo $id_record ?>&id_link=<?php echo $rs_test_ddt[0]['id'] ?>" data-toggle="modal" data-title="Unisci Documenti" data-target="#bs-popup"><i class="fa fa-chain"></i></a></td>															
		
				
				<?php 
				}
				?>	
			</tr>
			<?php
		}		
	}
	
	function lettura_file_xml_pagamenti( $id_record, $path){
		global $dbo;
		global $dir;
		$rs = $dbo->fetchArray("SELECT * FROM zz_files WHERE module='import_xml' and nome='File elettronico' AND externalid=\"".$id_record."\"");					
		$tmpName = $path."/files/import_xml/".$rs[0]['filename'];	
		$extensions = array('XML', 'xml');		
		$fattura = new SimpleXMLElement($tmpName, null, true);  		
		foreach($fattura->FatturaElettronicaBody->DatiPagamento->DettaglioPagamento as $linea){
			$data_pagamento = (string)$linea->DataScadenzaPagamento;
			$importo = (string)$linea->ImportoPagamento;
			$data_pagamento=date("d/m/Y", strtotime($data_pagamento));
			$istitutoFinanziario = (string)$linea->IstitutoFinanziario;
			$modalita_pagamento = (string)$linea->ModalitaPagamento;
			$iban = (string)$linea->IBAN;

			?>
			<tr>	
				<td class='text-center'><?php echo $data_pagamento;?></td>
				<td class='text-center'><?php echo $importo;?></td>			
				<td class='text-center'><?php echo $istitutoFinanziario;?></td>
				<td class='text-center'><?php echo $iban;?></td>
			</tr>
			<?php
		}
		return $modalita_pagamento;
	}

	function lettura_file_xml_righe( $id_record, $path){
		global $dbo;
		global $dir;
		$rs = $dbo->fetchArray("SELECT * FROM zz_files WHERE module='import_xml'  and nome='File elettronico' AND externalid=\"".$id_record."\"");					
		$tmpName = $path."/files/import_xml/".$rs[0]['filename'];	
		$extensions = array('XML', 'xml');		
		$fattura = new SimpleXMLElement($tmpName, null, true);  		
		foreach($fattura->FatturaElettronicaBody->DatiBeniServizi->DettaglioLinee as $linea){		
			$descrizione = (string)$linea->Descrizione;
			$desc_aggiuntiva= "";
			$desc_aggiuntiva_sconti= "";
			$importo_manuale=(string)$linea->PrezzoUnitario;
			$importo_manuale_sc=(string)$linea->PrezzoUnitario;
			$qta=(string)$linea->Quantita;
			$aliva = (string)$linea->AliquotaIVA;
			$um = (string)$linea->UnitaMisura;										
				$codice_tipo	=(string)$linea->CodiceArticolo->CodiceTipo;	// tipologia codice articolo
				$codicevalore	=(string)$linea->CodiceArticolo->CodiceValore;	// valore codice tipo
				$rif_amministrativo	=(string)$linea->RiferimentoAmministrazione;	
			$tipo_sconto	=(string)$linea->ScontoMaggiorazione->Tipo;				
			$qta=number_format( $qta, get_var("Cifre decimali"), ",", "." );	
			$importo_manuale=number_format( $importo_manuale, get_var("Cifre decimali"), ",", "." );						
			
			
			$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;
						$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_sc ) * $valore_sconto)/100;
								$sconto=$sconto1;
								$desc_aggiuntiva_sconti=$desc_aggiuntiva_sconti."+ Sc:".$valore_sconto."% ";
							}
							if ( $riga == 1 ) {
								$valore_sconto	=(string)$linea_sc->Percentuale;								
								$sconto2 =   ( ($importo_manuale_sc - $sconto1) * $valore_sconto)/100;
								$sconto= $sconto + $sconto2;
								$desc_aggiuntiva_sconti=$desc_aggiuntiva_sconti."+ Sc:".$valore_sconto."% ";
							}
							if ( $riga == 2 ) {
								$valore_sconto	=(string)$linea_sc->Percentuale;								
								$sconto3 =   ( ($importo_manuale_sc - $sconto1 - $sconto2 ) * $valore_sconto)/100;
								$sconto=$sconto + $sconto3;
								$desc_aggiuntiva_sconti=$desc_aggiuntiva_sconti."+ Sc:".$valore_sconto."% ";
							}
							if ( $riga == 3 ) {
								$valore_sconto	=(string)$linea_sc->Percentuale;								
								$sconto4 =   ( ($importo_manuale_sc - $sconto1 - $sconto2 - $sconto3) * $valore_sconto)/100;
								$sconto=$sconto + $sconto4;
								$desc_aggiuntiva_sconti=$desc_aggiuntiva_sconti."+ Sc:".$valore_sconto."% ";
							}
							if ( $riga == 4 ) {
								$valore_sconto	=(string)$linea_sc->Percentuale;								
								$sconto5 =   ( ($importo_manuale_sc - $sconto1 - $sconto2 - $sconto3 - $sconto4) * $valore_sconto)/100;
								$sconto=$sconto + $sconto5;
								$desc_aggiuntiva_sconti=$desc_aggiuntiva_sconti."+ Sc:".$valore_sconto."% ";
							}
							$riga=$riga + 1 ;
						}							
					}							
					else
					{
						$riga=0;
						$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_sc ) * $valore_sconto)/100;
								$sconto=$sconto1;
							}
							if ( $riga == 1 ) {
								$sconto_extra	=(string)$linea_sc->Percentuale;								
								$sconto2 =   ( ($importo_manuale_sc - $sconto1) * $sconto_extra)/100;
								$sconto= $sconto + $sconto2;
							}
							if ( $riga == 2 ) {
								$sconto_extra1	=(string)$linea_sc->Percentuale;								
								$sconto3 =   ( ($importo_manuale_sc - $sconto1 - $sconto2 ) * $sconto_extra1)/100;
								$sconto=$sconto + $sconto3;
							}
							$riga=$riga + 1 ;
						}
					}
				}

			}
			
			$sconto=number_format( $sconto, get_var("Cifre decimali"), ",", "." );	
			
			$TipoDato = (string)$linea->AltriDatiGestionali->TipoDato;
			$RiferimentoTesto = (string)$linea->AltriDatiGestionali->RiferimentoTesto;

			if ( $codice_tipo != "" ) {
				$desc_aggiuntiva="____ Tipologia codice : ".$codice_tipo." Valore : ".$codicevalore ;				
			}
			?>
			
			<tr>	
				<td class='text-left'><?php echo $descrizione;?> <br> <?php echo $desc_aggiuntiva;?> <br> <?php echo $desc_aggiuntiva_sconti;?></td>
				
				<td class='text-right'><?php echo $qta;?></td>			
				<td class='text-right'><?php echo $importo_manuale;?></td>
				<td class='text-right'><?php echo $aliva;?></td>				
				<td class='text-right'><?php echo $sconto;?></td>
				<td class='text-right'><?php echo $rif_amministrativo;?></td>
				<td class='text-right'><?php echo $TipoDato;?></td>
				<td class='text-right'><?php echo $RiferimentoTesto;?></td>
			</tr>
			<?php
		}
		
	}
	
	function mod_riga($idriga , $val ){
		if( isset($_POST['idriga']) ){
			global $dbo;
			global $dir;
			$rs = $dbo->fetchArray("SELECT * FROM co_righe_documenti WHERE id='".$idriga."'");			
			$iddocumento=$rs[0][iddocumento];	
			$idmagazzino = $rs[0][idmagazzino];
			$descrizione =  $rs[0][descrizione];
			$importo_manuale = $rs[0][subtotale] / $rs[0][qta];
			$prezzo = $rs[0][subtotale];
			$perc_agente = $rs[0][perc_agente];
			$idiva =$rs[0][idiva];

			if ( $val == 'A' ) $qta = $rs[0][qta] + 1 ;
			if ( $val == 'S' ) $qta = $rs[0][qta] - 1 ;

			if ( $qta == '0' ) $qta = 1 ;
			
		
			
			$subtot = $importo_manuale*$qta;
			$idtiposconto = $rs[0][tipo_sconto];
			$sconto = $rs[0][sconto_primo];
			$sconto_extra = $rs[0][sconto_extra];
			$sconto_extra1 = $rs[0][sconto_extra1];
			$idmagazzino_old=query_secca("","id_magazzino_e","co_righe_documenti","where id='".$idriga."'");
			$per_agente =01;
				
					// Info matricola
			$qana = "SELECT *  FROM my_impianti WHERE matricola='".$rs[0][id_matricola]."'";
			$rs_matricola = $dbo->fetchArray($qana);
			$matricola_impianto=$rs_matricola[0]['id'];
		

			if($idtiposconto=='2'){
				$sconto_prc = $sconto;
				$sconto = ($importo_manuale*$sconto_prc)/100;
				$sconto_new = ($prezzo_new * $sconto_prc)/100;							
			}else{
				$sconto_prc = $sconto;
			}										
			if($idtiposconto=='2'){
				$sconto_extra = $sconto_extra;
				$sconto1 = (($importo_manuale -  $sconto) * $sconto_extra)/100;
				$sconto1_new = (($importo_manuale -  $sconto_new) * $sconto_extra)/100;
			}else{
				$sconto1 = $sconto_extra;					
			}
			if($idtiposconto=='2'){
				$sconto_extra1 = $sconto_extra1;
				$sconto2 = (($importo_manuale -  $sconto - $sconto1) * $sconto_extra1)/100;
				$sconto2_new = (($importo_manuale -  $sconto_new - $sconto1_new) * $sconto_extra1)/100;
			}else{
				$sconto2 = $sconto_extra1;					
			}
			$sconto = ( $sconto + $sconto1 + $sconto2  ) *$qta;
			$sconto_new = ( $sconto_new + $sconto1_new + $sconto2_new  ) *$qta;
					
			// impostazioni documento$esegue_movimento=get_var_tipodoc2($iddocumento,"mod_mov");
			$esegue_movimento=get_var_tipodoc2($iddocumento,"mod_mov");
			$esegue_giacenza = get_var_tipodoc2($iddocumento,"mod_mag");
			$id_magazzino_e = get_var_tipodoc2($iddocumento,"id_magazzino_e");
			$id_magazzino_u = get_var_tipodoc2($iddocumento,"id_magazzino_u");
			$id_tipo_u = get_var_tipodoc2($iddocumento,"id_tipo_u");
			$dir = get_var_tipodoc2($iddocumento,"dir");
			$agg_prezzo_e = get_var_tipodoc2($iddocumento,"agg_prezzo_e");
			$agg_prezzo_u = get_var_tipodoc2($iddocumento,"agg_prezzo_u");
			$dir = get_var_tipodoc2($iddocumento,"dir");
		
		
			if ( $idmagazzino >= '0' ) $id_magazzino_e=$idmagazzino;
			// cerco dati agente
			$query = "SELECT idanagrafica  FROM co_documenti WHERE id='".$iddocumento."'";
			$rs_ana= $dbo->fetchArray($query);
				
			$query = "SELECT idagente , default_ritenuta_acconto , default_rivalsa_inps FROM an_anagrafiche WHERE idanagrafica='".$rs_ana[0]['idanagrafica']."'";
			$rs_d = $dbo->fetchArray($query);

			$query = "SELECT * FROM an_anagrafiche WHERE idanagrafica='".$rs_d[0]['idagente']."'";
			$rs_agente = $dbo->fetchArray($query);		
					
			$perc_netto = $rs_agente[0]['perc_netto'];
			$perc_iva = $rs_agente[0]['perc_iva'];
					
					
					
			//calcolo percentuali agente				
			if($perc_netto =='1'){
				$val_agente=($importo_manuale * $qta)  - $sconto ;							
				$val_agente = ($val_agente * $perc_agente)/100;
			}else{
				$val_agente = (($importo_manuale *  $qta) * $perc_agente)/100;					
			}
			if( $perc_iva =='1'){
				$rs2 = $dbo->fetchArray("SELECT * FROM co_iva WHERE id='".$idiva."'");
				$agente_iva= ($val_agente/100)*$rs2[0]['percentuale'];
				$val_agente=$val_agente + $agente_iva ;														
			}
					
					
			//Lettura idarticolo dalla riga documento
			$rs_tmp = $dbo->fetchArray("SELECT idarticolo, qta FROM co_righe_documenti WHERE id=\"".$idriga."\"");
			$idarticolo = $rs_tmp[0]['idarticolo'];
			$old_qta = $rs_tmp[0]['qta'];

					
			$subtot = $importo_manuale*$qta;
					
			//Calcolo iva
			$query = "SELECT * FROM co_iva WHERE id='".$idiva."'";
			$rs_tmp = $dbo->fetchArray($query);
			$iva = ($subtot-$sconto)/100*$rs_tmp[0]['percentuale'];
			$iva_indetraibile = $iva/100*$rs_tmp[0]['indetraibile'];
			$desc_iva = $rs_tmp[0]['descrizione'];


			$idrivalsainps=$rs[0][idrivalsainps];
			$idritenutaacconto=$rs[0][idritenutaacconto];
					
					
			//Calcolo rivalsa inps
			$query = "SELECT * FROM co_rivalsainps WHERE id='".$idrivalsainps."'";
			$rs_tmp = $dbo->fetchArray($query);
			$rivalsainps = $importo_manuale*$qta / 100 * $rs_tmp[0]['percentuale'];

				
					
			//Calcolo ritenuta d'acconto
			$query = "SELECT * FROM co_ritenutaacconto WHERE id='".$idritenutaacconto."'";
			$rs_tmp = $dbo->fetchArray($query);
			$ritenutaacconto = (($importo_manuale*$qta) + $rivalsainps) / 100 * $rs_tmp[0]['percentuale'];

					
			$query = "UPDATE co_righe_documenti SET   iva=\"".$iva."\", iva_indetraibile=\"".$iva_indetraibile."\", 
				subtotale=\"".$subtot."\", 	sconto=\"".$sconto."\",  qta=\"".$qta."\", 	ritenutaacconto=\"".$ritenutaacconto."\",  rivalsainps=\"".$rivalsainps."\" ,
				importo_agente=\"".$val_agente."\",importo_iva_agente=\"".$agente_iva."\" WHERE id=\"".$idriga."\"";	
					
					
			if( $dbo->query($query) ){
				// log anagrafiche
						
				//	ricalcola_costiagg_fattura($rs[0][iddocumento]);
				ricalcola_costiagg_fattura($iddocumento);
						
				add_storico_doc($iddocumento,"Modificato articolo ".$descrizione." con quantità = ".$qta);
										
					
				//Se ho movimentato una riga collegata ad un articolo di magazzino, movimento il magazzino
				if( $idarticolo != '' ){
					( $dir == 'entrata' ) ? $sign='-' : $sign='+';
					if( $esegue_movimento== 1 ) {
						//Lettura dati del movimento in magazzino per poterlo modificare
						$rs = $dbo->fetchArray("SELECT id, qta FROM mg_movimenti WHERE idarticolo=\"".$idarticolo."\" AND qta=\"".$sign.$old_qta."\" AND iddocumento=\"".$iddocumento."\"");
						$idmovimento = $rs[0]['id'];
						//Aggiorno il movimento del magazzino
						$query = "UPDATE mg_movimenti SET qta=\"".$sign.$qta."\" WHERE id=\"".$idmovimento."\"";
						$dbo->query( $query );
					}

							
					//Aggiorno la quantità articolo (qtà_attuale - qtà_precedentemente_movimentata + nuova_qtà)
					if( $esegue_giacenza== 1 ) {
						if ( $idmagazzino_old == $id_magazzino_e ){
							if( $id_magazzino_e == 0 ) {
								$tabella=" mg_articoli ";
								$where =" WHERE id='".$idarticolo."'";
							} else{
								$tabella=" mg_articoli_magazzini ";
										$where 	=" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_e."' ";
							}
							if( $dir == "entrata" ){
								$query = "UPDATE ".$tabella." SET qta= qta +".$old_qta.$sign.$qta.$where;
							}			
							else{
								$query = "UPDATE ".$tabella." SET qta=qta -".$old_qta.$sign.$qta.$where;
							}
							$dbo->query( $query );
						}	
						else{
							// ripristino giacenza prima di cambio magazzino
							if( $idmagazzino_old == 0 ) {
								$tabella=" mg_articoli ";
								$where =" WHERE id='".$idarticolo."'";
							} else{
								$tabella=" mg_articoli_magazzini ";
								$where 	=" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$idmagazzino_old."' ";
							}
									
							if( $dir == "entrata" ){
								$query = "UPDATE ".$tabella." SET qta= qta +".$old_qta.$where;
							}			
							else{
								$query = "UPDATE ".$tabella." SET qta=qta -".$old_qta.$where;
							}
							$dbo->query( $query );
							// ricalcolo nuova giacenza su mahazzino nupvo
							if( $id_magazzino_e == 0 ) {
								$tabella=" mg_articoli ";
								$where =" WHERE id='".$idarticolo."'";
							} else{
								$tabella=" mg_articoli_magazzini ";
								$where 	=" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_e."' ";
							}
									
							if( $dir == "entrata" ){
								$query = "UPDATE ".$tabella." SET qta= qta ".$sign.$qta.$where;
							}			
							else{
								$query = "UPDATE ".$tabella." SET qta=qta ".$sign.$qta.$where;
							}
							$dbo->query( $query );
						}	
					}
						// testo se devo fare movimenti su altri magazzini
					if( $id_magazzino_u != 0 ) {					
						( $id_tipo_u == '1' ) ? $sign='+' : $sign='-';
						$tabella=" mg_articoli_magazzini ";
						$where 	=" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_u."' ";
						if( $id_tipo_u == "1" ){									
							$query = "UPDATE ".$tabella." SET qta= qta -".$old_qta.$sign.$qta.$where;
						}	
						else{
							$query = "UPDATE ".$tabella." SET qta=qta +".$old_qta.$sign.$qta.$where;
						}
						$dbo->query( $query );						
					}
							
					if( $agg_prezzo_e == 1 ) {		// aggiornaemnto prezzo di aquisto
						$dbo->query( "UPDATE mg_articoli SET prezzo_acquisto=".$importo_manuale." WHERE id='".$idarticolo."'");
					}
					if( $agg_prezzo_u == 1 ) {		// aggiornaemnto prezzo di vendita
						$dbo->query( "UPDATE mg_articoli SET prezzo_vendita=".$importo_manuale." WHERE id='".$idarticolo."'");
					}												
				}

			}
		}		
	}
	
?>