<?php
//linha 2 comentada

require_once(dirname(__FILE__).'/autoload.php');
protegeArquivo(basename(__FILE__));
class calculos
{
##função1#########################
//ESTA FUNCAO SERVE PARA IMPRIMIR VARIAS FICHAS 

function AchaIdAmostraTendoRegistro($registro)
{
		$sessao = new sessao();
		//$amostraLong=$sessao->getVar('amostraLong');//captura para poder develover a mesma caso nao encontrar
		$finalidade=$sessao->getVar('finalidade');
		$idLabo=$sessao->getVar('idLabo');
		$anoCorrente=$sessao->getVar('anocorrente');
		$anoAmostra=$anoCorrente;
	   $userAmostra = new amostras();
       if($finalidade=='DEFINITIVA'):
	        $userAmostra->extras_select =  " where  fic_ano='".$anoAmostra."' && fic_labo='".$idLabo."' &&  fic_amostra=".$registro;
       else:
	        $userAmostra->extras_select =  " where  fic_ano='".$anoAmostra."' && fic_labo='".$idLabo."' &&  fic_amostra_previa=".$registro;
	   endif;
	    $userAmostra->selecionaCampos($userAmostra);
		$teste=0;
	    while ($resAmostra = $userAmostra->retornaDados()):
	        $teste++;
		    $amostraLong=$resAmostra->fic_id;
		    $idCultivar=$resAmostra->fic_cultivar;
		    $idProdutor=$resAmostra->fic_produtor;
		    $idAmostrador=$resAmostra->fic_amostrador;
	    endwhile;		
		if($teste>0):
			$sessao->setVar('amostraLong', $amostraLong);
			$sessao->setVar('idCultivar', $idCultivar);
			$sessao->setVar('idProdutor', $idProdutor);
			$sessao->setVar('idAmostrador', $idAmostrador);
			//echo("oooooooooooooooooatribuiu outra idcultiva= $idCultivar amostralong=$amostraLong  <br>");
		else:
            printf("Amostra ".$registro." não foi localizada!");  			
        endif;
	return $amostraLong;
}//fim da function AchaIdAmostraTendoRegistro

	function AchaIdAmostra2016($registro,$acao)
	{ 
		$sessao = new sessao();
		/////////////////////
		$nivel=$sessao->getVar('nivel');
	    $codprodutor=$sessao->getVar('codprodutor');
		$clausulaProdutorFixo="";
	    if($nivel=='PRODUTOR'):
	       $clausulaProdutorFixo= "  fic_produtor=".$codprodutor. " and ";
		   //echo("54  classe calculos esta dentro do acha ultima dentro da classe calculos<br>");
		endif;
	    ////////////////////
		
		$amostraLong=$sessao->getVar('amostraLong');//captura para poder develover a mesma caso nao encontrar
		$amostraLongGuardada=$sessao->getVar('amostraLong');//captura para poder develover a mesma caso nao encontrar
		$finalidade=$sessao->getVar('finalidade');
		$idLabo=$sessao->getVar('idLabo');
		$anoCorrente=$sessao->getVar('anocorrente');
		$anoAmostra=$anoCorrente;
       //verifica se esta tentando entrar no registro zero
	   $registroNumero=$registro*1;
	   if($registroNumero>0):	
		//testa se foi clicaco o botao ultima amostra  >|
	  	if($acao=='ultima'):
		    $amostraLong=$this->achaUltima();
        else:
			if($acao=='avanca')$registro++;
			if($registro>1):
			   if($acao=='recua')$registro--;
			endif;
		   $userAmostra = new amostras();
	       if($finalidade=='DEFINITIVA'):
		        $userAmostra->extras_select =  " where ".$clausulaProdutorFixo. "  fic_ano='".$anoAmostra."' && fic_labo='".$idLabo."' &&  fic_amostra=".$registro;
	       else:
		        $userAmostra->extras_select =  " where  fic_ano='".$anoAmostra."' && fic_labo='".$idLabo."' &&  fic_amostra_previa=".$registro;
		   endif;
		    $userAmostra->selecionaCampos($userAmostra);
			$teste=0;
		    while ($resAmostra = $userAmostra->retornaDados()):
		        $teste++;
			    $amostraLong=$resAmostra->fic_id;
			    $idCultivar=$resAmostra->fic_cultivar;
			    $idProdutor=$resAmostra->fic_produtor;
			    $idAmostrador=$resAmostra->fic_amostrador;
				//echo("classe calculos 79 idprosutor= $idProdutor    <br>  "); 	
		    endwhile;		
			if($teste>0):
			    $sessao->setVar('amostraLong',$amostraLong);
				$sessao->setVar('idCultivar', $idCultivar);
				$sessao->setVar('idProdutor', $idProdutor);
				$sessao->setVar('idAmostrador', $idAmostrador);
				//echo("dentro da classe calculos oooooooooooooooooatribuiu outra idcultiva= $idCultivar amostralong=$amostraLong  <br>");
			else:
	
				printMSG("Amostra ".$registro." não foi localizada! Evite manter descontinuidade na numeração das amostras. Para solucionar o impasse, escreva o número da amostra, que deseja localizar e clique em ACHAR.",'erro');	
				$amostraLong=$amostraLongGuardada;		
	        endif;
	   //echo("classe calculos(91) idprosutor= $idProdutor    <br>  "); 	
       //verifica se esta tentando entrar no registro zero
        endif;//testa se pediu a ultima
	   else:
		  $amostraLong=$amostraLongGuardada;	
	      printMSG('Não existe amostra numero zero.','alerta');
       endif;//testa se o registro nao é zero
	   $sessao->setVar('amostraLong',$amostraLong);

		return $amostraLong;
}





	function AchaIdAmostra2016deu_pau($registro,$acao)
	{ 
        $sessao = new sessao();
	    $amostraLong=$sessao->getVar('amostraLong');
		$amostraLongAntiga=$sessao->getVar('amostraLong');//captura para poder develover a mesma caso nao encontrar	
		$finalidade=$sessao->getVar('finalidade');
		$idLabo=$sessao->getVar('idLabo');
		$anoCorrente=$sessao->getVar('anocorrente');
		$anoAmostra=$anoCorrente;
				
		
		//testa se foi clicaco o botao ultima amostra  >|
	  	if($acao=='ultima'):
		    $amostraLong=$this->achaUltima();
        else:

           //VAI ACHAR OS REGISTROS MINIMOS E MAXIMOS PARA EVITAR O ERRO
	    	//VAI ACHAR A MAIOR AMOSTRA PARA NAO CAIR NO VAZIO OU IR ALEM DO NECESSARIO////////////////////////////
			$generica=new tabelagenerica();
	     	$generica->tabela="ficha";
			$generica->campos_valores = array(
					"fic_amostra" => NULL,
				);
			$generica->extras_select =  " where fic_ano='".$anoAmostra."' && fic_labo='".$idLabo."' order by fic_amostra desc LIMIT 1";
		   //vai fazer atuar a SQL para achar a maior
		   $generica->selecionaCampos($generica);
		   //echo("xxxxxxxxxxxxxxxxxxxxxxxxxxxextraselect= $generica->extras_select <br>");
			while ($resgenerica= $generica->retornaDados()):
			    $registroMaximo =$resgenerica->fic_amostra;
		    endwhile;	
			
	        //vai achar a menor amostra  /////////////////////////////////////////	
			$generica=new tabelagenerica();
		    $generica->tabela="ficha";
			$generica->campos_valores = array(
					"fic_amostra" => NULL,
				);
	           //vai achar a menor amostra  amostra de todos requerente	s
			$generica->extras_select =  " where fic_ano='".$anoAmostra."' && fic_labo='".$idLabo."' order by fic_amostra LIMIT 1";
		   //vai fazer atuar a SQL
		   $generica->selecionaCampos($generica);
		   //echo("xxxxxxxxxxxxxxxxxxxxxxxxxxxextraselect= $generica->extras_select <br>");
			while ($resgenerica= $generica->retornaDados()):
			    $registroMinimo =$resgenerica->fic_amostra;
		    endwhile;	

            //echo("registrominimo $registroMinimo REG MAX=$registroMaximo<br>");
            //final da localizacao dos registros minimo e maximo  

	        $teste=0;

//$registroMinimo=1;
//$registroMaximo=47;

            while($teste==0 && $registro>$registroMinimo && $registro<=$registroMaximo):			
		 		//ENTRA DE QUAKQUER MANEIRA
				if($acao=='avanca')$registro++;
			  	if($acao=='recua')$registro--;
				$generica=new tabelagenerica();
				$generica->tabela="ficha";
				$generica->campos_valores = array(
						"fic_id" => NULL,
					);

			       if($finalidade=='DEFINITIVA'):
				        $generica->extras_select =  " where  fic_ano='".$anoAmostra."' && fic_labo='".$idLabo."' &&  fic_amostra=".$registro;
				   else:
				        $generica->extras_select =  " where  fic_ano='".$anoAmostra."' && fic_labo='".$idLabo."' &&  fic_amostra_previa=".$registro;
				   endif;
			   
			   //vai fazer atuar a SQL
	   		   $generica->selecionaCampos($generica);
			   //echo("xxxxxxxxxxxxxxxxxxxxxxxxxxxextraselect= $generica->extras_select <br>");
				while ($resgenerica= $generica->retornaDados()):
			        $teste=2;
				    $amostraLong=$resgenerica->fic_id;
			    endwhile;
           endwhile;//faz o loop se teste deu zero  
	       
		   //fez todo loop e nao achou entao coloca na amostra antiga
		   //echo ("teste=$teste amostraLong=$amostraLong amostraLongantiga=$amostraLongAntiga extra=$generica->extras_select<br>");
		   
		   
		   if($teste==0): 
	           printMSG('Não foram encontradas mais amostras','alerta');
               $amostraLong=$amostraLongAntiga;
           endif;		   
       endif;//caso nao tenha sido chamada a ultima amostra    
       //$amostraLong=209; 
       return $amostraLong;
    }





	function AchaIdAmostra2016deu_paunopiaui($registro,$acao)
	{ 
        $sessao = new sessao();
	    $amostraLong=$sessao->getVar('amostraLong');
		$amostraLongAntiga=$sessao->getVar('amostraLong');//captura para poder develover a mesma caso nao encontrar	
		$finalidade=$sessao->getVar('finalidade');
		$idLabo=$sessao->getVar('idLabo');
		$anoCorrente=$sessao->getVar('anocorrente');
		$anoAmostra=$anoCorrente;
				
		
		//testa se foi clicaco o botao ultima amostra  >|
	  	if($acao=='ultima'):
		    $amostraLong=$this->achaUltima();
        else:

           //VAI ACHAR OS REGISTROS MINIMOS E MAXIMOS PARA EVITAR O ERRO
	    	//VAI ACHAR A MAIOR AMOSTRA PARA NAO CAIR NO VAZIO OU IR ALEM DO NECESSARIO////////////////////////////
			$generica=new tabelagenerica();
	     	$generica->tabela="ficha";
			$generica->campos_valores = array(
					"fic_amostra" => NULL,
				);
			$generica->extras_select =  " where fic_ano='".$anoAmostra."' && fic_labo='".$idLabo."' order by fic_amostra desc LIMIT 1";
		   //vai fazer atuar a SQL para achar a maior
		   $generica->selecionaCampos($generica);
		   //echo("xxxxxxxxxxxxxxxxxxxxxxxxxxxextraselect= $generica->extras_select <br>");
			while ($resgenerica= $generica->retornaDados()):
			    $registroMaximo =$resgenerica->fic_amostra;
		    endwhile;	
			
	        //vai achar a menor amostra  /////////////////////////////////////////	
			$generica=new tabelagenerica();
		    $generica->tabela="ficha";
			$generica->campos_valores = array(
					"fic_amostra" => NULL,
				);
	           //vai achar a menor amostra  amostra de todos requerente	s
			$generica->extras_select =  " where fic_ano='".$anoAmostra."' && fic_labo='".$idLabo."' order by fic_amostra LIMIT 1";
		   //vai fazer atuar a SQL
		   $generica->selecionaCampos($generica);
		   //echo("xxxxxxxxxxxxxxxxxxxxxxxxxxxextraselect= $generica->extras_select <br>");
			while ($resgenerica= $generica->retornaDados()):
			    $registroMinimo =$resgenerica->fic_amostra;
		    endwhile;	

            //echo("registrominimo $registroMinimo REG MAX=$registroMaximo<br>");
            //final da localizacao dos registros minimo e maximo  

	        $teste=0;

//$registroMinimo=1;
//$registroMaximo=47;

            while($teste==0 && $registro>$registroMinimo && $registro<=$registroMaximo):			
		 		//ENTRA DE QUAKQUER MANEIRA
				if($acao=='avanca')$registro++;
			  	if($acao=='recua')$registro--;
				$generica=new tabelagenerica();
				$generica->tabela="ficha";
				$generica->campos_valores = array(
						"fic_id" => NULL,
					);

			       if($finalidade=='DEFINITIVA'):
				        $generica->extras_select =  " where  fic_ano='".$anoAmostra."' && fic_labo='".$idLabo."' &&  fic_amostra=".$registro;
				   else:
				        $generica->extras_select =  " where  fic_ano='".$anoAmostra."' && fic_labo='".$idLabo."' &&  fic_amostra_previa=".$registro;
				   endif;
			   
			   //vai fazer atuar a SQL
	   		   $generica->selecionaCampos($generica);
			   //echo("xxxxxxxxxxxxxxxxxxxxxxxxxxxextraselect= $generica->extras_select <br>");
				while ($resgenerica= $generica->retornaDados()):
			        $teste=2;
				    $amostraLong=$resgenerica->fic_id;
			    endwhile;
           endwhile;//faz o loop se teste deu zero  
	       
		   //fez todo loop e nao achou entao coloca na amostra antiga
		   //echo ("teste=$teste amostraLong=$amostraLong amostraLongantiga=$amostraLongAntiga extra=$generica->extras_select<br>");
		   
		   
		   if($teste==0): 
	           printMSG('Não foram encontradas mais amostras','alerta');
               $amostraLong=$amostraLongAntiga;
           endif;		   
       endif;//caso nao tenha sido chamada a ultima amostra            
       
       //$amostraLong=209; 
       return $amostraLong;
    }


	function AchaIdAmostra2016Reserva($registro,$acao)
	{ 
	    $sessao = new sessao();
		$idProdutor=$sessao->getVar('controle3');
		$legenda=$sessao->getVar('controle2');
        echo(" id produtor= $idProdutor  legenda=$legenda<br>");	
		$legenda="TODOS REQUERENTES";//FIXEI ISSO PARA PODER RETOMAR OUTRO DIA	
        if($legenda!='UM REQUERENTE'):
		    $amostraLongAntiga=$sessao->getVar('amostraLong');//captura para poder develover a mesma caso nao encontrar	
			if($acao=='avanca')$registro++;
		  	if($acao=='recua')$registro--;
		  	if($acao=='ultima'):
			    $amostraLong=$this->achaUltima();
	        else:
	        //vai produrar pelo numero da amostra  
				if($registro!=0):
					$finalidade=$sessao->getVar('finalidade');
					$idLabo=$sessao->getVar('idLabo');
					$anoCorrente=$sessao->getVar('anocorrente');
					$anoAmostra=$anoCorrente;
				   $userAmostra = new amostras();
			       if($finalidade=='DEFINITIVA'):
				        $userAmostra->extras_select =  " where  fic_ano='".$anoAmostra."' && fic_labo='".$idLabo."' &&  fic_amostra=".$registro;
				   else:
				        $userAmostra->extras_select =  " where  fic_ano='".$anoAmostra."' && fic_labo='".$idLabo."' &&  fic_amostra_previa=".$registro;
				   endif;

				    $userAmostra->selecionaCampos($userAmostra);
					$teste=0;
				    while ($resAmostra = $userAmostra->retornaDados()):
				        $teste++;
					    $amostraLong=$resAmostra->fic_id;
					    $idCultivar=$resAmostra->fic_cultivar;
					    $idProdutor=$resAmostra->fic_produtor;
					    $idAmostrador=$resAmostra->fic_amostrador;
				    endwhile;		
					if($teste>0):
						$sessao->setVar('amostraLong', $amostraLong);
						$sessao->setVar('idCultivar', $idCultivar);
						$sessao->setVar('idProdutor', $idProdutor);
						$sessao->setVar('idAmostrador', $idAmostrador);
						//echo("oooooooooooooooooatribuiu outra idcultiva= $idCultivar amostralong=$amostraLong  <br>");
					else:
			            printf("Amostra ".$registro." não foi localizada!");  			
			        endif;
		        endif;    
	        endif;//pergunta se é a ultima
        else://se a busca nao for por UM REQUERENTE
		    $amostraLongAntiga=$sessao->getVar('amostraLong');//captura para poder develover a mesma caso nao encontrar	
			if($acao=='avanca')$registro++;
		  	if($acao=='recua')$registro--;
		  	if($acao=='ultima'):
			    $amostraLong=$this->achaUltima();
	        else:
	        //vai produrar pelo numero da amostra  
				if($registro!=0):
				   $finalidade=$sessao->getVar('finalidade');
				   $idLabo=$sessao->getVar('idLabo');
				   $anoCorrente=$sessao->getVar('anocorrente');
				   $anoAmostra=$anoCorrente;
				   $userAmostra = new amostras();
			       if($finalidade=='DEFINITIVA'):
				        $userAmostra->extras_select =  " where  fic_ano='".$anoAmostra."' && fic_labo='".$idLabo."' &&  fic_amostra=".$registro;
				   else:
				        $userAmostra->extras_select =  " where  fic_ano='".$anoAmostra."' && fic_labo='".$idLabo."' &&  fic_amostra_previa=".$registro;
				   endif;

				    $userAmostra->selecionaCampos($userAmostra);
					$teste=0;
				    while ($resAmostra = $userAmostra->retornaDados()):
				        $teste++;
					    $amostraLong=$resAmostra->fic_id;
					    $idCultivar=$resAmostra->fic_cultivar;
					    $idProdutor=$resAmostra->fic_produtor;
					    $idAmostrador=$resAmostra->fic_amostrador;
				    endwhile;		
					if($teste>0):
						$sessao->setVar('amostraLong', $amostraLong);
						$sessao->setVar('idCultivar', $idCultivar);
						$sessao->setVar('idProdutor', $idProdutor);
						$sessao->setVar('idAmostrador', $idAmostrador);
						//echo("oooooooooooooooooatribuiu outra idcultiva= $idCultivar amostralong=$amostraLong  <br>");
					else:
			            printf("Amostra ".$registro." não foi localizada!");  			
			        endif;
		        endif;    
	        endif;//pergunta se é a ultima
        endif;//testou se é para fazer a busca por UM REQUERENTE OU NAO

		if($amostraLong==0)$amostraLong=$amostraLongAntiga;
		return $amostraLong;
}//fim da function AchaIdAmostraTendoRegistro



//função2   ##########################################



function achaUltima()
{
    //echo("407 classe calculos esta dentro do acha ultima dentro da classe calculos<br>");
	$sessao = new sessao();

	/////////////////////
	$nivel=$sessao->getVar('nivel');
    $codprodutor=$sessao->getVar('codprodutor');
	$clausulaProdutorFixo="";
    if($nivel=='PRODUTOR'):
       $clausulaProdutorFixo= "  fic_produtor=".$codprodutor. " and ";
	   //echo("406  classe calculos esta dentro do acha ultima dentro da classe calculos<br>");
	endif;
	////////////////////
	$finalidade=$sessao->getVar('finalidade');
	if($finalidade==''):
		$sessao->setVar('finalidade','DEFINITIVA');
		$finalidade=$sessao->getVar('finalidade');
    endif;	

	
	$idLabo=$sessao->getVar('idLabo');
	$anoCorrente=$sessao->getVar('anocorrente');
	$anoAmostra=$anoCorrente;
	//vai capturar a id da amostra caso nao tenha nada na sessao(logo depois de logar))
	$userAmostra = new amostras();
    //if($finalidade=='DEFINITIVA'): 
       //$userAmostra->extras_select =  " where ".$clausulaProdutorFixo." fic_amostra>0 and fic_ano='".$anoAmostra."' && fic_labo='".$idLabo."' order by fic_amostra desc LIMIT 1";  //fucnciona perfeito
       //$userAmostra->extras_select =  " where  fic_amostra>0 and fic_ano='".$anoAmostra."' && fic_labo='".$idLabo."' order by fic_amostra desc LIMIT 1";  //fucnciona perfeito
       //echo("434444user amostra $userAmostra->extras_select<br>"); 
	//else:
         //$userAmostra->extras_select =  " where fic_amostra_previa>0 and  fic_ano='".$anoAmostra."' && fic_labo='".$idLabo."' order by fic_amostra_previa desc LIMIT 1";  //fucnciona perfeito
	//endif;
	
	//coloquei a sql que funciona
	

    if($finalidade=='DEFINITIVA'): 
       $userAmostra->extras_select =  " where  ".$clausulaProdutorFixo."  fic_amostra > 0 and fic_ano='".$anoAmostra."' && fic_labo='".$idLabo."'  order by fic_amostra desc LIMIT 1"; //fuc perfeito
    endif;

    if($finalidade=='PREVIA'): 
       $userAmostra->extras_select =  " where fic_amostra_previa > 0 and  fic_ano='".$anoAmostra."' && fic_labo='".$idLabo."' order by fic_amostra_previa desc LIMIT 1";  //fucnciona perfeito
    endif;


	
	//echo "<br>432  yyyyyyyyyyyyxxxxxxxxxdentro do acha ultima " . $userAmostra->extras_select ."<br>"; 
	
	$userAmostra->selecionaCampos($userAmostra);
    $contador = 0; 
    while ($resAmostra = $userAmostra->retornaDados()):
        $contador++;
	    $amostraLong=$resAmostra->fic_id;
		//echo("441kkkkkkkkkkkkkkkkesta dentro do acha ultima  contador= $contador.$amostraLong<br>");
        $idCultivar=$resAmostra->fic_cultivar;
        $idProdutor=$resAmostra->fic_produtor;
        $idAmostrador=$resAmostra->fic_amostrador;
        $ultima=$resAmostra->fic_amostra;
    endwhile;
	
	//printMSG('466 Classe Calculos/funcao acha ultima Valor do contador'.$contador. ' Se contador >0 seria o correto  Esta sql pode ter defeito'. $userAmostra->extras_select );
    //echo("444kkkkkkkkkkkkkkkkesta dentro do acha ultima  contador= $contador amostralong= $amostraLong<br>");
    //$contador=1;

    //se nao acha amostra alguma entao ele cria uma para a finalidade
	//echo("antes de sair da functio e setar os paramaetros idCultivar= $idCultivar<br>");
	$sessao->setVar('amostraLong', $amostraLong);
	$sessao->setVar('idCultivar',$idCultivar);
	$sessao->setVar('idProdutor',$idProdutor);
	$sessao->setVar('idAmostrador',$idAmostrador);
	$sessao->setVar('ultima',$ultima);
    //echo("554 xxxxxxxxxxxxxxxxamostralong=$amostraLong<br>");
	return $amostraLong;
}//FIM DA FUNCTIOn ACHA ULTIMA AMOSTRA




function anoNovo()
{
    //echo("563 classe calculos esta dentro do ano novo dentro da classe calculos<br>");
	$sessao = new sessao();

	/////////////////////
	$nivel=$sessao->getVar('nivel');
    $codprodutor=$sessao->getVar('codprodutor');
	$clausulaProdutorFixo="";
    if($nivel=='PRODUTOR'):
       $clausulaProdutorFixo= "  fic_produtor=".$codprodutor. " and ";
	   //echo("406  classe calculos esta dentro do acha ultima dentro da classe calculos<br>");
	endif;
	////////////////////
	$finalidade=$sessao->getVar('finalidade');
	if($finalidade==''):
		$sessao->setVar('finalidade','DEFINITIVA');
		$finalidade=$sessao->getVar('finalidade');
    endif;	

	
	$idLabo=$sessao->getVar('idLabo');
	$anoCorrente=$sessao->getVar('anocorrente');
	$anoAmostra=$anoCorrente;
	//vai capturar a id da amostra caso nao tenha nada na sessao(logo depois de logar))
	$userAmostra = new amostras();
    //if($finalidade=='DEFINITIVA'): 
       //$userAmostra->extras_select =  " where ".$clausulaProdutorFixo." fic_amostra>0 and fic_ano='".$anoAmostra."' && fic_labo='".$idLabo."' order by fic_amostra desc LIMIT 1";  //fucnciona perfeito
       //$userAmostra->extras_select =  " where  fic_amostra>0 and fic_ano='".$anoAmostra."' && fic_labo='".$idLabo."' order by fic_amostra desc LIMIT 1";  //fucnciona perfeito
       //echo("434444user amostra $userAmostra->extras_select<br>"); 
	//else:
         //$userAmostra->extras_select =  " where fic_amostra_previa>0 and  fic_ano='".$anoAmostra."' && fic_labo='".$idLabo."' order by fic_amostra_previa desc LIMIT 1";  //fucnciona perfeito
	//endif;
	
	//coloquei a sql que funciona
	

    if($finalidade=='DEFINITIVA'): 
       $userAmostra->extras_select =  " where fic_amostra_previa > 0 and  fic_ano='".$anoAmostra."' && fic_labo='".$idLabo."' order by fic_amostra_previa desc LIMIT 1";  //fucnciona perfeito
    endif;

    if($finalidade=='PREVIA'): 
       $userAmostra->extras_select =  " where fic_amostra_previa > 0 and  fic_ano='".$anoAmostra."' && fic_labo='".$idLabo."' order by fic_amostra_previa desc LIMIT 1";  //fucnciona perfeito
    endif;
    
    $userAmostra->extras_select =  " where fic_id>0  order by fic_id desc LIMIT 1";  //fucnciona perfeito

	
	//echo "<br>609  yyyyyyyyyyyyxxxxxxxxxdentro do acha ultima " . $userAmostra->extras_select ."<br>"; 
	
	$userAmostra->selecionaCampos($userAmostra);
    $contador = 0; 
    while ($resAmostra = $userAmostra->retornaDados()):
        $contador++;
	    $amostraLong=$resAmostra->fic_id;
		//echo("441kkkkkkkkkkkkkkkkesta dentro do acha ultima  contador= $contador.$amostraLong<br>");
        $idCultivar=$resAmostra->fic_cultivar;
        $idProdutor=$resAmostra->fic_produtor;
        $idAmostrador=$resAmostra->fic_amostrador;
        $ultima=$resAmostra->fic_amostra;
    endwhile;
	
	//printMSG('623 Classe Calculos/funcao ano novo Valor do contador'.$contador. ' idCultivar='. $idCultivar .' Se contador >0 seria o correto  Esta sql pode ter defeito'. $userAmostra->extras_select );
	
	
			
    //echo("444kkkkkkkkkkkkkkkkesta dentro do acha ultima  contador= $contador amostralong= $amostraLong<br>");
    //$contador=1;
    //se nao acha amostra alguma entao ele cria uma para a finalidade

			//echo("Cria uma NOVA AMOSTRA! $finalidade<br>");
			$statusMaiusculo='MP';
		    if($finalidade=='PREVIA'):
               $novaAmostraDefinitiva= 0;					
               $funcao='PREVIA';
			   $novaAmostraPrevia= 1;					
			   $enquadramento_previa="S";
			   $enquadramento_definitiva="N";
			else:
			   $funcao='PRODUÇÃO';
               $novaAmostraDefinitiva= 1;					
			   $novaAmostraPrevia= 0;		
			   $enquadramento_previa="N";
			   $enquadramento_definitiva="S";
			endif;
			
			//echo("Cria uma NOVA AMOSTRA! $finalidade   novaAmostraPrevia= $novaAmostraPrevia<br>");
			
			
			
			$campoObservacao='Primeira amostra ' .$finalidade.' do ano, criada automaticamente. Ajuste os dados desta amostra.'.date("Y-m-d");
			//$idCultivar=41718;
			//$idProdutor=21;
			//$idAmostrador=1;
			$anoPescado=date("Y");
			$anoPescadoAnterior=$anoPescado-1;
			$safra=$anoPescadoAnterior.'/'.$anoPescado;
            $amoNova = new amostras(array(
                'fic_amostra'=> $novaAmostraDefinitiva,
                'fic_amostra_previa'=> $novaAmostraPrevia,
                'fic_previa'=> $enquadramento_previa,
                'fic_definitiva'=> $enquadramento_definitiva,
                'fic_lote'   =>  'Novo Lote',
                'fic_funcao' =>  $funcao,
				'fic_dt_entrada' => date("Y-m-d"),
				'fic_dt_amostragem' => date("d/m/Y"),
				'fic_dt_protocolo' =>date("d/m/Y"),
				'fic_categoria' =>  '-O-',
                'fic_peneira' =>  '-O-',
                'fic_importacao' =>'-O-',
                'fic_repre_unid' =>'200 sc 40 kg',
                'fic_procedencia' =>  'Definir',
                'fic_tta' =>'Definir',
                'fic_tta_complementar' => 'MP',
                'fic_safra' =>  $safra,
                'fic_cultivar' =>  $idCultivar,
                'fic_produtor' => $idProdutor,
                'fic_amostrador' => $idAmostrador,
                'fic_labo'   =>  $idLabo,
                'fic_ano'   =>   date("Y"),
                'fic_observacao'   =>  $campoObservacao,
            ));
			//echo("aqui pega o fic id novo $fic_id <br>");
            $sessao->setVar('amostraLong', $amostraLong);
	        //printMSG('528  classe calculo Foi criada uma nova amostra! A nova amostra é idêntica à amostra que estava na tela. Não deixe de editar Lote e outros dados que possivelmente mudam.');
			$sessao->setVar('ultima',$novaAmostra);
            $amostraLong=$amoNova->inserir($amoNova);
            //echo("688 funcao anonovo classe calculo criou nova amostra amostraLong=$amostraLong idCultivar=$idCultivar amoNova=$<br>");
			//aqui tem que criar o registro de PURE e GERM na tabela rean
            //criando registro de GERM
            $reanNova = new rean1(array(
                'rea_ficha'=> $amostraLong,
                'rea_teste'=> 'GERM',
                'rea_lei4'=> '4x100',
            ));
            $reanLong=$reanNova->inserir($reanNova);
            //criando registro de PURE  //AQUI JA VOU TRACER O VALOR DO PESO MINIMO PARA PUREZA HIHIHIH
            $reanNova = new rean1(array(
                'rea_ficha'=> $amostraLong,
                'rea_teste'=> 'PURE',
            ));
            $reanLong=$reanNova->inserir($reanNova);

	
	//echo("antes de sair da functio e setar os paramaetros idCultivar= $idCultivar<br>");
	$sessao->setVar('amostraLong', $amostraLong);
	$sessao->setVar('idCultivar',$idCultivar);
	$sessao->setVar('idProdutor',$idProdutor);
	$sessao->setVar('idAmostrador',$idAmostrador);
	$sessao->setVar('ultima',$ultima);
    //echo("554 xxxxxxxxxxxxxxxxamostralong=$amostraLong<br>");
	return $amostraLong;


}//FIM DA FUNCTIOn ANO NOVO



//função3#############################################################
function dadoslaboratorio()
	{
		$sessao = new sessao();
		$idLabo=$sessao->getVar('idLabo');
		 $objetoLabo=new usuarios();
		 $objetoLabo->extras_select = " where nivel='TITULAR' && id=".$idLabo ;
	     $objetoLabo->selecionaTudo($objetoLabo);
		 while ($resLabo = $objetoLabo->retornaDados()):
	        $ende[0]=$resLabo->nome;
	        $ende[1]=$resLabo->ende1;
	        $ende[2]=$resLabo->ende2;
	        $ende[3]=$resLabo->ende3;
	        $ende[4]=$resLabo->ende4;
	        $ende[5]=$resLabo->ende5;
	        $ende[6]=$resLabo->cidade;//esta cidade é o que vai la em baixo do documento
	        $ende[7]=$resLabo->regiao;//esta na verdade armazenando a uf
	        $ende[8]=$resLabo->renasem;//esta na verdade armazenando a uf
	     endwhile;
	     return $ende;	 
	}//final da funcao dados do laboratorio

##função4 do sonhos pois pega tudo megaamostra####################################
##função4 do sonhos pois pega tudo####################################
##função4 do sonhos pois pega tudo####################################

function capturaGeralAmostra($amostraLong)
{
                    $sessao = new sessao(); 
                    $cliente=$sessao->getVar("cliente");
   //funcao dos sonhos: captura protocolo,lote,germinacao pureza, invasoras,aprovacao, e tudo mais que tem na amostra, sindo tudo num mega vetor
   //////////////////////////
				   //ENTRA DE QUAKQUER MANEIRA
					$genericaDoc=new tabelagenerica();
					$genericaDoc->tabela="documentosponte,documentos";
					$genericaDoc->campos_valores = array(
						   "doc_numero" => NULL,
						   "doc_tipo" => NULL,
						   "doc_data" => NULL,
					);
					$genericaDoc->extras_select =" where dpo_documento_autonumerador=doc_id &&  dpo_amostra_vinculada=".$amostraLong;
					$genericaDoc->selecionaCampos($genericaDoc);
					$variosDocs="";//se tem mais de um doc ele pega todos
					while ($resgenericaDoc= $genericaDoc->retornaDados()):
		               $tipoDoc=$resgenericaDoc->doc_tipo;
		               $numeroDoc=$resgenericaDoc->doc_numero;
		               $dataDoc=date("d/m/y",strtotime($resgenericaDoc->doc_data));  
					   $documento=substr($tipoDoc,0,1).str_pad($numeroDoc, 4, "0", STR_PAD_LEFT).date("/y",strtotime($resgenericaDoc->doc_data));
					   $variosDocs=$variosDocs.substr($tipoDoc,0,1).'('.$numeroDoc.') ';//se tem mais de um doc ele pega todos ex B0052  I0007
                       //$documento='dafo';
                    endwhile;         
$vetorMegaAmostra[81]=$tipoDoc;
$vetorMegaAmostra[82]=str_pad($numeroDoc, 4, "0", STR_PAD_LEFT);
$vetorMegaAmostra[83]=date("d/m/y",strtotime($resgenericaDoc->doc_data));
$vetorMegaAmostra[87]=$variosDocs;
   //////////////////////////
   
   
   
   
   
   $user = new amostras(array(
        'fic_lote'=>$_POST['fic_lote'],
    ));
   $user->valorpk = $fic_id;
   $user->extras_select = "WHERE fic_id=$amostraLong";
   $user->selecionaTudo($user);
   $res = $user->retornaDados();//aqui monta a tela de edição
   //aqui tem uma situacao especial
   //se existe amaostra definitiva ele nao pega o protocolo de previa
   //portanto se so tiver previa ele leva o numero da previa mesmo e coloca AP
   $previa=$res->fic_amostra_previa;
   $definitiva=$res->fic_amostra;
   if($definitiva>0):
       $vetorMegaAmostra[1]=$definitiva;//.date("/y",strtotime($res->fic_dt_entrada));
       $vetorMegaAmostra[76]='Defin.';
   else:
       $vetorMegaAmostra[1]=$previa;//.date("/y",strtotime($res->fic_dt_entrada));
       $vetorMegaAmostra[76]='Previa';
   endif;
   $vetorMegaAmostra[2]=$res->fic_lote;
   $idLabo=$res->fic_labo;
   $vetorRetornoGerminacao=$this->capturaGerminacao($amostraLong);
   $vetorRetornoPureza=$this->capturaPureza($amostraLong);
   //se o campo NORMAIS, for preenchido com -N- entao significa que o teste nao foi feito e todos demais campos serão preecnhcidos com -O-]
   //echo("xxxxxnormais=$vetorRetornoGerminacao[1]<br>");
   
   if($vetorRetornoGerminacao[1]=='-N-'):
       $vetorMegaAmostra[3]=$vetorRetornoGerminacao[1];//NORMAIS puxa o que foi digitado
   	   $vetorMegaAmostra[11]=$vetorRetornoGerminacao[2];//anormais puxa o que foi digitado
	   $vetorMegaAmostra[12]=$vetorRetornoGerminacao[3];//duras puxa o que foi digitado
	   //$vetorMegaAmostra[12]="CLI=".$cliente;//dormentes puxa o que foi digitado
	     //preenche o campo duras com -O-

	   $vetorMegaAmostra[13]=$vetorRetornoGerminacao[4];//dormentes puxa o que foi digitado
	   $vetorMegaAmostra[14]=$vetorRetornoGerminacao[5];//mortas puxa o que foi digitado
	   $vetorMegaAmostra[40]=$vetorRetornoGerminacao[11];//infecionadas puxa o que foi digitado
	   
	   
	   $vetorMegaAmostra[52]='-O-';//data teste
	   $vetorMegaAmostra[53]='-O-';//dduraçao
	   $vetorMegaAmostra[54]='-O-';//substrato
	   $vetorMegaAmostra[55]='-O-';//tratamento
	   $vetorMegaAmostra[56]='-O-';//temperatura
	   $vetorMegaAmostra[57]='-O-';//validade
	   $vetorMegaAmostra[75]='-O-';//data inicio teste
   else:
       $vetorMegaAmostra[3]=$vetorRetornoGerminacao[1];//NORMAIS puxa o que foi digitado
	   $vetorMegaAmostra[11]=$vetorRetornoGerminacao[2];//anormais
	   $vetorMegaAmostra[12]=$vetorRetornoGerminacao[3];//duras
   	   //$vetorMegaAmostra[12]="CLI=".$cliente;//dormentes puxa o que foi digitado

       $vetorMegaAmostra[13]=$vetorRetornoGerminacao[4];//dormentes
	   $vetorMegaAmostra[14]=$vetorRetornoGerminacao[5];//mortas
	   $vetorMegaAmostra[40]=$vetorRetornoGerminacao[11];//infecionadas
	   $vetorMegaAmostra[52]=$vetorRetornoGerminacao[6];//data teste
	   $vetorMegaAmostra[53]=$vetorRetornoGerminacao[7];//dduraçao
	   $vetorMegaAmostra[54]=$vetorRetornoGerminacao[8];//substrato
	   $vetorMegaAmostra[55]=$vetorRetornoGerminacao[10];//tratamento
	   $vetorMegaAmostra[56]=$vetorRetornoGerminacao[9];//temperatura
	   $vetorMegaAmostra[57]=$vetorRetornoGerminacao[13];//validade
	   $vetorMegaAmostra[75]=$vetorRetornoGerminacao[12];//data inicio teste
	   $vetorMegaAmostra[88]=$vetorRetornoGerminacao[14];//germinador
	   $vetorMegaAmostra[89]=$vetorRetornoGerminacao[15];//analista 
	   
	   //no campo DURAÇÃO aqui adapta para colocar dias se a pessoa esqueceu
	   //mas se colocou -O- ele nao coloca nada
	   //se ja havia sido colocado dias ele nao vai colocar dias duas vezes
	   $numeroDias=trim($vetorMegaAmostra[53]);
	   $tamanhoDias=strlen($vetorMegaAmostra[53]);	
       if($numeroDias>0 && $tamanhoDias<3):
	      $vetorMegaAmostra[53]=$vetorMegaAmostra[53]." dias.";
	   endif;
	   
	   
   endif;
   //$vetorMegaAmostra[3]='770';
   
   
   //$vetorMegaAmostra[12]="pif";
   //$vetorRetornoVendido=$this->capturaItemVendido($amostraLong);
   //$vetorMegaAmostra[5]=$vetorRetornoVendido[1];
   $vetorMegaAmostra[33]=$res->fic_categoria;
   $vetorMegaAmostra[34]=$res->fic_safra;
   $vetorMegaAmostra[35]=$res->fic_peneira;
   $vetorMegaAmostra[36]=$res->fic_dt_entrada;
   $vetorMegaAmostra[37]=$res->fic_observacao;
   $vetorMegaAmostra[43]=$res->fic_funcao;
   $vetorMegaAmostra[49]=$res->fic_pesodet_octv;
   $vetorMegaAmostra[51]=str_replace(".",",",$res->fic_pesodet_nocivas);
   $vetorMegaAmostra[50]=str_replace(".",",",$res->fic_pesodet_dosn);
   //o irga vai pegar do camppo informado na tela germinacao e nao na tela de registro de amostra
   if($cliente!="IRGA"):
       $vetorMegaAmostra[57]=$res->fic_validade;
   endif;	   
   $vetorMegaAmostra[58]=$res->fic_procedencia;
   $vetorMegaAmostra[63]=$res->fic_tta;
   $vetorMegaAmostra[64]=$res->fic_dt_amostragem;
   $vetorMegaAmostra[107]=$res->fic_dt_protocolo;
   $vetorMegaAmostra[65]=$res->fic_aparelho;
   $vetorMegaAmostra[66]=$res->fic_tratamento;
   $vetorMegaAmostra[67]=$res->fic_complemento;
   $vetorMegaAmostra[6]=$res->fic_repre_unid;//é a representatividade original do jeito que é gravada
   $vetorMegaAmostra[74]=$res->fic_previsao;//previsao de entrega da analis
   $vetorMegaAmostra[79]=$res->fic_balanca;//balanca para pesar peso da amostra(pode nao ser a mesma usada para pesar pureza)
   $vetorMegaAmostra[80]=$res->fic_registrador;//quem protocolou a amostra
   $vetorMegaAmostra[96]=$res->fic_comprovante;//numero do comprovante de pagamento desta a amostra ou de outras
   $vetorMegaAmostra[108]=$res->fic_ano;
   //aqui pode sair: fic_repre_unid(original) numero de sacos ; unidade(bag/sacos/etc) 	quiloa  
   $texto=$res->fic_repre_unid." ";
   //exemplo 200 sc 40 kg   a=200   b=sc c=40   d=sempre kg
   $a='';
   $b='';
   $c='';
   $quilos=0;
   list($rep1, $rep2, $rep3, $rep4) = explode(" ", $texto);
   //$vetorMegaAmostra[6]=$rep1.$rep2.$rep3.$rep4;
   $b=$rep2;//unidade
   if($rep2=='sc'):
       $a=$rep1;//captura quantidade
       $c=$rep3;//peso unitario
	   $quilos=$a*$c;       
   endif;
   if($rep2=='balde'):
       $a=$rep1;//captura quantidade
       $c=$rep3;//peso unitario
	   $quilos=$a*$c;       
   endif;
   if($rep2=='bag'):
       $a=$rep1;//captura quantidade
       $c=$rep3;//peso unitario
	   $quilos=$a*$c;       
   endif;

   if($rep2=='t'):
      $a=$rep1;//captura quantidade
       $c=1000;//peso unitario
	   $quilos=$a*1000;       
   endif;
   if($rep2=='kg'):
       $a=$rep1;//captura quantidade
       $c=1;//peso unitario
	   $quilos=$a;       
   endif;
   
   if($rep2=='env' || $rep2=='lata'):
       $a=$rep1;//captura quantidade
       $c='-O-';//peso unitario
	   $quilos=0;       
   endif;
   if($rep2=='-O-'):
       $a='-O-';//captura quantidade
       $c='-O-';//peso unitario
	   $quilos=0;       
   endif;
   $vetorMegaAmostra[68]=$a;//quantidade de sacas quantidade de latas etc
   $vetorMegaAmostra[69]=$b;//unidade (bag,env,quilos, latas etc)
   $vetorMegaAmostra[70]=$c;//peso unitario 
   $vetorMegaAmostra[71]=$quilos;//liquido em quilos
   $d=$rep4; 
    
   $vetorMegaAmostra[90]=$a." ".$b."/".$c." ".$d;//liquido em quilos

   /*
  //vou precisar todas estas possibilidades
  <option>Repres.</option>
  <option>Repres(Unidade)</option>
  <option>sacas</option>
  <option>kg/sc</option>
  <option>Quilos</option>
  <option>P.Unitario</option>
	if ($pos === false) {
	    echo "Sinto muito, nós não encontramos ($needle) em ($haystack)";
	} else {
	    echo "Parabéns!\n";
	    echo "Nós encontramos a última ($needle) em ($haystack) na posição ($pos)";
	}
   //strripos($haystack, $needle,);quando quer que a busca comece numa determinada posicao
   exemplo do americano
   $haystack = 'ababcd';
   $needle   = 'aB';
   $pos = strripos($haystack, $needle);//strripos($haystack, $needle,);quando quer que a busca comece numa determinada posicao
   OUTRAS POSSIBILIDADES
    strpos() - Encontra a posição da primeira ocorrência de uma string
    stripos() - Encontra a primeira ocorrencia de uma string sem diferenciar maiúsculas e minúsculas
    strrchr() - Encontra a ultima ocorrência de um caractere em uma string
    substr() - Retorna uma parte de uma string
    stristr() - strstr sem diferenciar maiúsculas e minúsculas
    strstr() - Encontra a primeira ocorrencia de uma string
*/
   
   $valorParaDOSN=$res->fic_dosn;//se trata de um valor deful que é adotado caso nao fOr encontrado dosn o valor pode ser 0 ou -O-
   
   //captura os testes solicitados concatenados para despejar na ficha
    $texto="";
	$marcouDOSN="NAO";
	$userTestes = new testesSolicitados();
	$userTestes->extras_select = "where tes_ficha=".$amostraLong;
	$userTestes->selecionaTudo($userTestes);
	while ($resTestes = $userTestes->retornaDados()):
       $texto=$texto.$resTestes->tes_teste.";";
       if(substr($texto,0,3)=='DOS')$marcouDOSN="SIM";
	endwhile;                
   $vetorMegaAmostra[44]=$texto;
   
   
   
   
   //captura tudo de especie & cultivar 
    //ENTRA DE QUAKQUER MANEIRA
    $generica=new tabelagenerica();
	$generica->tabela="especies, ficha,cultivar";
	$generica->campos_valores = array(
			"esp_nome" => NULL,
			"esp_id" => NULL,
			"ctv_nome" => NULL,
            "ctv_id" => NULL,           
			"esp_nome_cientifico" => NULL,
			"esp_grupo2011" => NULL,
			"esp_min_pureza" => NULL,
			"esp_min_ocv" => NULL,
			"esp_min_nocivas" => NULL,
			"esp_min_dosn" => NULL,
		);
	$generica->extras_select =" where  fic_cultivar=ctv_id &&  esp_id=ctv_especie &&  fic_id=" . $amostraLong;
    $generica->selecionaCampos($generica);
	while ($resgenerica = $generica->retornaDados()):
		$cultivar=$resgenerica->ctv_nome;
		//$cultivar=$resgenerica->ctv_id;
		$especieComum=$resgenerica->esp_nome;
		$especieCientifica=$resgenerica->esp_nome_cientifico;
		$idEspecie=$resgenerica->esp_id;
		$grupo2011=$resgenerica->esp_grupo2011;
		$peso_pureza_ras=$resgenerica->esp_min_pureza;
		$peso_ocv_ras=$resgenerica->esp_min_ocv;
		$peso_dosn_ras=$resgenerica->esp_min_dosn;
		$peso_nocivas_ras=$resgenerica->esp_min_nocivas;
		
		
    endwhile;

   //captura dados do requerente 
    //ENTRA DE QUAKQUER MANEIRA
    $generica=new tabelagenerica();
	$generica->tabela="remetente,ficha";
	$generica->campos_valores = array(
			"prd_nome" => NULL,
			"prd_apelido" => NULL,
			"prd_municipio" => NULL,
			"prd_uf" => NULL,
			"prd_renasem" => NULL,
		);
	$generica->extras_select =" where  fic_produtor=prd_id and fic_id=" . $amostraLong;
    $generica->selecionaCampos($generica);
	while ($resgenerica = $generica->retornaDados()):
		$remetente=$resgenerica->prd_nome;
		$apelido=$resgenerica->prd_apelido;
		$municipioRemetente=$resgenerica->prd_municipio;
		$renasemRemetente=$resgenerica->prd_renasem;
		$ufRemetente=$resgenerica->prd_uf;
    endwhile;
   //captura dados do amostrador 
    //ENTRA DE QUAKQUER MANEIRA
    $generica=new tabelagenerica();
	$generica->tabela="amostrador,ficha";
	$generica->campos_valores = array(
			"amt_nome" => NULL,
		);
	$generica->extras_select =" where  fic_amostrador=amt_id and fic_id=" . $amostraLong;
    $generica->selecionaCampos($generica);
	while ($resgenerica = $generica->retornaDados()):
		$amostrador=$resgenerica->amt_nome;
    endwhile;


  
   ///////////////captura contaminates////////////////////////////////
   	//TRABALHA COM OS CONTAMINANTES  primeiro somente calculando o total por grupo
	//vai somar os totais por grupo
	 $somaOE=0;
	 $somaSI=0;
	 $somaTO=0;
	 $somaPR=0;
	 $somaPQ=0;
	 //ENTRA DE QUAKQUER MANEIRA
	 $generica=new tabelagenerica();
     $generica->tabela="invasoras,contaminantes";
	 $generica->campos_valores = array(
			"inv_qtd" => NULL,
			"inv_codigo" => NULL,
			"con_nome_cientifico" => NULL,
		);
     $generica->extras_select =" where  inv_cod_praga=con_id and  inv_amostra=".$amostraLong;
     $generica->selecionaCampos($generica);
	 $contaContaminantes=0;
	 $vetorContaminante="";
     while ($resgenerica = $generica->retornaDados()):
	    if($resgenerica->inv_codigo=="1OES")$somaOE+=$resgenerica->inv_qtd;
	    if($resgenerica->inv_codigo=="2SIL")$somaSI+=$resgenerica->inv_qtd;
	    if($resgenerica->inv_codigo=="3NOT")$somaTO+=$resgenerica->inv_qtd;
	    if($resgenerica->inv_codigo=="4NOP")$somaPR+=$resgenerica->inv_qtd;
	    if($resgenerica->inv_codigo=="5QUA")$somaPQ+=$resgenerica->inv_qtd;
		$contaContaminantes++;
		$vetorContaminante[$contaContaminantes]=$resgenerica->con_nome_cientifico.'('.$resgenerica->inv_qtd.')';
	 endwhile;
     $vetorMegaAmostra[78]=$vetorContaminante;

	 //aqui verifica se todos os valores continuam zerados. Em caso positivo
	 // ele pega o valor deful para dosn que pode ser 0 ou pode ser -N-
	 //$valorParaDOSN=0;
	 //so se for o tabajara ai joga -n- no LOCAL
	 $sessao=new sessao();
     $cliente=$sessao->getVar('cliente');
	 $clientePedaco=substr($cliente,0,2);
     //if($clientePedaco=="TS")$valorParaDOSN='-N-';   //para o tabajara vale tudo
	 $vetorMegaAmostra[20]=$somaOE+$somaSI+$somaTO+$somaPR;//natureza d material inerte 

     //echo("somaOE=$somaOE somaSI=$somaSI   SomaTO=$somaTO somaPR $somaPR somaPQ =$somaPQ  <br>"); 
	 if($somaOE==0 && $somaSI==0  && $somaTO==0 && $somaPR==0 && $somaPQ==0):
	    $vetorMegaAmostra[20]=$valorParaDOSN;//se a pessoa informou que nao fez nocivas ele vai levar -N- no informe
	    //se os 4 totais forem zero ele adota o valor de dosn que é por padrao zero 
	    $valorParaDOSN1=$valorParaDOSN;  	 
        $valorParaDOSN2=$valorParaDOSN;
		//se a pessoa clicou SOMENTE NOCIVAS ele deve trazer -n- em nocivas 
		if($valorParaDOSN=='-N-'):
           $valorParaDOSN1='0';
           $valorParaDOSN2='-N-';
		endif;
        $valorFinalOE=$valorParaDOSN1;  	 
        $valorFinalSI=$valorParaDOSN1;  	 
        $valorFinalTO=$valorParaDOSN2;  	 
        $valorFinalPR=$valorParaDOSN2;  	 
        $valorFinalPQ=$valorParaDOSN2; 
  
  		 	 
	 else://caso pelo menos um dos testes foi feito ele pega do valor lido no banco
        $valorFinalOE=$somaOE;  	 
        $valorFinalSI=$somaSI;  	 
        $valorFinalTO=$somaTO;  	 
        $valorFinalPR=$somaPR;
        $valorFinalPQ=$somaPQ;
        //entretando ele pode ter feito silvestes e nao ter feito nocivas
		 if($somaTO==0 && $somaPR==0):
			//se a pessoa clicou SOMENTE NOCIVAS ele deve trazer -n- em nocivas 
			if($valorParaDOSN=='-N-'):
	           $valorParaDOSN2='-N-';
			else:
			   $valorParaDOSN2='0';
			endif;
	        $valorFinalTO=$valorParaDOSN2;  	 
	        $valorFinalPR=$valorParaDOSN2;  	 
		 endif;//testa se as somas continuam sendo zero 
	 endif;//testa se as somas continuam sendo zero 

     //vou verificar se por acaso determinei silvestre neste caso posso colocar -n- em nocivas mesmo tendo feito silvestes

	 
     $vetorMegaAmostra[7]=$valorFinalOE;
     $vetorMegaAmostra[8]=$valorFinalSI;
	 //se for reanalise, ONDE pureza=-N-  ENTAO VAI APARECER -N- NA SOMA OE E NA SOMA SI
     if($vetorRetornoPureza[1]=='-N-' && $valorFinalOE==0)$vetorMegaAmostra[7]='-N-';
     if($vetorRetornoPureza[1]=='-N-' && $valorFinalSI==0)$vetorMegaAmostra[8]='-N-';
     //se fez pureza e nao fez dosne entao nao cai no item acima	 
	 if($res->fic_dosn=="-N-"):
	   //como o tabajara nao marca dosn nunca entao NAO EXECUTA ISSO AQUI
	   if(substr($cliente,0,4)!="TS L"):
	     $vetorMegaAmostra[7]='-N-';
	     $vetorMegaAmostra[8]='-N-';
	   endif;	 
     endif;
     
 
     $vetorMegaAmostra[9]=$valorFinalTO;
     $vetorMegaAmostra[10]=$valorFinalPR;
     $vetorMegaAmostra[106]=$valorFinalPQ;
     $vetorMegaAmostra[77]=$valorFinalOE+$valorFinalSI+$valorFinalTO+$valorFinalPR+$valorFinalPQ;

	 //SITUACAO ESPECIAL PARA ADV QUE AO NAO MARCAR O TESTE DOSN QUER QUE FIQQUE OS 4 CAMPOS DOSN COM -N-
	 //PARA OS DEMAIS ESTA SITUACAO NAO SERVE POIS ELES MUITAS VEZES NAO MARCAM DOSN
     //oloca -n- so em nocivas 	 
	 if(trim($cliente)=="ADV" &&trim($valorParaDOSN)=='SN'):
	     $vetorMegaAmostra[7]=$somaOE; 
	     $vetorMegaAmostra[8]=$somaSI;//clicando em 
	     $vetorMegaAmostra[9]="-N-";//clicando em 
	     $vetorMegaAmostra[10]="-N-";//clicando em 
     endif;


	 if(trim($cliente)=="ADV" && trim($valorParaDOSN)=='SN' && $somaPR==0)$vetorMegaAmostra[10]="-N-";//clicando em 
     //$vetorMegaAmostra[9]=$valorParaDOSN. ;
	 //coloca tudo -N-
	 if(trim($cliente)=="ADV" && $valorParaDOSN=='-N-' && $somaOE==0)$vetorMegaAmostra[7]="-N-";//clicando em 
	 if(trim($cliente)=="ADV" && $valorParaDOSN=='-N-' && $somaSI==0)$vetorMegaAmostra[8]="-N-";//clicando em 
	 if(trim($cliente)=="ADV" && $valorParaDOSN=='-N-' && $somaTO==0)$vetorMegaAmostra[9]="-N-";//clicando em 
	 if(trim($cliente)=="ADV" && $valorParaDOSN=='-N-' && $somaPR==0)$vetorMegaAmostra[10]="-N-";//clicando em 
	 
	 
	 
	 
     //////////final da captura dos contaminantes//////////////////////
	 
	 ///calcula pureza/////////////
	 $vetorMegaAmostra[15]=$res->fic_outrascultivares;//outras cultivares
     $vetorMegaAmostra[16]=$res->fic_amostra_previa;
	 //se o valor de pureza tiver sido preenchido com -N- entao vai preencher 
	 //naturza do material inerte com -O- 

     if($vetorRetornoPureza[1]=='-N-'):	 
	     $vetorMegaAmostra[4] =$vetorRetornoPureza[1];//pureza
	     //$vetorMegaAmostra[4] =300;//pureza
		 $vetorMegaAmostra[17]=$vetorRetornoPureza[2];//outras sementes
		 $vetorMegaAmostra[18]=$vetorRetornoPureza[3];//material inerte
		 $vetorMegaAmostra[19]='-O-';//natureza d material inerte
		 $vetorMegaAmostra[45]=$vetorRetornoPureza[5];//peso amostra de trabalho
		 $vetorMegaAmostra[46]='-O-';//peso pureza
		 $vetorMegaAmostra[47]=$vetorRetornoPureza[7];//peso outras sementes
		 $vetorMegaAmostra[48]=$vetorRetornoPureza[8];//peso material inerte
		 $vetorMegaAmostra[84]=$vetorRetornoPureza[9];//BALANCA DA PUREZA
		 $vetorMegaAmostra[85]=$vetorRetornoPureza[11];//data teste 
		 $vetorMegaAmostra[86]=$vetorRetornoPureza[10];//operador/analista
		 
		 //estes 3 campos sao definidos mais acima nesta classe/nesta funcao
		 //$vetorMegaAmostra[49]='-O-';//peso outras cultivares
         $vetorMegaAmostra[51]='-O-';
         $vetorMegaAmostra[50]='-O-';
     else:
	     $vetorMegaAmostra[4] =$vetorRetornoPureza[1];//pureza
		 $vetorMegaAmostra[17]=$vetorRetornoPureza[2];//outras sementes
		 $vetorMegaAmostra[18]=$vetorRetornoPureza[3];//material inerte
		 $vetorMegaAmostra[19]=$vetorRetornoPureza[4];//natureza d material inerte
		 $vetorMegaAmostra[45]=$vetorRetornoPureza[5];//peso amostra de trabalho
		 $vetorMegaAmostra[46]=$vetorRetornoPureza[6];//peso pureza
		 $vetorMegaAmostra[47]=$vetorRetornoPureza[7];//peso outras sementes
		 $vetorMegaAmostra[48]=$vetorRetornoPureza[8];//peso material inerte
		 $vetorMegaAmostra[84]=$vetorRetornoPureza[9];//BALANCA DA PUREZA
		 $vetorMegaAmostra[85]=$vetorRetornoPureza[11];//data teste
		 $vetorMegaAmostra[86]=$vetorRetornoPureza[10];//operador/analista
	 endif; 



	
	//CASO LEVANTADO POR DIMICRON. SE É REVALIDAR GERMINACAO ENTAO COLOCA -N- EM CAMPOS 
	//RELACIONADOS A PUREZA 
	if($vetorMegaAmostra[43]=='REVALIDAR GERMINAÇÃO'):
	   $vetorMegaAmostra[4]="-N-";//puras
	   $vetorMegaAmostra[17]="-N-";//matrial inerte
	   $vetorMegaAmostra[18]="-N-";//outras sementes
	   $vetorMegaAmostra[7]="-N-";//somaoe
	   $vetorMegaAmostra[8]="-N-";//somasi
	   $vetorMegaAmostra[9]="-N-";//somato
	   $vetorMegaAmostra[10]="-N-";//soma pr
	
	
	endif; 
	
	
	 
	 
	 
	 
	 	 
	 //$vetorMegaAmostra[4]="99";

	 //captura o valor e a sigla das outras determinacoes
	 $valorOutrasDetes=$this->captura_outras_determinacoes($amostraLong,$idEspecie,$idLabo,'deteboletim');
	 $vetorMegaAmostra[21]=$valorOutrasDetes[1];//resultado OUTRAS DETERMINAÇOES1
	 //$vetorMegaAmostra[21]='kkk';
	 $vetorMegaAmostra[22]=$valorOutrasDetes[2];//resultadoOUTRAS DETERMINAÇOES2
	 $vetorMegaAmostra[23]=$valorOutrasDetes[3];//resultadoOUTRAS DETERMINAÇOES3
	 //$vetorMegaAmostra[23]='66';
	 
	 $vetorMegaAmostra[24]=$valorOutrasDetes[4];//resultadoOUTRAS DETERMINAÇOES4
 
	 
	 //$eacel=$this->captura_OD_Especifica($amostraLong,'EAC');
     //CAPTURA OUTRAS DETERMINACAOES no dia 1507 eu desmarque as linhas 1086,1087,1088
	 $vetorMegaAmostra[39]=$this->captura_OD_Especifica($amostraLong,'EAC');//resultado de EACEL
	 $vetorMegaAmostra[38]=$this->captura_OD_Especifica($amostraLong,'PMS');//resultado de PMS
	 $vetorMegaAmostra[41]=$this->captura_OD_Especifica($amostraLong,'FRI');//resultado de FRIO
     	 
     $vetorMegaAmostra[25]=$res->fic_amostra_previa;//pega o numero da amostra previa 
	 $vetorMegaAmostra[26]=$valorOutrasDetes[5];//sigla das OUTRAS DETERMINAÇOES1
	 $vetorMegaAmostra[27]=$valorOutrasDetes[6];//sigla das OUTRAS DETERMINAÇOES1
	 $vetorMegaAmostra[28]=$valorOutrasDetes[7];//sigla das OUTRAS DETERMINAÇOES1
	 $vetorMegaAmostra[29]=$valorOutrasDetes[8];//sigla das OUTRAS DETERMINAÇOES1
	 $vetorMegaAmostra[30]=$especieCientifica;//capturou especie
	 $vetorMegaAmostra[31]=$cultivar;//
	 $vetorMegaAmostra[32]=$especieComum;//
	 $vetorMegaAmostra[91]=$peso_pureza_ras;//
	 $vetorMegaAmostra[92]=$peso_ocv_ras;//
	 $vetorMegaAmostra[93]=$peso_nocivas_ras;//
	 $vetorMegaAmostra[94]=$peso_dosn_ras;//


     $vetorMegaAmostra[59]=$idEspecie;
     $vetorMegaAmostra[60]=$grupo2011;
	 $vetorMegaAmostra[61]=$amostrador;//amostrador/produtor/cooperante
     $vetorMegaAmostra[62]=$vetorRetornoPureza[4];//natureza do material inerte
	 $vetorMegaAmostra[42]=$remetente;//
	 $vetorMegaAmostra[72]=$municipioRemetente;//
	 $vetorMegaAmostra[73]=$ufRemetente;//
	 $vetorMegaAmostra[95]=$apelido;//
	 $vetorMegaAmostra[97]=$renasemRemetente;//
	 $vetorMegaAmostra[98]=$res->fic_campo_string;
	 $vetorMegaAmostra[99]=$res->fic_importacao;


	 //vai somar x dias da entrada da amostra
	 

	 
	 
	 //O 63 USEI PARA FIC_TTA o 64 para fic_dt_amostragem  o 65 para fic_aparelho=peso amostagem
   return $vetorMegaAmostra; 	    	
}//final de captura geral amostra

##função5       #################################
    function dadostecnico($idLabo,$funcao)
	{
 		 //$sessao = new sessao();
		 //$idLabo=$sessao->getVar('idLabo');
         $userTec = new tecnico();
		 $userTec->extras_select = " where ret_funcao='".$funcao."' and ret_ativo='SIM' && ret_id_labo=".$idLabo  ;
		 $userTec->selecionaCampos($userTec);
         $cliTec[1]="prerrogativa do rt nao identificada"; 
         while ($resTec = $userTec->retornaDados()):
             $cliTec[1]=$resTec->ret_nome; 
             $cliTec[2]=$resTec->ret_crea; 
             $cliTec[3]=$resTec->ret_renasem; 
             $cliTec[4]=$resTec->ret_assinatura; 
             $cliTec[5]=$resTec->ret_id; 
             $cliTec[6]=$resTec->ret_municipio; 
             $cliTec[7]=$resTec->ret_cargo; //rt substituto etc
             $cliTec[8]=$resTec->ret_endereco; //
             $cliTec[9]=$resTec->ret_cpf; //
             $cliTec[10]=$resTec->ret_telefone; //
             $cliTec[11]=$resTec->ret_email; //
             $cliTec[12]=$resTec->ret_cep; //



         endwhile;              		
         return $cliTec;	 
	}


##função6 ###################################################	
	function dados_gerais_documento($idDocumento)

	{
		//pega o requerente,aespecie,acualtar,amostrador o numero,ano,data do documento
		$generica=new tabelagenerica();
		$generica->tabela="documentos,ficha,documentosponte,remetente,especies,cultivar,amostrador";
		$generica->campos_valores = array(
			"prd_nome" => NULL,
			"prd_id" => NULL,
			"prd_endereco" => NULL,
			"prd_telefone" => NULL,
			"prd_cpf" => NULL,
			"prd_municipio" => NULL,
			"prd_cep" => NULL,
			"prd_uf" => NULL,
			"prd_email1" => NULL,
			"prd_renasem" => NULL,
			"doc_numero" => NULL,
			"doc_ano" => NULL,
			"esp_nome" => NULL,
			"ctv_nome" => NULL,
			"amt_nome" => NULL,
			"amt_renasem" => NULL,
			"fic_safra" => NULL,
			"fic_funcao" => NULL,
			"fic_categoria" => NULL,
			"fic_dt_amostragem" => NULL,
			"fic_dt_entrada" => NULL,
			"esp_nome_cientifico" => NULL,
			"esp_id" => NULL,
			"fic_procedencia" => NULL,
			"esp_min_pureza" => NULL,
			"esp_min_nocivas" => NULL,
			"esp_min_dosn" => NULL,
			"esp_min_ocv" => NULL,
			"doc_obs1" => NULL,
			"doc_obs2" => NULL,
			"doc_obs3" => NULL,
			"doc_obs4" => NULL,
			"doc_obs5" => NULL,
			"doc_obs6" => NULL,
			"doc_obs7" => NULL,
			"doc_obs8" => NULL,
			"doc_data" => NULL,
			"doc_data_analise" => NULL,
			"esp_id" => NULL,
		);
		//$generica->extras_select =" where ctv_especie=esp_id and  fic_cultivar=ctv_id and fic_produtor=prd_id and fic_amostrador=amt_id and dpo_amostra_vinculada=fic_id and  dpo_documento_autonumerador=doc_id  and doc_id='".$idDocumento."'  order by doc_id  desc LIMIT 1";   
		$generica->extras_select =" where ctv_especie=esp_id and  fic_cultivar=ctv_id and fic_produtor=prd_id and fic_amostrador=amt_id and dpo_amostra_vinculada=fic_id and  dpo_documento_autonumerador=doc_id  and doc_id='".$idDocumento."'  LIMIT 1";  
				 
		//echo("wwwwwwwwwwww1181 funcao dadosgeriadocumentoidDocumento= $idDocumento<br>");
	    $generica->selecionaCampos($generica);
		while ($resgenerica = $generica->retornaDados()):
			$dadosFinais[0]=$resgenerica->prd_nome;
			$dadosFinais[1]=$resgenerica->doc_numero;
			$dadosFinais[2]=$resgenerica->esp_nome;
			$dadosFinais[4]=$resgenerica->doc_ano;
			$dadosFinais[3]=$resgenerica->ctv_nome;
			$dadosFinais[5]=$resgenerica->amt_nome;
			$dadosFinais[6]=$resgenerica->prd_renasem;
			$dadosFinais[7]=$resgenerica->amt_renasem;
			$dadosFinais[8]=$resgenerica->prd_endereco;
			$dadosFinais[9]=$resgenerica->fic_safra;
			$dadosFinais[10]=$resgenerica->fic_categoria;
			$dadosFinais[11]=$resgenerica->fic_dt_amostragem;
			$dadosFinais[12]=date("d/m/Y",strtotime($resgenerica->fic_dt_entrada));
			$dadosFinais[13]=$resgenerica->esp_nome_cientifico;
			$dadosFinais[14]=$resgenerica->fic_procedencia;
			//estes 4 parametros a seguir so serve para o boletim horizontal
			$dadosFinais[15]=$resgenerica->esp_min_pureza;
			$dadosFinais[16]=$resgenerica->esp_min_nocivas;
			$dadosFinais[17]=$resgenerica->esp_min_dosn;
			$dadosFinais[18]=$resgenerica->esp_min_ocv;
			$dadosFinais[19]=$resgenerica->doc_obs1;
			$dadosFinais[20]=$resgenerica->doc_obs2;
			$dadosFinais[21]=$resgenerica->doc_obs3;
			$dadosFinais[22]=$resgenerica->doc_obs4;
			$dadosFinais[23]=$resgenerica->doc_obs5;
			$dadosFinais[24]=$resgenerica->doc_obs6;
			$dadosFinais[25]=$resgenerica->doc_obs7;
			$dadosFinais[26]=$resgenerica->doc_obs8;
			$diaDoc=date("d",strtotime($resgenerica->doc_data));
			$mesDoc=date("m",strtotime($resgenerica->doc_data));
			$anoDoc=date("Y",strtotime($resgenerica->doc_data));
			$mesExtenso=$this->mesExtenso($mesDoc);
			$dadosFinais[27]= $diaDoc." de ". $mesExtenso." de " . $anoDoc.".";
			
			//$dadosFinais[27]=date("d/m/Y",strtotime($resgenerica->doc_data));
			$dadosFinais[28]=$resgenerica->esp_id;
			$dadosFinais[33]=$resgenerica->prd_telefone;
			$dadosFinais[34]=$resgenerica->prd_cep;
			//$dadosFinais[35]=$resgenerica->prd_municipio.'/'.$resgenerica->prd_uf;
			$dadosFinais[35]=$resgenerica->prd_municipio;
			$dadosFinais[36]=$resgenerica->prd_cpf;
			$dadosFinais[37]=$resgenerica->prd_email1;
			$dadosFinais[38]=$resgenerica->doc_data_analise;
			$dadosFinais[39]=$resgenerica->prd_id;
			$dadosFinais[40]=$resgenerica->fic_funcao;
			//$dadosFinais[4]=$resgenerica->doc_ano;
	    endwhile;
		return $dadosFinais;
	}//final da function dados gerais documento
	
	
	
	
	
//função7   ###########################################
	function  calculaPureza($reanLong,$pesoPurezaRas,$atglido,$spglido,$miglido,$osglido,$transigir) 
	{
	
	            // echo("xxxxxxxxxxx  atglido=$atglido  pesoPurezaRas=$pesoPurezaRas<br>");
				$casasDecimais=4;
                if($pesoPurezaRas>=1 && $pesoPurezaRas<10)$casasDecimais=3;	    
                if($pesoPurezaRas>=10 && $pesoPurezaRas<100)$casasDecimais=2;	    
                if($pesoPurezaRas>=100 && $pesoPurezaRas<1000)$casasDecimais=1;	    
                if($pesoPurezaRas>=1000)$casasDecimais=0;	    
				//o valor de transigit pode ser sim ou nao
	            $mensagemErro='';
                //aqui vai calcular
			    //rotina pureza criado dia 10/07/13 depois de levar um shou na  A B  C
				//existem varia situaoes que tem que ser previstas
				//preencimento com zero ai vai resultar zero obviamente
				//nao preenchimento de pureza (o computador deve aceitar e joga a diferenca)
				//se lancar peso=traço ele deve considerar e a resposta em percentrace =TRAÇO
				//nao pode dar por exemplo puras 100 e inerte 0.1%
				//verifica se coloquei numero caso positivo capta o valor digitado
                $digitouPuras='NAO';
    			 if(osglido=="TRACO")$osglido="TRAÇO";
	    		 if(miglido=="TRACO")$miglido="TRAÇO";

				if($atglido>0) $atg =$atglido;
                //VERIFICA SE DIGITOU SEMENTES PURAS(SE NAO DIGITORU ELE VAI PEGAR POR DIFERENÇA)  
				if($spglido>0)
				{
				   $spg =$spglido;
				   $digitouPuras = "SIM";
				} 

				if($osglido>0) $osg =$osglido;
				if($miglido>0) $mig =$miglido;
				//caso tenha colocado TRAÇO EM OSG OU EM MSG  ENTAO COLOCA ZERO NESTES PESOS
				if($osglido=='TRAÇO') $osg =0;
				if($miglido=='TRAÇO') $mig =0;
				//if($osglido=='') $osglido =number_format(0,$casasDecimais,'.',',');
				//if($miglido=='') $miglido =number_format(0,$casasDecimais,'.',',');
				//$miglido =number_format(0,$casasDecimais,'.',',');
				
				
				
				
				//SE NÃO PREENCHEU OUTRAS SEMENTES ELE VAI PREENCHER SOZINHO
				$osFinalizado="NÃO";
				$miFinalizado="NÃO";
				if($osglido=="")
				{
				   $osg=0;
				   $osglido=number_format($osg,$casasDecimais,'.',',');  //number_format($osg,$casasDecimais,'separador decimal','separador milhar')
				   $ospf='0.0';
				   $osFinalizado="SIM";
				   $mensagemDefeito="Segundo a RAS, devem ser informados os pesos de amostra de trabalho, pureza,outras sementes e material inerte, sempre.";
				} 

				if($miglido=="")
				{
				   $mig=0;
				   $miglido=number_format($mig,$casasDecimais,'.',',');  //number_format($mig,$casasDecimais,'separador decimal','separador milhar')
				   $mipf='0.0';
				   $miFinalizado="SIM";
				   $mensagemDefeito="Segundo a RAS, devem ser informados os pesos de amostra de trabalho, pureza,outras sementes e material inerte, sempre.";

				} 

				//SE PREENCHEU COM TRAÇO ELE COLOCA TRACO E FINALIZA
				if($osglido=="TRAÇO")
				{
					$ospf='TRAÇO';
					$osFinalizado="SIM";
				    $osg=0;
				}   
				if($miglido=="TRAÇO")
				{
					$mipf='TRACO';
					$miFinalizado="SIM";
				    $mig=0;
				}   
				//se preencheu com 0.0 ele poe zero
				if($osglido=="0.0" || $osglido=="0.00" ||$osglido=="0.000" ||$osglido=="0.0000" )
				{
					$ospf='0.0';
					$osFinalizado="SIM";
				    $osg=0;
				}   
				if($miglido=="0.0" || $miglido=="0.00" ||$miglido=="0.000" ||$miglido=="0.0000" )
				{
					$mipf='0.0';
					$miFinalizado="SIM";
				    $mig=0;
				}   
				//////////////conferencias///////////////
				//comeca pegando o caso mais vulgar
				$impg = $osg + $mig;
				if($digitouPuras == "SIM"):
				     $pesoConsiderado = $spg + $impg;
					 $diferenca=abs($diferenca);
					 if($diferenca > 0):
					       if($atg==0)$atg=1;
						   $diferencaperc = $diferenca / $atg * 100;
						   if($diferencaperc>3 )
						   {
							  $mensagemDefeito="A)Cálculo nao ok. Diferença entre a soma dos pesos e a amostra de trabalho, supera 3%";
					          $concluirCalculo="NÃO";
						   }			   
                     endif;//TTSTOU SE DIFERENCA >0
					 //printMSG('DIGITOU PURAS(Isso está em desacordo com a RAS) Peso pureza calculado=','alerta');
			    //SE NAO DIGITOU PURAS
				else:
				     //$pesoConsiderado = $atg-$impg;
				     $spg=$atg - $impg;
				     $pesoConsiderado = $spg + $impg;
					 
				     $spglido=number_format($spg,$casasDecimais,'.',',');  //number_format($mig,$casasDecimais,'separador decimal','separador milhar')
					 $mensagemDefeito="Segundo a RAS, devem ser informados os pesos de amostra de trabalho, pureza,outras sementes e material inerte, sempre. ";
					 printMSG('NAO DIGITOU PURAS(Isso contraria a RAS). Peso pureza calculado='. $spglido,'alerta');
                     
	            endif; //FIM DO TESTE SE DIGITOU PURAS=SIM

				//deve digitar sementes puras sempre independente se é maior ou menosr que 25 gramas
				//VAI VERIFICAR SE A SOMA DOS PESOS E A AMOSTRA DE TRABALHO NÃO SUPERA 3%
				// $pesoConsiderado = $spg + $impg;
				// $diferenca = $atg - $pesoConsiderado;

				//vai calcular os valores em decimais
				if($pesoConsiderado>0):
				   $spp = $spg / $pesoConsiderado * 100;
                   $guardaPuBruto=$spp;
				else:   
				   printMSG('Para fazer o cálculo precisa informar o Peso da amostra de trabalho.','alerta');
				endif;   
				//$spp=round($spp*10+0.5)/10;
        //guarda percentuais brutos para barenbrug 



				$sppf=number_format($spp,1,'.',',');
				if($osFinalizado=="NÃO")
				{
				   if($pesoConsiderado>0):
				       $osp = $osg / $pesoConsiderado * 100;
                       $guardaOsBruto=$osp;
				   endif;   

					if($osp < 0.05 ) 
					{
                     	printMSG("Pecentual de outras esp<0,05% ".$osp." vai atribuir traço"); 
					    $ospf= "TRAÇO";
						$osp=0;	 //pois senao ele nao zera o valor e nao fecha em 100 nunca
						$osFinalizado="SIM";
					}
					else
					{
					     $ospf=number_format($osp,1,'.',',');
						 $osp=$ospf;//pois se arredondou precisa do novo valor para checar e dar 100
					}	
				}


				if($miFinalizado=="NÃO")
				{
				    if($pesoConsiderado>0):
					   $mip = $mig / $pesoConsiderado * 100;
                       $guardaMiBruto=$mip;
					endif;   
					if($mip < 0.05 ) 
					{
					    $mipf= "TRAÇO";
						$mip=0;	 //pois senao ele nao zera o valor e nao fecha em 100 nunca
					    $miFinalizado="SIM";
					}
					else
					{
					     $mipf=number_format($mip,1,'.',',');
						 $mip=$mipf;//pois se arredondou precisa do novo valor para checar e dar 100
					}	
				}

	

				//vai fazer uma checagem 
				if($atglido==0)
				{
				   echo("Para fazer o calculo de pureza, é requerido que o peso previsto na RAS, tenha sido informado. Se nao foi feito, va no cadastro de especies e informe um valor numérico.");
				} 
				else
				{
				  //dentro deste else vai estar todo o calculo propriamente dito
				  //verifica a difentença entre  a pureza ras e o peso da amostra de trabalho
				  $v1 = $atglido - $pesoPurezaRas;
				  $v1 =  abs($v1);
				  $v1 = $v1 / $pesoPurezaRas * 100;
				  if($v1 > 3 && $transigir!=='SIM'):
				   $mensagem=$v1."A diferença entre o peso da amostra de trabalho, e o  peso previsto na RAS, não pode exceder a 3%";
				   $mensagemDefeito="Cuidado:A diferença entre o peso previsto na RAS e a amostra de trabalho supera 3%";
				   $concluirCalculo="NÃO";
				   $mensagemErro="A diferença entre o peso da amostra de trabalho, e o  peso previsto na RAS, não pode exceder a 3%.  Ver ajuda para saber os casos que pode transigir isso e use com critério a opção transigir.";
				  endif;
	
					
					
					
				  //echo("atglido= $atglido  pesoPurezaRas= $pesoPurezaRas volor de tolerancia= $v1 <br>");
				 // echo("vai calcular= $v1<br>");
				}
					 //soma os pesos de impurezas
					$impg = $osg + $mig;
					//deve digitar sementes puras sempre independente se é maior ou menosr que 25 gramas
					//VAI VERIFICAR SE A SOMA DOS PESOS E A AMOSTRA DE TRABALHO NÃO SUPERA 3%
					 $pesoConsiderado = $spg + $impg;
					 $diferenca = $atg - $pesoConsiderado;
					 $diferenca=abs($diferenca);
					 if($diferenca > 0)
					 {
				 	       if($atg==0)$atg=1;
						   $diferencaperc = $diferenca / $atg * 100;
						   if($diferencaperc>3)
						   {
							  $mensagemDefeito="B)Cálculo nao ok. Diferença entre a soma dos pesos e a amostra de trabalho, supera 3%";
					          $mensagemErro="Cálculo nao ok. Diferença entre a soma dos pesos e a amostra de trabalho, supera 3%";

				              $concluirCalculo="NÃO";
						   }			   
					 }	
			      if($atglido<$pesoPurezaRas && $transigir!='SIM' ):
				      //echo "xxxxxxxxxxrrrr";
				      $mensagemDefeito=$mensagemErro=$mensagem=$transigir."O peso da amostra nunca pode ser inferior ao mínimo previsto na RAS(Ver IN40.)";
					  //if($transigir!='SIM')$concluirCalculo="NÃO";
					  //if($transigir=='SIM')$concluirCalculo="SIM";
					  
					  
				  endif;
			      if($v1>3 && $transigir!='SIM'):
				      //echo "xxxxxxxxxxrrrr";
				      $mensagemDefeito=$mensagemErro=$mensagem=$transigir."A diferença entre o peso da amostra e peso previstro na RAS nao pode exceder 3%";
					  $concluirCalculo="NÃO";
				  endif;
				  ////////////////////////////////////////////
				  	//AMOSTRA DE TRABALHO
					$posicaoPonto=strpos($atglido,'.');
					$casasDecimaisATG=strlen($atglido)-$posicaoPonto-1;
					if($posicaoPonto==""  || $posicaoPonto==0)$casasDecimaisATG=0;
					//echo("561nnnnnn atglido  $atglido posicaoPonto=$posicaoPonto casasDecimais=$casasDecimaisATG casasDecimais=$casasDecimais <br>");
					//PUREZA
					$posicaoPonto=strpos($spglido,'.');
					$casasDecimaisSPG=strlen($spglido)-$posicaoPonto-1;
					if($posicaoPonto==""  || $posicaoPonto==0)$casasDecimaisSPG=0;
					//POUTRAS SEMENTES
					$posicaoPonto=strpos($osglido,'.');
					$casasDecimaisOSG=strlen($osglido)-$posicaoPonto-1;
					if($posicaoPonto==""  || $posicaoPonto==0)$casasDecimaisOSG=0;
					//MATERIAL INERTE
					$posicaoPonto=strpos($miglido,'.');
					$casasDecimaisMIG=strlen($miglido)-$posicaoPonto-1;
					if($posicaoPonto==""  || $posicaoPonto==0)$casasDecimaisMIG=0;
							
					//COMPARA COM NUMERO DE CASAS DECIMAIS OBRIGATORIOS	
					if($pesoPurezaRas>=1000)$casasDecimais=0;
					if($pesoPurezaRas>=100  && $pesoPurezaRas<1000 )$casasDecimais=1;
					if($pesoPurezaRas>=10  && $pesoPurezaRas<100 )$casasDecimais=2;
					if($pesoPurezaRas>=1  && $pesoPurezaRas<10 )$casasDecimais=3;
					if($pesoPurezaRas>=0  && $pesoPurezaRas<1 )$casasDecimais=4;
					if($pesoPurezaRas==0 )$casasDecimais="Falta dado";		
						
					$problemaCasas="NAO";		
					if($casasDecimaisATG<$casasDecimais)$problemaCasas="SIM";	
					if($casasDecimaisSPG<$casasDecimais)$problemaCasas="SIM";	
					if($casasDecimaisOSG<$casasDecimais)$problemaCasas="SIM";	
					if($casasDecimaisMIG<$casasDecimais)$problemaCasas="SIM";	
                    if($problemaCasas=="SIM"):
					    $concluirCalculo="NÃO";
					    $mensagemDefeito=$mensagemErro=$mensagem="Corrigir número de casas decimais.";
                    //echo("eco casasDecimais=$casasDecimais casasDecimaisATG=$casasDecimaisATG casasDecimaisSPG=$casasDecimaisSPG  casasDecimaisOSG=$casasDecimaisOSG  casasDecimaisMIG=$casasDecimaisMIG<br>");
                    endif;
				  ///////////////////////////////////////////
				  
				     
		//echo("peso amostrade trabalho=$atg   pesoConsiderado= $pesoConsiderado digitouPuras=$digitouPuras  impg=$impg  somaChecagem=$somaChecagem  sppf=$sppf<br>");
        $vetor[1]=$sppf;//sementes puras final
		$vetor[2]=$mipf;//material inerte final
        if($mipf>0)$vetor[2]=number_format($mipf,1,'.',',');          
        $vetor[3]=$ospf;//outras sementes final
        if($ospf>0)$vetor[3]=number_format($ospf,1,'.',','); 
		//formata para duas casas
		$guardaPuBruto=number_format($guardaPuBruto,2,'.',',');
		$guardaOsBruto=number_format($guardaOsBruto,2,'.',',');
		$guardaMiBruto=number_format($guardaMiBruto,2,'.',',');
		
		
  		//para evitar o erro crasso de dar mais de 100% jogando  a diferenca no maior
		$somaChecagem=$vetor[1]+$vetor[2]+$vetor[3];
		$maior=max($spp,$osp,$mip);
		if($somaChecagem!=100)
		{
		    $diferenca=100-$somaChecagem;
			$teste=0;
            if($maior==$spp && $teste==0 ):
			   $vetor[1]=number_format($sppf+$diferenca,1,'.',',');//$sppf+$diferenca;
               $teste=1;//tem que colocar isso porque pode eventualmente ter dois iguais lei de murfi
            endif;  
            if($maior==$mip && $teste==0 ):
			   $vetor[2]=number_format($mipf+$diferenca,1,'.',',');//$mipf+$diferenca;
               $teste=1;//tem que colocar isso porque pode eventualmente ter dois iguais lei de murfi
            endif;  
			//so sobra ser este ultimo mas deixa a codificacao parecida e vai cair aqui de qualquer forma 
            if($maior==$osp && $teste==0 ):
			   $vetor[3]=number_format($ospf+$diferenca,1,'.',',');//$ospf+$diferenca;
               $teste=1;//tem que colocar isso porque pode eventualmente ter dois iguais lei de murfi
            endif; 
			echo("Achou valor diferente de 100% e já foi corrigido.  $maior <br>");
		}
		
		         
        $vetor[4]=$mensagemDefeito;//mensagem 1
        $vetor[5]=$ospf;//mensagem 2
        $vetor[6]=$ospf;//mensagem 3
        $vetor[7]=$concluirCalculo;//concluir calculo SIM OU NAO
        $vetor[8]=$spg;//LEVA DE VOLTA POIS PODE SER QUE O OPERADOR NAO DIGITOR E ELE PEGOU POR DIFERENÇA
        $vetor[9]=$pesoConsiderado;//
        $vetor[10]=$impg;//

        //mensagem de erro. se deu erro ele coloca ??? como resultado
		$vetor[11]="";//algum erro que deve ser mostrado, tal como peso pureza maior que 103% do peso da amostra de trabalho
        //echo("errorrrrrrrrrrrrrrrrrrrr $mensagemErro<br> ");
		if($mensagemErro!=""):
		    $vetor[11]=$mensagemErro;
	        $vetor[1]="???";//sementes puras final
	        $vetor[2]="???";//material inerte final
	        $vetor[3]="???";//outras sementes final
		endif; 
        //aqui salva na tabela rean1
        $user = new rean1(array(

                'rea_v1'=>$vetor[1],				
                'rea_v2'=>$vetor[2],				
                'rea_v3'=>$vetor[3],
                'rea_v4'=>$guardaPuBruto,
                'rea_v5'=>$guardaOsBruto,
                'rea_v6'=>$guardaMiBruto,
             ));
            $user->valorpk = $reanLong;
            $user->extras_select = "WHERE rea_id=$reanLong";
            //$user->selecionaTudo($user);
            //$res = $user->retornaDados();
            $user->atualizar($user);
/*
         'rea_lei1'=>$atg,				
                'rea_lei2'=>$spg,				
                'rea_lei3'=>$osg,				
                'rea_lei4'=>$mig,			

*/

	    //echo("entrou na classe calculos funcao calcula pureza<br>");  
		//$vetor[11]="nnnnnnnnnn";
		return $vetor;	
	}  //final da funcao calcula pureza
	
	
##função8 ####################################	
function captura_registros_generico1($sql,$campo)
{
    //ENTRA DE QUAKQUER MANEIRA
    $generica=new tabelagenerica();
    $generica->extras_select =$sql;
	$generica->selecionaCamposEspecial($generica);
	$contador=0;
    while ($resgenerica= $generica->retornaDados()):
       $contador++;
	    //echo '<tr>';
		//if($tipo==1)$conteudo=$resgenerica->esp_nome;
		//if($tipo==2)$conteudo=$resgenerica->ctv_nome;
        //printf('<td>%s</td>',$conteudo);
        //printf('<td class="center"> <a href="?m=farejador2012&t=fareja&SELE=%s" title="Editar"><img src="images/selection1.png" alt="Editar" /></a> </td>',$conteudo);
        //echo '</tr>';
		$listaGenerica[$contador]=$resgenerica->$campo;
    endwhile; 
    return $listaGenerica;   
}//fecha a function  captura_registros_generico1

//função9 acha campos##########################################
function achacampos($sql)
{
 	 $_res = mysql_query($sql,$conexao);//linha de comando sql
	 //echo("linha 645 operacao db sql= $sql<br>");
	 if($_res===FALSE)
	 {  
	     echo("erro de consulta16aa" . mysql_error(). " $sql <br/>");
     }//fecha o if
	 else
	 {
		 $_nr=mysql_num_rows($_res);
		 if($_nr==0)
		 {
		 	 //echo("<br>ac   Não tem dados, clique NOVO, insira dados e mande gravar.$sql<br>");
             $vetori[0]="[SD]";  //nao mudar este [SD] pois coloqui ele no programa  
        	 return $vetori;
		 }
  		 else
		 {
             $result = mysql_query($sql,$conexao);//linha de comando sql
    	     $vetori="";//limpa o array
    	     $_row=mysql_fetch_assoc($_res);
		     foreach($_row as $_vlr)
		     {
			   $vetori[]=$_vlr;
		     }
             return $vetori;
		 }
	 }//fecha o else
    // mysql_close($conexao);
}//funal rotina acha campos

/*esta funcao vai apenas ler o campo rea_campo100 onde estao as 35 colunas ja calculadas
assim ele vai apenas ler o que ja esta pronto
Alem disso, vai verificar o que tem no campo rea_lei4. 
rea_lei4= TZ2 significa que entrou com tz da ficha
rea_lei4= TZ1 significa que entrou com tz semente por semente
Caso nao for tz2, nem tz1 entao aborta a funcao e os valores sao buscados eventualmente
de OUTRAS DETERMINACOES que forem digitados preservando aqueles valores digitados 
*/
function resumoTetrazolioCalculado($amostraLong)
{
		$user = new rean1();
		//$user->extras_select =" where substr(rea_lei4,0,2)='TZ' and rea_teste='TZO' AND rea_ficha=".$amostraLong ;
		$user->extras_select =" where rea_teste='TZO' AND rea_ficha=".$amostraLong ;
        //echo("eeeeeeeeeeeeeesta no editar do tetrazzolio $user->extras_select<br>");
        $user->selecionaTudo($user);
		$res = $user->retornaDados();
        $explodido=$res->rea_campo100;
		list($m[1], $m[2],$m[3],$m[4],$m[5],$m[6],$m[7],$m[8],$m[9],$m[10],$m[11],$m[12],$m[12],$m[14],$m[15],$m[16],$m[17],$m[18],$m[19],$m[20],$m[21],$m[22],$m[23],$m[24],$m[25],$m[26],$m[27],$m[28],$m[29],$m[30],$m[31],$m[32],$m[33],$m[34],$m[35]) = explode("*", $explodido);
		$m[37]=2;
		return $m;
}




##função10 ###################################
function calculaTetrazolioSojaABC($amostraLong)
{

 /*
 Observacao: A dimicron encomendou tetrazolio 4 repeticoes.
 eu preciso que o programa calcule as 4 repeticoes nesta mesma funcao entao eu 
 preciso fazer ele criar 2 linhas novas.
 para isso eu vou trazer um parametro via sessao
 se o parametro for 4R ele vai trabalhara na situaca o de 4 repeticoes mas caso contrario 
 mantem os memso parametros anterior
 
 */  
$sessao = new sessao();     
$parametroDimi=$sessao->getVar('parametroDimi');
$cliente=$sessao->getVar('cliente');
//$parametroDimi='4R';//retirar esta linha depois
if($parametroDimi=='4R'):
   $incrementoDimi=2;//duas linhas a mais
   $linhaMedias=5;//posiciona duas linhas abaixo
   $linhaAnalista=6;//posiciona duas linhas abaixo
   $divisorParaMedias=4;//vai dividir por 4 pois tem 4 linhas
else:
   $incrementoDimi=0;
   $linhaMedias=3;
   $linhaAnalista=4;
   $divisorParaMedias=2;
endif;   

        $saoTome="27";
		
		$user = new rean1();
		$user->extras_select =" where  rea_teste='TZO' AND rea_ficha=".$amostraLong ;
        //echo("esta no editar do tetrazzolio $user->extras_select<br>");
        $user->selecionaTudo($user);
		$res = $user->retornaDados();
		$reaOperador=$res->rea_operador;
		$dataBrasil=date("d/m/Y",strtotime($res->rea_datageralteste));
		$concentracao=$res->rea_validade;
        $temperatura=$res->rea_campo20a;
        $tipoPre=$res->rea_campo20b;
        $inicioPre=$res->rea_datainicio;
        $finalPre=$res->rea_campo60c;
        $inicioLeit=$res->rea_lei1;
        $finalLeit=$res->rea_lei2;
		$reaLei4=$res->rea_lei4;//se usou TZ2_4R  QUE ESTA NO MODULO TETRAZOLIO2021
		$modalidadeArquivada=$res->rea_duracao;
        $explodidoRep1=$res->rea_campo60a;
        $explodidoRep2=$res->rea_campo60b;
        $explodidoRep3=$res->rea_primeira_leitura_analista;
        $explodidoRep4=$res->rea_segunda_leitura_analista;
 
        if($reaLei4=='TZ2_4R'):
           $sessao->setVar('parametroDimi','4R');
		endif;   
      //echo("CLASSE ABC   valor de p2= $p2  explodidoRep1 $explodidoRep1<br>");


    //aqui cria uma matriz com o resumo, que pode ser usda em varios locais
	//daqui ela sai com todas colunas e nos locais(realtorios posso suprimir eventualmente alguma linha
	//cria uma matriz colocando NA PRIMEIRA LINHA OS TITULOS
	//$sqlTetrazolio="select tet_repeticao from tetrazolio where (tet_repeticao='8' or tet_repeticao='9') and tet_amostra=".$amostraLong;
	//$campo="tet_repeticao";
	//verifica se  a modalidade é 2x50 ou 2x100
	//$modalidadeArquivada=achaCampoRegistro($sqlTetrazolio,'tet_repeticao');
	
	
	if($modalidadeArquivada=='1X50') $multiplicador=4;
	if($modalidadeArquivada=='2X50') $multiplicador=2;
	if($modalidadeArquivada=='2X100') $multiplicador=1;
	if($modalidadeArquivada=='4X50') $multiplicador=2;//CASO ESPECIAL DIMICRON 
	
    //echo("xxxxxxxxxxxxxxxdentro da clsse calculos multiplicador=$multiplicador<br>");
	
	$matriz[0][1]="M18";
	$matriz[0][2]="M45";
	$matriz[0][3]="M68";
	$matriz[0][4]="U18";
	$matriz[0][5]="U45";
    $matriz[0][6]="U68";
	$matriz[0][7]="P18";
	$matriz[0][8]="P45";
	$matriz[0][9]="P68";
    $matriz[0][10]="PG";
    $matriz[0][11]="Vigor";
    $matriz[0][12]="Dura";
    $matriz[0][13]="R3";
	$rotuloVerde='Embrion.';//so maikel sneider usa verdes, os demais usam embrionaria e def. genetica

    $matriz[0][14]=$rotuloVerde;
    $matriz[0][15]="CI";
    $matriz[0][16]="CII";
    $matriz[0][17]="CIII";
    $matriz[0][18]="Dano maior";
    $matriz[0][19]="S.tes";
    $matriz[0][20]="S/dano";
    $matriz[0][21]="M2";
    $matriz[0][22]="U2";
    $matriz[0][23]="P2";
    $matriz[0][24]="M3";
    $matriz[0][25]="U3";
    $matriz[0][26]="P3";
	if($cliente=='LIMAGRAIN'):
	    $matriz[0][24]="M3R";
	    $matriz[0][25]="U3R";
	    $matriz[0][26]="P3R";
	endif;
    $matriz[0][27]="M4";
    $matriz[0][28]="U4";
    $matriz[0][29]="P4";
    $matriz[0][30]="M5";
    $matriz[0][31]="U5";
    $matriz[0][32]="P5";
    $matriz[0][33]="M(1-5)";//so a empresa 3 pinheiros usa isso
    $matriz[0][34]="U(1-5)";
    $matriz[0][35]="P(1-5)";
    $matriz[0][36]="Obs";
    $matriz[0][37]="mupi";


	$matriz[1][0]="REP I";
	$matriz[2][0]="Rep II";
	$matriz[3][0]="Média";
    if($parametroDimi=='4R'):
	   $matriz[3][0]="Rep III";
	   $matriz[4][0]="Rep IV";
	   $matriz[5][0]="Média";
	endif;

  $oto1109=0;
    //FAZ ESTE CALCULO DUAS VEZES UMA PARA CADA REPETIÇAO SENDO ESTA A PRIMEIRA VEZ pois aqui vai pegar a repeticao 1
     $totalDeRegistros=0;
     //aqui incorpora as duras ao vigor
     //$vigor=$vigor+$somaDura;

     //$multiplicador=2;
	 
	 
	 
	 //vaou colocar a grade finalizadora aqui antes de fazer o segundo laco das 2 repeticos	 
     //nuvel 1-9
 $limiteAqui=2+$incrementoDimi;	
 
 
 //echo("1848 explodidoRep1=$explodidoRep1<br> "); 
 for($repe=1;$repe<=$limiteAqui;$repe++):
     if($repe==1)$explosao=$explodidoRep1;  	 
     if($repe==2)$explosao=$explodidoRep2;  	 
     if($repe==3)$explosao=$explodidoRep3;  	 
     if($repe==4)$explosao=$explodidoRep4;  	 
     list($m2,$m3,$m4,$m5,$m6,$km,
	      $u2,$u3,$u4,$u5,$u6,$ku,
		  $p2,$p3,$p4,$p5,$p6,$kp,
		  $c2,$c3,$c4,$c5,$c6,$kk,
		  $duras,$r3,$imi,$lat,$verde,$mup2,$mup3,$mup4,$mup5,$mup6)=explode("*",$explosao);
     list($v[1],$v[2],$v[3],$v[4],$v[5],$v[6],
	 $v[7],$v[8],$v[9],$v[10],$v[11],$v[12],
	 $v[13],$v[14],$v[15],$v[16],$v[17],$v[18],
	 $v[19],$v[20],$v[21],$v[22],$v[23],$v[24],
	 $v[25],$v[26],$v[27],$v[28],$v[39],$v[30],$v[31],$v[32],$v[33],$v[34])=explode("*",$explosao);
	 for($i=1;$i<=34;$i++):
	    //echo("2189  i=$i v[i]=  $v[$i]<br> "); 
		  
     endfor;		  
	 //$r3=1;	  
		  
	 //echo("2194  r3=$r3 m5=$m5<br> "); 
	 //soma danos 1 a 8
	 //ST OTO VAI LA NOI TETRAZOLIO NUMERIOC E TEM LA PARA O LABORATORIO VIGOR O USO DAS POSICOES 30( MUP2=m18) 31(MUP3=u18) 33(MUP3=p18)))
	 if($cliente=='VIGOR'):

	     $somaM18=$m2+$m3+$m4+$m5+$m6+$mup2;
         $somaU18=$u2+$u3+$u4+$u5+$u6+$mup3;//o dano r3 é dano por umidade enetao deve ser contabilizado entre demaiss daso por umidade
         $somaP18=$p2+$p3+$p4+$p5+$p6+$mup4;
		 //echo("1866   cliente= $cliente  mup2=$mup2<br>");
     else:
	     $somaM18=$m2+$m3+$m4+$m5+$m6;
         $somaU18=$u2+$u3+$u4+$u5+$u6;//o dano r3 é dano por umidade enetao deve ser contabilizado entre demaiss daso por umidade
         $somaP18=$p2+$p3+$p4+$p5+$p6;
         //echo("1871 classe calculos ABC   cliente= $cliente  mup2=$mup2 k6=$k6  k6=$k6 somaM18=$somaM18 <br>");
	 endif;
     //$somaP18=$p2+$p3+$p4+$p5+$p6;
     //nivel 45
	 $somaM45=$m4+$m5;
     $somaU45=$u4+$u5;
     $somaP45=$p4+$p5;
     //matou  = kill
	 $somaM68=$km;//kill dano mecanico
	 $somaU68=$ku;//kill dano umidade
	 $somaP68=$kp;//kill dano percevejo
	 //soma os mup//na verdade será TRI
	 $somaMup=$mup2+$mup3+$mup4+$mup5+$mup6;
	//$sessao = new sessao();
	$idLabo=$sessao->getVar('idLabo');
    $user = new tabeladeful();
	$user->extras_select =" where   cod_lab=".$idLabo ;
    $user->selecionaTudo($user);
    //se o destino for sim r3 fica na classe 3 caso contrario passa para classe 4      
	$r3Duras='SIM';// 
	while ($res = $user->retornaDados()):
        $r3Destino=$res->tz_r3_duras;//pode vir com valor =nao
    endwhile;
    if($r3Destino=='NAO'):
        //$c4=$c4+$r3; //passa r3 para classe 4 pas nao integrar o vigor(so para fins de calculo)
	else:
        //$c3=$c3+$r3; //passa r3 para classe 3 pas nao integrar o vigor(so para fins de calculo)
	endif;
     //joga na matric que sera exportada
     $classe4=$c4;
     $classe5=$c5;
	 //mecanico
     $matriz[$repe][1]=$somaM18*$multiplicador;	
     $matriz[$repe][2]=$somaM45*$multiplicador;	
     $matriz[$repe][3]=$somaM68*$multiplicador;	
     //$matriz[$repe][3]=$m5;	
	 
	 //umidade
     $matriz[$repe][4]=($somaU18+$r3)*$multiplicador;	
     $matriz[$repe][5]=$somaU45*$multiplicador;	
     $matriz[$repe][6]=$somaU68*$multiplicador;	
	 //percevejo
     $matriz[$repe][7]=$somaP18*$multiplicador;	
     $matriz[$repe][8]=$somaP45*$multiplicador;	
     $matriz[$repe][9]=$somaP68*$multiplicador;	
	 
	 
	 //$cavalo=$r3;
     //echo("2245 calculos_class  multiplicador $multiplicador  repeticao=$repe cavalo=$cavalo<br>");
	 if($repe==1):
         //echo("2245 calculos_class   multiplicador $multiplicador  repeticao=$repe cavalo=$cavalo  explodidoRep1=$explodidoRep1<br>");
	 endif;	 
	 if($repe==2):
         //echo("2250 calculos_class   multiplicador $multiplicador  repeticao=$repe cavalo=$cavalo  explodidoRep2=$explodidoRep2<br>");
	 endif; 		 
     //$matriz[$repe][10]=$viaveis*$multiplicador;//duras nao abate nas viaveis
     //$matriz[$repe][11]=$r3;	//so para ver se traz sim ou nao
     $matriz[$repe][12]=$duras*$multiplicador;	
     $matriz[$repe][13]=$r3*$multiplicador;//estava assim e deu 5	
     //$matriz[$repe][13]=$r3;//estava assim e deu 5	
     //$oto1109=$oto1109+$r3;
    
     $matriz[$repe][14]=$verde*$multiplicador;	
     $lancamentos=$c2+$c3+$c4+$c5+$c6;//tudo que foi lancado, duras,r3 e8, e as danificadas em cada nivel
     $normais=100-($lancamentos*$multiplicador);	//normais sao a classe 1 as duras nao abate no pg
     $matriz[$repe][15]=$normais;//sem danos ou seja nivel 1 ou classe I
     //$matriz[$repe][15]=300;//sem danos ou seja nivel 1 ou classe I
     //$matriz[$repe][15]=$c3;//sem danos ou seja nivel 1 ou classe I
	 
	 
	 
	 
	 
     $matriz[$repe][16]=$c2*$multiplicador;	//classe c2
     $matriz[$repe][17]=$c3*$multiplicador; //classe c3
     $matriz[$repe][11]=$matriz[$repe][15]+$matriz[$repe][16]+$matriz[$repe][17];	//vigor é c1+c2+c3 e nao se fal mais nisso
     $vigor=$matriz[$repe][15]+$matriz[$repe][16]+$matriz[$repe][17];	//vigor é c1+c2+c3 e nao se fal mais nisso
     $viaveis=$vigor+($c4+$c5)*$multiplicador;	
     $r3final=$matriz[$repe][13];
     $matriz[$repe][26]=$r3Final;	
     
	 $matriz[$repe][10]=$viaveis;	
     $matriz[$repe][11]=$vigor;
     //$viaveis=($c2+$c3+$c4+$c5+$r3)*$multiplicador+$normais;//normais sao o  nivel=1	 
	 //base momento pode ser 50 ou 100 //depende do numero de sementes
	 $baseMomento=50;
	 if($multiplicador==1)$baseMomento=100;
     $semDanos=	$baseMomento-$registros; 
	 if($repe==2)$semDanos=0;
	 //acha o maior DANO OU DMI(dano de maior incidencia)) se é P,U ou M
	 $maior=max($somaM18,$somaU18,$somaP18);
	 if($maior==$somaM18)$maximo="M".$maior;;
	 if($maior==$somaU18)$maximo="U".$maior;
	 if($maior==$somaP18)$maximo="P".$maior;
     $matriz[$repe][18]=$maximo;//maio dano ou dano mais importante	
     $matriz[$repe][19]=$registros;//preciso deste numero para viabilizar ou nao a emissao do laudo e da ficha
     $matriz[$repe][20]=$normais;//sem danos ou seja nivel 1
	 //aqui nao tem somas ou seja é o valor simples
     //$matriz[$repe][21]=$m2*$multiplicador;	
     //$matriz[$repe][21]=302;	
	 $matriz[$repe][21]=$m2*$multiplicador;	
     //echo("1933 m2=$m2<br>");	 
     $matriz[$repe][22]=$u2*$multiplicador;	
     $matriz[$repe][23]=$p2*$multiplicador;	
	 /*LIMAGRAIN TRABALHA DA SEGUINTE FORMA:
	 1-tem dano 3RM  USANDO A POSICAO 32
	 1-tem dano 3RU  USANDO A POSICAO 33
	 1-tem dano 3RU  USANDO A POSICAO 34
	 
     */	 
    if($cliente!='LIMAGRAIN'):	
      //quando nao for limagrain
     $matriz[$repe][24]=$m3*$multiplicador;
     $matriz[$repe][25]=($u3+$r3)*$multiplicador;	//soma r3+u3 pois r3 é umidade
     //$matriz[$repe][26]=$p3*$multiplicador;	
	 $matriz[$repe][26]=$r3*$multiplicador;  //$v26 aquii estava $oto1109
	 //$matriz[$repe][26]=401;  //$v26 esse valor daqeui vai para o r3 final
    else:
	 //quando for limagrain	
     $matriz[$repe][24]=$mup4*$multiplicador;     	
     $matriz[$repe][25]=$mup5*$multiplicador;     	
     $matriz[$repe][26]=$mup6*$multiplicador; 
	 //$matriz[$repe][26]=400;  //$v26  	
	endif;	 
	 
	 
	 
     $matriz[$repe][27]=$m4*$multiplicador;	
     $matriz[$repe][28]=$u4*$multiplicador;	
     $matriz[$repe][29]=$p4*$multiplicador;	
     //echo("ggggggvvvvvvvvvvvvvvvvalor de m5=  $m5 multiplicador=$multiplicador  explosao= $explosao<br>");

	 
	 
	 $matriz[$repe][30]=$m5*$multiplicador;	
     $matriz[$repe][31]=$u5*$multiplicador;	
     $matriz[$repe][32]=$p5*$multiplicador;	
	 
     $matriz[$repe][33]=$somaM15*$multiplicador;	
     $matriz[$repe][34]=$somaU15*$multiplicador;	
     $matriz[$repe][35]=$somaP15*$multiplicador;	
     $matriz[$repe][36]=$classe4*$multiplicador;	
     $matriz[$repe][37]=$somaMup;//na verdade este é o TRI ou seja 3 danos numa semente
     $matriz[$repe][38]=$classe5*$multiplicador;;//pega o dano mecanico  que realmente matou
     $matriz[$repe][39]=$dataBrasil;//pega o dano mecanico  que realmente matou
 	 
   endfor;//aqui é o repe2
	 
	 //CRIA A LINHA FINAL OU SEJA A MEDIA arredondando tudo para cima
     $elevouDanoM='NAO';
     $elevouDanoU='NAO';
     $elevouDanoP='NAO';
	 for($j=1;$j<=40;$j++):
	 
         $soma=$matriz[1][$j]+ $matriz[2][$j];//LINHA 1+LINHA2
		 //se for o caso de dimicrom com 4 repeticoes
		 if($parametroDimi=='4R'):
            $soma=$matriz[1][$j]+ $matriz[2][$j]+ $matriz[3][$j]+ $matriz[4][$j];//LINHA 1+LINHA2+LINHA3+LINHA4
         endif;		 
		 
         $matriz[$linhaMedias][$j]=round($soma/$divisorParaMedias);	
		 //aqui vai guardar as medias das classes  para ver qual arredondou para cima
		 if($j==15)$media15Bruta=$soma/$divisorParaMedias;
		 if($j==16)$media16Bruta=$soma/$divisorParaMedias;
		 if($j==17)$media17Bruta=$soma/$divisorParaMedias;
		 if($j==36)$media36Bruta=$soma/$divisorParaMedias;
		 if($j==38)$media38Bruta=$soma/$divisorParaMedias;
		 
		 
		 
		 //memoriza se arredondou para cima m6-8 ou u6-8 ou p-68
		 //vai precisar disso no caclou do tabajara que usa 2x100
		 //arredondava e dava mais de 100 somando viaveis + mortas 
         if($j==3  &&  $matriz[$linhaMedias][3]>($soma/2))$elevouDanoM='SIM';//se o valor arredondado maior que a media entao memoriza 
         if($j==6  &&  $matriz[$linhaMedias][6]>($soma/2))$elevouDanoU='SIM';//se o valor arredondado maior que a media entao memoriza	 
         if($j==9  &&  $matriz[$linhaMedias][9]>($soma/2))$elevouDanoP='SIM';//se o valor arredondado maior que a media entao memoriza	 
	 endfor;
	 //se o calculo da media é 4 repeticoes pode aparecer que a soma das 4 repeticoes supero 100$ entao precisa compensar no maior
     //a somas das classe 1,2,3,4 e 5  e as mortas nao podem superar 100	
	 if($parametroDimi=='4R'):

	    $c1Oto=$matriz[$linhaMedias][15];//pega o valor que ja esta pronto para finalizar
	    $c2Oto=$matriz[$linhaMedias][16];
	    $c3Oto=$matriz[$linhaMedias][17];
	    $c4Oto=$matriz[$linhaMedias][36];
	    $c5Oto=$matriz[$linhaMedias][38];
        //$c6Oto=$matriz[$linhaMedias][13];	
		//$matriz[4][13]=$c6Oto;
		
		
		//mortas de m,u,p
	    $c1OtoMortas=$matriz[$linhaMedias][3]+$matriz[$linhaMedias][6]+$matriz[$linhaMedias][9];
        $somaOtoVivas= $c1Oto+ $c2Oto+ $c3Oto+ $c4Oto+ $c5Oto; //sao as vivas
		$somaTodasClasses=$somaOtoVivas+$c1OtoMortas;
        $somaOtoMortas= $c1Oto+ $c2Oto+ $c3Oto+ $c4Oto+ $c5Oto; //sao as vivas
	    $maior=max($c1Oto,$c2Oto,$c3Oto,$c4Oto,$c5Oto);
		if($somaTodasClasses>100):
		   $abateu="NAO";
		   $valorAjustavel15=$matriz[$linhaMedias][15];
		   $valorAjustavel16=$matriz[$linhaMedias][16];
		   $valorAjustavel17=$matriz[$linhaMedias][17];
		   if($media15Bruta<$valorAjustavel15  && $abateu=="NAO"):
		       $matriz[$linhaMedias][15]=$valorAjustavel15-1; 
               $abateu="SIM";		       	   
		   endif;	   
		   if($media16Bruta<$valorAjustavel16  && $abateu=="NAO"):
		       $matriz[$linhaMedias][16]=$valorAjustavel16-1; 
               $abateu="SIM";		       	   
		   endif;	   
		   if($media17Bruta<$valorAjustavel15  && $abateu=="NAO"):
		       $matriz[$linhaMedias][15]=$valorAjustavel15-1; 
               $abateu="SIM";		       	   
		   endif;	   
        endif; 		
	 endif;
	 
	  
	 
	 
	 
	 $valor30=$matriz[$linhaMedias][30];
	 //echo("vvvvvvvvvvvvvvvvvvalordem5 é vo valor30=$valor30<br>");
	 
	 
	 
	 $vigor=$matriz[$linhaMedias][11];
	 
	//MAIOR DANO SITUACAO ESPECIAL ACHA O QUE DEU EM CADA REPETICAO 
	//PODE TER DADO P4 P14 M5  M13 ETC 
	$zidaneMaiorRep1=$matriz[1][18];//PODE TER DADO P4 P14 M5  M13 ETC 
	$zidaneMaiorRep2=$matriz[2][18];//PODE TER DADO P4 P14 M5  M13 ETC 
    $quantidade1=substr($zidaneMaiorRep1,1);//pega tudo que vem depois da letra
    $quantidade2=substr($zidaneMaiorRep2,1);//pega tudo que vem depois da letra
    if($quantidade1>=$quantidade2):
       $letraDanoMaior=	substr($zidaneMaiorRep1,0,1);
	else:
       $letraDanoMaior=	substr($zidaneMaiorRep2,0,1);
	endif; 
    if($letraDanoMaior=="M")  $matriz[$linhaMedias][18]="Mecanico";
    if($letraDanoMaior=="U")  $matriz[$linhaMedias][18]="Umidade";
    if($letraDanoMaior=="P")  $matriz[$linhaMedias][18]="Percevejo";
    //se nao foi feito o teste entao coloca valor deful 
	

	//aqui prepara para salvar na rean1
	//CAPTURA A MODALIDADE ARQUIVADA
		$generica1=new tabelagenerica();
		$generica1->tabela="rean1";
		$generica1->campos_valores = array(
		    "rea_teste" => NULL,
		);
		$generica1->extras_select =" where rea_teste='TZO' and rea_ficha=".$amostraLong;
		$generica1->selecionaCampos($generica1);
		$registros=0;
		while ($resgenerica1 = $generica1->retornaDados()):
		    $registros++;
		endwhile;
		
		//se o percentual de duras for maior que 5 vai abater no vigor
		$durasFinal=$matriz[$linhaMedias][12];
        if($durasFinal>5):
		    $descontoVigor=$durasFinal-5;		
     		$vigor-=$descontoVigor;//abate so o que for acima de 5
		endif;	
		/////////////////
		//aqui tem que fazer um ajuste
	    //no caso do tabajara que lanca 2x100 ele pode lancar 11 no nivel 6 
	    //(se for teste de 50 ai dobra e nunca da quebrado)
		$a=$matriz[$linhaMedias][10]."L4=".$reaLei4;//viaveis
		$b=$matriz[$linhaMedias][3];//mecanico
		$c=$matriz[$linhaMedias][6];//umidade
		$d=$matriz[$linhaMedias][9];//percevejo
		//vai testar para mecanico
	    $somaMortosMaisViaveis=$a+$b+$c+$d;
	    if($somaMortosMaisViaveis>100):
		    if($elevouDanoM=="SIM"):
			    $matriz[$linhaMedias][3]=$matriz[$linhaMedias][3]-1;
				$b--;//abate valor de b
			endif;	
	    endif;
		//vai testar para umidade
	    $somaMortosMaisViaveis=$a+$b+$c+$d;
	    if($somaMortosMaisViaveis>100):
		    if($elevouDanoU=="SIM"):
			    $matriz[$linhaMedias][6]=$matriz[$linhaMedias][6]-1;
				$c--;//abate valor de b
			endif;	
	    endif;
		//vai testar para prcevejo
	    $somaMortosMaisViaveis=$a+$b+$c+$d;
	    if($somaMortosMaisViaveis>100):
		    if($elevouDanoP=="SIM"):
			    $matriz[$linhaMedias][9]=$matriz[$linhaMedias][9]-1;
				$d--;//abate valor de b
			endif;	
	    endif;
		
		
		///////////////
		$matriz[$linhaMedias][11]=$vigor;//aqui coloca na amtriz novamento e valor ajustado pelas duras
 		
		//$vigorConcatenado=$matriz[$linhaMedias][10].':'.$matriz[$linhaMedias][11];
		$vigorConcatenado=$matriz[$linhaMedias][11];
		$viabilidade=$matriz[$linhaMedias][10];


		$montagem="";
		//$matriz[$linhaMedias][28] =28;	
        for($m=1;$m<=38;$m++):
		   $montagem=$montagem.$matriz[$linhaMedias][$m].'*';
		   
		   
		   
		   
        endfor;
		$arbitrado=$matriz[$linhaMedias][24];//3m coluna24
		//echo("2144 mmmmmmmmmmmmmontagem=$montagem  ver 3m= $arbitrado <br>");
		$generica1=new tabelagenerica();
        if($registros>0): 
		   //echo("xxxxxxxxxxxxxxCLASSE CALCULOS->SOJA ABC VAI EDITAR REGISTRO REGISTROS= $registros<br>");
           $sqlt="update rean1 set rea_v1='$vigorConcatenado', rea_v2='$viabilidade', rea_campo100='$montagem' 
		   where rea_teste='TZO' and rea_ficha=".$amostraLong;
		   $generica1->grava_registro_com_retorno($sqlt); 
		   //echo("2149calculos.clas2149  montagem=$montagem<br>");
        endif;
		
		//aqui ja grava o valor TRI=TRIPLO QUE ERA MUP mup como uma determinacao adiconal
		$generica1=new tabelagenerica();
		$generica1->tabela="rean1";
		$generica1->campos_valores = array(
		    "rea_teste" => NULL,
		);
		$generica1->extras_select =" where rea_teste='TRI' and rea_ficha=".$amostraLong;
		$generica1->selecionaCampos($generica1);
		$registros=0;
		while ($resgenerica1 = $generica1->retornaDados()):
		    $registros++;
		endwhile;
		$mup=$matriz[$linhaMedias][37];	
		$generica1=new tabelagenerica();
        if($registros==0): 
		   $sqlt="insert into rean1 (rea_teste,rea_ficha,rea_v1)";
	       $sqlt.="values('TRI','$amostraLong','$mup')";
		   $generica1->grava_registro_com_retorno($sqlt); 
		else:  
           $sqlt="update rean1 set rea_v1='$mup' 
		   where rea_teste='TRI' and rea_ficha=".$amostraLong;
		   $generica1->grava_registro_com_retorno($sqlt); 
        endif;
		
		//aqui ja grava o valor MUP tipo qualiteste exemplo M7/U4/P2 O QUE MATOU(KILED)!
		$generica1=new tabelagenerica();
		$generica1->tabela="rean1";
		$generica1->campos_valores = array(
		    "rea_teste" => NULL,
		);
		$generica1->extras_select =" where rea_teste='MUP' and rea_ficha=".$amostraLong;
		$generica1->selecionaCampos($generica1);
		$registros=0;
		while ($resgenerica1 = $generica1->retornaDados()):
		    $registros++;
		endwhile;
		$mk=$multiplicador*$matriz[$linhaMedias][38];
		$uk=$multiplicador*$matriz[$linhaMedias][39];
		$pk=$multiplicador*$matriz[$linhaMedias][40];
		$mupQualiteste='M'.$mk.'/U'.$uk.'/P'.$pk;
		$mup=$matriz[$linhaMedias][37];	
		$generica1=new tabelagenerica();
        if($registros==0): 
		   $sqlt="insert into rean1 (rea_teste,rea_ficha,rea_v1)";
	       $sqlt.="values('MUP','$amostraLong','$mupQualiteste')";
		   $generica1->grava_registro_com_retorno($sqlt); 
		else:  
           $sqlt="update rean1 set rea_v1='$mupQualiteste' 
		   where rea_teste='MUP' and rea_ficha=".$amostraLong;
		   $generica1->grava_registro_com_retorno($sqlt); 
        endif;

        //na linha 3 estao as medias do teste em SI_
		//na linha 4 vou aproveitar e colocar os dados auxiliaares
        $matriz[$linhaAnalista][1]=$reaOperador;	//OPERADOR
        $matriz[$linhaAnalista][2]=$dataBrasil;	//DATATESTE
        $matriz[$linhaAnalista][3]=$concentracao;	//CONCENTRACAO
        $matriz[$linhaAnalista][4]=$temperatura;	
        $matriz[$linhaAnalista][5]=$tipoPre;	//TIPO DE PRE CONDICIONAMENTO
        $matriz[$linhaAnalista][6]=$inicioPre;	//INICIO PRE CONDICIONAMANETO
        $matriz[$linhaAnalista][7]=$finalPre;	//FINAL PRE
        $matriz[$linhaAnalista][8]=$inicioLeit;	//INICIO LEITURA
        $matriz[$linhaAnalista][9]=$finalLeit;	//FINAL LEITURA
        $matriz[$linhaAnalista][10]=$modalidadeArquivada;	//MODALIDADE 2X50  2X100 ETC
        //vai calcular as motras na repeticao 1 na 2 e no total//colocando na linha 4 que vai ser uma linha especial
		//para resolver problemas especiais
		$matriz[$linhaAnalista][11]=$matriz[1][3]+$matriz[1][6]+$matriz[1][9];//motas repeticao1
		$matriz[$linhaAnalista][12]=$matriz[2][3]+$matriz[2][6]+$matriz[2][9];//motas repeticao2
		//$matriz[$linhaAnalista][13]=$matriz[$linhaMedias][3]+$matriz[$linhaMedias][6]+$matriz[$linhaMedias][9];//motas media
			
		//se nao tem o teste entao coloca -N- nos locais
		//$matriz[4][13]=400;
        if(strlen($modalidadeArquivada)<3):
          for($i=1;$i<=4;$i++):
	          for($j=1;$j<=37;$j++):
			     $matriz[$i][$j]='-N-';
			  endfor;		 
		  endfor;		 
        endif;
		//$matriz[3][26]=12;
    return ($matriz);
	//echo("2602  Final do calculo de TZ. A planilha que aparece está configurada na opção que foi marcada 2x50 ou 2x100 ou 1x50. Os valores desta tabela podem ser enviados para qualquer relatório. Fale com programador.<br>");

} 
//final funcao captura tetrazolio soja ABC#####################################



//função11################################################
function capturaIDGrupo($grupo2011)
{
    // echo ("grupoid11xxxxxxxxxxx=$grupo2011<br>");
	 $idGrupo=0;
	 $grupo2011=substr($grupo2011,0,9);
	 if($grupo2011 =="GRANDE CU")   $idCalculado=1000001;//foi sem querer hihihihi
	 if($grupo2011 =="HORTICOLA")   $idCalculado=1000002;
	 if($grupo2011 =="MEDICINAL")   $idCalculado=1000003;
	 if($grupo2011 =="FORR. TEM")   $idCalculado=1000004;
	 if($grupo2011 =="FORR. TRO")   $idCalculado=1000005;
	 if($grupo2011 =="FORR. LEG")   $idCalculado=1000006;
	 if($grupo2011 =="ORNAMENTA")   $idCalculado=1000007;
	 if($grupo2011 =="FLORESTAL")   $idCalculado=1000008;
	 if($grupo2011 =="FRUTIFERA")   $idCalculado=1000009;
	 if($grupo2011 =="CONDIMENT")   $idCalculado=1000010;
     return $idCalculado;
}//final captura id grupo

//função12#######################################
function captura_registros_contaminantes($campoLimite,$codigoCultura)
{
	 //ENTRA DE QUAKQUER MANEIRA
 	 	$generica=new tabelagenerica();
		$generica->tabela="contaminantes,limites ";
		$generica->campos_valores = array(
				"con_nome_cientifico" => NULL,
				$campoLimite => NULL,
			);
		$generica->extras_select =" where  lim_cod_contaminante=con_id and lim_cod_cultura=". $codigoCultura." order by con_nome_cientifico";
	    $generica->selecionaCampos($generica);
		while ($resgenerica = $generica->retornaDados()):
			  $enquadramentoTabela=$tbl[$campoLimite];
			  $letraInicial=substr($enquadramentoTabela,0,1);
	          //echo("emquadramento= $enquadramentoTabela letra=$letraInicial<br>");
	          if(substr($enquadramentoTabela,1,1)=="P")  $enquadramento="NOCP";	 //vem assim -P- 
	          if(substr($enquadramentoTabela,1,1)=="S")  $enquadramento="SILV";	 //vem assim -S-
	          //no caso de toleradas vai trazer o limite associado
	          if(substr($enquadramentoTabela,0,1)=="T")
	          {
	    		  $limitex=substr($enquadramentoTabela,1);
	     		  $enquadramento="NOCT*(L=".$limitex.")";	 //estava tentando colocar o limite do lado direito mas ai precisaria 
	     		  //$enquadramento="NOCT";	 //vem T10 
			  }
	          //no caso de Outra Especie Cultivada, vai trazer o limite associado
	          if(substr($enquadramentoTabela,0,1)=="E")
	          {
	    		  $limitex=substr($enquadramentoTabela,1);
	     		  $enquadramento="OESP*(L=".$limitex.")";	 //estava tentando colocar o limite do lado direito mas ai precisaria 
	     		  //$enquadramento="NOCT";	 //vem T10 
			  }

	          if(substr($enquadramentoTabela,0,1)=="Q")  $enquadramento="QUAR";//NAO USAR PQUA POIS PROIBIDA COMECA COM P TAMBEM	  
	          //if(substr($enquadramentoTabela,0,1)=="E")  $enquadramento="OESP";	// vem E12   
			  $vetorgenerico[]=$tbl["con_nome_cientifico"]."*". $enquadramento;//joga dentro do ARRAY os elementos da tabela
	    endwhile;



       return($vetorgenerico);   
}//fecha a function captura registros contaminantes

//função13#####################################

function padrao2012_invasoras($amostraLong)
{
$vetorFinalContami="";
/*so entra com o numero da amostra e retorna um vetor nas 4 posições oesp,silv,noct,nocp É A ROTINA IDEAL QUE PODE SER USADA PARA TODOS OS locais onde for preciso avaliar a amostra no quesito invasoras
Silvestres compara so com o padrao
Nocivas e outras especies compara com o padrao e se ainda assim nao reprovou entao compara com o padrao da especie
Se o padrao nao foi excedido entao analisa para a especie contaminante dentro do grupo 
da especie cultivada
Vai verificar qual ou quais os fatores de reprevacao da amostra
*/
$sql="select pna_outras_espe,pna_silvestres,pna_tolerada,fic_categoria,esp_grupo2011 from padraonacional,ficha,cultivar,especies  where esp_id=ctv_especie && pna_categoria=fic_categoria && pna_cod_especie=ctv_especie && fic_cultivar=ctv_id && fic_id=".$amostraLong;
//captura os padroes DE INVASOREAS 
$padraoGer="-";
$padraoPur="-";
$padraoOcv="-";
$generica=new tabelagenerica();
$generica->extras_select =$sql;
$generica->selecionaCamposEspecial($generica);
while ($resgenerica= $generica->retornaDados()):
   $padraoGlobalOESP=$resgenerica->pna_outras_espe;
   $padraoGlobalSILV=$resgenerica->pna_silvestres;
   $padraoGlobalNOCT=$resgenerica->pna_tolerada;
   $categoria=$resgenerica->pna_categoria;			 
   //$campo="lim_S2".$categoria;
   $campo="lim_S2";
   $grupo2011=$resgenerica->esp_grupo2011;
endwhile; 

//AGORA TEM O PADRAO GLOBAL PODERA COMPARAR MAS DEVE ENTAO SOMAR OS CONTAMINANTES DE CADA TIPO

//aqui OUTRAS ESPECIES CULTIVADAS             
$sql="select inv_qtd from invasoras where inv_codigo='1OES' && inv_amostra=" .$amostraLong; 
$generica->extras_select =$sql;
$generica->selecionaCamposEspecial($generica);
$soma=0;
while ($resgenerica= $generica->retornaDados()):
   $soma+= $resgenerica->inv_qtd;
endwhile; 
$somaOE=$soma;//tem que armazenar o valor para depois testar uma por uma.... 
if($somaOE>$padraoGlobalOESP)  $vetorFinalContami[0]="OES";

//aqui SILVESTRES             
$sql="select inv_qtd from invasoras where inv_codigo='2SIL' && inv_amostra=" .$amostraLong; 
$generica->extras_select =$sql;
$generica->selecionaCamposEspecial($generica);
$soma=0;
while ($resgenerica= $generica->retornaDados()):
   $soma+= $resgenerica->inv_qtd;
endwhile; 
$somaSI=$soma;//tem que armazenar o valor para depois testar uma por uma.... 
if($somaSI>$padraoGlobalSILV)  $vetorFinalContami[1]="SIL";

//aqui TOLERADAS             
$sql="select inv_qtd from invasoras where inv_codigo='3NOT' && inv_amostra=" .$amostraLong; 
$generica->extras_select =$sql;
$generica->selecionaCamposEspecial($generica);
$soma=0;
while ($resgenerica= $generica->retornaDados()):
   $soma+= $resgenerica->inv_qtd;
endwhile; 
$somaTO=$soma;//tem que armazenar o valor para depois testar uma por uma.... 
if($somaTO>$padraoGlobalNOCT)  $vetorFinalContami[2]="NTO";

//aqui PROIBIDAS             
$sql="select inv_qtd from invasoras where inv_codigo='4NOP' && inv_amostra=" .$amostraLong; 
$generica->extras_select =$sql;
$generica->selecionaCamposEspecial($generica);
$soma=0;
while ($resgenerica= $generica->retornaDados()):
   $soma+= $resgenerica->inv_qtd;
endwhile; 
$somaPR=$soma;//tem que armazenar o valor para depois testar uma por uma.... 
$padraoGlobalNOCP=0;
if($somaPR>$padraoGlobalNOCP)  $vetorFinalContami[3]="NPR";
			 
//###################se tem contaminante mas nao reprovou entao deve testar cada contaminante nas 2 possibilidades  OESP,NOCT##############################################
$idGrupo=$this->capturaIDGrupo($grupo2011);//captura o codigo do grupo da especie pode ser 1000001,1000002 etc

//verifica as outras especies(VERIFICA SE É DIFERENTE DE OES POIS SE FOR NEM ENTRA POIS JA ESTA CONDENADA)
if($somaOE>0 && $vetorFinalContami[0]!="OES"):
   $sql="select inv_qtd,".$campo. " from invasoras,limites where lim_cod_contaminante=inv_cod_praga && inv_codigo='1OES' && lim_cod_cultura=".$idGrupo." && inv_amostra=" .$amostraLong;
   $generica->extras_select =$sql;
   $generica->selecionaCamposEspecial($generica);
	while ($resgenerica= $generica->retornaDados()):
		 $quantidade= $tbl["inv_qtd"];
		 $limite= $tbl[$campo];
		 $valorLimite=substr($limite,1);
	     if($quantidade>$valorLimite)  $vetorFinalContami[0]="OES";
	endwhile; 
 endif;
	 
			 
//verifica as TOLERADAS
if($somaTO>0 && $vetorFinalContami[2]!="NTO"):
 $sql="select inv_qtd,".$campo. " from invasoras,limites where lim_cod_contaminante=inv_cod_praga && inv_codigo='3NOT' && lim_cod_cultura=".$idGrupo." && inv_amostra=" .$amostraLong;
   $generica->extras_select =$sql;
   $generica->selecionaCamposEspecial($generica);
	while ($resgenerica= $generica->retornaDados()):
		 $quantidade= $tbl["inv_qtd"];
		 $limite= $tbl[$campo];
		 $valorLimite=substr($limite,1);
	     if($quantidade>$valorLimite)  $vetorFinalContami[0]="NTO";
	endwhile; 
 endif;





return $vetorFinalContami;   
}//fecha a function padrao 2012 invasoras




//função14###################################
//retorna os contaminantes da amostra enviando a ida da amostra e o codigo que pode ser 1OES,2SIL,3NOT,4NOP
function captura_registros_invasoras($codigo,$amostraLong)
{
 	 	$vetorgenerico['dados']="";//limpa o array
	    $soma=0;
		$generica=new tabelagenerica();
		$generica->tabela="invasoras,contaminantes";
		$generica->campos_valores = array(
				"inv_qtd" => NULL,
				"con_nome_cientifico" => NULL,
				
			);
		$generica->extras_select =" where   inv_codigo='".$codigo."' && inv_cod_praga=con_id && inv_amostra=" .$amostraLong; 
	    $generica->selecionaCampos($generica);
		$indiceVetor=0;
		while ($resgenerica = $generica->retornaDados()):
		    $indiceVetor++;
			$fracao="";
			$soma+= $resgenerica->inv_qtd;//joga dentro do ARRAY os elementos da tabela
			$vetorgenerico[$indiceVetor]="[" . $resgenerica->inv_qtd."]" .$resgenerica->con_nome_cientifico. $fracao;//joga dentro do ARRAY os elementos da tabela
	    endwhile;
	    return($vetorgenerico);   
}//fecha a function captura registros invasoras


//função15##################################
function capturaGerminacao($amostraLong)
{
 	$sessao = new sessao();
	$cliente=$sessao->getVar('cliente');

	//captura todos campos de germinacao da tabela rean1
	//como pode ter dois valores de germinacao a primeira coisa é verificar qual é a maior
	$generica=new tabelagenerica();
    $generica->tabela="rean1";
    $generica->campos_valores = array(
		"rea_v1" => NULL,
        "rea_id"     => NULL,
    );
    //captura a germinacao principal 
	
	
	
	$generica->extras_select =" where  rea_boletim='S' and rea_teste='GERM' &&  rea_ficha=".$amostraLong;

	$generica->selecionaCampos($generica);
	$resgenerica = $generica->retornaDados();
    $g1=$resgenerica->rea_v1;//normais
	$valorDigitadoG1=$resgenerica->rea_v1;//normais
    $id1=$resgenerica->rea_id;//captura a id
    $reanLong=$id1;     

    //captura a germinacao do segundo teste  
	$generica=new tabelagenerica();
    $generica->tabela="rean1";
    $generica->campos_valores = array(
		"rea_v1" => NULL,
        "rea_id"     => NULL,
    );
    $g2=0;

	$generica->extras_select =" where   rea_boletim='S' and  rea_teste='GE2' &&  rea_ficha=".$amostraLong;
	if($cliente=='LIMAGRAIN'):
	    $generica->extras_select =" where  (rea_teste='PAD_ARE' OR REA_TESTE='GERM'  OR REA_TESTE='GE2' OR REA_TESTE='PAD_ARE2' ) AND REA_terceira_leitura_analista='*' &&  rea_ficha=".$amostraLong;
	endif;
	
	$generica->selecionaCampos($generica);
	$id2=0;
	while ($resgenerica = $generica->retornaDados()):
	//$resgenerica = $generica->retornaDados();
      $g2=$resgenerica->rea_v1;//normais
      $id2=$resgenerica->rea_id;//captura a id
	endwhile;  
    //aqui compara e pega a id2, caso a germ2 for maior
    //if($g2>$g1):
     if($id2>0)$reanLong=$id2;  	   
	//endif;   

    //aqui vai capturar todos campos da rean, sabendo a id 

	
	$generica=new tabelagenerica();

    $generica->tabela="rean1";
    $generica->campos_valores = array(
		"rea_v1" => NULL,
        "rea_v2"     => NULL,
        "rea_v3"     => NULL,
        "rea_v4"     => NULL,
        "rea_v5"     => NULL,
        "rea_v6"     => NULL,
        "rea_datageralteste"     => NULL,
        "rea_datainicio"     => NULL,
        "rea_duracao"     => NULL,
        "rea_campo60b"     => NULL,
        "rea_campo60a"     => NULL,
        "rea_campo20a"     => NULL,
        "rea_validade"     => NULL,
        "rea_campo20b"     => NULL,
        "rea_operador"     => NULL,
    );
	$generica->extras_select =" where  rea_id=".$reanLong;
	$generica->selecionaCampos($generica);
	while ($resgenerica = $generica->retornaDados()):
		$vetorGerminacao[1]=$resgenerica->rea_v1;//normais
		//$vetorGerminacao[1]=$valorDigitadoG1.'asd';
		
		$anormaisFinalAqui=$resgenerica->rea_v2;
		$infecionadasFinalAqui=$resgenerica->rea_v6;//infecionadas
		if($anormaisFinalAqui>0  && $infecionadasFinalAqui>0):
		   // $anormaisFinalAqui=$anormaisFinalAqui-$infecionadasFinalAqui;
	    endif;		
		
		
		$vetorGerminacao[2]=$anormaisFinalAqui;//anormais
		$vetorGerminacao[3]=$resgenerica->rea_v3;//duras
		$vetorGerminacao[4]=$resgenerica->rea_v4;//dormentes
		$vetorGerminacao[5]=$resgenerica->rea_v5;//mortas
		$vetorGerminacao[6]=date("d/m/Y",strtotime($resgenerica->rea_datageralteste));//data teste
	    //$vetorGerminacao[6]=$resgenerica->rea_datageralteste;
		$vetorGerminacao[7]=$resgenerica->rea_duracao;//duracao
		$vetorGerminacao[8]=$resgenerica->rea_campo60b;//substrato
		$vetorGerminacao[9]=$resgenerica->rea_campo20a;//temperatura
		$vetorGerminacao[10]=$resgenerica->rea_campo60a;//tratamento
		$vetorGerminacao[11]=$resgenerica->rea_v6;//infecionadas
		$vetorGerminacao[12]=$resgenerica->rea_datainicio;//inicio teste
		$vetorGerminacao[13]=$resgenerica->rea_validade;//validade
		//$vetorGerminacao[13]="ROSARIO";
		$vetorGerminacao[14]=$resgenerica->rea_campo20b;//germinador
		$vetorGerminacao[15]=$resgenerica->rea_operador;//germinador
        //situacao barenbrug que digitou dados mas tinha lancado leituras no g1 e no g2
		if($valorDigitadoG1=='-N-'):
			$vetorGerminacao[1]='-N-';//normais
			$vetorGerminacao[2]='-N-';//anormais
			$vetorGerminacao[3]='-N-';//duras
			$vetorGerminacao[4]='-N-';//dormentes
			$vetorGerminacao[5]='-N-';//mortas
			$vetorGerminacao[6]='-O-';//data teste
			$vetorGerminacao[7]='-O-';//duracao
			$vetorGerminacao[8]='-O-';//substrato
			$vetorGerminacao[9]='-O-';//temperatura
			$vetorGerminacao[10]='-O-';//tratamento
			$vetorGerminacao[11]='-O-';//infecionadas
			$vetorGerminacao[12]='-O-';//inicio teste
			$vetorGerminacao[13]='-O-';//validade
			$vetorGerminacao[14]='-O-';//germinador
			$vetorGerminacao[15]='-O-';//germinador
		endif;
	endwhile;
	return $vetorGerminacao;
}//final cptura germinacao

//função16###############
function capturaPureza($amostraLong)
{
	//captura todos campos de pureza da tabela rean1
	$generica=new tabelagenerica();
    $generica->tabela="rean1";
    $generica->campos_valores = array(
		"rea_v1" => NULL,
        "rea_v2"     => NULL,
        "rea_v3"     => NULL,
        "rea_campo60a"     => NULL,
        "rea_campo20a"     => NULL,
        "rea_lei1"     => NULL,
        "rea_lei2"     => NULL,
        "rea_lei3"     => NULL,
        "rea_lei4"     => NULL,
        "rea_operador"     => NULL,
        "rea_datageralteste"     => NULL,
    );
	$generica->extras_select =" where   rea_teste='PURE' &&  rea_ficha=".$amostraLong;
	$generica->selecionaCampos($generica);
	while ($resgenerica = $generica->retornaDados()):
		$vetorPureza[1]=$resgenerica->rea_v1;//purea 
		//$vetorPureza[1]='-k-';//purea 
		$vetorPureza[2]=$resgenerica->rea_v2;//inerte
		$vetorPureza[3]=$resgenerica->rea_v3;//outras sementes
		$vetorPureza[4]=$resgenerica->rea_campo60a;//natureza do material inerte
		$vetorPureza[5]=$resgenerica->rea_lei1;//amostra de trabalho
		$vetorPureza[6]=$resgenerica->rea_lei2;//sementes puras
		$vetorPureza[7]=$resgenerica->rea_lei3;//outras sementes
		$vetorPureza[8]=$resgenerica->rea_lei4;//mat inerte
		$vetorPureza[9]=$resgenerica->rea_campo20a;//balanca de pureza
		$vetorPureza[10]=$resgenerica->rea_operador;//operador/analista de pureza
		$vetorPureza[11]=date("d/m/Y",strtotime($resgenerica->rea_datageralteste));//dta teste
	endwhile;

	
	
	return $vetorPureza;
}//final captura pureza


//função17  ############################
function capturaItemVendido($amostraLong)
{
	//captura todos campos de germinacao da tabela rean1
	$generica=new tabelagenerica();
    $generica->tabela="itemnota";
    $generica->campos_valores = array(
		"ite_quantidade" => NULL,
    );
	$generica->extras_select =" where   ite_ficha=".$amostraLong;
	$generica->selecionaCampos($generica);
    $quantidade=0;
	while ($resgenerica = $generica->retornaDados()):
		$quantidade+=$resgenerica->ite_quantidade;//normais
	endwhile;
	$vetorVendido[1]=$quantidade;
	return $vetorVendido;
}//final captura item vendido

##função18########################
function meses()
{
    $mes[1]='Janeiro';    	
    $mes[2]='Fevereiro';    	
    $mes[3]='Março';    	
    $mes[4]='Abril';    	
    $mes[5]='Maio';    	
    $mes[6]='Junho';    	
    $mes[7]='Julho';    	
    $mes[8]='Agosto';    	
    $mes[9]='Setembro';    	
    $mes[10]='Outubro';    	
    $mes[11]='Novembro';    	
    $mes[12]='Dezembro';    	
	return $mes;
}//final funcao meses


//a funcao 18 é burra, pois se eu colocasse o parametro ele ja me retornaria o mes
##função18a########################
function mesExtenso($mesNumero)
{
   if($mesNumero==1)$mesRetornado='janeiro';    	
    if($mesNumero==2)$mesRetornado='fevereiro';      	
    if($mesNumero==3)$mesRetornado='março'; 
    if($mesNumero==4)$mesRetornado='abril';   	
    if($mesNumero==5)$mesRetornado='maio';    	
    if($mesNumero==6)$mesRetornado='junho';   	
    if($mesNumero==7)$mesRetornado='julho';   	
    if($mesNumero==8)$mesRetornado='agosto'; 	
    if($mesNumero==9)$mesRetornado='setembro';  	
    if($mesNumero==10)$mesRetornado='outubro';     	
    if($mesNumero==11)$mesRetornado='novembro';     	
    if($mesNumero==12)$mesRetornado='dezembro';  	
	return $mesRetornado;
}//final funcao meses

##função18B pega data bruta e retorna data extensaa########################
function dataExtensa($dataBrasileira)
{
	$diaDoc=date("d",strtotime($dataBrasileira));
	$mesDoc=date("m",strtotime($dataBrasileira));
	$anoDoc=date("Y",strtotime($dataBrasileira));
	$mesExtenso=$this->mesExtenso($mesDoc);
	$dataExtensaRetornada= $diaDoc." de ". $mesExtenso." de " . $anoDoc.".";
	if($dataBrasileira=="-N-")$dataExtensaRetornada="-N-";
	return $dataExtensaRetornada;
}//final funcao meses


//função19##################################
function recuperaMes($mes)
{
   if($mes=="Janeiro")     $mesNumero="01";
   if($mes=="Fevereiro")   $mesNumero="02";
   if($mes=="Março")       $mesNumero="03";
   if($mes=="Abril")       $mesNumero="04";
   if($mes=="Maio")        $mesNumero="05";
   if($mes=="Junho")       $mesNumero="06";
   if($mes=="Julho")       $mesNumero="07";
   if($mes=="Agosto")      $mesNumero="08";
   if($mes=="Setembro")    $mesNumero="09";
   if($mes=="Outubro")     $mesNumero="10";
   if($mes=="Novembro")    $mesNumero="11";
   if($mes=="Dezembro")    $mesNumero="12";
   return $mesNumero;
}//final recupera meses

//função20 ###############################
function achaidamostra()
{
    //se ainda nemhuma vez foi localizada a amostra ele vai paraa ultima, caso contrario ele pega a id normalemente da sessao
	//este artificio é necessario porque pode algum entrar diretamente na tela de resultado e e ai iria dar um erro
    //aqui tambem vou fazer a criação de nova amostra pois se nao achou amostra vai criar uma , simples assim 
	$sessao = new sessao();
	if($sessao->getVar('amostraLong')==NULL):
		$anoAmostra= $sessao->getVar('anocorrente');
	    $idLabo=$sessao->getVar('idLabo');
		$userAmostra = new amostras();
	    $userAmostra->extras_select =  " where fic_ano='".$anoAmostra."' && fic_labo='".$idLabo."' order by fic_amostra desc LIMIT 1";  //fucnciona perfeito
		//echo("deu sessao nula vai capturar a id da amostra caso nao tenha nada na sessao(logo depois de logar $userAmostra->extras_select<br>");
	    $userAmostra->selecionaCampos($userAmostra);
	    while ($resAmostra = $userAmostra->retornaDados()):
	        $amostraLong=$resAmostra->fic_id;
	    endwhile;		
		$sessao->setVar('amostraLong', $amostraLong);
	else:	
		$amostraLong=$sessao->getVar('amostraLong');
	endif;	
    return $amostraLong;	
}//final da function  acha id amostra

//função21#############################
function emTones($representatividade)
{ 
   $sessao=new sessao();
   $cliente=$sessao->getVar('cliente');
   list($rep1Lido, $rep2, $rep3Lido, $rep4) = explode(" ", $representatividade);
   //converte virgula em decimais do rep1 e rep3
   //$rep1Lido="1,367"; //signifa que é 0,000001 ton
   //$rep1Lido="1.367"; //signifa que é 0,000001 ton

  //aqui ajusta o rep1
   $rep1Lido=str_replace(".","",$rep1Lido);//significa se o cara bootou ponto ele despreza e limpa ex 1.367 vira 1367
   $rep1Lido=str_replace(",","",$rep1Lido);//significa se o cara bootou virgula ele despreza e limpa ex 1,367 vira 1367
   //$rep1=str_replace(",","",$rep1Lido);//significa virgula passa para ponto
   $rep1=$rep1Lido;

   //aqui ajusta o unidades 43.5 etc
   //$rep3Lido=str_replace(".","",$rep3Lido);//significa se o cara bootou ponto ele despreza e limpa ex 1.100 vira 1100
   $rep3=str_replace(",",".",$rep3Lido);// virgula passa para ponto
   
   //unidades individuais
   $divisor=1;
   if($rep2=='t' || $rep4=='t')$divisor=1;
   if($rep2=='kg'|| $rep4=='kg' || $rep4=='Kg')$divisor=1000;
   if($rep2=='g' || $rep4=='g')$divisor=1000000;

   //calcula para o caso rep3 ser considerado   caso tipico 200  sc 40 kg 
   if($rep4=='-O-'  || $rep4=='sementes' || $rep4=='Pelets'  ||  $rep4=='Pelotas'):
    $emTones=0; 
   else:
    $emTones=$rep1*$rep3/$divisor;
   endif;   

   //calcula para o caso rep3 nao ser considerado  no caso tipico 20 tolenada  ou 15000 kg
   if($rep2=='t'  || $rep2=='kg' || $rep2=='g'  || $rep2=='Kg' ):
     $emTones=$rep1/$divisor;
   endif; 
   if($cliente=='BAREN') $emTones=$emTones/1000; 
   return $emTones;
}//final da funcao emTones


//função21#############################
function emTonessucata13012022($representatividade)
{ 
   $sessao=new sessao();
   $cliente=$sessao->getVar('cliente');
  
   list($rep1Lido, $rep2, $rep3Lido, $rep4) = explode(" ", $representatividade);
   //converte virgula em decimais do rep1 e rep3
   //$rep1Lido="1,367"; //signifa que é 0,000001 ton
   //$rep1Lido="1.367"; //signifa que é 0,000001 ton

  //aqui ajusta o rep1
   $rep1Lido=str_replace(".","",$rep1Lido);//significa se o cara bootou ponto ele despreza e limpa ex 1.367 vira 1367
   $rep1=str_replace(",",".",$rep1Lido);//significa virgula passa para ponto


   //aqui ajusta o rep3
   $rep3Original=$rep3Lido;
   //$rep3Lido=str_replace(".","",$rep3Lido);//significa se o cara bootou ponto ele despreza e limpa ex 1.100 vira 1100
   $rep3=str_replace(",",".",$rep3Lido);//significa virgula passa para ponto
   
   //echo("@@@@@@@@@@@@rep2= $rep2<br>");
   //unidades individuais
   $emTones=0;
   if($rep2=="sc")://aqui implicit que é kg
      $emTones=$rep1*$rep3/1000;
	  //$emTones=333;
   endif;
   	  
   if($rep2=="sc" && $rep4=="g"):
      $emTones=$rep1*$rep3/1000000;//situacao hipotetica qualiteste040919
	  //$emTones=444;
   endif;
   
   if($rep2=="t"):
      $emTones=$rep1;
   endif; 	  
   if($rep2=="kg"):
      $emTones=$rep1/1000;
   endif;	  
   if($rep2=="g"):
      $emTones=$rep1/1000000;
   endif;	  
 		
   //caso da qualiteste que colocou kg na quarta casa
   if($rep4=="kg"):
     //if($rep2!="sc" ):
     $emTones=$rep3/1000;
     if($rep2=="sc" ):
	    $emTones=$rep1*$rep3/1000;
	 endif;	
   endif;	 
   
   
   
   
   
   
   //$emTones=$rep4;   
   //$emTones=200;   
   
   
   
   if($rep2=="bag") 
     {
     	 if($rep4=="kg")  $emTones=$rep1*$rep3/1000;
     	 if($rep4=="t")  $emTones=$rep1*$rep3/1;
	 }	  
   if($rep2=="latas") 
     {
     	 if($rep4=="kg")  $emTones=$rep1*$rep3/1000;
     	 if($rep4=="g")   $emTones=$rep1*$rep3/1000000;
	 }	  
   if($rep2=="lata") 
     {
     	 if($rep4=="kg")  $emTones=$rep1*$rep3/1000;
     	 if($rep4=="g")   $emTones=$rep1*$rep3/1000000;
	 }	  


   if($rep2=="Envelopes" || $rep2=="env" ) 
     {
     	 if($rep4=="kg")  $emTones=$rep1*$rep3/1000;
     	 if($rep4=="g")   $emTones=$rep1*$rep3/1000000;
		 //$emTones=$rep3Original;
		 
	 }
	 
	 
   if($rep2=="Pacotes"|| $rep2=="pc") 
     {
     	 if($rep4=="kg")  $emTones=$rep1*$rep3/1000;
     	 if($rep4=="g")   $emTones=$rep1*$rep3/1000000;
	 }

   if($rep2=="balde") 
     {
     	 if($rep4=="kg")  $emTones=$rep1*$rep3/1000;
     	 if($rep4=="g")   $emTones=$rep1*$rep3/1000000;
	 }


   //BARENBRUG SO USA OS CAMPOS 1 E 3	 
   if($cliente=='BAREN'):
     $emTones=$rep1*$rep3/1000;
   endif;	 
   //$emTones=500;//provisorio

   return $emTones;
}//final da funcao emTones


function verificaTestesFeitos($amostraLong,$protocolo)
{
    $generica1=new tabelagenerica();
	$generica1->extras_select =" select tes_teste from  testessolicitados where tes_ficha=".$amostraLong;
	$generica1->selecionaCamposEspecial($generica1);
    $texto="";
	while ($resgenerica1= $generica1->retornaDados()):
	    $teste=$resgenerica1->tes_teste; //
		if($teste!='DOS'):
	        //AQUI UMA TABELINHA DE AJUSTE POIS NEM TODOS TESTES SOLICITADOS COINCIDEM COM OS TESTES DA REAN1 		
	        if($teste=='E24' || $teste=='E36' || $teste=='E48' || $teste=='E72' || $teste=='E96')$teste='EAC';		
	        if($teste=='GER')$teste='GERM';		
	        if($teste=='PUR')$teste='PURE';		
			
	////////pesquis se tem o teste/////////////////////////////
			$generica2=new tabelagenerica();
		    $generica2->tabela="rean1";
		    $generica2->campos_valores = array(
				"rea_v1" => NULL,
		    );
		    //captura a germinacao principal 
			$generica2->extras_select =" where rea_teste='".$teste."' &&  rea_ficha=".$amostraLong;
			$generica2->selecionaCampos($generica2);
			$contador=0;
			while($resgenerica2 = $generica2->retornaDados()):
	          $contador++;
		      $g1=$resgenerica2->rea_v1;//normais
	        endwhile;
	        if($contador==0):
				printMSG("Não foi feito o teste ".$teste." que havia sido solicitado na amostra.".$protocolo,'erro');	
			endif;  
         else://QUANDO O TESTE É DOS
		    //VERIFICA SE PARA AQUELA AMOSTRA FOI FEITO TESTE DOS
			$userAmo1 = new amostras();
		    $userAmo1->extras_select =  " where  fic_id=".$amostraLong;
		    $userAmo1->selecionaCampos($userAmo1);
			$resAmo1 = $userAmo1->retornaDados();
			$fechada=$resAmo1->fic_finalizada_nocivas;
			//////////funciona
			//$userAmostra = new amostras();
		    //$userAmostra->extras_select =  " where fic_id=".$amostraLong;
		    //$userAmostra->selecionaCampos($userAmostra);
		    //while ($resAmostra = $userAmostra->retornaDados()):
			//   $fechada=$resAmostra->fic_finalizada_nocivas;
		    //endwhile;
			
			///tambem funciona
			//$sqlultimo="select fic_finalizada_nocivas from ficha where fic_id=".$amostraLong;
		    //$userOto=new amostras();
			//$userOto->executaSQL($sqlultimo);
			//$resOto=$userOto->retornaDados();
			//$fechada=$resOto->fic_finalizada_nocivas;		
		    if($fechada !='s')printMSG("f=".$fechada."Não foi finalizado o teste DOSN que havia sido solicitado na amostra.".$protocolo,'erro');	
		 endif;
//////////////////        
	endwhile;  
}

//função22#################################################
function padrao2012($amostraLong)
{
/*aqui existem varias possibilidades(citar todos casos ISSO É DOCUMENTACAO DE SOFTWARE)
1-nao ter padrao para a especie. Pode acontecer para alguma especie zinia, etc
neste caso o padrao sera - e nao pode comparar
2-

*/

//captura os padroes DE GERMINACAO PUREZA OUTRAS CULTIVARES 
$padraoGer="-";
$padraoPur="-";
$padraoOcv="-";
$sql="select pna_germinacao,pna_pureza,pna_cultivares from padraonacional,ficha,cultivar  where pna_categoria=fic_categoria && pna_cod_especie=ctv_especie && fic_cultivar=ctv_id && fic_id=".$amostraLong;
$generica=new tabelagenerica();
$generica->extras_select =$sql;
$generica->selecionaCamposEspecial($generica);
while ($resgenerica= $generica->retornaDados()):
   $padraoGer=$resgenerica->pna_germinacao;
   $padraoPur=$resgenerica->pna_pureza;
   $padraoOcv=$resgenerica->pna_cultivares;
endwhile; 
//atribui valor alto para os padroes caso nao tenha sido informado o padrao  ou seja esta un traco - 
//if($resgenerica->pna_germinacao=='-')$padraoGer=1000;
//if($resgenerica->pna_pureza=='-')$padraoPur=1000;
//if($resgenerica->pna_cultivares=='-')$padraoOcv=1000;

//captura os resultado de  outras cultivares,germinacao e pureza na amostra long 
//capruta o valor de germinacao
  $sql="select rea_v1 from rean1 where  rea_teste='GERM' and rea_ficha=" . $amostraLong;
  $vetorficha[0]=$this->capturaUmCampoDeUmRegistro($sql,"rea_v1");
//captura o vaor de pureza  
  $sql="select rea_v1 from rean1 where  rea_teste='PURE' and rea_ficha=" . $amostraLong;
  $vetorficha[1]=$this->capturaUmCampoDeUmRegistro($sql,"rea_v1");
//outras cultivares
  $sql="SELECT fic_outrascultivares FROM ficha where fic_id=" . $amostraLong;
  $vetorficha[2]=$this->capturaUmCampoDeUmRegistro($sql,"fic_outrascultivares");
  //echo("outrascultivares= $vetorficha[2] padraoOcv= $padraoOcv<br>");

//vai comparar com os padroes**************************************************
//examina germinacao nas 3 faixas abaixo do padrao abaixo de 90 e acima de 90
if($vetorficha[0]<$padraoGer)
 {
     $vetorFinal[0]="GE1";
 }
 else
 {
     if($vetorficha[0]<=90)     $vetorFinal[0]="GE2";
     if($vetorficha[0]>90)      $vetorFinal[0]="GE3";
 }


//compara purezas
$vetorFinal[1]="-";				 
if($vetorficha[1]<$padraoPur  && $vetorficha[1]>0) $vetorFinal[1]="PUR";
//echo("valor analise pureza=$vetorficha[1]  padraovalor padrao pureza= $padraoPur   VEREDITOPUREA= $vetorFinal[1] <br>");

//compara outras cultivares
$vetorFinal[2]="-";
if($padraoOcv<$vetorficha[2])$vetorFinal[2]="OCV";
//echo("dentro da  classe calculos sendo padrao= $padraoOcv  ocvna ficha=$vetorficha[2] VEREDITOoutrascultivares= $vetorFinal[2]<br>");
return $vetorFinal;

}


//função23#######################################
function capturaUmCampoDeUmRegistro($sql,$campo)
{
    //vai me retornar o valor de um campo de uma sql
	//eu trago para ca a sql e o nome do campo ele me retorna o valor
	//o problema o que eu vou ter que fazer alguns if mas isso nao será problema
	$generica=new tabelagenerica();
    $generica->extras_select =$sql;
	$generica->selecionaCamposEspecial($generica);
    while ($resgenerica= $generica->retornaDados()):
       if($campo=='esp_nome')  $valorCampo=$resgenerica->esp_nome;
       if($campo=='rea_v1')    $valorCampo=$resgenerica->rea_v1;
       if($campo=='fic_outrascultivares')    $valorCampo=$resgenerica->fic_outrascultivares;
    endwhile; 
    return $valorCampo;	
}


//função24  ####################################
function captura_outras_determinacoes($amostraLong,$idEspecie,$idLabo,$tabela)
{
//captura as siglas e os respectivos valores das 4 dets possiveis(ja pensnado no boletim vertical que tm 4 det)
//toda vez que ei venho aqui eu tenho a id da especie entao ja posso trazer junto, assim nao preciso recaptura-la
//ENTRA DE QUAKQUER MANEIRA PARA ACHAR AS DETS DESTA ESPECIE
    $generica=new tabelagenerica();
	$generica->tabela=$tabela; //PODE SER TABELA DETEATESTADO, OU DETEBOLETIM
	$generica->campos_valores = array(
			"dbo_sigla_dete1" => NULL,
			"dbo_sigla_dete2" => NULL,
			"dbo_sigla_dete3" => NULL,
			"dbo_sigla_dete4" => NULL,
		);
	//$generica->extras_select =" where  dbo_lab=".$idLabo." && dbo_especie=".$idEspecie;
	$generica->extras_select =" where   dbo_especie=".$idEspecie;
	//echo 'LINHA 3054' . $generica->extras_select ;
    $generica->selecionaCampos($generica);
	while ($resgenerica = $generica->retornaDados()):
		$sigla[1]=$resgenerica->dbo_sigla_dete1;
		$sigla[2]=$resgenerica->dbo_sigla_dete2;
		$sigla[3]=$resgenerica->dbo_sigla_dete3;
		$sigla[4]=$resgenerica->dbo_sigla_dete4;
		//$sigla[1]="hhh";
		
		
		
    endwhile;
	//ja coloca no vetor
    $outrasDeterminacoes[5]=$sigla[1];  
    $outrasDeterminacoes[6]=$sigla[2];
    $outrasDeterminacoes[7]=$sigla[3];
    $outrasDeterminacoes[8]=$sigla[4];//esta quarta é para boletim vertical
	    //ENTRA DE QUAKQUER MANEIRA PARA ACHAR OS VALORES GRAVADOS PARA AS DETS SE NAO ACHA A DET JA CRIA O REGISTRO E COLOCA -N-
 	 	for($indi=1;$indi<=4;$indi++):
		   $outrasDeterminacoes[$indi]="-N-";
		   //AQUI VAI PEGAR DA REAN vinculada a primeira segunda ou terceira dete que naos se sabe antecipadamente qual é que o lab definiu
           $od =$sigla[$indi];
		   $od1 =$sigla[1];
		   //$od="DTU";
		   $outrasDeterminacoes[$indi]=$this->captura_OD_Especifica($amostraLong,$od);//pega o valor de eac num indice fixo variavel dependendo de qual det 1,2,3,4
        endfor;
		//$outrasDeterminacoes[1]=$od1.$idEspecie;
		
		//$outrasDeterminacoes[1]="Vigor";
  return $outrasDeterminacoes;
}//final da function 24 captura_outras_determinacoes





//função25  informo a id da amostra e a sigla da outra determinacao e ela me retorna o valor
function captura_OD_Especifica($amostraLong,$od)
{
    $valor="-N-";
	///se o cliente é tabajara ou se é rio grande do sul entao preeenche com -O-///////
    $sessao=new sessao();
    $cliente=$sessao->getVar('cliente');
    //echo("clientexxxxxxxxxxxxxxxxx $cliente  od=$od<br>");
	$clientePedaco=substr($cliente,0,2);
    //if($clientePedaco=="TS")$valor="-N-";   //para o tabajara vale tudo
    //if($clientePedaco=="AD")$valor="-N-";   //para adv preenche com -o- caso nao temnha o valor
    //if($clientePedaco=="DI")$valor="-N-";   //para DIMICRON preenche com -O- caso nao temnha o valor(SEJA --O NO TITULO =NIL)
	//CASO ESPECIAL BAREN
	//se a det for PQA(NOME DA COLUNA NO BOLETIM)entao ele vai pegar o valor da tabela rean  , CAMPO rea_teste=CONJ  E O VALOR VEM DE REA_LEI2
    if($od=='PQA' && $cliente=='BAREN'):
		$generica=new tabelagenerica();
		$generica->tabela="rean1";
		$generica->campos_valores = array(
				"rea_lei2" => NULL,
			);
		$generica->extras_select =" where rea_teste='CONJ' &&  rea_ficha=".$amostraLong;
		//echo("LINHA 2538 CALCULOS $generica->extras_select ");
	    $generica->selecionaCampos($generica);
		while ($resgenerica = $generica->retornaDados()):
			$valor=$resgenerica->rea_lei2;
	    endwhile;
    else:
		$generica=new tabelagenerica();
		$generica->tabela="rean1";
		$generica->campos_valores = array(
				"rea_v1" => NULL,
			);
		$generica->extras_select =" where rea_teste='".$od."' &&  rea_ficha=".$amostraLong;
		//echo("LINHA 3090 CALCULOS $generica->extras_select ");
	    $generica->selecionaCampos($generica);
		while ($resgenerica = $generica->retornaDados()):
			$valor=$resgenerica->rea_v1;
	    endwhile;
    endif;	
	//$valor= $cliente.$od.$valor;
	//$valor=$amostraLong;
	//$valor=$od;
	//if($od=='PMS')$valor='123';
    return $valor;
}


//função26  INFORMO O NOME DO DEFUL QUE EU QUERO E ELE ME RETORNA O VALOR GRAVADO
function capturaDeful($idLabo,$qualDeful)
{
		//VAI LER TODA VEZ O CONTEUDO DA TABELA
	    $user = new tabeladeful();
		$user->extras_select =" where   cod_lab=".$idLabo ;
	    $user->selecionaTudo($user);
		while ($res = $user->retornaDados()):
	        $finalidade=$res->finalidade;
	        $formato_germinacao=$res->formato_germinacao;//4x100  8x50 
	        $outras_cultivares=$res->outras_cultivares;//boletim x previa etc
	        $tipo_documento_habitual=$res->tipo_documento_habitual;//opcao que sempre vai aaprecer selecionada se nao for selecionada outra
	        $formato_documento_habitual=$res->formato_documento_habitual;//opcao que sempre vai aaprecer selecionada se nao for selecionada outra
	        $vias_documento_habitual=$res->vias_documento_habitual;//opcao que sempre vai aaprecer selecionada se nao for selecionada outra
	        $laudo_envelhecimento=$res->laudo_envelhecimento;//opcao que sempre 
	        $laudo_tetrazolio=$res->laudo_tetrazolio;//opcao que sempre 
	        $laudo_germinacao=$res->laudo_germinacao;//opcao que sempre 
	        $livro_protocolo=$res->livro_protocolo;//opcao que sempre 
	        $modelo_ficha=$res->modelo_ficha;//opcao que sempre 
			$id=$res->id;
	    endwhile;
        $valorDeful="-x-";        
	    if($qualDeful=='livro_protocolo')      $valorDeful=$livro_protocolo;
	    if($qualDeful=='laudo_tetrazolio')     $valorDeful=$laudo_tetrazolio;
	    if($qualDeful=='laudo_germinacao')     $valorDeful=$laudo_germinacao;
	    if($qualDeful=='laudo_envelhecimento') $valorDeful=$laudo_envelhecimento;
	    return $valorDeful;
}
//função27  INFORMO O NOME DO DEFUL QUE EU QUERO E ELE ME RETORNA O VALOR GRAVADO
function calculaTetrazolioForrageira($amostraLong,$modalidadeArquivada)
{
				//CAPTURA A MODALIDADE ARQUIVADA
				$generica=new tabelagenerica();
				$generica->tabela="rean1";
				$generica->campos_valores = array(
				    "rea_v1" => NULL,
				);
				$generica->extras_select =" where rea_teste='TZO'  and rea_ficha=".$amostraLong;
				$generica->selecionaCampos($generica);
				$registrosTZForrageira=0;
				//echo("xxxxxxxxxxxxxxxxxxxxxxesta aqui $generica->extras_select <br>");
				while ($resgenerica = $generica->retornaDados()):
                    $resultadoPronto=$resgenerica->rea_v1;//arquvado neste campo o valor final e pronto
			    endwhile;
                return $resultadoPronto;
} //fim da funcao

//funcao 28   serve para pegar uma amostra tendo o numero do protocolo,ano e lab
function AchaProtocolo($registro)
{
		$sessao = new sessao();
		$amostraLong=0;//captura para poder develover a mesma caso nao encontrar
		$finalidade=$sessao->getVar('finalidade');
		$idLabo=$sessao->getVar('idLabo');
		$anoCorrente=$sessao->getVar('anocorrente');
		$anoAmostra=$anoCorrente;
	   $userAmostra = new amostras();
       if($finalidade=='DEFINITIVA'):
	        $userAmostra->extras_select =  " where  fic_ano='".$anoAmostra."' && fic_labo='".$idLabo."' &&  fic_amostra=".$registro;
       else:
	        $userAmostra->extras_select =  " where  fic_ano='".$anoAmostra."' && fic_labo='".$idLabo."' &&  fic_amostra_previa=".$registro;
	   endif;
	   //echo("dentro da classe calculo userAmostra->extras_select =$userAmostra->extras_select <br>");
	    $userAmostra->selecionaCampos($userAmostra);
		$teste=0;
	    while ($resAmostra = $userAmostra->retornaDados()):
	        $teste++;
		    $amostraLong=$resAmostra->fic_id;
	    endwhile;		
		return $amostraLong;
}//fim da function AchaIdAmostraTendoRegistro


//funcao28 manipula a representetatividade
function representatividade($representatividade)
{
  /*aqui forma 5 entidades
   exemplo:                      200 sc 40 kg
   parte1-quantidade             200
   parte2-unidade                sc
   parte3-segunda quantidade     40
   parte4-segunda unidade        kg
   parte5-quantidade em quilos   8000
  */
//isso aqui é especifico par o termo de conformidade
//$representatividade='20sc40kg';
  $parte1=substr($representatividade,0,3);	
  $parte2=substr($representatividade,4,2);	
  $parte3=substr($representatividade,7,2);	
  $parte4=substr($representatividade,10,2);	
  $parte5="";
  $composto=$parte1.":".$parte2.":".$parte3.":".$parte4.":".$parte5.":";  	
  return $composto;	
}
//funcao28 manipula a representetatividade
function representatividadeTermo($representatividade)
{
$sessao=new sessao();
$cliente=$sessao->getVar('cliente');

  /*
  No termo pega a quantidade para colocar na primeira coluna do termo
  e depois vem a unidade ex: 24sc40.5kg
  vai pegar 24  E O RESTO     RESTO=sc40.5kg
  */
$tama=strlen($representatividade);

//vai verificar até onde é numeros para a parte numeral caso contrario poe -0-
$var1="";
$var2="";
$guardaI=0;
for($i=0;$i<$tama;$i++):
  $var1=$var1.substr($representatividade,$i,1);
  if(is_numeric($var1)==TRUE):
      $guardaI=$i;
  endif;
endfor;
//guarda i é o tamanha da string numerica e tambem a posicao onde acaba
if($guardaI>0):
   $parte1=substr($representatividade,0,$guardaI+1);
   $parte2=substr($representatividade,$guardaI+1);
else:
   $parte1='-O-';
   $parte2='-O-';
endif;




   
  $composto=$parte1.":".$parte2.":"; 
  if($cliente=='QUALITESTE'):
     $composto=$representatividade.":".$representatividade.":";
  endif;
  
  //$cliente="YPIOCA"; 
  $composto=$cliente.":".$representatividade.":";
//A STRING SAO QUATRO CAMPOS COM UM INTERVALO ENTRE ELES
//VARRE A STRING E CONTA OS ESPCADOS EM BRANCO
$constador=0;
$varMontada="";
for($i=0;$i<$tama;$i++):
  $stringMono=substr($representatividade,$i,1);
  if($stringMono==' '):
    $contador++;
	if($contador==1)$fragmento1= $varMontada;
	if($contador==2)$fragmento2= $varMontada;
	if($contador==3)$fragmento3= $varMontada;
	$varMontada="";
  else:  
     $varMontada=$varMontada.$stringMono;
  endif;
  
 
endfor;
$fragmento4= $varMontada;
$parte1=$fragmento1.$fragmento2;
$parte2=$fragmento3.$fragmento4;

 $composto=$parte1.":".$parte2.":"; 
  return $composto;	
}



//FUNCAO 29//////////DEFINE AS OUTRAS DETERMINACOES////////////////
function achaTitulosDetes($idEspecie,$idLabo,$tabela)
{
  		//ENTRA DE QUAKQUER MANEIRA PARA ACHAR AS DETS DESTA ESPECIE
 	 	$generica=new tabelagenerica();
		$generica->tabela=$tabela;
		$generica->campos_valores = array(
				"dbo_sigla_dete1" => NULL,
				"dbo_sigla_dete2" => NULL,
				"dbo_sigla_dete3" => NULL,
				"dbo_sigla_dete4" => NULL,
			);
		$generica->extras_select =" where  dbo_lab=".$idLabo." && dbo_especie=".$idEspecie;
		//echo $generica->extras_select ;
		
	    $generica->selecionaCampos($generica);
		while ($resgenerica = $generica->retornaDados()):
			$sigla[1]=$resgenerica->dbo_sigla_dete1;
			$sigla[2]=$resgenerica->dbo_sigla_dete2;
			$sigla[3]=$resgenerica->dbo_sigla_dete3;
			$sigla[4]=$resgenerica->dbo_sigla_dete4;
	    endwhile;
		
		$a=$sigla[1];
		$b=$sigla[2];
		$c=$sigla[3];
		$d=$sigla[4];
    $a=$a.$b.$c.$d;
    //echo(" a= $a  b= $b  c= $c  d= $d <br>");
	
    //vai achar na tabela de determinacoes, os titulos correspondentes para cada uma das detes
	//captura a primeira coluna das 4 determinacoes
     if($sigla[1]!=""):
		//ENTRA DE QUAKQUER MANEIRA
		$generica->tabela="determinacoes";
		$generica->campos_valores = array(
				"det_tit1" => NULL,
				"det_tit2" => NULL,
				"det_tit3" => NULL,
			);
		$generica->extras_select =" where  det_sigla='".$sigla[1]."'";
		$generica->selecionaCampos($generica);
		while ($resgenerica = $generica->retornaDados()):
         	$matrizFinal[1][1]=$resgenerica->det_tit1;
         	$matrizFinal[2][1]=$resgenerica->det_tit2;
         	$matrizFinal[3][1]=$resgenerica->det_tit3;
		endwhile;
    endif;	
	//captura a segunda coluna das 4 determinacoes
     if($sigla[2]!=""):
		//ENTRA DE QUAKQUER MANEIRA
		$generica->tabela="determinacoes";
		$generica->campos_valores = array(
				"det_tit1" => NULL,
				"det_tit2" => NULL,
				"det_tit3" => NULL,
			);
		$generica->extras_select =" where  det_sigla='".$sigla[2]."'";;
		$generica->selecionaCampos($generica);
		while ($resgenerica = $generica->retornaDados()):
         	$matrizFinal[1][2]=$resgenerica->det_tit1;
         	$matrizFinal[2][2]=$resgenerica->det_tit2;
         	$matrizFinal[3][2]=$resgenerica->det_tit3;
		endwhile;
    endif;	
	//captura a terceiraeira coluna  das 4 determinacoes
     if($sigla[3]!=""):
		//ENTRA DE QUAKQUER MANEIRA
		$generica->tabela="determinacoes";
		$generica->campos_valores = array(
				"det_tit1" => NULL,
				"det_tit2" => NULL,
				"det_tit3" => NULL,
			);
		$generica->extras_select =" where  det_sigla='".$sigla[3]."'";
		$generica->selecionaCampos($generica);
		while ($resgenerica = $generica->retornaDados()):
         	$matrizFinal[1][3]=$resgenerica->det_tit1;
         	$matrizFinal[2][3]=$resgenerica->det_tit2;
         	$matrizFinal[3][3]=$resgenerica->det_tit3;
		endwhile;
    endif;

	//captura a quarta coluna  das 4 determinacoes
     if($sigla[4]!=""):
		//ENTRA DE QUAKQUER MANEIRA
		$generica->tabela="determinacoes";
		$generica->campos_valores = array(
				"det_tit1" => NULL,
				"det_tit2" => NULL,
				"det_tit3" => NULL,
			);
		$generica->extras_select =" where  det_sigla='".$sigla[4]."'";
		$generica->selecionaCampos($generica);
		while ($resgenerica = $generica->retornaDados()):
         	$matrizFinal[1][4]=$resgenerica->det_tit1;
         	$matrizFinal[2][4]=$resgenerica->det_tit2;
         	$matrizFinal[3][4]=$resgenerica->det_tit3;
		endwhile;
    endif;
    return $matrizFinal;
}//final da funcao29 achadetestitulos

//funcao30 CALCULA CUSTO DA ANALISE USANDO TABELA DE PRECOSS
function calculaCusto($amostraLong)
{
$sessao=new sessao();
$cliente=$sessao->getVar('cliente');
//tabajara tem no financeiro modulo acertos_requerente, um controle para custos parciais
$controleEspecialCustoDiscriminado=$sessao->getVar('controle');



    //como funciona esta parte:
	//alguns prcos sao definido em pacotes
	//entao ele tem que qual pacote se encaxa entre os testes solicitados
	//caso um pacote nao contemple todos testes ele vai pegar O preco
	//do teste remanescente e acrescentar ao custo ja calculado 
    
    //vai pegar o codigo da especie  
	//ENTRA DE QUAKQUER MANEIRA
    $generica=new tabelagenerica();
	$generica->tabela=" ficha,cultivar,especies ";
	$generica->campos_valores = array(
			"esp_grupo_preco" => NULL,
			"fic_labo" => NULL,
			"fic_tratamento" => NULL,
			"fic_beneficiada" => NULL,
		);
	$grupoPreco="-";	
	$generica->extras_select =" where esp_id=ctv_especie and fic_cultivar=ctv_id  and fic_id=".$amostraLong;
	$generica->selecionaCampos($generica);
	while ($resgenerica = $generica->retornaDados()):
     	$grupoPreco=$resgenerica->esp_grupo_preco;
     	$idLabo=$resgenerica->fic_labo;
     	$tratamento=$resgenerica->fic_tratamento;
     	$beneficiada=$resgenerica->fic_beneficiada;
	endwhile;
    //echo("88888888888888888888grupo=$grupoPreco<br>");


    //vai pegar os testes solicitados
	$user = new testesSolicitados();
	$user->extras_select = "where tes_ficha=".$amostraLong;
	$user->selecionaTudo($user);
    $contaSolicitados=0;
	while ($res = $user->retornaDados()):
        $contaSolicitados++;
        $vetorTestesSolicitados[$contaSolicitados]=$res->tes_teste;
	endwhile;     
	
	//tabela de preco
	//esta lista é igual a que que tem no modulo tabelapreco entao quqndo atualiza la deve trazer para ca tambem
	//NAO PODE MUDAR A NUMERACAO INTERCALANDO UMA NOVA MEXENDO NOS INDICES DEPOIS DELA
	$vetorSiglas[1]="PURE";//SIGLA SOLITARIA
    $vetorSiglas[2]="GERM";//SIGLA SOLITARIA
    $vetorSiglas[3]="PMSE";//SIGLA SOLITARIA
    $vetorSiglas[4]="EACE";//SIGLA SOLITARIA
    $vetorSiglas[5]="GEPU";
    $vetorSiglas[6]="GEVI";
    $vetorSiglas[7]="GEPM";
    $vetorSiglas[8]="GPVI";
    $vetorSiglas[9]="GPPM";
    $vetorSiglas[10]="GPVP";
	$vetorSiglas[11]="TZSO";////SIGLA SOLITARIA tetrazolio de soja
	$vetorSiglas[12]="VIGO";//SIGLA SOLITARIA simples teste de vigor
	$vetorSiglas[13]="GEPV";//GERMINACAO  PMS VIGOR
	//acrescentei soglas para atender qualiteste em 22/01/2016
	$vetorSiglas[14]="DTUM";//SIGLA SOLITARI
	$vetorSiglas[15]="GBTE";//SIGLA SOLITARI
	$vetorSiglas[16]="OCVS";//SIGLA SOLITARI
	$vetorSiglas[17]="OGMO";//SIGLA SOLITARIR
	$vetorSiglas[18]="CLVI";//SIGLA SOLITARI
	$vetorSiglas[19]="OCVV";//SIGLA SOLITARI
	$vetorSiglas[20]="GTRA";//SIGLA SOLITARI
	$vetorSiglas[21]="AREI";//SIGLA SOLITARI
	$vetorSiglas[22]="INFE";//SIGLA SOLITARI
	$vetorSiglas[23]="DOSN";//SIGLA SOLITARI
	//acrescentei siglas para atender DIMICRON em 24/03/2016
	$vetorSiglas[24]="PQUI";//SIGLA SOLITARI PACOTE QUIMICA + FITOPATOLOGIA
	$vetorSiglas[25]="PCTI";//SIGLA SOLITARI PACOTE QUIMICA IMAGEM
	$vetorSiglas[26]="PFIT";//SIGLA SOLITARI PACOTE QUIMICA IMAGEM
	$vetorSiglas[27]="QUIS";//SIGLA SOLITARI PACOTE QUIMICA IMAGEM
	$vetorSiglas[28]="BOLE";//SIGLA SOLITARI SE VAI FAZER BOLETIM=ANALISE COMPLETA
	$vetorSiglas[29]="PELE";//SIGLA SOLITARI SE É SEMENTE PELETIZADA
	$vetorSiglas[30]="TZFO";//SIGLA SOLITARI SE FOR TETRAZOLIO DE FORRAGEIRAS
	$vetorSiglas[31]="GTFE";//SIGLA TRIPLA CONCEITO GER+ TZF+ EAC
	$vetorSiglas[32]="GTEA";//SIGLA QUADRUPLA CONCEITO GER+ TZF+ EAC+ARE
	$vetorSiglas[33]="PETF";//SIGLA DUPLA CONCEITO PEL+ TZF
	$vetorSiglas[34]="GPTF";//SIGLA TRIPLA CONCEITO GER+PEL+ TZF
    $vetorSiglas[35]="PCT1";//DIMICRON-PUREZA+GERM+EAC+PMS+QUI+FITO+IMAGEM
    $vetorSiglas[36]="PCT2";//DIMICRON-PUREZA+GERM+EAC+PMS+IMAGEM(+QUI OU FITO)
    $vetorSiglas[37]="PCT3";//DIMICRON-PUREZA+GERM+EAC+TZO+PMS+IMAGEM
    $vetorSiglas[38]="PCT4";//DIMICRON-PUREZA+GERM+EAC+TZO+PMS
    $vetorSiglas[39]="PTZO";//DIMICRON-PUREZA+TZO
    $vetorSiglas[40]="VIGS";//DIMICRON-VIGOR S
    $vetorSiglas[41]="GETZ";//CONCEITO DUPLA GERMINACAO + TZ
    $vetorSiglas[42]="TFPU";//CONCEITO DUPLA PUREZA+TZ FORRR
    $vetorSiglas[43]="GPUT";//CONCEITO TRIPLA GERMINACAO + PUREZA+TZ FORR
    $vetorSiglas[44]="PCT5";//DIMICRON-PUREZA+PMS+VIGOR+GERM
    $vetorSiglas[45]="CANT";//UFLA CANTEIRO
    $vetorSiglas[46]="GARD";//UFLA GRAO ARDIDO
    $vetorSiglas[47]="DMEC";//UFLA DANO MECANICO
    $vetorSiglas[48]="PCT6";//UFLA PACOTE PC6
    $vetorSiglas[49]="PCT7";//UFLA PACOTE PC7
    $vetorSiglas[50]="PCT8";//UFLA PACOTE PC8
    $vetorSiglas[51]="FRIO";//TESTE DE FRIO
    $vetorSiglas[52]="TZDO";//TESTE tz em dormentes
    $vetorSiglas[53]="VATR";//VIGOR EM AREIA TRATADA
    $vetorSiglas[54]="GEEA";//germinacao + envelhecimenti
    $vetorSiglas[55]="HIPO";//HOPOCLORITO

    //pega o numero de siglas   
 	$numeroDeSiglas=sizeof($vetorSiglas);
	
	

	//vai procurar o preco para cada uma destas siglas
    for($i=1;$i<=$numeroDeSiglas;$i++):
	    $teste=$vetorSiglas[$i];
		if(strlen($teste)>0):
		    $generica5=new tabelagenerica();
			$generica5->tabela="tabeladepreco";
			$contador=0;
			$generica5->campos_valores = array(
					"tap_preco_a"  => NULL,
					"tap_preco_b"  => NULL,
					"tap_preco_c"  => NULL,
					"tap_preco_d"  => NULL,
					"tap_preco_e"  => NULL,
			);
			$generica5->extras_select =" where  tap_testes='".$teste."' and  tap_lab=" . $idLabo;
		    $generica5->selecionaCampos($generica5);
			//vai coloca na tabela de preco apaena o preco do grupo a que pertence a especie analisada
			$precoSigla[$i]=0;
			while ($resgenerica5 = $generica5->retornaDados()):
		        if($grupoPreco=='A')$precoSigla[$i]=$resgenerica5->tap_preco_a;
		        if($grupoPreco=='B')$precoSigla[$i]=$resgenerica5->tap_preco_b;
		        if($grupoPreco=='C')$precoSigla[$i]=$resgenerica5->tap_preco_c;
		        if($grupoPreco=='D')$precoSigla[$i]=$resgenerica5->tap_preco_d;
		        if($grupoPreco=='E')$precoSigla[$i]=$resgenerica5->tap_preco_e;
		    endwhile;
        endif; 
	    //echo("88888888grupopreco=$grupoPreco preco germinacao(item $i )= $precoSigla[2]<br> ");	
    endfor;
   
   
   $custo=0;
   $numeroFragmentos=0;
   $pontuacao=0;
   /*
   NAO DELETAR ESTE COMENTARIO POIS PODE SER UTIL NA MANUTENCAO
   aqui vai fazer a pesquisa para pegar o preco do combinado
   funciona da sequinte forma:
   a combinacao maxima sao 8 testes. todas as combinacoes possiveis devem estar contempladas pelas siglas
   As siglas com mais testes devem vir primeiro
   se encontrou a sigla e sobrou um teste ele mantem na menoria quais os testes precificados    
   vou criar 10 casos mas pode aumentar
   se o custo for igual a zero realiza a pesquisa
   finalidade do teste precificado:
   as siglas sao fixas e podem ser criadas outras, mas pode ser que algum teste
   nao esteja no conjunto entao o sistema deve pegar o preco das siglas solitarias
   AGORA VAI FAZER UMA PESQUISA PARA CADA SIGLA, SEMPRE TESTANDO SE O CUSTO=0
   FRAGMENTOS sao os testes incluidos nos pacotes
   Se for preciso criar novo PACOTE entao acrescente uma apos as que ja tem, PRIMEIRA,SEGUNDA TERCEIRA ....
   IMPORTANTE QUE OS TESTES DE PACOTES SEJAM COLOCADOS OS MAIS COMPLETOS MAIS NO INICIO
   */

//consulta DIMICRON COM 8 ITENS


//CONSULTA de 8 itens
//EU VOU COMENTAR ESTES PACOTES DA DIMICROM ATÉ ELES FICAREM CERTOS DE QUE É ISSO MESMO
/*


   if($custo==0):
   //este é a primeira pesquisa. Nao precisava perguntar se custo==0
   //mas coloquei para padronizar os pedacos de codigo
	   //caso GPVP 
	   $numeroFragmentos=8; $numeroOrdemSigla=35;
       $precoPacote=$precoSigla[$numeroOrdemSigla];
	   $matrizFragmentada=array("GER","PUR","TZO","PMS","EAC","QUI","FIT","PFI"); 
	   $pontuacao=0;
       //se eu nao quero colocar custo no pacote nao preciso o sistema verifica se é zero 
	   //Se for zero desconsidera o pacote e se nao for toma o preco do pacote e ja coloca como custo
       if($precoPacote>0):
		   for($i=0;$i<$numeroFragmentos;$i++):
		         for($j=1;$j<=$contaSolicitados;$j++):  
		            if($matrizFragmentada[$i]==$vetorTestesSolicitados[$j]):
					    $pontuacao++; //este contador é so para ver se o numero de fragementos fecha com o numero de testes solicitados                         
					    $testePrecificado[$pontuacao]=$vetorTestesSolicitados[$j];	
					endif;	
		         endfor;
		   endfor;
	   endif; 	  
	   //vou perguntar se o numero de fragmentos é extamente o numero de pontuacao alcancada
	   //entao aquela sigla pode ser aprovietada e o custo vai adquirir um valor
	   if($pontuacao==$numeroFragmentos)$custo=$precoSigla[$numeroOrdemSigla]; 
   endif;  /////// testa se o custo é zero   final da parte que repete 10 vezes//////   
   
//CONSULTA de 7 itens DIMICRON(SENDO SEM quimica)
   if($custo==0):
   //este é a primeira pesquisa. Nao precisava perguntar se custo==0
   //mas coloquei para padronizar os pedacos de codigo
	   //caso SEM QUIMICA 
	   $numeroFragmentos=7; $numeroOrdemSigla=36;
       $precoPacote=$precoSigla[$numeroOrdemSigla];
	   $matrizFragmentada=array("GER","PUR","TZO","PMS","EAC","FIT","PFI"); 
	   $pontuacao=0;
       //se eu nao quero colocar custo no pacote nao preciso o sistema verifica se é zero 
	   //Se for zero desconsidera o pacote e se nao for toma o preco do pacote e ja coloca como custo
       if($precoPacote>0):
		   for($i=0;$i<$numeroFragmentos;$i++):
		         for($j=1;$j<=$contaSolicitados;$j++):  
		            if($matrizFragmentada[$i]==$vetorTestesSolicitados[$j]):
					    $pontuacao++; //este contador é so para ver se o numero de fragementos fecha com o numero de testes solicitados                         
					    $testePrecificado[$pontuacao]=$vetorTestesSolicitados[$j];	
					endif;	
		         endfor;
		   endfor;
	   endif; 	  
	   //vou perguntar se o numero de fragmentos é extamente o numero de pontuacao alcancada
	   //entao aquela sigla pode ser aprovietada e o custo vai adquirir um valor
	   if($pontuacao==$numeroFragmentos)$custo=$precoSigla[$numeroOrdemSigla]; 
    endif;

//CONSULTA de 7 itens DIMICRON(SENDO SEM FITO)
   if($custo==0):
   //este é a primeira pesquisa. Nao precisava perguntar se custo==0
   //mas coloquei para padronizar os pedacos de codigo
	   //caso SEM FITO 
	   $numeroFragmentos=7; $numeroOrdemSigla=36;
       $precoPacote=$precoSigla[$numeroOrdemSigla];
	   $matrizFragmentada=array("GER","PUR","TZO","PMS","EAC","QUI","PFI"); 
	   $pontuacao=0;
       //se eu nao quero colocar custo no pacote nao preciso o sistema verifica se é zero 
	   //Se for zero desconsidera o pacote e se nao for toma o preco do pacote e ja coloca como custo
       if($precoPacote>0):
		   for($i=0;$i<$numeroFragmentos;$i++):
		         for($j=1;$j<=$contaSolicitados;$j++):  
		            if($matrizFragmentada[$i]==$vetorTestesSolicitados[$j]):
					    $pontuacao++; //este contador é so para ver se o numero de fragementos fecha com o numero de testes solicitados                         
					    $testePrecificado[$pontuacao]=$vetorTestesSolicitados[$j];	
					endif;	
		         endfor;
		   endfor;
	   endif; 	  
	   //vou perguntar se o numero de fragmentos é extamente o numero de pontuacao alcancada
	   //entao aquela sigla pode ser aprovietada e o custo vai adquirir um valor
	   if($pontuacao==$numeroFragmentos)$custo=$precoSigla[$numeroOrdemSigla]; 

   endif;  /////// testa se o custo é zero   final da parte que repete 10 vezes//////   

//CONSULTA de 6 itens DIMICRON
   if($custo==0):
   //este é a primeira pesquisa. Nao precisava perguntar se custo==0
   //mas coloquei para padronizar os pedacos de codigo
	   $numeroFragmentos=6; $numeroOrdemSigla=37;
       $precoPacote=$precoSigla[$numeroOrdemSigla];
	   $matrizFragmentada=array("GER","PUR","TZO","PMS","EAC","PFI"); 
	   $pontuacao=0;
       //se eu nao quero colocar custo no pacote nao preciso o sistema verifica se é zero 
	   //Se for zero desconsidera o pacote e se nao for toma o preco do pacote e ja coloca como custo
       if($precoPacote>0):
		   for($i=0;$i<$numeroFragmentos;$i++):
		         for($j=1;$j<=$contaSolicitados;$j++):  
		            if($matrizFragmentada[$i]==$vetorTestesSolicitados[$j]):
					    $pontuacao++; //este contador é so para ver se o numero de fragementos fecha com o numero de testes solicitados                         
					    $testePrecificado[$pontuacao]=$vetorTestesSolicitados[$j];	
					endif;	
		         endfor;
		   endfor;
	   endif; 	  
	   //vou perguntar se o numero de fragmentos é extamente o numero de pontuacao alcancada
	   //entao aquela sigla pode ser aprovietada e o custo vai adquirir um valor
	   if($pontuacao==$numeroFragmentos)$custo=$precoSigla[$numeroOrdemSigla]; 

   endif;  /////// testa se o custo é zero   final da parte que repete 10 vezes//////   

//CONSULTA de 5 itens DIMICRON
   if($custo==0):
   //este é a primeira pesquisa. Nao precisava perguntar se custo==0
   //mas coloquei para padronizar os pedacos de codigo
	   $numeroFragmentos=5; $numeroOrdemSigla=38;
       $precoPacote=$precoSigla[$numeroOrdemSigla];
	   $matrizFragmentada=array("GER","PUR","TZO","PMS","EAC"); 
	   $pontuacao=0;
       //se eu nao quero colocar custo no pacote nao preciso o sistema verifica se é zero 
	   //Se for zero desconsidera o pacote e se nao for toma o preco do pacote e ja coloca como custo
       if($precoPacote>0):
		   for($i=0;$i<$numeroFragmentos;$i++):
		         for($j=1;$j<=$contaSolicitados;$j++):  
		            if($matrizFragmentada[$i]==$vetorTestesSolicitados[$j]):
					    $pontuacao++; //este contador é so para ver se o numero de fragementos fecha com o numero de testes solicitados                         
					    $testePrecificado[$pontuacao]=$vetorTestesSolicitados[$j];	
					endif;	
		         endfor;
		   endfor;
	   endif; 	  
	   //vou perguntar se o numero de fragmentos é extamente o numero de pontuacao alcancada
	   //entao aquela sigla pode ser aprovietada e o custo vai adquirir um valor
	   if($pontuacao==$numeroFragmentos)$custo=$precoSigla[$numeroOrdemSigla]; 

   endif;  /////// testa se o custo é zero   final da parte que repete 10 vezes//////   
*/


   //CONSULTA de 4 itens
   if($custo==0):
   //este é a primeira pesquisa. Nao precisava perguntar se custo==0
   //mas coloquei para padronizar os pedacos de codigo
	   //caso GPVP 
	   $numeroFragmentos=4; $numeroOrdemSigla=10;
       $precoPacote=$precoSigla[$numeroOrdemSigla];
	   $matrizFragmentada=array("GER","PUR","VIG","PMS"); 
	   $pontuacao=0;
       //se eu nao quero colocar custo no pacote nao preciso o sistema verifica se é zero 
	   //Se for zero desconsidera o pacote e se nao for toma o preco do pacote e ja coloca como custo
       if($precoPacote>0):
		   for($i=0;$i<$numeroFragmentos;$i++):
		         for($j=1;$j<=$contaSolicitados;$j++):  
		            if($matrizFragmentada[$i]==$vetorTestesSolicitados[$j]):
					    $pontuacao++; //este contador é so para ver se o numero de fragementos fecha com o numero de testes solicitados                         
					    $testePrecificado[$pontuacao]=$vetorTestesSolicitados[$j];	
					endif;	
		         endfor;
		   endfor;
	   endif; 	  
	   //vou perguntar se o numero de fragmentos é extamente o numero de pontuacao alcancada
	   //entao aquela sigla pode ser aprovietada e o custo vai adquirir um valor
	   if($pontuacao==$numeroFragmentos)$custo=$precoSigla[$numeroOrdemSigla]; 
   endif;  /////// testa se o custo é zero   final da parte que repete 10 vezes//////   
   //echo("custo1= $custo<br>");


   //CONSULTA ADICIONAL de 4 itens  POIS O CONCEITO CRIOU UMA DE 4 TESTES
   if($custo==0):
   //este é a primeira pesquisa. Nao precisava perguntar se custo==0
   //mas coloquei para padronizar os pedacos de codigo
	   //caso GTEA 
	   $numeroFragmentos=4; $numeroOrdemSigla=32;
       $precoPacote=$precoSigla[$numeroOrdemSigla];
	   $matrizFragmentada=array("GER","TZO","EAC","ARE"); 
	   $pontuacao=0;
       //se eu nao quero colocar custo no pacote nao preciso o sistema verifica se é zero 
	   //Se for zero desconsidera o pacote e se nao for toma o preco do pacote e ja coloca como custo
       if($precoPacote>0):
		   for($i=0;$i<$numeroFragmentos;$i++):
		         for($j=1;$j<=$contaSolicitados;$j++):  
		            if($matrizFragmentada[$i]==$vetorTestesSolicitados[$j]):
					    $pontuacao++; //este contador é so para ver se o numero de fragementos fecha com o numero de testes solicitados                         
					    $testePrecificado[$pontuacao]=$vetorTestesSolicitados[$j];	
					endif;	
		         endfor;
		   endfor;
       endif;

	   //caso GEEA 180722
	   $numeroFragmentos=2; $numeroOrdemSigla=54;
       $precoPacote=$precoSigla[$numeroOrdemSigla];
	   $matrizFragmentada=array("GER","EAC"); 
	   $pontuacao=0;
       //se eu nao quero colocar custo no pacote nao preciso o sistema verifica se é zero 
	   //Se for zero desconsidera o pacote e se nao for toma o preco do pacote e ja coloca como custo
       if($precoPacote>0):
		   for($i=0;$i<$numeroFragmentos;$i++):
		         for($j=1;$j<=$contaSolicitados;$j++):  
		            if($matrizFragmentada[$i]==$vetorTestesSolicitados[$j]):
					    $pontuacao++; //este contador é so para ver se o numero de fragementos fecha com o numero de testes solicitados             					    $testePrecificado[$pontuacao]=$vetorTestesSolicitados[$j];	
					endif;	
		         endfor;
		   endfor;
       endif;

	   //vou perguntar se o numero de fragmentos é extamente o numero de pontuacao alcancada
	   //entao aquela sigla pode ser aprovietada e o custo vai adquirir um valor
	   if($pontuacao==$numeroFragmentos)$custo=$precoSigla[$numeroOrdemSigla]; 
	   //echo("pppppppppontuacao=$pontuacao  $vetorTestesSolicitados[1] $vetorTestesSolicitados[2]$vetorTestesSolicitados[3]$vetorTestesSolicitados[4]<br>");
	     
   endif;  /////// testa se o custo é zero   final da parte que repete 10 vezes//////   
   //echo("custo1= $custo<br>");



  //CONSULTA com 3 itens se o custo for igual a zero realiza outra consulta
   if($custo==0):
	   //caso GEPV
	   $numeroFragmentos=3; $numeroOrdemSigla=13;
	   $precoPacote=$precoSigla[$numeroOrdemSigla];
	   $matrizFragmentada=array("GER","PMS","VIG"); 
	   //echo("contasolicitados=$contaSolicitados<br>");
	   $pontuacao=0;//$pontuacao=numero de testes atendidos pelos fragmentos
	   //se eu nao quero colocar custo no pacote nao preciso o sistema verifica se é zero 
	   //Se for zero desconsidera o pacote e se nao for toma o preco do pacote e ja coloca como custo
       if($precoPacote>0):
		   for($i=0;$i<$numeroFragmentos;$i++):
		         for($j=1;$j<=$contaSolicitados;$j++): 
				    //echo(" fragmentada=$matrizFragmentada[$i]  vetorTestesSolicitados=$vetorTestesSolicitados[$j] <br>"); 
		            if($matrizFragmentada[$i]==$vetorTestesSolicitados[$j]):
					    //echo("achou a identidade $matrizFragmentada[$i]<br>");
					    $pontuacao++; 
						//se na matriz fragmentada tem o teste                         
					    $testePrecificado[$pontuacao]=$vetorTestesSolicitados[$j];	
					endif;	
		         endfor;
		   endfor;
       endif;
	   //vou perguntar se o numero de fragmentos é extamente o numero de pontuacao alcancada
	   //entao aquela sigla pode ser aprovietada e o custo vai adquirir um valor
	   //mas a pontuação deve ser exatamente a mesma do numero de fragmentos para que a sigla possa ser aproveitada
	   if($pontuacao==$numeroFragmentos)$custo=$precoSigla[$numeroOrdemSigla];   
   endif;
   //echo("custo2= $custo<br>");

   //CONSULTA tripla se o custo for igual a zero realiza outra consulta
   if($custo==0):
	   //caso GPPM 
	   $numeroFragmentos=3; $numeroOrdemSigla=9;
	   $precoPacote=$precoSigla[$numeroOrdemSigla];
	   $matrizFragmentada=array("GER","PUR","PMS"); 
	   $pontuacao=0;//$pontuacao=numero de testes atendidos pelos fragmentos
	   //se eu nao quero colocar custo no pacote nao preciso o sistema verifica se é zero 
	   //Se for zero desconsidera o pacote e se nao for toma o preco do pacote e ja coloca como custo
       if($precoPacote>0):
		   for($i=0;$i<$numeroFragmentos;$i++):
		         for($j=1;$j<=$contaSolicitados;$j++):  
		            if($matrizFragmentada[$i]==$vetorTestesSolicitados[$j]):
					    $pontuacao++; 
						//se na matriz fragmentada tem o teste                         
					    $testePrecificado[$pontuacao]=$vetorTestesSolicitados[$j];	
					endif;	
		         endfor;
		   endfor;
       endif; 
	   //vou perguntar se o numero de fragmentos é extamente o numero de pontuacao alcancada
	   //entao aquela sigla pode ser aprovietada e o custo vai adquirir um valor
	   //mas a pontuação deve ser exatamente a mesma do numero de fragmentos para que a sigla possa ser aproveitada
	   if($pontuacao==$numeroFragmentos)$custo=$precoSigla[$numeroOrdemSigla];   
   endif;
   //echo("custo3= $custo<br>");
//aqui vou colocar todas as possibilidades

   //CONSULTA tripla se o custo for igual a zero realiza outra consulta CRIADO EM 100217
   if($custo==0):
	   //caso GPUT   germinacao + pureza+tz forr 
	   $numeroFragmentos=3; $numeroOrdemSigla=43;
	   $precoPacote=$precoSigla[$numeroOrdemSigla];
	   $matrizFragmentada=array("GER","PUR","TZF"); 
	   $pontuacao=0;//$pontuacao=numero de testes atendidos pelos fragmentos
	   //se eu nao quero colocar custo no pacote nao preciso o sistema verifica se é zero 
	   //Se for zero desconsidera o pacote e se nao for toma o preco do pacote e ja coloca como custo
       if($precoPacote>0):
		   for($i=0;$i<$numeroFragmentos;$i++):
		         for($j=1;$j<=$contaSolicitados;$j++):  
		            if($matrizFragmentada[$i]==$vetorTestesSolicitados[$j]):
					    $pontuacao++; 
						//se na matriz fragmentada tem o teste                         
					    $testePrecificado[$pontuacao]=$vetorTestesSolicitados[$j];	
					endif;	
		         endfor;
		   endfor;
       endif; 
	   //vou perguntar se o numero de fragmentos é extamente o numero de pontuacao alcancada
	   //entao aquela sigla pode ser aprovietada e o custo vai adquirir um valor
	   //mas a pontuação deve ser exatamente a mesma do numero de fragmentos para que a sigla possa ser aproveitada
	   if($pontuacao==$numeroFragmentos)$custo=$precoSigla[$numeroOrdemSigla];   
   endif;





   //CONSULTA tripla se o custo for igual a zero realiza outra consulta
   if($custo==0):
	   //caso GPVI 
	   $numeroFragmentos=3; $numeroOrdemSigla=8;
       $precoPacote=$precoSigla[$numeroOrdemSigla];
	   $matrizFragmentada=array("GER","PUR","VIG"); 
	   $pontuacao=0;//$pontuacao=numero de testes atendidos pelos fragmentos
	   //se eu nao quero colocar custo no pacote nao preciso o sistema verifica se é zero 
	   //Se for zero desconsidera o pacote e se nao for toma o preco do pacote e ja coloca como custo
       if($precoPacote>0):
		   for($i=0;$i<$numeroFragmentos;$i++):
		         for($j=1;$j<=$contaSolicitados;$j++):  
		            if($matrizFragmentada[$i]==$vetorTestesSolicitados[$j]):
					    $pontuacao++; 
						//se na matriz fragmentada tem o teste                         
					    $testePrecificado[$pontuacao]=$vetorTestesSolicitados[$j];	
					endif;	
		         endfor;
		   endfor;
       endif; 
	   //vou perguntar se o numero de fragmentos é extamente o numero de pontuacao alcancada
	   //entao aquela sigla pode ser aprovietada e o custo vai adquirir um valor
	   //mas a pontuação deve ser exatamente a mesma do numero de fragmentos para que a sigla possa ser aproveitada
	   if($pontuacao==$numeroFragmentos)$custo=$precoSigla[$numeroOrdemSigla];   
   endif;
   //echo("custo4= $custo<br>");

   //CONSULTA tripla adicional O CONCEITO GEROU ESTE TRIO DE TESTES NOVO PACOTE se o custo for igual a zero realiza outra consulta 
   if($custo==0):
	   //caso GTFE 
	   $numeroFragmentos=3; $numeroOrdemSigla=31;
       $precoPacote=$precoSigla[$numeroOrdemSigla];
	   $matrizFragmentada=array("GER","TZO","EAC"); 
	   $pontuacao=0;//$pontuacao=numero de testes atendidos pelos fragmentos
	   //se eu nao quero colocar custo no pacote nao preciso o sistema verifica se é zero 
	   //Se for zero desconsidera o pacote e se nao for toma o preco do pacote e ja coloca como custo
       if($precoPacote>0):
		   for($i=0;$i<$numeroFragmentos;$i++):
		         for($j=1;$j<=$contaSolicitados;$j++):  
		            if($matrizFragmentada[$i]==$vetorTestesSolicitados[$j]):
					    $pontuacao++; 
						//se na matriz fragmentada tem o teste                         
					    $testePrecificado[$pontuacao]=$vetorTestesSolicitados[$j];	
					endif;	
		         endfor;
		   endfor;
       endif;
	   //vou perguntar se o numero de fragmentos é extamente o numero de pontuacao alcancada
	   //entao aquela sigla pode ser aprovietada e o custo vai adquirir um valor
	   //mas a pontuação deve ser exatamente a mesma do numero de fragmentos para que a sigla possa ser aproveitada
	   if($pontuacao==$numeroFragmentos)$custo=$precoSigla[$numeroOrdemSigla];   
   endif;

   //CONSULTA tripla(SEGUNDA adicional) O CONCEITO GEROU ESTE TRIO DE TESTES NOVO PACOTE se o custo for igual a zero realiza outra consulta 
   if($custo==0):
	   //caso GPTF 
	   $numeroFragmentos=3; $numeroOrdemSigla=34;
       $precoPacote=$precoSigla[$numeroOrdemSigla];
	   $matrizFragmentada=array("GER","PEL","TZF"); 
	   $pontuacao=0;//$pontuacao=numero de testes atendidos pelos fragmentos
	   //se eu nao quero colocar custo no pacote nao preciso o sistema verifica se é zero 
	   //Se for zero desconsidera o pacote e se nao for toma o preco do pacote e ja coloca como custo
       if($precoPacote>0):
		   for($i=0;$i<$numeroFragmentos;$i++):
		         for($j=1;$j<=$contaSolicitados;$j++):  
		            if($matrizFragmentada[$i]==$vetorTestesSolicitados[$j]):
					    $pontuacao++; 
						//se na matriz fragmentada tem o teste                         
					    $testePrecificado[$pontuacao]=$vetorTestesSolicitados[$j];	
					endif;	
		         endfor;
		   endfor;
       endif;
	   //vou perguntar se o numero de fragmentos é extamente o numero de pontuacao alcancada
	   //entao aquela sigla pode ser aprovietada e o custo vai adquirir um valor
	   //mas a pontuação deve ser exatamente a mesma do numero de fragmentos para que a sigla possa ser aproveitada
	   if($pontuacao==$numeroFragmentos)$custo=$precoSigla[$numeroOrdemSigla];   
   endif;


   //echo("custo4= $custo<br>");




   // CONSULTA dupla se o custo for igual a zero realiza outra consulta
   if($custo==0):
	   //caso GEPM 
	   $numeroFragmentos=2; $numeroOrdemSigla=7;
       $precoPacote=$precoSigla[$numeroOrdemSigla];
	   $matrizFragmentada=array("GER","PMS"); 
	   $pontuacao=0;//$pontuacao=numero de testes atendidos pelos fragmentos
	   //se eu nao quero colocar custo no pacote nao preciso o sistema verifica se é zero 
	   //Se for zero desconsidera o pacote e se nao for toma o preco do pacote e ja coloca como custo
       if($precoPacote>0):
		   for($i=0;$i<$numeroFragmentos;$i++):
		         for($j=1;$j<=$contaSolicitados;$j++):  
		            if($matrizFragmentada[$i]==$vetorTestesSolicitados[$j]):
					    $pontuacao++; 
						//se na matriz fragmentada tem o teste                         
					    $testePrecificado[$pontuacao]=$vetorTestesSolicitados[$j];	
					endif;	
		         endfor;
		   endfor;
       endif; 
	   //vou perguntar se o numero de fragmentos é extamente o numero de pontuacao alcancada
	   //entao aquela sigla pode ser aprovietada e o custo vai adquirir um valor
	   //mas a pontuação deve ser exatamente a mesma do numero de fragmentos para que a sigla possa ser aproveitada
	   if($pontuacao==$numeroFragmentos)$custo=$precoSigla[$numeroOrdemSigla];   
   endif;
   //echo("custo5= $custo<br>");
   //SEXTA CONSULTA se o custo for igual a zero realiza outra consulta
   //NO CASO A DIMICRON VAI USAR VGS EM VEZ DE VIG NESTE CASO MUDA O TESTE PARA O MESMO CASO DE GRUPO

   
 if($custo==0):
   if(substr($cliente,0,8)=="DIMICRON"):
	   //caso GEVI
	   $numeroFragmentos=2; $numeroOrdemSigla=6;
       $precoPacote=$precoSigla[$numeroOrdemSigla];
	   $matrizFragmentada=array("GER","VGS"); //AQUI QUE MUDA DE VIG PARA VGS NO CASO DA DIMICRON
	   $pontuacao=0;//$pontuacao=numero de testes atendidos pelos fragmentos
	   //se eu nao quero colocar custo no pacote nao preciso o sistema verifica se é zero 
	   //Se for zero desconsidera o pacote e se nao for toma o preco do pacote e ja coloca como custo
       if($precoPacote>0):
		   for($i=0;$i<$numeroFragmentos;$i++):
		         for($j=1;$j<=$contaSolicitados;$j++):

		            if($matrizFragmentada[$i]==$vetorTestesSolicitados[$j]):
					    $pontuacao++; 
						//se na matriz fragmentada tem o teste                         
					    $testePrecificado[$pontuacao]=$vetorTestesSolicitados[$j];	
					endif;	
					//echo("kkkkkkkktstes solicitados $vetorTestesSolicitados[$j]  matrizFragmentada=$matrizFragmentada[$i] pontuacao= $pontuacao  <br>");  
		         endfor;
		   endfor;
       endif;
	   //vou perguntar se o numero de fragmentos é extamente o numero de pontuacao alcancada
	   //entao aquela sigla pode ser aprovietada e o custo vai adquirir um valor
	   //mas a pontuação deve ser exatamente a mesma do numero de fragmentos para que a sigla possa ser aproveitada
	   if($pontuacao==$numeroFragmentos):
	        $custo=$precoSigla[$numeroOrdemSigla];   
	   endif;		
   else://CASO NAO FOR dimicron
	   //caso GEVI (do modo que foi solicitado pelo tabajara  ger+VIG)
	   $numeroFragmentos=2; $numeroOrdemSigla=6;
       $precoPacote=$precoSigla[$numeroOrdemSigla];
	   $matrizFragmentada=array("GER","VIG"); 
	   $pontuacao=0;//$pontuacao=numero de testes atendidos pelos fragmentos
	   //se eu nao quero colocar custo no pacote nao preciso o sistema verifica se é zero 
	   //Se for zero desconsidera o pacote e se nao for toma o preco do pacote e ja coloca como custo
       if($precoPacote>0):
		   for($i=0;$i<$numeroFragmentos;$i++):
		         for($j=1;$j<=$contaSolicitados;$j++):

		            if($matrizFragmentada[$i]==$vetorTestesSolicitados[$j]):
					    $pontuacao++; 
						//se na matriz fragmentada tem o teste                         
					    $testePrecificado[$pontuacao]=$vetorTestesSolicitados[$j];	
					endif;	
					//echo("kkkkkkkktstes solicitados $vetorTestesSolicitados[$j]  matrizFragmentada=$matrizFragmentada[$i] pontuacao= $pontuacao  <br>");  
		         endfor;
		   endfor;
       endif;
	   //vou perguntar se o numero de fragmentos é extamente o numero de pontuacao alcancada
	   //entao aquela sigla pode ser aprovietada e o custo vai adquirir um valor
	   //mas a pontuação deve ser exatamente a mesma do numero de fragmentos para que a sigla possa ser aproveitada
	   if($pontuacao==$numeroFragmentos):
	       $custo=$precoSigla[$numeroOrdemSigla];   
           if($controleEspecialCustoDiscriminado=='SIM'):
             //CAPTURA O VALOR ANTERIOR DE CONTROLE1 e soma o que deu aqui
			 $controle1=$sessao->getVar('controle1');
			 $controle1+=$custo;   		   
			 $sessao->setVar('controle1',$controle1);
		   endif;		   
	    endif; 	   
		   
    endif;//pergunta se é dimicron(ver casuismo))  
 endif;//testa se o custo era zero


   //echo("custo6= $custo<br>");
   //CONSULTA DUPLA SETIMA CONSULTA se o custo for igual a zero realiza outra consulta
   if($custo==0):
	   //caso GEPU
	   $numeroFragmentos=2; $numeroOrdemSigla=5;
       $precoPacote=$precoSigla[$numeroOrdemSigla];
	   $matrizFragmentada=array("GER","PUR"); 
	   $pontuacao=0;//$pontuacao=numero de testes atendidos pelos fragmentos
	   //se eu nao quero colocar custo no pacote nao preciso o sistema verifica se é zero 
	   //Se for zero desconsidera o pacote e se nao for toma o preco do pacote e ja coloca como custo
       if($precoPacote>0):
		   for($i=0;$i<$numeroFragmentos;$i++):
		         for($j=1;$j<=$contaSolicitados;$j++):  
		            if($matrizFragmentada[$i]==$vetorTestesSolicitados[$j]):
					    $pontuacao++; 
						//se na matriz fragmentada tem o teste                         
					    $testePrecificado[$pontuacao]=$vetorTestesSolicitados[$j];	
					endif;	
		         endfor;
		   endfor;
       endif;
	   //vou perguntar se o numero de fragmentos é extamente o numero de pontuacao alcancada
	   //entao aquela sigla pode ser aprovietada e o custo vai adquirir um valor
	   //mas a pontuação deve ser exatamente a mesma do numero de fragmentos para que a sigla possa ser aproveitada
	   if($pontuacao==$numeroFragmentos):
	       $custo=$precoSigla[$numeroOrdemSigla];   
	       if($controleEspecialCustoDiscriminado=='SIM'):
             //CAPTURA O VALOR ANTERIOR DE CONTROLE1 e soma o que deu aqui
			 $controle3=$sessao->getVar('controle3');
			 $controle3+=$custo;   		   
			 $sessao->setVar('controle3',$controle3);
		   endif;		   
	   
	   endif; 	   
   endif;
   //echo("custo7= $custo<br>");  

   //CONSULTA(PRIMEIRA ADICIONAL DUPLA DO CONCEITO) se o custo for igual a zero realiza outra consulta
   if($custo==0):
	   //caso GEPU
	   $numeroFragmentos=2; $numeroOrdemSigla=33;
       $precoPacote=$precoSigla[$numeroOrdemSigla];
	   $matrizFragmentada=array("PEL","TZF"); 
	   $pontuacao=0;//$pontuacao=numero de testes atendidos pelos fragmentos
	   //se eu nao quero colocar custo no pacote nao preciso o sistema verifica se é zero 
	   //Se for zero desconsidera o pacote e se nao for toma o preco do pacote e ja coloca como custo
       if($precoPacote>0):
		   for($i=0;$i<$numeroFragmentos;$i++):
		         for($j=1;$j<=$contaSolicitados;$j++):  
		            if($matrizFragmentada[$i]==$vetorTestesSolicitados[$j]):
					    $pontuacao++; 
						//se na matriz fragmentada tem o teste                         
					    $testePrecificado[$pontuacao]=$vetorTestesSolicitados[$j];	
					endif;	
		         endfor;
		   endfor;
       endif;
	   //vou perguntar se o numero de fragmentos é extamente o numero de pontuacao alcancada
	   //entao aquela sigla pode ser aprovietada e o custo vai adquirir um valor
	   //mas a pontuação deve ser exatamente a mesma do numero de fragmentos para que a sigla possa ser aproveitada
	   if($pontuacao==$numeroFragmentos)$custo=$precoSigla[$numeroOrdemSigla];   
   endif;

   //CONSULTA(SEGUNDA  ADICIONAL DUPLA DO CONCEITO) se o custo for igual a zero realiza outra consulta
   if($custo==0):
	   //caso GETZ  GERMINACAO + TZ SOJA
	   $numeroFragmentos=2; $numeroOrdemSigla=41;
       $precoPacote=$precoSigla[$numeroOrdemSigla];
	   $matrizFragmentada=array("GER","TZO"); 
	   $pontuacao=0;//$pontuacao=numero de testes atendidos pelos fragmentos
	   //se eu nao quero colocar custo no pacote nao preciso o sistema verifica se é zero 
	   //Se for zero desconsidera o pacote e se nao for toma o preco do pacote e ja coloca como custo
       if($precoPacote>0):
		   for($i=0;$i<$numeroFragmentos;$i++):
		         for($j=1;$j<=$contaSolicitados;$j++):  
		            if($matrizFragmentada[$i]==$vetorTestesSolicitados[$j]):
					    $pontuacao++; 
						//se na matriz fragmentada tem o teste                         
					    $testePrecificado[$pontuacao]=$vetorTestesSolicitados[$j];	
					endif;	
		         endfor;
		   endfor;
       endif;
	   //vou perguntar se o numero de fragmentos é extamente o numero de pontuacao alcancada
	   //entao aquela sigla pode ser aprovietada e o custo vai adquirir um valor
	   //mas a pontuação deve ser exatamente a mesma do numero de fragmentos para que a sigla possa ser aproveitada
	   if($pontuacao==$numeroFragmentos)$custo=$precoSigla[$numeroOrdemSigla];   
   endif;

   //CONSULTA(TERCEIRA  ADICIONAL DUPLA DO CONCEITO) se o custo for igual a zero realiza outra consulta
   if($custo==0):
	   //caso TFPU  PUREZA + TZ FORRAGEIRAS
	   $numeroFragmentos=2; $numeroOrdemSigla=42;
       $precoPacote=$precoSigla[$numeroOrdemSigla];
	   $matrizFragmentada=array("PUR","TZF"); 
	   $pontuacao=0;//$pontuacao=numero de testes atendidos pelos fragmentos
	   //se eu nao quero colocar custo no pacote nao preciso o sistema verifica se é zero 
	   //Se for zero desconsidera o pacote e se nao for toma o preco do pacote e ja coloca como custo
       if($precoPacote>0):
		   for($i=0;$i<$numeroFragmentos;$i++):
		         for($j=1;$j<=$contaSolicitados;$j++):  
		            if($matrizFragmentada[$i]==$vetorTestesSolicitados[$j]):
					    $pontuacao++; 
						//se na matriz fragmentada tem o teste                         
					    $testePrecificado[$pontuacao]=$vetorTestesSolicitados[$j];	
					endif;	
		         endfor;
		   endfor;
       endif;
	   //vou perguntar se o numero de fragmentos é extamente o numero de pontuacao alcancada
	   //entao aquela sigla pode ser aprovietada e o custo vai adquirir um valor
	   //mas a pontuação deve ser exatamente a mesma do numero de fragmentos para que a sigla possa ser aproveitada
	   if($pontuacao==$numeroFragmentos)$custo=$precoSigla[$numeroOrdemSigla];   
   endif;



   //CONSULTA DUPLA DIMICRON PUREZA +TZO  
   if($custo==0):
	   //caso GEPU
	   $numeroFragmentos=2; $numeroOrdemSigla=39;
       $precoPacote=$precoSigla[$numeroOrdemSigla];
	   $matrizFragmentada=array("PUR","TZO"); 
	   $pontuacao=0;//$pontuacao=numero de testes atendidos pelos fragmentos
	   //se eu nao quero colocar custo no pacote nao preciso o sistema verifica se é zero 
	   //Se for zero desconsidera o pacote e se nao for toma o preco do pacote e ja coloca como custo
       if($precoPacote>0):
		   for($i=0;$i<$numeroFragmentos;$i++):
		         for($j=1;$j<=$contaSolicitados;$j++):  
		            if($matrizFragmentada[$i]==$vetorTestesSolicitados[$j]):
					    $pontuacao++; 
						//se na matriz fragmentada tem o teste                         
					    $testePrecificado[$pontuacao]=$vetorTestesSolicitados[$j];	
					endif;	
		         endfor;
		   endfor;
       endif;
	   //vou perguntar se o numero de fragmentos é extamente o numero de pontuacao alcancada
	   //entao aquela sigla pode ser aprovietada e o custo vai adquirir um valor
	   //mas a pontuação deve ser exatamente a mesma do numero de fragmentos para que a sigla possa ser aproveitada
	   if($pontuacao==$numeroFragmentos)$custo=$precoSigla[$numeroOrdemSigla];   
   endif;




   
   //acha os testes que ficaram de fora
   //se o numero de fragmentos for menosr que o numero de testes solicitado
   //ai ele vai fazer esta pesquisa pegando o preco das das siglas
   //testa se fragementos é menor que  o numero de testes solicitados  
   //situacao hipotetica-exemplo
   //eu pedi germinacao pureza e tetrazolio
   //ele achou a sigla gepu e encaixou ali, mas eu havia silicitado GER PUR TZO entao tzo nao ficou precificado
   //mas, o numero de testes solicitados pode ser maior que o numero de pontos
   //porque algum teste pode nao estar contemplado nas siglas   

  //agora tenho duas possibilidades
  //1-Ele ja achou uma promocao e vai ver qual teste que eventualemte aida nao foi acrescentado no custo
  //2-Ele nao achou pacote algum entao no caso o custo ainda é zero=0 

if($custo>0 && $numeroFragmentos<$contaSolicitados)://que dizer que fechou um pacote ams sobrou testes fora do pacote
     //vai ver qual o teste solicitado que nao foi precificado
     for($i=1;$i<=$contaSolicitados;$i++): //percorre todos os tests silicitados 
           //percorre toda a matriz de testes solicitados
           //verifica quais os testes solicitados que nao sao iguais aos testes precificados
		   //ou seja , os que ficaram de fora		   
		   $testeSolicitado=$vetorTestesSolicitados[$i];   //por exemplo pediu GER, TZO ,PMS    (Se pidiu PUR+GER ai ja cai num pacote mas ALGUNS CASO NAO TEM PACOTE)
           $baliza=0;		   
           for($j=1;$j<=$pontuacao;$j++):
		       if($testeSolicitado==$testePrecificado[$j]):
                   $baliza=1;//para nao pegar valor singular			   
			   endif;
		   endfor;
           //se nao achou o teste solicitado entre os tests precificados   a baliza contunará valendo 0
		   //e como nao achou entre os precificados, ele vai pegar o preco daquele teste solicitado
           //AQUI PEGA OS PRECOS DAS SIGLAS SOLITARIAS 
		   //aqui devera aparecer o preco de todos os possiveis testes,
		   //à medida que os laboratorios forem me falando que esta faltando precos
		   //a tabela de precos é definida pelo cliente no modulo tabelapreco.php 
//PODE SER QUE TENHA PACOTE E TESTE SOLITARIO AI MUDA O VALOR DA BALIZA		   
		   if($baliza==0):
              if($testeSolicitado=="TZO"):
			   $custo+=$precoSigla[11];	
		       if($controleEspecialCustoDiscriminado=='SIM'):
	             //CAPTURA O VALOR ANTERIOR DE CONTROLE1 e soma o que deu aqui
				 $controle2=$sessao->getVar('controle2');
				 $controle2+=$custo;   		   
				 $sessao->setVar('controle2',$controle2);
			   endif;		   
			  endif; 	  
              if($testeSolicitado=="GER")$custo+=$precoSigla[2];	
              if($testeSolicitado=="PUR")$custo+=$precoSigla[1];	
              if($testeSolicitado=="PMS")$custo+=$precoSigla[3];	
              if($testeSolicitado=="EAC")$custo+=$precoSigla[4];	
              if($testeSolicitado=="VIG")$custo+=$precoSigla[12];//SIMPLES VIGOR
			  if($testeSolicitado=="PCI")$custo+=$precoSigla[25];//ESPECIAL PARA DIMICRON TESTE IMAGEM
              if($testeSolicitado=="QUI")$custo+=$precoSigla[24];//ESPECIAL PARA DIMICRON TESTE IMAGEM
              if($testeSolicitado=="PFI")$custo+=$precoSigla[26];//ESPECIAL PARA DIMICRON TESTE IMAGEM
			  if($testeSolicitado=="QSE")$custo+=$precoSigla[27];//ESPECIAL PARA DIMICRON TESTE IMAGEM
			  if($testeSolicitado=="BOL")$custo+=$precoSigla[28];//BOL É ANALIS COMPLETA PARA FAZER BOLETIM
			  if($testeSolicitado=="PEL")$custo+=$precoSigla[29];//PEL É SMENTE PELETIZADA
			  if($testeSolicitado=="TZF")$custo+=$precoSigla[30];//TZF = TETRACOLIO DE FORRAGEIRAS
			  //if($testeSolicitado=="TZS")$custo+=$precoSigla[35];//TZS = TETRAZOLIO FISIOLOGICO DIMICRON
			  if($testeSolicitado=="VGS")$custo+=$precoSigla[40];//VGS = VIGOR S DIMICRON
			  if($testeSolicitado=="CAN")$custo+=$precoSigla[45];//CAN = TESTE EM CANTEIRO UFLA
			  if($testeSolicitado=="GAR")$custo+=$precoSigla[46];//GAR = TESTE GRAO ARDIDO UFLA
			  if($testeSolicitado=="DME")$custo+=$precoSigla[47];//DME = TESTE DANO MECANICO UFLA
			  if($testeSolicitado=="FRI")$custo+=$precoSigla[51];//TESTE DE FRIO
			  if($testeSolicitado=="TZD")$custo+=$precoSigla[52];//TESTE DE TETRAZOLIO DORMENTES PARA TABAJARA
			  if($testeSolicitado=="VAT")$custo+=$precoSigla[53];//VIGOR EM AREIA TRATADA - LABO SEEDS
			  if($testeSolicitado=="HIP")$custo+=$precoSigla[55];//HIPOCLORITO
           endif;		   
     endfor;//percorre todos os tests silicitados
endif;//testa se fragmentos é menor que  o numero de testes solicitados     

//se nao achoou pacote algum ate este momento
if($custo==0):
     for($i=1;$i<=$contaSolicitados;$i++): //percorre todos os tests silicitados 
          //percorre toda a matriz de testes solicitados
		  $testeSolicitado=$vetorTestesSolicitados[$i];   //por exemplo pediu GER, TZO ,PMS    (Se pidiu PUR+GER ai ja cai num pacote mas ALGUNS CASO NAO TEM PACOTE)
          if($testeSolicitado=="TZO"):
		     $custo+=$precoSigla[11];	
    	     if($controleEspecialCustoDiscriminado=='SIM'):
	             //CAPTURA O VALOR ANTERIOR DE CONTROLE1 e soma o que deu aqui
				 $controle2=$sessao->getVar('controle2');
				 $controle2+=$custo;   		   
				 $sessao->setVar('controle2',$controle2);
			 endif;		   
		  endif;	 
          if($testeSolicitado=="GER")$custo+=$precoSigla[2];	
          if($testeSolicitado=="PUR")$custo+=$precoSigla[1];	
          if($testeSolicitado=="PMS")$custo+=$precoSigla[3];	
          
		  //se foi solicitado EAC OU OUTRO QUE TEMAVEM É EAC Tipo E24,E36,E48,E72
		  //SE O CARA MARCOU MAIS DE UM TESTE DESTE TIPO ELE  SOMARa DUAS VEZES E NA VERDADE É SO ENV. ACELERADO
		  if($testeSolicitado=="EAC" ||  $testeSolicitado=="E24"  ||  $testeSolicitado=="E36"  ||  $testeSolicitado=="E48"  ||  $testeSolicitado=="E72"  ||  $testeSolicitado=="E96" ):
		       $custo+=$precoSigla[4];

          endif;		  	
          if($testeSolicitado=="VIG")$custo+=$precoSigla[12];
          //ADICONADOS PARA ATENDER QUALITESTE EM 22/01/2016 		  
          if($testeSolicitado=="DTU")$custo+=$precoSigla[14];
          if($testeSolicitado=="GBT")$custo+=$precoSigla[15];
          if($testeSolicitado=="OCV")$custo+=$precoSigla[16];
          if($testeSolicitado=="CLV")$custo+=$precoSigla[18];
          if($testeSolicitado=="GQD")$custo+=$precoSigla[20];
          if($testeSolicitado=="ARE")$custo+=$precoSigla[21];
          if($testeSolicitado=="INF")$custo+=$precoSigla[22];
          if($testeSolicitado=="DOS")$custo+=$precoSigla[23];
 		  if($testeSolicitado=="PCI")$custo+=$precoSigla[25];//ESPECIAL PARA DIMICRON TESTE IMAGEM
          if($testeSolicitado=="QUI")$custo+=$precoSigla[24];//ESPECIAL PARA DIMICRON TESTE IMAGEM
          if($testeSolicitado=="PFI")$custo+=$precoSigla[26];//ESPECIAL PARA DIMICRON TESTE IMAGEM
          if($testeSolicitado=="QSE")$custo+=$precoSigla[27];//ESPECIAL PARA DIMICRON TESTE IMAGEM
          if($testeSolicitado=="BOL")$custo+=$precoSigla[28];//ESPECIAL SE É ANALIS COMPLETA PARA BOLETIM
          if($testeSolicitado=="PEL")$custo+=$precoSigla[29];//ESPECIAL SE É SEMENTE PELETIZADA
          if($testeSolicitado=="TZF")$custo+=$precoSigla[30];//ESPECIAL TETRAZOLIO FORRAGEIRAS
		  //if($testeSolicitado=="TZS")$custo+=$precoSigla[35];//TZS = TETRAZOLIO FISIOLOGICO  DIMICRON
		  if($testeSolicitado=="VGS")$custo+=$precoSigla[40];//VGS = VIGOR S DIMICRON
          //OS 4 PACOTES DA DIMICROM QUE EM VEZ DE ENTRAR COMO TESTES ENTRAM COMO PACOTES  
		  if($testeSolicitado=="PC1")$custo+=$precoSigla[35];//PC1 = PACOTE1 DA DIMICRON
		  if($testeSolicitado=="PC2")$custo+=$precoSigla[36];//PC2 = PACOTE2 DA DIMICRON
		  if($testeSolicitado=="PC3")$custo+=$precoSigla[37];//PC3 = PACOTE3 DA DIMICRON
		  if($testeSolicitado=="PC4")$custo+=$precoSigla[38];//PC4 = PACOTE4 DA DIMICRON
		  if($testeSolicitado=="PC5")$custo+=$precoSigla[44];//PC5 = PACOTE5 DA DIMICRON
		  if($testeSolicitado=="CAN")$custo+=$precoSigla[45];//CAN = TESTE EM CANTEIRO UFLA
		  if($testeSolicitado=="GAR")$custo+=$precoSigla[46];//GAR = GRAO ARDIDO UFLA
		  if($testeSolicitado=="DME")$custo+=$precoSigla[47];//DME = TESTE DANO MECANICO UFLA
		  if($testeSolicitado=="PC6")$custo+=$precoSigla[48];//PC6 = PACOTE6(DA UFLA)
		  if($testeSolicitado=="PC7")$custo+=$precoSigla[49];//PC6 = PACOTE6(DA UFLA)
		  if($testeSolicitado=="PC8")$custo+=$precoSigla[50];//PC6 = PACOTE6(DA UFLA)
		  if($testeSolicitado=="FRI")$custo+=$precoSigla[51];//TESTE DE FRIO INCLUIDO EM 090518
		  if($testeSolicitado=="TZD")$custo+=$precoSigla[52];//TESTE DE TETRAZOLIO DORMENTES PARA TABAJARA
		  if($testeSolicitado=="VAT")$custo+=$precoSigla[53];//VIGOR AREIA TRATADA
		  if($testeSolicitado=="HIP")$custo+=$precoSigla[55];//HIPOCLORITO
		  
		  //OGM E OCVV NAO TEM TESTE NA TELA DE TESTES A REALIZAR
          //if($testeSolicitado=="DTU")$custo+=$precoSigla[14];
          //if($testeSolicitado=="DTU")$custo+=$precoSigla[14];
     endfor;//percorre todos os tests silicitados
endif;//testa se fragmentos é menor que  o numero de testes solicitados     

//echo("88888888grupopreco=$grupoPreco preco germinacao(item 2 )= $precoSigla[2] numeroFragmento= $numeroFragmentos   contaSolicitados = $contaSolicitados custo=$custo  <br> ");	

//tabajara calcula o custo acrescentando 25% se a semente for tratada
//$sessao=new sessao();
//$cliente=$sessao->getVar('cliente');
if(substr($cliente,0,2)=="TS"):
   if($tratamento=='-O-'  || $tratamento=='-0-'   || $tratamento=='-o-'     || $tratamento=='' || $tratamento=='-'):
     $custo=$custo*1;
   else:
     $custo=$custo*1.25;
   endif;	 
endif;

//DIMICRON calcula o custo acrescentando 50% se a semente for tratada

//$cliente=$sessao->getVar('cliente');
if(substr($cliente,0,8)=="DIMICRON"):
   if($tratamento=='-O-'  || $tratamento=='-0-'   || $tratamento=='-o-'     || $tratamento=='' || $tratamento=='-'):
     $custo=$custo*1;
   else:
     $custo=$custo*1.5;
   endif;	 
endif;
//DIMICRON SE NAO FOR BENEFICIADA INCREMENTA 25% NO CUSTO
if(substr($cliente,0,8)=="DIMICRON"):
   if($beneficiada=='S'):
     $custo=$custo*1;
   else:
     $custo=$custo*1.25;
   endif;	 
endif;




    //$custo=$grupoPreco;
    //vai salvar o custo na tabela ficha  SEM DAR DESCONTO????
    $userAmostra = new amostras();
    //vai gravar no campo fic_custo o novo custo da amostra 
    $sql="update ficha set fic_custo='$custo' where fic_id=".$amostraLong;
	$generica=new tabelagenerica();
    $generica->grava_registro_com_retorno($sql);
	
	
	
	
	
	
	
	
	///////////////aqui vai achar o percentual de desconto do cliente//////////
	//ENTRA DE QUAKQUER MANEIRA para listar as determinacoes que 
    $generica=new tabelagenerica();
	$generica->tabela="ficha,remetente";
	$generica->campos_valores = array(
			"prd_desconto" => NULL,
		);
	$generica->extras_select =" where fic_produtor=prd_id and fic_id=".$amostraLong;
    $generica->selecionaCampos($generica);
	$desconto=0;
	while ($resgenerica = $generica->retornaDados()):
		$desconto=$resgenerica->prd_desconto;
    endwhile;
	///////////////
 	if($custo>0 && $desconto>0):
	   $descontar=$custo*$desconto/100;
       $custo=$custo-$descontar;
	endif;
    return $custo;
}//final da funcao calcula custo

//função31##################################
function capturaOutrasDets($amostraLong,$dete)
{
	//captura todos campos de germinacao da tabela rean1
	$generica=new tabelagenerica();
    $generica->tabela="rean1";
    $generica->campos_valores = array(
		"rea_v1" => NULL,
        "rea_v2"     => NULL,
        "rea_v3"     => NULL,
        "rea_v4"     => NULL,
        "rea_v5"     => NULL,
        "rea_v6"     => NULL,
        "rea_datageralteste"     => NULL,
        "rea_duracao"     => NULL,
        "rea_campo60b"     => NULL,
        "rea_campo60a"     => NULL,
        "rea_campo20a"     => NULL,
    );
	$generica->extras_select =" where   rea_teste='".$dete."' &&  rea_ficha=".$amostraLong;
	$generica->selecionaCampos($generica);
	while ($resgenerica = $generica->retornaDados()):
		$vetorGerminacao[1]=$resgenerica->rea_v1;//normais
		$vetorGerminacao[2]=$resgenerica->rea_v2;//anormais
		$vetorGerminacao[3]=$resgenerica->rea_v3;//duras
		$vetorGerminacao[4]=$resgenerica->rea_v4;//dormentes
		$vetorGerminacao[5]=$resgenerica->rea_v5;//mortas
		$vetorGerminacao[6]=$resgenerica->rea_datageralteste;//data teste
		$vetorGerminacao[7]=$resgenerica->rea_duracao;//duracao
		$vetorGerminacao[8]=$resgenerica->rea_campo60b;//substrato
		$vetorGerminacao[9]=$resgenerica->rea_campo20a;//temperatura
		$vetorGerminacao[10]=$resgenerica->rea_campo60a;//tratamento
		$vetorGerminacao[11]=$resgenerica->rea_v6;//infecionadas
	endwhile;
	return $vetorGerminacao;
}//final cptura germinacao

//função32##################################//transforma  o nome cientifico Phaseolus vulgaris L  em Phaseolus vulgaris apenas
function nomeCientificoReduzido($nomeCientifico)
{

   $sessao=new sessao();
   $cliente=$sessao->getVar('cliente');
   
   $tama=strlen($nomeCientifico);
   //acha a posicao do primeiro espaco
   $posicao1=0;
   $posicao2=0;
   for($i=1;$i<$tama;$i++):
     $texto=substr($nomeCientifico,$i,1);
	 if($posicao1>0 && $posicao2==0 && $texto==' ')$posicao2=$i;
	 if($posicao1==0 && $texto==" ")$posicao1=$i;
   endfor;
   //se chega no final e nao tem mais nada como no caso de especies que nao tem lineu nem nada entao captura o resto
   if($posicao2==0)$posicao2=$i;
   $texto=substr($nomeCientifico,0,$posicao2);
   if(substr($cliente,0,2)=="TS")$texto=$nomeCientifico;   //para o tabajara vale tudo
   return $texto;
 }//final cptura germinacao

//função33##################################//tcaptura  testes solicitados para colocae na ficha no farejador,no financeiro e outros locais....
function capturaTestesSolicitados($amostraLong)
{
	//acha os testes solicitados
	$generica1=new tabelagenerica();
	$generica1->extras_select =" select tes_teste from  testessolicitados where tes_ficha=".$amostraLong;
	$generica1->selecionaCamposEspecial($generica1);
    $testes="";
	while ($resgenerica1= $generica1->retornaDados()):
	    $testes=$testes.$resgenerica1->tes_teste.'; ';//
	endwhile;
	return $testes;
}


//funcao 34
//verifica se o teste de nocivas foi realemnte feito examinando todas amostras
//monta um binario posicao 1=nocivas tolerada feito vale 1;  posicao 2=pureza feito vale 1
//posicao3=silvestres posicao4 outras cultivares....
function binarioAnalises($idDoc)
{
//VAI ACHAR AS ID DAS AMOSTRAS QUE VAO NO LAUDO
//captura o numero de registros e as id das amostras atraves da leitura da tabela documentosponte amarrada com a id do documento
//ENTRA DE QUAKQUER MANEIRA

$genericaBi=new tabelagenerica();
$genericaBi->tabela="documentosponte";
$genericaBi->campos_valores = array(
		"dpo_amostra_vinculada" => NULL,
	);
$genericaBi->extras_select =" where  dpo_documento_autonumerador=".$idDoc." order by dpo_amostra_vinculada LIMIT 15";
//echo("eeeeexxxxxxxxxxxxxxxxxxxxxxxxxxeeeeeeerro $generica->extras_select <br>");
$genericaBi->selecionaCampos($genericaBi);
//echo("4xxxxxxxxxxxxxxidDocumento= $idDoc  contaAmostras =$contaAmostras $vetorDPO[1]<br>");
//vai pegar os dados da amopstra la na classe calculo pois ja tem a id da amostra
 //resultaso sao impressoas a partr da cota 3 car em cima da  linha divisoria muito grossa
$tolerada=0;
$pureza=0;
$silvestre=0;
$outraCultivar=0;
while ($resgenericaBi = $genericaBi->retornaDados()):
    $amostraLong=$resgenericaBi->dpo_amostra_vinculada;
    $vetorAmostraBruto=$this->capturaGeralAmostra($amostraLong);//captura TUDO 
	//$pdf->Cell($vetorLargura[8],5,utf8_decode($vetorAmostraBruto[18]),1,0,'C');//outras sementes
	//$pdf->Cell($vetorLargura[9],5,utf8_decode($vetorAmostraBruto[8]),1,0,'C');//sementes silvestres
	//$pdf->Cell($vetorLargura[10],5,utf8_decode($vetorAmostraBruto[7]),1,0,'C');//outras especies cultivada
	if($vetorAmostraBruto[10] != '-N-')$tolerada=1;//toleradas/proibidas
	if($vetorAmostraBruto[9] == '0')$tolerada=1;//toleradas/proibidas
	if($vetorAmostraBruto[4] != '-N-')$pureza=1;//puras
	if($vetorAmostraBruto[7] != '-N-')$silvestre=1;//silvestre/oesp
	if($vetorAmostraBruto[8] == '0')$silvestre=1;//silvestre/oesp


	//$pdf->Cell($vetorLargura[19],5,utf8_decode($vetorAmostraBruto[15]),1,0,'C');//verificacao de outras cultivares
endwhile;//FINAL DO ENDWILE QUE ACHA A ID DENTRO DO DOCUMENTOSPONTE	
//monta o binario
$binario=$tolerada.$pureza.$silvestre.$outraCultivar;
return $binario;
	
}//final da function binario anlises

//funcao 35
//aqui deixa prontos os itens conforme o esquema pagina 16 com as 35 colunas
function resumoTetrazolio($amostraLong)
{
		$generica1=new tabelagenerica();
		$generica1->tabela="rean1";
		$generica1->campos_valores = array(
		    "rea_campo100" => NULL,
		    "rea_datageralteste" => NULL,
		    "rea_id" => NULL,
		    "rea_v1" => NULL,
		    "rea_v2" => NULL,
		);
		$generica1->extras_select =" where rea_teste='TZO' and rea_ficha=".$amostraLong;
		$generica1->selecionaCampos($generica1);
		$registros=0;
		while ($resgenerica1 = $generica1->retornaDados()):
		    $registros++;
     		$montagem=$resgenerica1->rea_campo100;	
     		$vigor=$resgenerica1->rea_v1;	
     		$viabilidade=$resgenerica1->rea_v2;	
     		$dataTesteTZ=date("d/m/y",strtotime($resgenerica1-> rea_datageralteste));;	
     		//$dataTesteTZ=$resgenerica1->rea_id;//isso serve so para teste no programa	
		endwhile;
        

        if(strlen($montagem)>0):
           list($a1,$a2,$a3,$a4,$a5,$a6,$a7,$a8,$a9,$a10,$a11,$a12,$a13,$a14,$a15,$a16,$a17,$a18,$a19,$a20,$a21,$a22,$a23,$a24,$a25,$a26,$a27,$a28,$a29,$a30,$a31,$a32,$a33,$a34,$a35) = explode("*", $montagem);
	        $arrayFinal[1]=$a1;
	        $arrayFinal[2]=$a2;
	        $arrayFinal[3]=$a3;
	        $arrayFinal[4]=$a4;
	        $arrayFinal[5]=$a5;
	        $arrayFinal[6]=$a6;
	        $arrayFinal[7]=$a7;
	        $arrayFinal[8]=$a8;
	        //$arrayFinal[8]=344;
			
	        $arrayFinal[9]=$a9;
	        $arrayFinal[10]=$viabilidade;
	        $arrayFinal[11]=$vigor;
	        $arrayFinal[12]=$a12;
	        $arrayFinal[13]=$a13;
	        $arrayFinal[14]=$a14;
	        $arrayFinal[15]=$a15;
	        $arrayFinal[16]=$a16;
	        $arrayFinal[17]=$a17;
	        $arrayFinal[18]=$a18;
	        $arrayFinal[19]=$a19;
	        $arrayFinal[20]=$a20;
	        $arrayFinal[21]=$a11;
	        $arrayFinal[22]=$a12;
	        $arrayFinal[23]=$a13;
	        $arrayFinal[24]=$a24;//estava a14
	        $arrayFinal[25]=$a15;
	        $arrayFinal[26]=$a16;
	        $arrayFinal[26]=330;


	        $arrayFinal[27]=$a17;
	        $arrayFinal[28]=$a18;
	        $arrayFinal[29]=$a19;
	        $arrayFinal[30]=$a20;
	        $arrayFinal[31]=$a11;
	        $arrayFinal[32]=$a12;
	        $arrayFinal[33]=$a13;
	        $arrayFinal[34]=$a14;
	        $arrayFinal[35]=$a15;
	        $arrayFinal[39]=$dataTesteTZ;
        endif;
    return $arrayFinal;
}//final captira tetrazolio soja2015 #####################################

//funcao 36
//grava ocorrencias (registro de amostra,alteracao, gravou geminacao,valores,motivo etc)
function registroDeOcorrencias($amostraLong,$idDoc,$nomeOperador,$finalidade,$valor,$idLabo)
{
    //aqui vai checar se ja tinha registro do iddoc(se tem e veio 0 pelo parametro, entao grava o valor que ja tinha)
    if($idDoc==0):
		//ENTRA DE QUAKQUER MANEIRA
		$genericaDoc=new tabelagenerica();
		$genericaDoc->tabela="registro_ocorrencias";
		$genericaDoc->campos_valores = array(
			   "reg_id_doc" => NULL,
		);
		$genericaDoc->extras_select =" where reg_id_amostra=".$amostraLong." and reg_id_doc>0";
		$genericaDoc->selecionaCampos($genericaDoc);
		$contador=0;
		while ($resgenericaDoc= $genericaDoc->retornaDados()):
	       $contador++;
		   $idDoc=$resgenericaDoc->reg_id_doc;
	    endwhile;         
    endif;

	$generica2=new tabelagenerica();
    $sqlt="insert into registro_ocorrencias(reg_id_amostra,reg_id_doc,reg_operador,reg_finalidade,reg_valor,reg_labo)";
    $sqlt.="values('$amostraLong','$idDoc','$nomeOperador','$finalidade','$valor',$idLabo)";
    $generica2->grava_registro_com_retorno($sqlt); 
}//final da funcao grava ocorrencia



function calculaTetrazolioSojaSucata261215($amostraLong,$modalidadeArquivada)
{

    //aqui cria uma matriz com o resumo, que pode ser usda em varios locais
	//daqui ela sai com todas colunas e nos locais(realtorios posso suprimir eventualmente alguma linha
	//cria uma matriz colocando NA PRIMEIRA LINHA OS TITULOS
	//$sqlTetrazolio="select tet_repeticao from tetrazolio where (tet_repeticao='8' or tet_repeticao='9') and tet_amostra=".$amostraLong;
	//$campo="tet_repeticao";
	//verifica se  a modalidade é 2x50 ou 2x100
	//$modalidadeArquivada=achaCampoRegistro($sqlTetrazolio,'tet_repeticao');
	if($modalidadeArquivada=='7') $multiplicador=4;
	if($modalidadeArquivada=='8') $multiplicador=2;
	if($modalidadeArquivada=='9') $multiplicador=1;
    //echo("xxxxxxxxxxxxxxxdentro da clsse calculos multiplicador=$multiplicador<br>");
	
	$matriz[0][1]="P(1-8)";
	$matriz[0][2]="P(4-5)";
	$matriz[0][3]="P(6-8)";
	$matriz[0][4]="M(1-8)";
	$matriz[0][5]="M(4-5)";
	$matriz[0][6]="M(6-8)";
	$matriz[0][7]="U(1-8)";
	$matriz[0][8]="U(4-5)";
    $matriz[0][9]="U(6-8)";
    $matriz[0][10]="PG";
    $matriz[0][11]="Vigor";
    $matriz[0][12]="Dura";
    $matriz[0][13]="R3";
	$rotuloVerde='Embrion.';//so maikel sneider usa verdes, os demais usam embrionaria e def. genetica
	if($cliente=="SÃO FRANCISCO"):
	    $rotuloVerde="Verdes";//varia confome o cliente
	endif;	 
    $matriz[0][14]=$rotuloVerde;
    $matriz[0][15]="CI";
    $matriz[0][16]="CII";
    $matriz[0][17]="CIII";
    $matriz[0][18]="Dano maior";
    $matriz[0][19]="S.tes";
    $matriz[0][20]="S/dano";
    $matriz[0][21]="M2";
    $matriz[0][22]="U2";
    $matriz[0][23]="P2";
    $matriz[0][24]="M3";
    $matriz[0][25]="U3";
    $matriz[0][26]="P3";
    $matriz[0][27]="M4";
    $matriz[0][28]="U4";
    $matriz[0][29]="P4";
    $matriz[0][30]="M5";
    $matriz[0][31]="U5";
    $matriz[0][32]="P5";
    $matriz[0][33]="M(1-5)";//so a empresa 3 pinheiros usa isso
    $matriz[0][34]="U(1-5)";
    $matriz[0][35]="P(1-5)";
    $matriz[0][36]="Obs";


	$matriz[1][0]="REP I";
	$matriz[2][0]="Rep II";
	$matriz[3][0]="Média";



    //FAZ ESTE CALCULO DUAS VEZES UMA PARA CADA REPETIÇAO SENDO ESTA A PRIMEIRA VEZ pois aqui vai pegar a repeticao 1
$totalDeRegistros=0;
for($repe=1;$repe<=2;$repe++)
{
	$sqlTetrazolio="select tet_danos,tet_nivel from tetrazolio where tet_repeticao='".$repe."' && tet_amostra=".$amostraLong." order by tet_nivel";
	$resultado=mysql_query($sqlTetrazolio);
	 //echo $sqlFinal;
	$registros=mysql_num_rows($resultado);
    if($registros>0)$totalDeRegistros=$registros;//sao 2 repeticoes pego o valor acima de zero pois pode ser que eu so informe na repeticao 1 
	//ajusta conforme os registros as demais linhas
    $totalP=0;//vai contar cdada dano para saber qual o maior dano
    $totalU=0;
    $totalM=0;
    
	$somaP18=0;
	$somaM18=0;
	$somaU18=0;

	$somaP68=0;
	$somaM68=0;
	$somaU68=0;

	$somaP45=0;
	$somaM45=0;
	$somaU45=0;

	$somaClasse1=0;
	$somaClasse2=0;
	$somaClasse3=0;
	
	$somaMup=0;
	
	
	$somaM2=0;
	$somaU2=0;
	$somaP2=0;

	$somaM3=0;
	$somaU3=0;
	$somaP3=0;

	$somaM4=0;
	$somaU4=0;
	$somaP4=0;

	$somaM5=0;
	$somaU5=0;
	$somaP5=0;
	
	$somaM15=0;
	$somaU15=0;
	$somaP15=0;


	$somaDura=0;
	$somaR3=0;
	$somaVerde=0;
	$germinacao=100;//valor inicial
	$vigor=100;
	for($r=0;$r<$registros;$r++)  //faaz uma varredura nos registros vendo o que esta realmente gradao para cada nivel
	 {
		 $reg=mysql_fetch_row($resultado);
		 $danos= $reg[0];//tet_danos
		 $nivel= $reg[1];//tet_nivel
		 //examina cada dano. Se for dano maior ou igual a 6 diminui a germinação se for maior que 3 diminui vigor
	     $primeiro=substr($danos,0,1);
	     $segundo=substr($danos,1,1);
	     $terceiro=substr($danos,2,1);
         //vai achar o dano que mais aconteceu
		 if($primeiro=="P" || $segundo=="P" || $tereceiro=="P") $totalP++;
		 if($primeiro=="U" || $segundo=="U" || $tereceiro=="U") $totalU++;
		 if($primeiro=="M" || $segundo=="M" || $tereceiro=="M") $totalM++;
         //calcula as classes
         if($nivel==1)$somaClasse1++;  
         if($nivel==2)$somaClasse2++;  
         if($nivel==3)$somaClasse3++;  
         //calcula os danos nas faixas
	     if($primeiro=="P")$somaP18++;
         if($primeiro=="U")$somaU18++;
         if($primeiro=="M")$somaM18++;
         if($primeiro=="D"):
		     $somaDura++;
			 $nivel=1;
		     //$vigor=$vigor+$multiplicador;	 
	     endif;  		 
         if($primeiro=="V")$somaVerde++;
         if($primeiro=="R"):
		     $somaR3++;
			 $somaU18++;
		 endif;	 

         //calcula os danos SECUNDARIOS
	     if($segundo=="P"|| $terceiro=="P")$somaP18++;
         if($segundo=="M"|| $terceiro=="M")$somaM18++;
         if($segundo=="U"|| $terceiro=="U")$somaU18++;


         //calcula danos 4-5
         if($primeiro=="P" && $nivel>=4 && $nivel<=5)$somaP45++;
         if($primeiro=="U" && $nivel>=4 && $nivel<=5)$somaU45++;
         if($primeiro=="M" && $nivel>=4 && $nivel<=5)$somaM45++;
         //calcula danos 6-8
         if($primeiro=="P" && $nivel>=6)$somaP68++;
         if($primeiro=="U" && $nivel>=6)$somaU68++;
         if($primeiro=="M" && $nivel>=6)$somaM68++;
 
         if($nivel>=6)$germinacao=$germinacao-$multiplicador;
         if($nivel>=4)$vigor=$vigor-$multiplicador;
		 //soma so os m2
         if($primeiro=="M" && $nivel==2)$somaM2++;
         if($primeiro=="U" && $nivel==2)$somaU2++;
         if($primeiro=="P" && $nivel==2)$somaP2++;

         if($primeiro=="M" && $nivel==3)$somaM3++;
         if($primeiro=="U" && $nivel==3)$somaU3++;
         if($primeiro=="P" && $nivel==3)$somaP3++;

         if($primeiro=="M" && $nivel==4)$somaM4++;
         if($primeiro=="U" && $nivel==4)$somaU4++;
         if($primeiro=="P" && $nivel==4)$somaP4++;

         if($primeiro=="M" && $nivel==5)$somaM5++;
         if($primeiro=="U" && $nivel==5)$somaU5++;
         if($primeiro=="P" && $nivel==5)$somaP5++;

         //calcula danos 1-5
         if($primeiro=="M" && $nivel<=5 )$somaM15++;
         if($primeiro=="U" && $nivel<=5 )$somaU15++;
         if($primeiro=="P" && $nivel<=5 )$somaP15++;
	 
		 //echo("somap18uuuuuu $somaP18");	
	 }//final do for dos danos de cada repeticao desta amostra
     //aqui incorpora as duras ao vigor
     //$vigor=$vigor+$somaDura;

	 
     //vaou colocar a grade finalizadora aqui antes de fazer o segundo laco das 2 repeticos	 
     $matriz[$repe][1]=$somaP18*$multiplicador;	
     $matriz[$repe][2]=$somaP45*$multiplicador;	
     $matriz[$repe][3]=$somaP68*$multiplicador;	
     $matriz[$repe][4]=$somaM18*$multiplicador;	
     $matriz[$repe][5]=$somaM45*$multiplicador;	
     $matriz[$repe][6]=$somaM68*$multiplicador;	
     $matriz[$repe][7]=$somaU18*$multiplicador;	
     $matriz[$repe][8]=$somaU45*$multiplicador;	
     $matriz[$repe][9]=$somaU68*$multiplicador;	
     //echo("multiplicador $multiplicador<br>");
	 		 
     $matriz[$repe][10]=$germinacao;	
     $matriz[$repe][11]=$vigor;	
     //$matriz[$repe][11]='xxx';	
     $matriz[$repe][12]=$somaDura*$multiplicador;	
     $matriz[$repe][13]=$somaR3*$multiplicador;	
     $matriz[$repe][14]=$somaVerde*$multiplicador;	
     //$matriz[$repe][15]=$somaClasse1*$multiplicador;	//sem dano ou classe 1 é obtido por diferenca
     $matriz[$repe][16]=$somaClasse2*$multiplicador;	
     $matriz[$repe][17]=$somaClasse3*$multiplicador;
	 //base momento pode ser 50 ou 100 //depende do numero de sementes
	 $baseMomento=50;
	 if($multiplicador==1)$baseMomento=100;
     $semDanos=	$baseMomento-$registros; 
	 if($repe==2)$semDanos=0;
	 //acha o maior DANO OU DMI(dano de maior incidencia)) se é P,U ou M
	 $maior=max($totalM,$totalU,$totalP);
	 if($maior==$totalM)$maximo="M".$maior;;
	 if($maior==$totalU)$maximo="U".$maior;
	 if($maior==$totalP)$maximo="P".$maior;
     $matriz[$repe][18]=$maximo;//maio dano ou dano mais importante	
     $matriz[$repe][19]=$registros;//preciso deste numero para viabilizar ou nao a emissao do laudo e da ficha
     $matriz[$repe][20]=$semDanos*$multiplicador;//sem danos ou seja nivel 1
     $matriz[$repe][15]=$semDanos*$multiplicador;//sem danos ou seja nivel 1 ou classe I
     $matriz[$repe][21]=$somaM2*$multiplicador;	
	 echo("4797 somaM2=$somaM2<br>");
     $matriz[$repe][22]=$somaU2*$multiplicador;	
     $matriz[$repe][23]=$somaP2*$multiplicador;	
     $matriz[$repe][24]=$somaM3*$multiplicador;	
     $matriz[$repe][25]=$somaU3*$multiplicador;	
     $matriz[$repe][26]=$somaP3*$multiplicador;	
     $matriz[$repe][27]=$somaM4*$multiplicador;	
     $matriz[$repe][28]=$somaU4*$multiplicador;	
     $matriz[$repe][29]=$somaP4*$multiplicador;	
     $matriz[$repe][30]=$somaM5*$multiplicador;	
     $matriz[$repe][31]=$somaU5*$multiplicador;	
     $matriz[$repe][32]=$somaP5*$multiplicador;	
     $matriz[$repe][33]=$somaM15*$multiplicador;	
     $matriz[$repe][34]=$somaU15*$multiplicador;	
     $matriz[$repe][35]=$somaP15*$multiplicador;	
	 
}//final do for das 2 repeticoes
	 
	 //CRIA A LINHA FINAL OU SEJA A MEDIA
	 for($j=1;$j<=36;$j++)
	 {
         $soma=$matriz[2][$j]+ $matriz[1][$j];
         $matriz[3][$j]=ceil($soma/2);	 
	 }
	//MAIOR DANO SITUACAO ESPECIAL ACHA O QUE DEU EM CADA REPETICAO 
	//PODE TER DADO P4 P14 M5  M13 ETC 
	$zidaneMaiorRep1=$matriz[1][18];//PODE TER DADO P4 P14 M5  M13 ETC 
	$zidaneMaiorRep2=$matriz[2][18];//PODE TER DADO P4 P14 M5  M13 ETC 
    $quantidade1=substr($zidaneMaiorRep1,1);//pega tudo que vem depois da letra
    $quantidade2=substr($zidaneMaiorRep2,1);//pega tudo que vem depois da letra
    if($quantidade1>=$quantidade2):
       $letraDanoMaior=	substr($zidaneMaiorRep1,0,1);
	else:
       $letraDanoMaior=	substr($zidaneMaiorRep2,0,1);
	endif; 
    if($letraDanoMaior=="M")  $matriz[3][18]="Mecanico";
    if($letraDanoMaior=="U")  $matriz[3][18]="Umidade";
    if($letraDanoMaior=="P")  $matriz[3][18]="Percevejo";
    //se nao foi feito o teste entao coloca valor deful 
	
	if($totalDeRegistros==0):
        $matriz[3][10]='-N-';//PG	
        $matriz[3][11]='-N-';//VIGOR	
        $matriz[3][12]='-N-';//duras	
        $matriz[3][6]='-N-';//mecanico	
        $matriz[3][9]='-N-';//umidade	
        $matriz[3][3]='-N-';//percevejo	
	endif;
   
	//aqui prepara para salvar na rean1
	//CAPTURA A MODALIDADE ARQUIVADA
		$generica1=new tabelagenerica();
		$generica1->tabela="rean1";
		$generica1->campos_valores = array(
		    "rea_teste" => NULL,
		);
		$generica1->extras_select =" where rea_teste='TZO' and rea_ficha=".$amostraLong;
		$generica1->selecionaCampos($generica1);
		$registros=0;
		while ($resgenerica1 = $generica1->retornaDados()):
		    $registros++;
		endwhile;
		$vigor=$matriz[3][11];	
		$viabilidade=$matriz[3][10];
		$montagem="";	
        for($m=1;$m<=35;$m++):
		   $montagem=$montagem.$matriz[3][$m].'*';
        endfor;
		$generica1=new tabelagenerica();
        if($registros==0): 
		   $sqlt="insert into rean1 (rea_teste,rea_ficha,rea_v1,rea_v2,rea_campo100)";
	       $sqlt.="values('TZO','$amostraLong','$vigor','$viabilidade','$montagem')";
		   $generica1->grava_registro_com_retorno($sqlt); 
		else:  
		   echo("xxxxxxxxxxxxxxREGISTROS= $registros<br>");
           $sqlt="update rean1 set rea_v1='$vigor', rea_v2='$viabilidade', rea_campo100='$montagem' 
		   where rea_teste='TZO' and rea_ficha=".$amostraLong;
		   $generica1->grava_registro_com_retorno($sqlt); 
        endif;






	
    return ($matriz);
	
}//final captira tetrazolio soja#####################################


function padraoNacional2016($codEspecie,$categoria)
{
	//coloca - em todadas posicoes que nao tem nada
    for($i=1;$i<=10;$i++):
	   $vetorFinal[$i]="-";
	endfor;
	$sql="select * from padraonacional where pna_cod_especie=".$codEspecie."  and pna_categoria='".$categoria."'";
	$generica=new tabelagenerica();
	$generica->extras_select =$sql;
	$generica->selecionaCamposEspecial($generica);
	while ($resgenerica= $generica->retornaDados()):
	   $vetorFinal[1]=$resgenerica->pna_germinacao;
	   $vetorFinal[2]=$resgenerica->pna_pureza;
	   $vetorFinal[3]=$resgenerica->pna_tolerada;
	   $vetorFinal[4]=$resgenerica->pna_outras_espe;
	   $vetorFinal[5]=$resgenerica->pna_cultivares;
	   $vetorFinal[6]=$resgenerica->pna_silvestres;
	   $vetorFinal[7]=$resgenerica->pna_outras_sementes;
	   $vetorFinal[8]=$resgenerica->pna_det1;
	   $vetorFinal[9]=$resgenerica->pna_det2;
	   $vetorFinal[10]=$resgenerica->pna_det3;
	   $vetorFinal[11]=$resgenerica->pna_det4;
	   $vetorFinal[12]=$resgenerica->pna_det5;
	   $vetorFinal[13]=$resgenerica->pna_det6;
	   $vetorFinal[14]=$resgenerica->pna_det7;
	   $vetorFinal[15]=$resgenerica->pna_det8;
	   $vetorFinal[16]=$resgenerica->pna_det9;
	   $vetorFinal[17]=$resgenerica->pna_det10;
	   $vetorFinal[18]=$resgenerica->pna_det11;
	   $vetorFinal[19]=$resgenerica->pna_det12;
	   $vetorFinal[20]=$resgenerica->pna_det13;
	   $vetorFinal[21]=$resgenerica->pna_det14;
	   $vetorFinal[22]=$resgenerica->pna_det15;
	endwhile; 
    return $vetorFinal;
}//final do captura padroes nacional

function calculaTetrazolioSoja($amostraLong,$modalidadeArquivada)
{

    //aqui cria uma matriz com o resumo, que pode ser usda em varios locais
	//daqui ela sai com todas colunas e nos locais(realtorios posso suprimir eventualmente alguma linha
	//cria uma matriz colocando NA PRIMEIRA LINHA OS TITULOS
	//$sqlTetrazolio="select tet_repeticao from tetrazolio where (tet_repeticao='8' or tet_repeticao='9') and tet_amostra=".$amostraLong;
	//$campo="tet_repeticao";
	//verifica se  a modalidade é 2x50 ou 2x100
	//$modalidadeArquivada=achaCampoRegistro($sqlTetrazolio,'tet_repeticao');
	if($modalidadeArquivada=='7') $multiplicador=4;
	if($modalidadeArquivada=='8') $multiplicador=2;
	if($modalidadeArquivada=='9') $multiplicador=1;
    //echo("xxxxxxxxxxxxxxxdentro da clsse calculos multiplicador=$multiplicador<br>");
	
	$matriz[0][1]="P(1-8)";
	$matriz[0][2]="P(4-5)";
	$matriz[0][3]="P(6-8)";
	$matriz[0][4]="M(1-8)";
	$matriz[0][5]="M(4-5)";
	$matriz[0][6]="M(6-8)";
	$matriz[0][7]="U(1-8)";
	$matriz[0][8]="U(4-5)";
    $matriz[0][9]="U(6-8)";
    $matriz[0][10]="PG";
    $matriz[0][11]="Vigor";
    $matriz[0][12]="Dura";
    $matriz[0][13]="R3";
	$rotuloVerde='Embrion.';//so maikel sneider usa verdes, os demais usam embrionaria e def. genetica
	if($cliente=="SÃO FRANCISCO"):
	    $rotuloVerde="Verdes";//varia confome o cliente
	endif;	 
	$matriz[0][14]=$rotuloVerde;
    $matriz[0][15]="CI";
    $matriz[0][16]="CII";
    $matriz[0][17]="CIII";
    $matriz[0][18]="Maior dano";
    $matriz[0][19]="Sementes";
    $matriz[0][20]="S/dano";
    $matriz[0][21]="M2";
    $matriz[0][22]="U2";
    $matriz[0][23]="P2";
    $matriz[0][24]="M3";
    $matriz[0][25]="U3";
    $matriz[0][26]="P3";
    $matriz[0][27]="M4";
    $matriz[0][28]="U4";
    $matriz[0][29]="P4";
    $matriz[0][30]="M5";
    $matriz[0][31]="U5";
    $matriz[0][32]="P5";
    $matriz[0][33]="M(1-5)";//so a empresa 3 pinheiros usa isso
    $matriz[0][34]="U(1-5)";
    $matriz[0][35]="P(1-5)";
    $matriz[0][36]="Obs";


	$matriz[1][0]="REP I";
	$matriz[2][0]="Rep II";
	$matriz[3][0]="Média";



    //FAZ ESTE CALCULO DUAS VEZES UMA PARA CADA REPETIÇAO SENDO ESTA A PRIMEIRA VEZ pois aqui vai pegar a repeticao 1
$totalDeRegistros=0;
for($repe=1;$repe<=2;$repe++)
{
	$sqlTetrazolio="select tet_danos,tet_nivel from tetrazolio where tet_repeticao='".$repe."' && tet_amostra=".$amostraLong." order by tet_nivel";
	$resultado=mysql_query($sqlTetrazolio);
	 //echo $sqlFinal;
	$registros=mysql_num_rows($resultado);
    if($registros>0)$totalDeRegistros=$registros;//sao 2 repeticoes pego o valor acima de zero pois pode ser que eu so informe na repeticao 1 
	//ajusta conforme os registros as demais linhas
    $totalP=0;//vai contar cdada dano para saber qual o maior dano
    $totalU=0;
    $totalM=0;
    
	$somaP18=0;
	$somaM18=0;
	$somaU18=0;

	$somaP68=0;
	$somaM68=0;
	$somaU68=0;

	$somaP45=0;
	$somaM45=0;
	$somaU45=0;

	$somaClasse1=0;
	$somaClasse2=0;
	$somaClasse3=0;
	$somaClasse4=0;
	$somaClasse5=0;
	$somaClasse6=0;
	$somaClasse7=0;
	$somaClasse8=0;
	
	$somaM2=0;
	$somaU2=0;
	$somaP2=0;

	$somaM3=0;
	$somaU3=0;
	$somaP3=0;

	$somaM4=0;
	$somaU4=0;
	$somaP4=0;

	$somaM5=0;
	$somaU5=0;
	$somaP5=0;
	
	$somaM15=0;
	$somaU15=0;
	$somaP15=0;


	$somaDura=0;
	$somaR3=0;
	$somaVerde=0;
	$germinacao=100;//valor inicial
	$vigor=100;
	for($r=0;$r<$registros;$r++)  //faaz uma varredura nos registros vendo o que esta realmente gradao para cada nivel
	 {
		 $reg=mysql_fetch_row($resultado);
		 $danos= $reg[0];//tet_danos
		 $nivel= $reg[1];//tet_nivel
		 //examina cada dano. Se for dano maior ou igual a 6 diminui a germinação se for maior que 3 diminui vigor
	     $primeiro=substr($danos,0,1);
	     $segundo=substr($danos,1,1);
	     $terceiro=substr($danos,2,1);
         //vai achar o dano que mais aconteceu
		 if($primeiro=="P" || $segundo=="P" || $tereceiro=="P") $totalP++;
		 if($primeiro=="U" || $segundo=="U" || $tereceiro=="U") $totalU++;
		 if($primeiro=="M" || $segundo=="M" || $tereceiro=="M") $totalM++;
         //calcula as classes
         if($nivel==1)$somaClasse1++;  
         if($nivel==2)$somaClasse2++;  
         if($nivel==3)$somaClasse3++;  
         if($nivel==4)$somaClasse4++;  
         if($nivel==5)$somaClasse5++;  
         if($nivel==6)$somaClasse6++;  
         if($nivel==7)$somaClasse7++;  
         if($nivel==8)$somaClasse8++;  

        //calcula os danos nas faixas
	     if($primeiro=="P")$somaP18++;
         if($primeiro=="U")$somaU18++;
         if($primeiro=="M")$somaM18++;
         if($primeiro=="D"):
		     $somaDura++;
			 $nivel=1;
		     //$vigor=$vigor+$multiplicador;	 
	     endif;  		 
         if($primeiro=="V")$somaVerde++;
         if($primeiro=="R"):
		     $somaR3++;
			 $somaU18++;
		 endif;	 

         //calcula os danos SECUNDARIOS
	     if($segundo=="P"|| $terceiro=="P")$somaP18++;
         if($segundo=="M"|| $terceiro=="M")$somaM18++;
         if($segundo=="U"|| $terceiro=="U")$somaU18++;


         //calcula danos 4-5
         if($primeiro=="P" && $nivel>=4 && $nivel<=5)$somaP45++;
         if($primeiro=="U" && $nivel>=4 && $nivel<=5)$somaU45++;
         if($primeiro=="M" && $nivel>=4 && $nivel<=5)$somaM45++;
         //calcula danos 6-8
         if($primeiro=="P" && $nivel>=6)$somaP68++;
         if($primeiro=="U" && $nivel>=6)$somaU68++;
         if($primeiro=="M" && $nivel>=6)$somaM68++;
 
         if($nivel>=6)$germinacao=$germinacao-$multiplicador;
         if($nivel>=4)$vigor=$vigor-$multiplicador;
		 //soma so os m2
         if($primeiro=="M" && $nivel==2)$somaM2++;
         if($primeiro=="U" && $nivel==2)$somaU2++;
         if($primeiro=="P" && $nivel==2)$somaP2++;

         if($primeiro=="M" && $nivel==3)$somaM3++;
         if($primeiro=="U" && $nivel==3)$somaU3++;
         if($primeiro=="P" && $nivel==3)$somaP3++;

         if($primeiro=="M" && $nivel==4)$somaM4++;
         if($primeiro=="U" && $nivel==4)$somaU4++;
         if($primeiro=="P" && $nivel==4)$somaP4++;

         if($primeiro=="M" && $nivel==5)$somaM5++;
         if($primeiro=="U" && $nivel==5)$somaU5++;
         if($primeiro=="P" && $nivel==5)$somaP5++;

         //calcula danos 1-5
         if($primeiro=="M" && $nivel<=5 )$somaM15++;
         if($primeiro=="U" && $nivel<=5 )$somaU15++;
         if($primeiro=="P" && $nivel<=5 )$somaP15++;
	 
		 
	 
	 
		 //echo("somap18uuuuuu $somaP18");	
	 }//final do for dos danos de cada repeticao desta amostra
     //aqui incorpora as duras ao vigor
     //$vigor=$vigor+$somaDura;

	 
     //vaou colocar a grade finalizadora aqui antes de fazer o segundo laco das 2 repeticos	 
     $matriz[$repe][1]=$somaP18*$multiplicador;	
     $matriz[$repe][2]=$somaP45*$multiplicador;	
     $matriz[$repe][3]=$somaP68*$multiplicador;	
     $matriz[$repe][4]=$somaM18*$multiplicador;	
     $matriz[$repe][5]=$somaM45*$multiplicador;	
     $matriz[$repe][6]=$somaM68*$multiplicador;	
     $matriz[$repe][7]=$somaU18*$multiplicador;	
     $matriz[$repe][8]=$somaU45*$multiplicador;	
     $matriz[$repe][9]=$somaU68*$multiplicador;	
     //echo("multiplicador $multiplicador<br>");
	 		 
     $matriz[$repe][10]=$germinacao;	
     $matriz[$repe][11]=$vigor;	
     //$matriz[$repe][11]='xxx';	
     $matriz[$repe][12]=$somaDura*$multiplicador;	
     $matriz[$repe][13]=$somaR3*$multiplicador;	
     $matriz[$repe][14]=$somaVerde*$multiplicador;	
     //$matriz[$repe][15]=$somaClasse1*$multiplicador;	//sem dano ou classe 1 é obtido por diferenca
     $matriz[$repe][16]=$somaClasse2*$multiplicador;	
     $matriz[$repe][17]=$somaClasse3*$multiplicador;
	 //base momento pode ser 50 ou 100 //depende do numero de sementes
	 $baseMomento=50;
	 if($multiplicador==1)$baseMomento=100;
     $semDanos=	$baseMomento-$registros; 
	 if($repe==2)$semDanos=0;
	 //acha o maior DANO OU DMI(dano de maior incidencia)) se é P,U ou M
	 $maior=max($totalM,$totalU,$totalP);
	 if($maior==$totalM)$maximo="M".$maior;;
	 if($maior==$totalU)$maximo="U".$maior;
	 if($maior==$totalP)$maximo="P".$maior;
     $matriz[$repe][18]=$maximo;//maio dano ou dano mais importante	
     $matriz[$repe][19]=$registros;//preciso deste numero para viabilizar ou nao a emissao do laudo e da ficha
     $matriz[$repe][20]=$semDanos*$multiplicador;//sem danos ou seja nivel 1
     $matriz[$repe][15]=$semDanos*$multiplicador;//sem danos ou seja nivel 1 ou classe I
     $matriz[$repe][21]=$somaM2*$multiplicador;	
     $matriz[$repe][22]=$somaU2*$multiplicador;	
     $matriz[$repe][23]=$somaP2*$multiplicador;	
     $matriz[$repe][24]=$somaM3*$multiplicador;	
     $matriz[$repe][25]=$somaU3*$multiplicador;	
     $matriz[$repe][26]=$somaP3*$multiplicador;	
     $matriz[$repe][27]=$somaM4*$multiplicador;	
     $matriz[$repe][28]=$somaU4*$multiplicador;	
     $matriz[$repe][29]=$somaP4*$multiplicador;	
     $matriz[$repe][30]=$somaM5*$multiplicador;	
     $matriz[$repe][31]=$somaU5*$multiplicador;	
     $matriz[$repe][32]=$somaP5*$multiplicador;	
     $matriz[$repe][33]=$somaM15*$multiplicador;	
     $matriz[$repe][34]=$somaU15*$multiplicador;	
     $matriz[$repe][35]=$somaP15*$multiplicador;	
	 
	//aqui vai criar o valor concatenado para depois salvar em rea_campo60a   e rea_campo60b
	 //     list($m2,$m3,$m4,$m5,$m6,$km,$u2,$u3,$u4,$u5,$u6,$ku,$p2,$p3,$p4,$p5,$p6,$kp,$c2,$c3,$c4,$c5,$c6,$kk,$duras,$r3,$imi,$lat,$verde)=explode("*",$explosao);
         //$m2=$somaM2;
		 $Am2=$somaM2*$multiplicador;;
		 $Am3=$somaM3*$multiplicador;;
		 $Am4=$somaM4*$multiplicador;;
		 $Am5=$somaM5*$multiplicador;;
		 $Am6=$somaM68*$multiplicador;;
		 $Akm=$somaM68*$multiplicador;;

         $Ap2=$somaP2;
		 $Ap3=$somaP3;
		 $Ap4=$somaP4;
		 $Ap5=$somaP5;
		 $Ap6=$somaP68;
		 $Akp=$somaP68;
		 
		 $Au2=$somaU2;
		 $Au3=$somaU3;
		 $Au4=$somaU4;
		 $Au5=$somaU5;
		 $Au6=$somaU68;
		 $Aku=$somaU68;
 
         $Aduras=$somaDura;
         $Averde=$somaVerde;
         $Ar3=$somaR3;

         $Ac2=$somaClasse2;//danos na classe2
         $Ac3=$somaClasse3;//danos na classe3
         $Ac4=$somaClasse4;//danos na classe4
         $Ac5=$somaClasse5;//danos na classe5
         $Ac6=$somaClasse6;//danos na classe6
		 
		 
		 
	     if($repe==1):
		    $explodidoA=             $Am2.'*'. $Am3.'*'. $Am4.'*'. $Am5.'*'. $Am6."*". $Akm."*";       
            $explodidoA=$explodidoA. $Au2.'*'. $Au3.'*'. $Au4.'*'. $Au5.'*'. $Au6."*". $Aku."*";  
	        $explodidoA=$explodidoA. $Ap2.'*'. $Ap3.'*'. $Ap4.'*'. $Ap5.'*'. $Ap6."*". $Akp."*";         
            $explodidoA=$explodidoA. $Ac2.'*'. $Ac3.'*'. $Ac4.'*'. $Ac5.'*'. $Ac6."*". $Akk."*";  //na classe     
            $explodidoA=$explodidoA. $Aduras.'*'. $Ar3.'*'. $Aimi.'*'. $Alat.'*'. $Averde."*";       
         else:
		    $explodidoB=             $Am2.'*'. $Am3.'*'. $Am4.'*'. $Am5.'*'. $Am6."*". $Akm."*";       
            $explodidoB=$explodidoB. $Au2.'*'. $Au3.'*'. $Au4.'*'. $Au5.'*'. $Au6."*". $Aku."*";  
	        $explodidoB=$explodidoB. $Ap2.'*'. $Ap3.'*'. $Ap4.'*'. $Ap5.'*'. $Ap6."*". $Akp."*";         
            $explodidoB=$explodidoB. $Ac2.'*'. $Ac3.'*'. $Ac4.'*'. $Ac5.'*'. $Ac6."*". $Akk."*";   //na classe    
            $explodidoB=$explodidoB. $Aduras.'*'. $Ar3.'*'. $Aimi.'*'. $Alat.'*'. $Averde."*";       
		 endif;    


	
	
	
	
	 
	 
	 
}//final do for das 2 repeticoes
	 
	 //CRIA A LINHA FINAL OU SEJA A MEDIA
	 for($j=1;$j<=36;$j++)
	 {
         $soma=$matriz[2][$j]+ $matriz[1][$j];
         $matriz[3][$j]=ceil($soma/2);	 
	 }
	//MAIOR DANO SITUACAO ESPECIAL ACHA O QUE DEU EM CADA REPETICAO 
	//PODE TER DADO P4 P14 M5  M13 ETC 
	$zidaneMaiorRep1=$matriz[1][18];//PODE TER DADO P4 P14 M5  M13 ETC 
	$zidaneMaiorRep2=$matriz[2][18];//PODE TER DADO P4 P14 M5  M13 ETC 
    $quantidade1=substr($zidaneMaiorRep1,1);//pega tudo que vem depois da letra
    $quantidade2=substr($zidaneMaiorRep2,1);//pega tudo que vem depois da letra
    if($quantidade1>=$quantidade2):
       $letraDanoMaior=	substr($zidaneMaiorRep1,0,1);
	else:
       $letraDanoMaior=	substr($zidaneMaiorRep2,0,1);
	endif; 
    if($letraDanoMaior=="M")  $matriz[3][18]="Mecanico";
    if($letraDanoMaior=="U")  $matriz[3][18]="Umidade";
    if($letraDanoMaior=="P")  $matriz[3][18]="Percevejo";
    //se nao foi feito o teste entao coloca valor deful 
	
	if($totalDeRegistros==0):
        $matriz[3][10]='-N-';//PG	
        $matriz[3][11]='-N-';//VIGOR	
        $matriz[3][12]='-N-';//duras	
        $matriz[3][6]='-N-';//mecanico	
        $matriz[3][9]='-N-';//umidade	
        $matriz[3][3]='-N-';//percevejo	
	endif;
   
	//aqui prepara para salvar na rean1
	//CAPTURA A MODALIDADE ARQUIVADA
		$generica1=new tabelagenerica();
		$generica1->tabela="rean1";
		$generica1->campos_valores = array(
		    "rea_teste" => NULL,
		);
		$generica1->extras_select =" where rea_teste='TZO' and rea_ficha=".$amostraLong;
		$generica1->selecionaCampos($generica1);
		$registros=0;
		while ($resgenerica1 = $generica1->retornaDados()):
		    $registros++;
		endwhile;
		$vigor=$matriz[3][11];	
		$viabilidade=$matriz[3][10];
		$montagem="";	
        for($m=1;$m<=35;$m++):
		   $montagem=$montagem.$matriz[3][$m].'*';
        endfor;
		$generica1=new tabelagenerica();
        if($registros==0): 
		   $sqlt="insert into rean1 (rea_teste,rea_ficha,rea_v1,rea_v2,rea_campo100,rea_campo60a,rea_campo60b,rea_lei4)";
	       $sqlt.="values('TZO','$amostraLong','$vigor','$viabilidade','$montagem','$explodidoA','$explodidoB','TZ1')";
		   $generica1->grava_registro_com_retorno($sqlt); 
		else:  
		   //echo("xxxxxxxxxxxxxxREGISTROS= $registros<br>");
           $sqlt="update rean1 set rea_v1='$vigor', rea_v2='$viabilidade', rea_campo100='$montagem' , rea_campo60a='$explodidoA' , rea_lei4='TZ1' , rea_campo60b='$explodidoB'
		   where rea_teste='TZO' and rea_ficha=".$amostraLong;
		   $generica1->grava_registro_com_retorno($sqlt); 
        endif;

	
    return ($matriz);
	
}//final captira tetrazolio soja#####################################


function capturaNormas($nomeTipoFinal,$nomeModelo,$idLabo)
{
		 //ENTRA DE QUAKQUER MANEIRA
	     //verifica se existe registro para aquela combinacao de tipo e modelo
	     $generica=new tabelagenerica();
	     $generica->tabela="norma_qualidade";
		 $generica->extras_select =" where nor_labo=".$idLabo." and nor_tipo='".$nomeTipoFinal."' and nor_modelo='".$nomeModelo."'";
		 $generica->campos_valores = array(
			"nor_id" => NULL,
			"nor_formulario" => NULL,
			"nor_emissao" => NULL,
			"nor_revisao" => NULL,
			);
	     $generica->selecionaCampos($generica);
	     $norID=0;
		 while ($resgenerica = $generica->retornaDados()):
			$norID =$resgenerica->nor_id;
			$formulario =$resgenerica->nor_formulario;
			$emissao =$resgenerica->nor_emissao;
			$revisao =$resgenerica->nor_revisao;
		 endwhile;
         $vetor[1]=	$formulario;	 
         $vetor[2]=	$emissao;	 
         $vetor[3]=	$revisao;	 
         $vetor[4]=	$norID;
		 return $vetor;	 
}

function leMatrizQuimica($amostraLong)
{
	 	$generica=new tabelagenerica();
		$generica->tabela="quimica";
		$generica->campos_valores = array(

				"qui_n_ponto" => NULL,
				"qui_k_ponto" => NULL,
				"qui_p_ponto" => NULL,
				"qui_ca_ponto" => NULL,
				"qui_mg_ponto" => NULL,
				"qui_s_ponto" => NULL,
				"qui_b_ponto" => NULL,
				"qui_cu_ponto" => NULL,
				"qui_fe_ponto" => NULL,
				"qui_mn_ponto" => NULL,
				"qui_zn_ponto" => NULL,
				"qui_na_ponto" => NULL,
				"qui_mo_ponto" => NULL,
				"qui_grupo" => NULL,

			);
		$generica->extras_select =" where  qui_amostra_id=" . $amostraLong;
	    $generica->selecionaCampos($generica);
        $contador=0; 
    	while ($resgenerica = $generica->retornaDados()):
			$contador++;
			$matriz[1][1]=$resgenerica->qui_n_ponto;
			$matriz[1][2]=$resgenerica->qui_k_ponto;
			$matriz[1][3]=$resgenerica->qui_p_ponto;
			$matriz[1][4]=$resgenerica->qui_ca_ponto;
			$matriz[1][5]=$resgenerica->qui_mg_ponto;
			$matriz[1][6]=$resgenerica->qui_s_ponto;
			$matriz[1][7]=$resgenerica->qui_b_ponto;
			$matriz[1][8]=$resgenerica->qui_cu_ponto;
			$matriz[1][9]=$resgenerica->qui_fe_ponto;
			$matriz[1][10]=$resgenerica->qui_mn_ponto;
			$matriz[1][11]=$resgenerica->qui_zn_ponto;
			$matriz[1][12]=$resgenerica->qui_na_ponto;
			$matriz[1][13]=$resgenerica->qui_mo_ponto;
			$matriz[1][14]=$resgenerica->qui_grupo;
	    endwhile;
        return $matriz;	
}



//esta matriz por enquanto sera fixa pois ela foi calculada em excel e serve para as atuais amostras
//se precisar no futuro lanca outra ou cria-se modulo para criar uma nova com base
//nas amostras que tem tz acima de 75%


function matrizQuimicaComparacao()
{
     
	$matrizQuimica[0][1]='Mínimo';//minimo
	$matrizQuimica[0][2]='Q1_1';//
	$matrizQuimica[0][3]='Mediana_1';
	$matrizQuimica[0][4]='Q3_1';//
	$matrizQuimica[0][5]='Máximo';//



	$matrizQuimica[1][0]="NITROGENIO";
	$matrizQuimica[1][1]=3.9325;//minimo
	$matrizQuimica[1][2]=8.38362;//q1_1
	$matrizQuimica[1][3]=9.6174;//mediana
	$matrizQuimica[1][4]=10.81789;//q3
	$matrizQuimica[1][5]=15.26;//q3

	$matrizQuimica[2][0]="POTASSIO";
	$matrizQuimica[2][1]=0.77625;//minimo
	$matrizQuimica[2][2]=2.522658;//q1_1
	$matrizQuimica[2][3]=2.88;//mediana
	$matrizQuimica[2][4]=3.247357;//q3
	$matrizQuimica[2][5]=6.075;//q3


	$matrizQuimica[3][0]="FOSFORO";
	$matrizQuimica[3][1]=0.05474;//minimo
	$matrizQuimica[3][2]=0.582882;//q1_1
	$matrizQuimica[3][3]=0.67018225;//mediana
	$matrizQuimica[3][4]=0.76943;//q3
	$matrizQuimica[3][5]=1.51308;//q3

	$matrizQuimica[4][0]="CALCIO";
	$matrizQuimica[4][1]=0.07;//minimo
	$matrizQuimica[4][2]=0.294844375;//q1_1
	$matrizQuimica[4][3]=0.36591625;//mediana
	$matrizQuimica[4][4]=0.4528125;//q3
	$matrizQuimica[4][5]=3.804625;//q3

	$matrizQuimica[5][0]="MAGNESIO";
	$matrizQuimica[5][1]=0.10695;//minimo
	$matrizQuimica[5][2]=0.315;//q1_1
	$matrizQuimica[5][3]=0.368437;//mediana
	$matrizQuimica[5][4]=0.4232495;//q3
	$matrizQuimica[5][5]=0.7614;//q3

	$matrizQuimica[6][0]="ENXOFRE";
	$matrizQuimica[6][1]=0.0333735;//minimo
	$matrizQuimica[6][2]=0.3096;//q1_1
	$matrizQuimica[6][3]=0.37104765;//mediana
	$matrizQuimica[6][4]=0.430887;//q3
	$matrizQuimica[6][5]=1.1358;//q3

	$matrizQuimica[7][0]="BORO";
	$matrizQuimica[7][1]=0.7007732;//minimo
	$matrizQuimica[7][2]=3.438385;//q1_1
	$matrizQuimica[7][3]=4.16504;//mediana
	$matrizQuimica[7][4]=5.1380275;//q3
	$matrizQuimica[7][5]=12.3732;//q3

	$matrizQuimica[8][0]="COBRE";
	$matrizQuimica[8][1]=0.07;//minimo
	$matrizQuimica[8][2]=2.522658;//q1_1
	$matrizQuimica[8][3]=1.917;//mediana
	$matrizQuimica[8][4]=2.433765;//q3
	$matrizQuimica[8][5]=14.4;//q3

	$matrizQuimica[9][0]="FERRO";
	$matrizQuimica[9][1]=4.0936;//minimo
	$matrizQuimica[9][2]=10.6959375;//q1_1
	$matrizQuimica[9][3]=13.500597;//mediana
	$matrizQuimica[9][4]=16.8116109;//q3
	$matrizQuimica[9][5]=54;//q3

	$matrizQuimica[10][0]="MANGANES";
	$matrizQuimica[10][1]=0.57876;//minimo
	$matrizQuimica[10][2]=3.3449375;//q1_1
	$matrizQuimica[10][3]=4.1901;//mediana
	$matrizQuimica[10][4]=5.3886;//q3
	$matrizQuimica[10][5]=25.52;//q3

	$matrizQuimica[11][0]="ZINCO";
	$matrizQuimica[11][1]=0.84186;//minimo
	$matrizQuimica[11][2]=5.14809;//q1_1
	$matrizQuimica[11][3]=6.183505;//mediana
	$matrizQuimica[11][4]=7.71290625;//q3
	$matrizQuimica[11][5]=36.261;//q3

	$matrizQuimica[12][0]="SODIO";
	$matrizQuimica[12][1]=0.066325;//minimo
	$matrizQuimica[12][2]=3.0050725;//q1_1
	$matrizQuimica[12][3]=4.316;//mediana
	$matrizQuimica[12][4]=6.32825;//q3
	$matrizQuimica[12][5]=36.6301;//q3

	$matrizQuimica[13][0]="MOLIBDENIO";
	$matrizQuimica[13][1]=0.01392;//minimo
	$matrizQuimica[13][2]=0.132251225;//q1_1
	$matrizQuimica[13][3]=0.25881;//mediana
	$matrizQuimica[13][4]=0.5162175;//q3
	$matrizQuimica[13][5]=29.214;//q3



    return $matrizQuimica;	

}


function calculaMediaGrupoxxxxxx($grupo)
{
	 	$generica=new tabelagenerica();
		$generica->tabela="quimica";
		$generica->campos_valores = array(

				"qui_n_ponto" => NULL,
				"qui_k_ponto" => NULL,
				"qui_p_ponto" => NULL,
				"qui_ca_ponto" => NULL,
				"qui_mg_ponto" => NULL,
				"qui_s_ponto" => NULL,
				"qui_b_ponto" => NULL,
				"qui_cu_ponto" => NULL,
				"qui_fe_ponto" => NULL,
				"qui_mn_ponto" => NULL,
				"qui_zn_ponto" => NULL,
				"qui_na_ponto" => NULL,
				"qui_mo_ponto" => NULL,
				"qui_grupo" => NULL,
			);
		$generica->extras_select =" where  qui_grupo='" . $grupo."'";
	    $generica->selecionaCampos($generica);
        $contador=0; 
        //PEGA O VALOR MENOR PARA FORMAR O Q1 JOGANDO-O NA MATRIZ INDICE 2'
        for($i=1;$i<=13;$i++):
			$matriz[2][$i]=1000;
		endfor; 
        //PEGA O VALOR MAIOR PARA FORMAR O Q3 JOGANDO-O NA MATRIZ INDICE 3'
        for($i=1;$i<=13;$i++):
			$matriz[3][$i]=0;
		endfor; 


    	while ($resgenerica = $generica->retornaDados()):
			$contador++;
			$leituraN=$resgenerica->qui_n_ponto;
			$leituraK=$resgenerica->qui_k_ponto;
			$leituraP=$resgenerica->qui_p_ponto;
			$leituraCA=$resgenerica->qui_ca_ponto;
			$leituraMG=$resgenerica->qui_mg_ponto;
			$leituraS=$resgenerica->qui_s_ponto;
			$leituraB=$resgenerica->qui_b_ponto;
			$leituraCU=$resgenerica->qui_cu_ponto;
			$leituraFE=$resgenerica->qui_fe_ponto;
			$leituraMN=$resgenerica->qui_mn_ponto;
			$leituraZN=$resgenerica->qui_zn_ponto;
			$leituraNA=$resgenerica->qui_na_ponto;
			$leituraMO=$resgenerica->qui_mo_ponto;
			
			
            //ACUMULA PAR DEPOIS OBTER A MEDIA    			
			$matriz[1][1]+=$leituraN;
			$matriz[1][2]+=$leituraK;
			$matriz[1][3]+=$leituraP;
			$matriz[1][4]+=$leituraCA;
			$matriz[1][5]+=$leituraMG;
			$matriz[1][6]+=$leituraS;
			$matriz[1][7]+=$leituraB;
			$matriz[1][8]+=$leituraCU;
			$matriz[1][9]+=$leituraFE;
			$matriz[1][10]+=$leituraMN;
			$matriz[1][11]+=$leituraZN;
			$matriz[1][12]+=$leituraNA;
			$matriz[1][13]+=$leituraMO;

            //examina se o valor da leitura é MENOR e se for coloca na linha 2 da matriz   
            if($leituraN<$matriz[2][1])$matriz[2][1]=$leituraN;//para cada nutriente
            if($leituraK<$matriz[2][2])$matriz[2][2]=$leituraK;//para cada nutriente
            if($leituraP<$matriz[2][3])$matriz[2][3]=$leituraP;//para cada nutriente
            if($leituraCA<$matriz[2][4])$matriz[2][4]=$leituraCA;//para cada nutriente
            if($leituraMG<$matriz[2][5])$matriz[2][5]=$leituraMG;//para cada nutriente
            if($leituraS<$matriz[2][6])$matriz[2][6]=$leituraS;//para cada nutriente
            if($leituraB<$matriz[2][7])$matriz[2][7]=$leituraB;//para cada nutriente
            if($leituraCU<$matriz[2][8])$matriz[2][8]=$leituraCU;//para cada nutriente
            if($leituraFE<$matriz[2][9])$matriz[2][9]=$leituraFE;//para cada nutriente
            if($leituraMN<$matriz[2][10])$matriz[2][10]=$leituraMN;//para cada nutriente
            if($leituraZN<$matriz[2][11])$matriz[2][11]=$leituraZN;//para cada nutriente
            if($leituraNA<$matriz[2][12])$matriz[2][12]=$leituraNA;//para cada nutriente
            if($leituraMO<$matriz[2][13])$matriz[2][13]=$leituraMO;//para cada nutriente

            //examina se o valor da leitura é MAIOR e se for coloca na linha 3 da matriz   
            if($leituraN>$matriz[3][1])$matriz[3][1]=$leituraN;//para cada nutriente
            if($leituraK>$matriz[3][2])$matriz[3][2]=$leituraK;//para cada nutriente
            if($leituraP>$matriz[3][3])$matriz[3][3]=$leituraP;//para cada nutriente
            if($leituraCA>$matriz[3][4])$matriz[3][4]=$leituraCA;//para cada nutriente
            if($leituraMG>$matriz[3][5])$matriz[3][5]=$leituraMG;//para cada nutriente
            if($leituraS>$matriz[3][6])$matriz[3][6]=$leituraS;//para cada nutriente
            if($leituraB>$matriz[3][7])$matriz[3][7]=$leituraB;//para cada nutriente
            if($leituraCU>$matriz[3][8])$matriz[3][8]=$leituraCU;//para cada nutriente
            if($leituraFE>$matriz[3][9])$matriz[3][9]=$leituraFE;//para cada nutriente
            if($leituraMN>$matriz[3][10])$matriz[3][10]=$leituraMN;//para cada nutriente
            if($leituraZN>$matriz[3][11])$matriz[3][11]=$leituraZN;//para cada nutriente
            if($leituraNA>$matriz[3][12])$matriz[3][12]=$leituraNA;//para cada nutriente
            if($leituraMO>$matriz[3][13])$matriz[3][13]=$leituraMO;//para cada nutriente


	    endwhile;
        //calcula as medias
		if($contador==0)$contador=1;
        for($i=1;$i<=13;$i++):  
           $valor=$matriz[1][$i]/$contador;
		   $matriz[1][$i]=number_format($valor,3,'.',',');
        endfor;
        $matriz[1][$i]=$matriz[1][14]=$contador;
        //resumo desta matriz
		//na primeira linha estara a mediana, na segunda linha o valor menor e na terceira linha o valor maior

        return $matriz;	
}



//acha todos contaminantes do cocumento e coloca num vetor pronto para impressao
function acharContaminantesDocumento($idDoc)
{
	$sessao = new sessao();
	$cliente=$sessao->getVar('cliente');
   
    //vai percorrer todas amostras, para capturar todos contaminantes
	//captura o numero de registros e as id das amostras atraves da leitura da tabela documentosponte amarrada com a id do documento
	//ENTRA DE QUAKQUER MANEIRA
	//echo("3xxxxxxxxxxxxxxidDocumento= $idDoc<br>");
	$genericaExterna=new tabelagenerica();
	$genericaExterna->tabela="documentosponte";
	$genericaExterna->campos_valores = array(
			"dpo_amostra_vinculada" => NULL,
		);
	$genericaExterna->extras_select =" where  dpo_documento_autonumerador=".$idDoc." order by dpo_amostra_vinculada LIMIT 4";
	//echo("eeeeexxxxxxxxxxxxxxxxxxxxxxxxxxeeeeeeerro $generica->extras_select <br>");
	$genericaExterna->selecionaCampos($genericaExterna);
	$contaAmostras=0;
	$indiceVetorNomesContaminantes=0;
	while ($resgenericaExterna= $genericaExterna->retornaDados()):
	    $contaAmostras++;
		//$vetorDPO[$contaAmostras]=$resgenerica->dpo_amostra_vinculada;
		$amostraLong=$resgenericaExterna->dpo_amostra_vinculada;
		$vetorAmostraBruto=$this->capturaGeralAmostra($amostraLong);
		$numeroAmostra=$vetorAmostraBruto[25];	
	    $somaOE=$vetorAmostraBruto[7];//deixar isso aqui para poder entender o que tem logo abaixo
	    $somaSI=$vetorAmostraBruto[8];//
	    $somaTO=$vetorAmostraBruto[9];//
	    $somaPR=$vetorAmostraBruto[10];//		
	    $somaPQ=$vetorAmostraBruto[106];//		
        if($somaOE>0 || $somaSI>0 ||$somaTO>0 ||$somaPR>0 ||$somaPQ>0):
	    	$indiceVetorNomesContaminantes++;
			$conteudoBasico="Amostra Nº ".$vetorAmostraBruto[1]." : ";
			$vetorContaminantes[$indiceVetorNomesContaminantes]=$conteudoBasico;	 
        endif;

        for($tipo=7;$tipo<=10;$tipo++):
		   if($vetorAmostraBruto[$tipo]>0):
		     $contaminanteAcumulado="";
        	 $indiceVetorNomesContaminantes++;
             $vetorContaminantes[$indiceVetorNomesContaminantes]="";
		     if($tipo==7)$codigo='1OES';
		     if($tipo==8)$codigo='2SIL';
		     if($tipo==9)$codigo='3NOT';
		     if($tipo==10)$codigo='4NOP';
		     //if($tipo==14)$codigo='5FRA';
			 //ENTRA DE QUAKQUER MANEIRA
		     $generica=new tabelagenerica();
	         $generica->tabela="contaminantes,invasoras";
			 $generica->campos_valores = array(
					"inv_qtd" => NULL,
					"con_nome_cientifico" => NULL,
					"inv_codigo" => NULL,
					
				);
             //cria um vetorzinho das reduzidas  5FRA
		     $generica->extras_select =" where con_id=inv_cod_praga && inv_codigo='5FRA' && inv_amostra=".$amostraLong;
		     $generica->selecionaCampos($generica);
			 $linhasNaReduzida=0;
		     while ($resgenerica = $generica->retornaDados()):
		         $linhasNaReduzida++;
		    	 $vetorReduzida[$linhasNaReduzida][0]=$resgenerica->con_nome_cientifico;//armazena nome
		    	 $vetorReduzida[$linhasNaReduzida][1]=$resgenerica->inv_qtd;//armazena quantidade
				 $saoTome=$linhasNaReduzida;
			 endwhile;//LE O QUE TEM DE CADA CONTAMINANTE

             //FIM DA CAPTURA DO VETORZINHO DAS TOLERADAS NA REDUZIDA
			 
			 
			 //ENTRA DE QUAKQUER MANEIRA
		     $generica=new tabelagenerica();
	         $generica->tabela="contaminantes,invasoras";
			 $generica->campos_valores = array(
					"inv_qtd" => NULL,
					"con_nome_cientifico" => NULL,
					"inv_codigo" => NULL,
					
				);
		     $generica->extras_select =" where con_id=inv_cod_praga && inv_codigo='".$codigo."' && inv_amostra=".$amostraLong;
		     $generica->selecionaCampos($generica);
			 $colunaConceito="";
			 if(substr($cliente,0,8)=='CONCEITO' || substr($cliente,0,8)=='LAS CONC'):
			     if($tipo==7)$colunaConceito='5)';//oesp
			     if($tipo==8)$colunaConceito='4)';//sil
			     if($tipo==9)$colunaConceito='6)';//tol
			     if($tipo==10)$colunaConceito='7)';//pro
			 endif;
			 
		     while ($resgenerica = $generica->retornaDados()):
		         $conteudo="";	 
                 $nomeCompleta=$resgenerica->con_nome_cientifico;
                 $codigo=$resgenerica->inv_codigo;
                 $quantidadeCompleta=$resgenerica->inv_qtd;
                 $montagem=	"(".$quantidade.")";			 
		    	 $conteudo=$nomeCompleta."(".$quantidadeCompleta.")";
                 //agora vai percorrer o vetor se for nociva 3NOT  OU 4NOP				 
				 //vai pegar os nomes das nocivas completas e comparar com o vetor  se achar vai fazer a
				 //conta ou seja quantidade - quantidade reduzida  exemlo Bidens pilos(4)+(1)  neste caso completa seria 5
				 $quantidadeSegundoMembroEquacao=0;

				 if($codigo=="3NOT" || $codigo=="4NOP"):
				   if($linhasNaReduzida>0):
				      //isso aqui so executa se tem alguma coisa 
				      for($redu=1;$redu<=$linhasNaReduzida;$redu++):
                         if($nomeCompleta==$vetorReduzida[$redu][0])://retorna o nome
                           $quantidadePrimeiroMembroEquacao=$vetorReduzida[$redu][1];//retorna quantidade

                           $quantidadeSegundoMembroEquacao=$quantidadeCompleta-$vetorReduzida[$redu][1];	
						 endif;				   
                      endfor;
				   else://caso nao tenha entrado com fracao pureza ou seja fracao reduzida	caso conceito 260621  
                     $quantidadePrimeiroMembroEquacao= $quantidadeCompleta;  					  
				   endif;
				   //$quantidadePrimeiroMembroEquacao=$quantidadeCompleta;//funciona	
				   //$quantidadePrimeiroMembroEquacao=$saoTome;//funciona????	
 
				   
				   //$quantidadeSegundoMembroEquacao=3;
				   //$conteudo=$nomeCompleta."(".$quantidadePrimeiroMembroEquacao.")+(".$quantidadeSegundoMembroEquacao.")";
				   $conteudo=$nomeCompleta."(".$quantidadeCompleta.")";
				   
				   
                 endif;//fm do teste se é nociva	
				 
				 			 
	 			 $contaminanteAcumulado=$contaminanteAcumulado.$conteudo;
			     //SE O CONTEUDO ACUMULADO FOR MAIOR QUE 70 ELE CRIA UMA LINHA SO COM O CONTEUDO
				 if(strlen($contaminanteAcumulado)>80):
					 $indiceVetorNomesContaminantes++;
					 $contaminanteAcumulado=$conteudo;
				 endif;
                 $vetorReduzida=array();//aqui limpa o array 
 				 $vetorContaminantes[$indiceVetorNomesContaminantes]=$colunaConceito.$contaminanteAcumulado;	 
			 endwhile;//LE O QUE TEM DE CADA CONTAMINANTE
		  endif;//TESTA O TIPO DE CONTAMINANTE
       endfor;//VARRE OS 4 TIPOS DE COMTANTIMANTES	
    endwhile;//LOOP EXTERNO QUE PEGA TODAS AMOSTRAS DO DOCUMENTO	
    $indiceVetorNomesContaminantes++;
 	$vetorContaminantes[$indiceVetorNomesContaminantes]="-O-O-O-O-O-O-O-O-O-O-O-O-";	 
	return $vetorContaminantes;
}//final da funcao contaminantes do documento

//FUNCAO QUE VERIFICA SE A AMOSTRA ESTA NUM BOLETIM PARA NAO INSERIR EM 2 BOLETIM
function capturaBoletim($amostraLong)
{
	$genericaDoc=new tabelagenerica();
	$genericaDoc->tabela="documentosponte,documentos";
	$genericaDoc->campos_valores = array(
		   "doc_numero" => NULL,
	);
	$genericaDoc->extras_select =" where doc_tipo='Boletim' and dpo_documento_autonumerador=doc_id &&  dpo_amostra_vinculada=".$amostraLong;
	$genericaDoc->selecionaCampos($genericaDoc);
	$numeroDoc="";//se tem mais de um doc ele pega todos
	while ($resgenericaDoc= $genericaDoc->retornaDados()):
        $numeroDoc=$resgenericaDoc->doc_numero;
	endwhile;
    return $numeroDoc;						
}   

//FUNCAO QUE VERIFICA SE A AMOSTRA ESTA NUM BOLETIM PARA NAO INSERIR EM 2 BOLETIM
//funcao feita para nao inserir uma amostra num segundo documento seja de que tipo for(dimicron 241022)
function capturaDocumento($amostraLong)
{
	$genericaDoc=new tabelagenerica();
	$genericaDoc->tabela="documentosponte,documentos";
	$genericaDoc->campos_valores = array(
		   "doc_numero" => NULL,
	);
	$genericaDoc->extras_select =" where  dpo_documento_autonumerador=doc_id &&  dpo_amostra_vinculada=".$amostraLong;
	$genericaDoc->selecionaCampos($genericaDoc);
	$numeroDoc="";//se tem mais de um doc ele pega todos
	while ($resgenericaDoc= $genericaDoc->retornaDados()):
        $numeroDoc=$resgenericaDoc->doc_numero;
	endwhile;
    return $numeroDoc;						
}   





function  calculaTamanhoMM($parte)
{
	$tama=strlen($parte);
    $medidaCerta=0; 
	$larguraDeful=1.20;	//serve para a maioris das letras  a,b,d,e,g,h,n,o,p,q,u,
	for($posi=1;$posi<=$tama;$posi++):
        $larguraAtomica=$larguraDeful;//valor deful
	    $stringAtomica=substr($texto,$posi,1);
		if(strtolower($stringAtomica)=="c")$larguraAtomica=$larguraDeful*0.8;
		if(strtolower($stringAtomica)=="f")$larguraAtomica=$larguraDeful*0.7;
		if(strtolower($stringAtomica)=="i")$larguraAtomica=$larguraDeful*0.4;
		if(strtolower($stringAtomica)=="j")$larguraAtomica=$larguraDeful*0.7;
		if(strtolower($stringAtomica)=="k")$larguraAtomica=$larguraDeful*0.8;
		if(strtolower($stringAtomica)=="l")$larguraAtomica=$larguraDeful*0.4;
		if(strtolower($stringAtomica)=="m")$larguraAtomica=$larguraDeful*1.6;
		if(strtolower($stringAtomica)=="r")$larguraAtomica=$larguraDeful*0.7;
		if(strtolower($stringAtomica)=="s")$larguraAtomica=$larguraDeful*0.9;
		if(strtolower($stringAtomica)=="t")$larguraAtomica=$larguraDeful*0.6;
		if(strtolower($stringAtomica)=="v")$larguraAtomica=$larguraDeful*0.9;
		if(strtolower($stringAtomica)=="x")$larguraAtomica=$larguraDeful*0.9;
		if(strtolower($stringAtomica)=="z")$larguraAtomica=$larguraDeful*0.85;
     	$medidaCerta+=$larguraAtomica;	
     endfor;
	return $medidaCerta;
}

function  reutilizaCampos($nomeTeste,$amostraLong)
{
	$rean = new rean1();
	$rean->extras_select =" where  rea_teste='".$nomeTeste."' and rea_boletim='S'    AND rea_ficha=".$amostraLong ;
	$rean->selecionaTudo($rean);
	while ($resRean = $rean->retornaDados()):
		$substratoSalvado=$resRean->rea_campo60b;//substrato
    endwhile;
	//no inicio ate { ou nada sera substrato
	//vou capturar entre chaves sera balanca
	//vou capturar entre colchete sera lote
	//vou capturar entre <  e >  sera peagametro
	$tama=strlen($substratoSalvado);
	$caso=0;
	$substrato='';
	$balancaSub='';
	$loteSub='';
	$peagaSub='';
	for($s=0;$s<=$tama;$s++):
	   $atomica=substr($substratoSalvado,$s,1);
	   if($atomica=='{'):
	      $caso=1;
	   endif;	  
	   if($atomica=='['):
	      $caso=2;
	   endif;	  
	   if($atomica=='<'):
	      $caso=3;
	   endif;
	   if($atomica!="{" && $atomica!="}" && $atomica!="[" && $atomica!="]" && $atomica!="<" && $atomica!=">"):	  
		   if($caso==0)$substrato=$substrato.$atomica;
		   if($caso==1)$balancaSub=$balancaSub.$atomica;
		   if($caso==2)$loteSub=$loteSub.$atomica;
		   if($caso==3)$peagaSub=$peagaSub.$atomica;
       endif;
    endfor;
	$vetorSubstrato[1]=$substrato;
	$vetorSubstrato[2]=$balancaSub;
	$vetorSubstrato[3]=$loteSub;
	$vetorSubstrato[4]=$peagaSub;
	return $vetorSubstrato;
}

function calculaPesoNocivas($pesoPureza,$complemento)
{
$complemento=str_replace(",",".",$complemento);
$pesoPureza=str_replace(",",".",$pesoPureza);
$pesoNocivas= $complemento+$pesoPureza;
$pesoNocivasVirgula=str_replace(".",",",$pesoNocivas);
echo("peso nocivas= $pesoNocivasVirgula complemento=$complemento pesoPureza=$pesoPureza<br>");
return $pesoNocivasVirgula;
}














				
}///////////final da classe calculos////////////////////
 ?>
