<?php
require_once(dirname(__FILE__).'/autoload.php');
protegeArquivo(basename(__FILE__));
class germinacao extends base{
	public function __construct($campos=array()){
		parent::__construct();
		$this->tabela = "rean1";
		if(sizeof($campos)<=0):
			$this->campos_valores = array(
				"rea_ficha" => NULL,
				"rea_teste" => NULL,
				"rea_boletim" => NULL,
				"rea_v1" => NULL,
				"rea_v2" => NULL,
				"rea_v3" => NULL,
				"rea_v4" => NULL,
				"rea_v5" => NULL,
				"rea_v6" => NULL,
				"rea_duracao" => NULL,
				"rea_operador" => NULL,
				"rea_campo60a" => NULL,
				"rea_campo60b" => NULL,
				"rea_datainicio" => NULL,
				"rea_datageralteste" => NULL,
				"rea_segunda_leitura" => NULL,
				"rea_lei1" => NULL,
				"rea_lei2" => NULL,
				"rea_lei3" => NULL,
				"rea_lei4" => NULL,
			    "rea_id" => NULL,

			);
		else:
			$this->campos_valores = $campos;
		endif;
		$this->campopk = "rea_id";
	}

/////////OUTRA FUCNUION///////////////////   


    public function le($reanLong)
   {
   	
    

    }//fim da funcao le

/////////OUTRA FUCNUION///////////////////   
  
    public function grava($reanLong)
    {
		
 
    }//fim da funcao calcula



/////////FUNCTION CALCULO/////////////////////////////////////
    public function calcula($reanLong,$v160,$repeticao,$cliente)
    {
    //echo("eco dentro da funcao calcul  reanLong=$reanLong  REPET= $repeticao v160[51]=$v160[51] cliente=$cliente <br>");
     //COMECO CALCULOS
	if(substr($repeticao,0,3)=="8x5"):
		     $numeroRepeticoes=8;
		     $numeroRepeticoes2012=8;
		     $base=50;
		     $fator=0.5; 
			 $fatorEspecial=1;  
    endif; 
	//caso 4x100
	if(substr($repeticao,0,3)=="4x1"):
		     $numeroRepeticoes=4;
		     $numeroRepeticoes2012=4;
		     $base=100;
		     $fator=1.0;
			 $fatorEspecial=1;   
    endif;
    //caso 4x50
	if(substr($repeticao,0,3)=="4x5"):
		     $numeroRepeticoes=4;
		     $numeroRepeticoes2012=4;
		     $base=50;
		     //$fator=1;
			 $fator=1; 
			 $fatorEspecial=2;  
    endif;
	if(substr($repeticao,0,3)=="16x"):
		     $numeroRepeticoes=16;
		     $numeroRepeticoes2012=16;
		     $base=25;
			 $fator=1; 
			 $fatorEspecial=1;  
    endif;

    



		/*
		finalidade da tabela acumuladora: (nao retirar este texto)
		a tabela original  pode receber valores nas 20 linhas mas a acumuladora soma e reune numa linha a apenas as varias leituras de anosrmais por exemplo
		outra situação sao as fortes e fracas que sao trabalhadas de forma independente 
		a acumuladora vai ser assim:
		vai ter 4 colunas pois vou adensar se tiver com 8 repeticoes mas vou manter os decimais ou seja nao vou arredondar ainda. 
		vai ser a matriz dos sonhos, facil de manusear depois. Itabira 28/02/2013
		linhaAcumulada=1-->Normais
		linhaAcumulada=2-->fracas
		linhaAcumulada=3-->deformadas
		linhaAcumulada=4-->infecionadas
		linhaAcumulada=5-->anormais(resumodas duas anteriores)
		linhaAcumulada=6-->mortas
		linhaAcumulada=7-->duras
		linhaAcumulada=8-->dormentes
		*/

		//crio acumuladora2013
		 $linhaAcumulada=1;//normais
		 $linha=1;	
		 $limite=4;
         //zera a matriz
         for($y=1;$y<=16;$y++):
		    for($i=1;$i<=16;$i++):
                 $acumuladora2013[$Y][$j]=0;
            endfor;   		 
		 endfor;		 
		 
		 for($j=1;$j<=$numeroRepeticoes;$j++)
		 {
		    for($i=$linha;$i<=$limite;$i++)
			   {
		         $posicaotodas=$i.$j;
			     $posicaofinal=$linha.$j;
			     $acumuladora2013[$linhaAcumulada][$j]+=$v160[$posicaotodas];
		         //echo("qqqqqqqsomas parciais =  $acumuladora[$posicaofinal] posicao= $posicaofinal v160= $v160[$posicaotodas]<br>");
			   }   
		 }
		 
		 $linhaAcumulada=2;//fracas	
		 $linha=2;
		 $limite=4;
		 for($j=1;$j<=$numeroRepeticoes;$j++)
		 {
		    for($i=$linha;$i<=$limite;$i++)
			   {
		         $posicaotodas=$i.$j;
			     $posicaofinal=$linha.$j;
			     $acumuladora2013[$linhaAcumulada][$j]+=$v160[$posicaotodas];
			   }   
		 }
		 
		 $linhaAcumulada=3;//deformadas	
		 $linha=5;
		 $limite=8;
		 for($j=1;$j<=$numeroRepeticoes;$j++)
		 {
		    for($i=$linha;$i<=$limite;$i++)
			   {
		         $posicaotodas=$i.$j;
			     $posicaofinal=$linha.$j;
			     $acumuladora2013[$linhaAcumulada][$j]+=$v160[$posicaotodas];
			   }   
		 }
		 
		 
		 $linhaAcumulada=4;//infecionadas
		 $linha=9;
		 //o caso da linha 11 que da o problema peegando dados da linha 1  exemplo 111 pode ser linha 1 coluna 11   ou pode ser linha 11 coluna1
		 //por isso desprezei quando for teste com 16 colunas
		 $limite=12;
		 if($numeroRepeticoes==16)$limite=16;
		 for($j=1;$j<=$numeroRepeticoes;$j++)
		 {
		    for($i=$linha;$i<=$limite;$i++)
			   {
		         $posicaotodas=$i.$j;
			     $posicaofinal=$linha.$j;
			     $acumuladora2013[$linhaAcumulada][$j]+=$v160[$posicaotodas];
			   }   
		 }
		 //aqui vai criar a linha das anormais que será a soma das outras duas
		 $linhaAcumulada=5;//infecionadas
		 for($j=1;$j<=$numeroRepeticoes;$j++)
		 {
			 $acumuladora2013[$linhaAcumulada][$j]=$acumuladora2013[3][$j]+$acumuladora2013[4][$j];
			// $farofa=$acumuladora2013[$linhaAcumulada][$j];
			// echo("acumuladora anormais = $farofa<br> ");
		 }
         

		 $linhaAcumulada=6;//mortas
		 $linha=13;
		 $limite=13;
		 for($j=1;$j<=$numeroRepeticoes;$j++)
		 {
		    for($i=$linha;$i<=$limite;$i++)
			   {
		         $posicaotodas=$i.$j;
			     $posicaofinal=$linha.$j;
			     $acumuladora2013[$linhaAcumulada][$j]+=$v160[$posicaotodas];
			   }   
		 }

		 $linhaAcumulada=7;//duras
		 $linha=14;
		 $limite=14;
		 for($j=1;$j<=$numeroRepeticoes;$j++)
		 {
		    for($i=$linha;$i<=$limite;$i++)
			   {
		         $posicaotodas=$i.$j;
			     $posicaofinal=$linha.$j;
			     $acumuladora2013[$linhaAcumulada][$j]+=$v160[$posicaotodas];
			   }   
		 }

		 $linhaAcumulada=8;//dormentes
		 $linha=15;
		 $limite=15;
		 for($j=1;$j<=$numeroRepeticoes;$j++)
		 {
		    for($i=$linha;$i<=$limite;$i++)
			   {
		         $posicaotodas=$i.$j;
			     $posicaofinal=$linha.$j;
			     $acumuladora2013[$linhaAcumulada][$j]+=$v160[$posicaotodas];
			   }   
		 }

		 //examina se a linha 2 tem vlores ou seja se tem fortes e fracas
		 $fracasefortes="NAO";
		 $linhaAcumulada=2;   //as fracas	
		 for($j=1;$j<=$numeroRepeticoes;$j++)
		       {
			     if($acumuladora2013[2]>0) $fracasefortes="SIM";
			   }   
		//echo("fracas e fortes  $fracasefortes<br>");





		//quando for 8 colunas ele vai reduzir para 4 colunas so na acumuladora é claro...
		//pega coluna  1 e 2 e coloca na 1,  em seguida  pega coluna 3 e 4 e coloca na 2 e assim por diante
		if($numeroRepeticoes==8)
		{
		     for($linhaAcumulada=1;$linhaAcumulada<=8;$linhaAcumulada++)
			 {
			     for($i=1;$i<=4;$i++)
		         {
				     $volatil=($i-1)*2+1;
				     $volatil1=$volatil+1;
			         $acumuladora2013[$linhaAcumulada][$i]=$acumuladora2013[$linhaAcumulada][$volatil]+$acumuladora2013[$linhaAcumulada][$volatil+1];
				 }
			 }
		} //fim do teste se for 8 colunas

    ///echo("nnnnnnnnnnnnnnnnnnnumeroRepeticoes=$numeroRepeticoes<br>");

	if($numeroRepeticoes==16)
		{
		     for($linhaAcumulada=1;$linhaAcumulada<=8;$linhaAcumulada++)
			 {
			     for($i=1;$i<=4;$i++)
		         {
				     $volatil=($i-1)*4+1;
				     $volatil1=$volatil+1;
			         $acumuladora2013[$linhaAcumulada][$i]=$acumuladora2013[$linhaAcumulada][$volatil]+$acumuladora2013[$linhaAcumulada][$volatil+1]+$acumuladora2013[$linhaAcumulada][$volatil+2]+$acumuladora2013[$linhaAcumulada][$volatil+3];
					 
				 	 
			     $cats=$acumuladora2013[$linhaAcumulada][$i];		   
				 }
                 //echo("wwwwlinhaAcumulada=$linhaAcumulada   acumuladora2013[1]= $cats<br>");
			 }
		} //fim do teste se for 16 colunas







		//ve o que calculou para linha2
		$linhaAcumulada=1;
		 for($j=1;$j<=4;$j++)
		 {
		     $volatil=$acumuladora2013[$linhaAcumulada][$j];
		     //echo("aaaaaaaaaadeformad =  $volatil <br>");
		 }	



		/////////////////////////////////aqui termina a chave qur testa se tipo diferente de null/////////////////////////////////////////////
		//soma os valores de normais e ja captura o maior e o menosr
		$somaNormais=0;
		$maiorNormal=0;
		$menorNormal=1000;
		for($i=1;$i<=4 ;$i++)
		{
		   $somaNormais+=$acumuladora2013[1][$i];	
           //quero pegar o maior e o menor
		   if($maiorNormal<$acumuladora2013[1][$i]):
		       $maiorNormal=$acumuladora2013[1][$i];
		   endif;	   
		   if($menorNormal>$acumuladora2013[1][$i]):
		       $menorNormal=$acumuladora2013[1][$i];
			   $qualColuna=$i;	
		   endif;	   
		}
		//calcula a diferenca entra o maior e o menor e o menor e pega a posicao do menor
		$diferenca=$maiorNormal-$menorNormal;
		$posicao=0;

		$menor=$menorNormal;
		$menor=$menor*$fatorEspecial;
		$media=$somaNormais/4 *$fatorEspecial ;
		
		echo("xxxxxxxxmedia $media  menor= $menor diferenca=$diferenca     fatorEspecial= $fatorEspecial   repeticao=$repeticao<br>");

		$mediaInteira=round($media);
        //if($cliente=='BAREN')$mediaInteira=FLOOR($media);


		$generica=new tabelagenerica();
		$generica->tabela="tolerancia";
		$generica->campos_valores = array(
				"dif4x100" => NULL,
				"dif3x100" => NULL,
			);
		$generica->extras_select =" where  germ=".$mediaInteira;
        $generica->selecionaTudo($generica);
		while ($resgenerica = $generica->retornaDados()):
			$tolerancia4x100=$resgenerica->dif4x100;
			$tolerancia3x100=$resgenerica->dif3x100;
	    endwhile;
		//$sql="select dif4x100,dif3x100 from tolerancia where germ=".$mediaInteira;
		//echo("?????tolerancia 4x100  $tolerancia4x100  tolerancia3x100  $tolerancia3x100 sql=$sql   diferenca= $diferenca qualcoluna= $qualColuna mediaInteira=$mediaInteira<br>");

		//////////////////////////////CALCULOS DAS TOLERANCIAS//////////////////////////////////////////////
		/////////////////aqui vai eliminar colunas caso a tolerancia4x10 for menor que a diferenca/////
		//echo("mmmmmmmmmmmmmmmm $mensagem3x100$  numeroColunas2012=  $numeroRepeticoes2012 primeiradiferenca=  $diferenca  tolerancia= $tolerancia4x100<br>");
		//$diferenca=100; //iso é so pra teste
		 //vai zerar as medias de 4  repeticoes
		 $vd1=0;//normais	
		 $vd2=0;//fraca	
		 $vd3=0;//deformadas
		 $vd3=0;//infecionadas	
		 $vd4=0;//anormais
		 $vd5=0;//mortas	
		 $vd6=0;//duras
		 $vd7=0;//dormentes
		 $vd8=0;//dormentes
		 $diferenca=floor($diferenca);



		if($diferenca>$tolerancia4x100)
		{
		     //echo("A diferença da média(4 repetições) para o valor menor é $diferenca e a tolerancia4x100 é $tolerancia4x100 <br> ");
			 //$erroTolerancia="A diferença da média=" .$mediaInteira. " para 4 repetições até valor menor é  ". $diferenca . " e a tolerancia4x100 é ".$tolerancia4x100;
			 $erroTolerancia="A média é: " .$mediaInteira. ". A difereça do maior para o menor é  ". $diferenca . " e a tolerancia4x100 é ".$tolerancia4x100;




			 printMSG($erroTolerancia,'alerta');
		     $menor=1000;
			 $somaNormais=0;
		     //aqui tem que calcular a nova media, desconsiderando a(s) colunas rejeitadas E JA CAPTURA O MENOR
		     for($i=1;$i<=4;$i++)   
		     {
		         if($i!=$qualColuna)//porque esta descartando esta coluna 
				     {
						 $volatil=$acumuladora2013[1][$i];
						 $somaNormais+=$volatil;	
						 if($menor > $volatil)
					      {
						     $menor=$volatil;
						  }	 
					 }	
			 } 
			 $menor=$menor*$fatorEspecial;
		     $media=$somaNormais/3*$fatorEspecial;
		     //calcula a diferenca entra a media e menor e pega a posicao do menor
		     $diferenca=$maiorNormal-$menor;
		     //echo("xxxxxxxxmediaCOM3NUMEROS $media  menor= $menor diferenca=$diferenca<br>");

				$mensagem3x100="";
				$soma=0; 
				$linha=1;
				$colunaVermelha=$qualColuna;
				$colunaVermelha1=100;
				if($numeroRepeticoes2012==8)
				{
				    $colunaVermelha=$qualColuna*2-1;
				    $colunaVermelha1=$qualColuna*2;
				}

				if ($qualColuna>0)
				{
					if($numeroRepeticoes2012==4)$mensagem3x100="Excluiu a coluna ". $qualColuna;
					if($numeroRepeticoes2012==8)$mensagem3x100="Excluiu o ". $qualColuna."º par de colunas.";
				}

				//echo("ccccccccccccColunaVermelhaNumero=$colunaVemelha    Repeticoes2012=  $numeroRepeticoes2012 qualcoluna= $qualColuna<br>");

			//aqui vai verificar se a tolerancia deu dentro dos parametros se ainda nao deu  entao vai testar 3x100
			$tolerancia=1000;
			$mediaInteira=round($media);
			$sql="select dif4x100,dif3x100 from tolerancia where germ=".$mediaInteira;
			$generica=new tabelagenerica();
			$generica->tabela="tolerancia";
			$generica->campos_valores = array(
				"dif4x100" => NULL,
				"dif3x100" => NULL,
			);
			$generica->extras_select =" where  germ=".$mediaInteira;
	        $generica->selecionaTudo($generica);
			while ($resgenerica = $generica->retornaDados()):
				//$tolerancia4x100=$res->dif4x100;
				$tolerancia3x100=$resgenerica->dif3x100;
		    endwhile;
			
			
			//$vetorTolerancia=achacampos($sql);
			//$tolerancia3x100=$vetorTolerancia[1];
			//$tolerancia=0;

			 $diferenca=floor($diferenca);
			//echo("mmmmmmmmmmmmmmmmm3x100= $mensagem3x100$  numeroColunas=  $numeroRepeticoes2012 diferenca=  $diferenca mediaInteira=$mediaInteira  tolerancia3x100= $tolerancia3x100<br>");




		     //echo("A diferença da média(3 repetições) para o valor menor é $diferenca e a tolerancia3x100 é $tolerancia3x100<br>");
			 $erroTolerancia="Descartado o ". $qualColuna. ".  A diferença da média(3 repetições) para o valor menor é  ". $diferenca . " e a tolerancia3x100 é ".$tolerancia3x100;
			 printMSG($erroTolerancia,'erro');
			//$diferenca=100; //iso é so pra teste
		      
			if($diferenca > $tolerancia3x100) 
			{
			   $mensagem3x100="Repita o teste. Está fora da tolerância mesmo eliminando 1 coluna. Revisão 22/03/2018";
			   $rejeitar="SIM";
               printMSG($mensagem3x100,'erro');
			   $divisor=3;//coloca aqui so para nao dar erro 
		     }
			 else
			 {
                 $mensagemToleranciaSucesso=	"Tolerancia 3x100=". $tolerancia3x100 ." diferenca=". $diferenca. " qualcoluna=" .$qualColuna. "Media=".$mediaInteira;
		         //aqui vai estar pegando as medias de 3 repeticoes	 	
				 $divisor=3; 
		         //echo("pegando as medias de 3 repetições<br>"); 
				 for($i=1;$i<=4;$i++)	
		     	 {
				     if($i!=$qualColuna)
					 {
				         $vd1+=$acumuladora2013[1][$i]; //normais
				         $vd2+=$acumuladora2013[2][$i]; //fracas
				         $vd3+=$acumuladora2013[3][$i]; //deformadas
				         $vd4+=$acumuladora2013[4][$i]; //infecionadas
				         $vd5+=$acumuladora2013[5][$i];  //anormais
				         $vd6+=$acumuladora2013[6][$i];//mortas
				         $vd7+=$acumuladora2013[7][$i];  //duras  
				         $vd8+=$acumuladora2013[8][$i];  //dormentes  
					 }//nao soma a coluna desprezada
			     }//final do laco for que soma as colunas
				 
			 }//final do teste se a diferenca ficu dentro da tolerancia 3x100 
		}	 
		else   //se a diference é menodr que a tolerancia 4x100 significa que esta tudo correto
		{
            $mensagemToleranciaSucesso=" para media=".$mediaInteira.	"Tolerancia 4x100=". $tolerancia4x100 ." diferenca=". $diferenca. " qualcoluna=" .$qualColuna. "Media=".$mediaInteira;
		     $divisor=4; 
		    // echo("pegando as medias de 4 repetições<br>");
		     for($i=1;$i<=4;$i++)	
			 {
		         $vd1+=$acumuladora2013[1][$i]; //normais
		         $vd2+=$acumuladora2013[2][$i]; //fracas
		         $vd3+=$acumuladora2013[3][$i]; //deformadas
		         $vd4+=$acumuladora2013[4][$i]; //infecionadas
		         $vd5+=$acumuladora2013[5][$i];  //anormais
		         $vd6+=$acumuladora2013[6][$i];//mortas
		         $vd7+=$acumuladora2013[7][$i];  //duras  
		         $vd8+=$acumuladora2013[8][$i];  //dormentes  
			 } //conta todas colunas
		}//fecha o priemiro if aquele que testa incialmente a tolerancia 4x100	
		
		

		/*
		==================NAO APAGAR ISSO AQUI===============================
		vd=soma dos valores de cada item,normais,anormais,etc
		media=apenas divide pelos divisor
		mediaformatada=retira os quqbrador que tiver alem da segunda casa
		vf=pega so o valor inteiro
		=====================================================================	
		*/
		//carcula a media 
		     //echo("ddddddddddddddivisor= $divisor<br>");  
			 //caso especial quando trabalha com 200 sementes
			 if(substr($repeticao,0,3)=="4x5"):
                $divisor=$divisor/2;                        			 
			 endif;		    	 

             //joga os valores diretos na  matriz DIRETOS para trabalhar so com matris daquei em diante
             $direto[1]=$vd1;	//normais		 
             $direto[2]=$vd2;			 
             $direto[3]=$vd3;	//deformadas		 
             $direto[4]=$vd4;	//infecionadas		 
             $direto[5]=$vd5;	//anormais		 
             $direto[6]=$vd6;	//mortas		 
             $direto[7]=$vd7;	//duras
             $direto[8]=$vd8;	//dormentes	

             //se for barembrug ele vai fazer uma integracao diferente por isso ele vai reservar estes valores para usa´los la adiate
			 //as mortas vem da inviaveis do teste de tz
             //as dormentes vem da difereca ate a base
			  if($cliente=='BAREN'):
			     $capturaMortasTZF=$vetorRaioX[202];
                 $vFinalBaren1=$vd1;//nao interessa
                 $vFinalBaren2=$vd2;//nao interessa
                 $vFinalBaren3=$vd3;//deformadas
                 $vFinalBaren4=$vd4;//infecionadas
                 $vFinalBaren5=$vd5;//anormais
                 $vFinalBaren6=$vd6;//mortas
                 $vFinalBaren7=$vd7;//duras
                 $vFinalBaren8=$vd8;//dormente
				 //$mortas=100-$capturaMortasTZF;
				// echo("esta no barembrug   capturaMortasTZF = $capturaMortasTZF  normais = $normais deformadas $vd3<br>");

			  endif;






			 
			 //LEGENDAS
             $legenda[1]="NORMAIS";			 
             $legenda[2]="Fracas";			 
             $legenda[3]="Defor";			 
             $legenda[4]="Infec";			 
             $legenda[5]="ANORMAIS";			 
             $legenda[6]="MORTAS";			 
             $legenda[7]="DURAS";			 
             $legenda[8]="DORM.";			 
			 	 

             //calcula as medias brutas(media sem arredondamnto))
             for($i=1;$i<=8;$i++):
                 $mediaBruta[$i]=$direto[$i]/$divisor;
				 //echo("media bruta=$mediaBruta[$i] indice( $i )<br>");
			 endfor;
             if(post('transparencia') !== "") echo"Transparência: Cálculos conforme a RAS item 5.11  página 168";
             //calculas as medias formatadaas, com 2 casas decimais. Exemplo 4.50   5,75 		
		     if(post('transparencia') !== "") echo("<br>Media formatada:");
             for($i=1;$i<=8;$i++):
			   $mediaFormatada[$i]=number_format($mediaBruta[$i],2,'.','');
			   if(post('transparencia') !== "") echo(" $legenda[$i] = $mediaFormatada[$i] ");
			 endfor;
		    
			//captura os valores inteiros, preparando para pegar os decimais depois  Exem´plo: 4.5-->4   e   5.75-->5
		     if(post('transparencia') !== "") echo("<br>Inteiros:");
             for($i=1;$i<=8;$i++):
			   $inteiros[$i]=floor($mediaBruta[$i]);
			   if(post('transparencia') !== "") echo(" $legenda[$i] = $inteiros[$i]");
			 endfor;
		     
 
             //ATRIBUI O VALOR DOS INTEIROS PARA OS CASOS ONDE NAO SERA FEITA SIQUER A MEDIA COM APROXIMACAO 
             $valorFinal[5]=$inteiros[5];//ANORMAIS
             $valorFinal[6]=$inteiros[6];//MORTAS
             $valorFinal[7]=$inteiros[7];//DURAS
             $valorFinal[8]=$inteiros[8];//DORMENTES







		    //captura os oito decimais
			if(post('transparencia') !== "") echo("<br>Fracionárias:");
             for($i=1;$i<=8;$i++):
			    $deci[$i]=$mediaFormatada[$i]-$inteiros[$i];
			    if(post('transparencia') !== "")  echo("$legenda[$i] = $deci[$i]  ");
			 endfor;
		     

			 //calcula todas aproximacoes
             if(post('transparencia') !== "") echo("<br>Primeira aproximacao(class):");
             for($i=1;$i<=8;$i++):
			    $valorAproximadoPreliminar[$i]=round($mediaBruta[$i]);
			    if(post('transparencia') !== "") echo(" $legenda[$i]= $valorAproximadoPreliminar[$i]");
			 endfor;
             $soma=$valorAproximadoPreliminar[1]+$valorAproximadoPreliminar[5]+$valorAproximadoPreliminar[6]+$valorAproximadoPreliminar[7]+$valorAproximadoPreliminar[8];
             if(post('transparencia') !== "") echo("SOMA=$soma ");
		     echo ("<hr>");
		
             //echo("vf1=$valorAproximadoPreliminar[1] vf5=$valorAproximadoPreliminar[5] vf6=$valorAproximadoPreliminar[6]  vf7=$valorAproximadoPreliminar[7]  vf8=$valorAproximadoPreliminar[8]<br>  ");
             $balizaEncerrouCalculo='NAO';
             if($soma==100):// testa a primeira vez soma=100  FASE 3  DO DIAGRAMA
			    $valorFinal[1]=$valorAproximadoPreliminar[1];//normais
			    $valorFinal[5]=$valorAproximadoPreliminar[5];//anormais
			    $valorFinal[6]=$valorAproximadoPreliminar[6];//mortas
			    $valorFinal[7]=$valorAproximadoPreliminar[7];//duras
			    $valorFinal[8]=$valorAproximadoPreliminar[8];//dormentes
                $balizaEncerrouCalculo="SIM";
			 else:
			 
			    
                //SE NAO FECHAOU EM 100 E,E VAI PEGAR A MEDIA PRELIMINAR DO ITEM 1 E MANTER JA NESTE MOMENTO 			 
			    $valorFinal[1]=$valorAproximadoPreliminar[1];//ESTE VALOR MANTEM
                //AGORA DEVE VERIDICAR SE TEM UM DECIMAL MAIOR DENTRE OS 4 DECIMAIS RESTANTES
               //ACHAR AQUELE QUE TEM MAIOR PARTE FRACIONARIA(cuidado com isso pois deve ser o maior E nao SIMPLESMENTE igual aso demais)
			   //e so interessa agora os membros  5,6,7,8(anormais,mortas,duras,dormentes)
               //achar o maior decimal   
	
		       $maiorDecimal=0;
			   for($i=5;$i<=8;$i++):
			     if($deci[$i]> $maiorDecimal)$maiorDecimal=$deci[$i];//VAI ACHAR O DECIMAL MAIOR
			   endfor;
                
               //verificar se algum item tem parte fracionaria maior ###########VER RAS###########################
			   //se tiver apenas uma ocorrencia de ser igual ao maior entao significa que é o maior  
			   $ocorrencias=0;
			   for($i=5;$i<=8;$i++):
	               if($deci[$i]==$maiorDecimal  && $deci[$i]>=0.5):
				     $ocorrencias++;
	                 $indiceGuardado1=$i;			   
				   endif;			   
			   endfor;
			   if(post('transparencia') !== "")echo("PRIMEIRA MAIOR PARTE FRACIONARIA= $maiorDecimal ocorrencias=$ocorrencias <br>");
               //verifica se o numero de ocorrencias =1 é porque tem um realmente maior
			   //SE TIVER SO UMA OCORRENCIA ELE JOGA O VALOR FINAL PARA FICIAR IGUAL AO PROELIMINAR E PEGA OS INTEIROS DOS DEMAIS
               if($ocorrencias==1):
			      if($maiorDecimal>=0.5):
	                  $valorFinal[$indiceGuardado1]=$valorAproximadoPreliminar[$indiceGuardado1];//ja define o valor final do item que tem maior decimal e este morre aqui
	                  //vou matar tambem o decimal para ele nao interferir no claculo se eu tiver que procurar por um segundo decimal maior  
					  $deci[$indiceGuardado1]=0;//matei o indice                   
                   endif;
	               //somar o valor inteiro dos demais 
				   $somaInteiros=0;
	       		   for($i=5;$i<=8;$i++):
		               if($i != $indiceGuardado1)://para eu pegar apenas os outros elementos 
	                      $somaInteiros+=$inteiros[$i];    
						  $valorFinal[$i]=$inteiros[$i];
				       endif;			   
				   endfor;
                   $soma=$somaInteiros+$valorFinal[$indiceGuardado1]+$valorFinal[1];//soma tudo para fzer uma verificaco 
				   for($n=1;$n<=9;$n++):
                     // echo("n=$n  somaInteiros $somaInteiros   valorFinal=$valorFinal[$n]  <br>");				   
				   
				   endfor;
				   
				    
				    
			       if(post('transparencia') !== "") echo("Fez aproximação de $legenda[$indiceGuardado1] Primeiro fracionario>=0.5= $maiorDecimal  Achou $ocorrencias decimal maior!  os demais itens colocou inteiros. Soma=$soma<br>");

                   //se a soma for diferente de 100 ele repete o calculo ou seja vai procurar um segundo decimal maior 				   
                   if($soma ==100):
				       $balizaEncerrouCalculo="SIM";
				   else:
                       //VAI PROUCURAR POR UM SEGUNDO MAIOR	##VER RAS ##############################			   
                       if(post('transparencia') !== "")echo("deve procurar por UMA POSSIVEL SEGUNDA PARTE FRACIONARIA<br>");
				       //A ESTA ALTURA JA MATEI O DECIMAL ANTERIOR POIS NAO INTERESSA MANTE-LO ENTRE OS PESQUISADOS
					   $maiorDecimal=0;
					   for($i=5;$i<=8;$i++):
					     if($deci[$i]> $maiorDecimal && $deci[$i]>=0.5)$maiorDecimal=$deci[$i];//VAI ACHAR O DECIMAL MAIOR
					   endfor;
		               //verificar se algum item tem parte fracionaria maior 
					   //se tiver apenas uma ocorrencia de ser igual ao maior entao significa que é o maior  
					   $ocorrencias=0;
					   for($i=5;$i<=8;$i++):
			               if($deci[$i]==$maiorDecimal):
						     $ocorrencias++;
			                 $indiceGuardado2=$i;			   
						   endif;			   
					   endfor;
					   if(post('transparencia') !== "") echo("SEGUNDA MAIOR PARTE FRACIONARIA= $maiorDecimal ocorrencias=$ocorrencias <br>");
					   //so vai ajustar para cima se realmente for maior ou igual a o.5
					   if($ocorrencias==1):
						   if($maiorDecimal>=0.5):
		                       $valorFinal[$indiceGuardado2]=$valorAproximadoPreliminar[$indiceGuardado2];//ja define o valor final do item que tem maior decimal e este morre aqui
		                       //vou matar tambem o decimal para ele nao interferir no claculo se eu tiver que procurar por um segundo decimal maior  
						       $deci[$indiceGuardado2]=0;//matei o indice   
						   endif;	                   
			               //somar o valor inteiro dos demais 
						   $somaInteiros=0;
			       		   for($i=5;$i<=8;$i++):
						       //aqui ele vai manter o priemrio e o segundo item ja mantidos
				               if($i != $indiceGuardado2 && $i!= $indiceGuardado1)://para eu pegar apenas os outros elementos 
			                      $somaInteiros+=$inteiros[$i];    
								  $valorFinal[$i]=$inteiros[$i];
						       endif;			   
						   endfor; 
		                   $soma=$somaInteiros+$valorFinal[$indiceGuardado1]+$valorFinal[$indiceGuardado2]+$valorFinal[1];//soma tudo para fzer uma verificaco 
		                   //se a soma for diferente de 100 ele repete o calculo ou seja vai procurar um segundo decimal maior 				   
	                   endif;//testa se so tem uma ocorrencia(pois se tiver mais de uma ja vai para o desempate)
					   if($soma ==100):
					       $balizaEncerrouCalculo="SIM";
					   else:	   
					       $desempatar='SIM'; 	   
					   endif;
				   endif;//testa se achando o PRIMEIRO decimal maior a soma fecha em 100
				   
               else:
			      //aqui entra se todos os decimais forem iguais
                  $desempatar='SIM';
			   endif; //testa para encontrar o priemiro decimal maior TESTOU SE OCORENCIA =1
			 endif;//FIM DO testa a primeira vez soma=100  FASE 3  DO DIAGRAMA
			 
		  //aqui faz o desempate
		  if($desempatar=="SIM"):
	          if(post('transparencia') !== "") echo(" FAZENDO DESEMPATE = $ocorrencias decimais iguais Decimal considerado= $maiorDecimal  <br>");
              //PEGA PELA PRECEDENCIA , fazendo DESEMPATE dos itens  5(anormais),6(mortas),7(duras),8(dormentes))
              //primeiro as normais 
              if($balizaEncerrouCalculo=="NAO"):
			      //echo "entrou";
			      $valorFinal[5]=$valorAproximadoPreliminar[5];
                  //soma os valores finais
                  $soma=$valorFinal[1]+	$valorFinal[5]+$valorFinal[6]+$valorFinal[7]+$valorFinal[8];
				  if($soma==100)$balizaEncerrouCalculo="SIM";					  
              endif;				   
              //duras
              if($balizaEncerrouCalculo=="NAO"):
			      //echo "entrou";
			      $valorFinal[7]=$valorAproximadoPreliminar[7];
                  //soma os valores finais
                  $soma=$valorFinal[1]+	$valorFinal[5]+$valorFinal[6]+$valorFinal[7]+$valorFinal[8];			  
				  if($soma==100)$balizaEncerrouCalculo="SIM";					  
             endif;
			  //dormentes				   
              if($balizaEncerrouCalculo=="NAO"):
			      //echo "entrou";
			      $valorFinal[8]=$valorAproximadoPreliminar[8];
                  //soma os valores finais
                  $soma=$valorFinal[1]+	$valorFinal[5]+$valorFinal[6]+$valorFinal[7]+$valorFinal[8];			  
				  if($soma==100)$balizaEncerrouCalculo="SIM";					  
              endif;
			  //mortas				   
              if($balizaEncerrouCalculo=="NAO"):
			      //echo "entrou";
			      $valorFinal[6]=$valorAproximadoPreliminar[6];
                  //soma os valores finais
                  $soma=$valorFinal[1]+	$valorFinal[5]+$valorFinal[6]+$valorFinal[7]+$valorFinal[8];			  
				  if($soma==100)$balizaEncerrouCalculo="SIM";					  
              endif;				   
		  endif;//SE VAI DESEMPATAR





		  //aqui vou colocar um desempate final caso tenha ainda a soma mauior que 100
		  //comecando abatendo mortas depois dormentes depois duras finalmente anormais
		  //desde que valor final seja maior que inteiro
          if($soma>100):
 	         if($valorFinal[6]>$inteiros[6] && $soma>100)$valorFinal[6]=$inteiros[6];//MORTAS
			 $soma=$valorFinal[1]+	$valorFinal[5]+$valorFinal[6]+$valorFinal[7]+$valorFinal[8];	
 	         if($valorFinal[8]>$inteiros[8] && $soma>100)$valorFinal[8]=$inteiros[8];//DORMENTES
			 $soma=$valorFinal[1]+	$valorFinal[5]+$valorFinal[6]+$valorFinal[7]+$valorFinal[8];	
 	         if($valorFinal[7]>$inteiros[7] && $soma>100)$valorFinal[7]=$inteiros[7];//DURAS
			 $soma=$valorFinal[1]+	$valorFinal[5]+$valorFinal[6]+$valorFinal[7]+$valorFinal[8];	
 	         if($valorFinal[5]>$inteiros[5] && $soma>100)$valorFinal[5]=$inteiros[5];//ANORMAIS
			 $soma=$valorFinal[1]+	$valorFinal[5]+$valorFinal[6]+$valorFinal[7]+$valorFinal[8];
     		 if($soma==100)$balizaEncerrouCalculo="SIM";					  
		  endif;//faz um desempate final para corrigir   		  
	
	//situacao registrada por tabajara dia 14/09/2017 ver arquauivo imagem
          if($soma<100):
			 $valorFinal[1]++;
             $balizaEncerrouCalculo="SIM";
          endif;

	
	
	
          if($balizaEncerrouCalculo=="SIM"):
		      if(post('transparencia') !== "")  echo("Cálculo OK. <br>");	
	           //valores finais
	           $vf1=$valorFinal[1];
	           $vf2=round($vd2/$numeroRepeticoes);
	           //$vf3=$valorAproximadoPreliminar[3];//este valor nao entra na verificacao de fechamento em 100
			   //$vf3=$valorFinal[3];
	           $vf5=$valorFinal[5];
			   $vf3=$valorFinal[5]-$valorAproximadoPreliminar[4];//deformadas(valor final compensado -infecionadas
	           $vf4=$valorAproximadoPreliminar[4];//infecionadas
			   //$vf5=$vf3+$vf4;
	           $vf6=$valorFinal[6];
	           $vf7=$valorFinal[7];
	           $vf8=$valorFinal[8];
			   $vfDeformada=$vf3;
			   //$vf3=$vf5-$vf4;//deformadaa
          else:
             if(post('transparencia') !== "")echo("vf1=$valorFinal[1] vf5=$valorFinal[5] vf6=$valorFinal[6]  vf7=$valorFinal[7]  vf8=$valorFinal[8]<br>  ");
             if(post('transparencia') !== "") echo("Cálculo não fechou em 100 <br>");		  
		  endif;
		  
		  //aqui vai fazer uma integraxao diferente para forrageiras
        if($cliente=='BAREN'):
	           $vf1=$valorFinal[1];
	           $vf3=$valorAproximadoPreliminar[3];//este valor nao entra na verificacao de fechamento em 100
	           $vf4=$valorAproximadoPreliminar[4];//nem este   INFECIONADAS
	           //$vf5=$valorFinal[5];
	           $vf5=$vf3+$vf4;
               //$vf5=$vf5-$vf4;//PARA CHEGAR A DFORMADAS  (PEGA ANORMAIS E AVATE INFECIONADAS))
	           $vf6=$valorFinal[6];
	           $vf7=$valorFinal[7];
	           $vf8=$valorFinal[8];
			   //$vf3=$vf5-$vf4;//deformadaa
			   $vfDeformada=$vf3;
		       //echo("xxxxxxxxxxxvf3=$vfDeformada  vf5=$vf5 <br>");
    	       $valorBene=$vetorRaioX[118];  
	           //$mortas=100-$capturaMortasTZF; 
			   $normais=round($vFinalBaren1/4);//normais			
			   //echo("linha1652captura matriz tzf=$capturaMortasTZF  normais=  $normais mortas=$mortas   vFinalBaren1=$vFinalBaren1 leit1= $leit1<br>");
			   //$vetorLeiturasGerminacaoBIDI[1][1]=201;//linha de normais
			   //$vetorLeiturasGerminacaoBIDI[5][1]=204;//deformadas
			   //$vetorLeiturasGerminacaoBIDI[9][1]=202;//indfecionadas esquece...

	           //$vetorLeiturasGerminacaoBIDI[14][1]=205;//duras esquece....
			   //$vetorLeiturasGerminacaoBIDI[15][1]=206;//dormentes
	           //calcullos para 4 colunas
			   for($coluna=1;$coluna<=4;$coluna++):
				   //$somaNormais=$v160[250+$coluna]+$vetorLeiturasGerminacaoBIDI[2][$coluna];
				   //$somaNormais=$v160[250+$coluna]+$vetorLeiturasGerminacaoBIDI[2][$coluna];
	               //se for revestida deve preencher os campso duras e dormentes com -N-
				   if($valorBene=='6'):
				      $vetorLeiturasGerminacaoBIDI[14][$coluna]='-N-';//duras
				      $vetorLeiturasGerminacaoBIDI[15][$coluna]='-N-';//dormentes
				   endif;
				   $somaAnormais=$vetorLeiturasGerminacaoBIDI[5][$coluna]+$vetorLeiturasGerminacaoBIDI[6][$coluna];
		           $somaBaren=$somaNormais+$somaAnormais;
				   //$dormentes=100-$somaBaren-$vetorLeiturasGerminacaoBIDI[13][$coluna];//100-somabaren-mortas
				   //$vetorLeiturasGerminacaoBIDI[15][$coluna]=$dormentes;//dormentes
				   $vetorLeiturasGerminacaoBIDI[1][$coluna]=$v160[250+$coluna];//dormentes
			       //$vetorLeiturasGerminacaoBIDI[16][$coluna]=$somaBaren;//somas
	           endfor;
		  // echo("linha1652  valorBene=$valorBene  somaNormais=$somaNormais  somaAnormais=$somaAnormais  somaBaren=$somaBaren    dormentes=$dormentes   <br>");
		endif; //testa cliente=baren		  
//vai criar embaixo uma linha de somas
   $vetorLeiturasGerminacaoBIDI[16][1]=$leit1;
   $vetorLeiturasGerminacaoBIDI[16][2]=$leit2;
   $vetorLeiturasGerminacaoBIDI[16][3]=$leit3;
   $vetorLeiturasGerminacaoBIDI[16][4]=$leit4;

for($coluna=1;$coluna<=$numeroRepeticoes;$coluna++):
   for($i=2;$i<=15;$i++):
     $posicaotodas=$i.$coluna;
     $posicaofinal=$linha.$coluna;
     $vetorLeiturasGerminacaoBIDI[16][$coluna]+=$v160[$posicaotodas];
	 //if($coluna==1) echo("v160[]=$v160[$posicaotodas]  posicaotodas=$posicaotodas<br>");
	 
   endfor;
   //$vetorLeiturasGerminacaoBIDI[16][$coluna]=$somaBaren;//somas
endfor;
    $vf5=$vf4+$vfDeformada;
	//echo("xxxxxxxxxxxvf3=$vfDeformada  vf5=$vf5 vf3=$vf3 <br>");
    if($rejeitar=="SIM"):
	   $vf1=$vf2=$vf3=$vf4=$vf5=$vf6=$vf7=$vf8="?";
	endif;	
	
    $concatenadoFinal=$vf1."]".$vf2."]".$vf3."]".$vf4."]".$vf5."]".$vf6."]".$vf7."]".$vf8."]";
	return $concatenadoFinal;
 }//fim da funcao calcula

  /////////////////OUTRA FUCNCUION/////////////////////////////////////  
 
    public function existeRegistro($campo=NULL,$valor=NULL){
        if ($campo!=NULL && $valor!=NULL):
            is_numeric($valor) ? $valor = $valor : $valor = "'".$valor."'";
            $this->extras_select = "WHERE $campo=$valor";
            $this->selecionaTudo($this);
            if ($this->linhasafetadas > 0):
                return TRUE;
            else:
                return FALSE;
            endif;
        else:
            $this->trataerro(__FILE__,__FUNCTION__,NULL,'Faltam parâmetros para executar a função',TRUE);
        endif;
    }
}
?>