<?php
require_once(dirname(dirname(__FILE__))."/paineladm/funcoes.php");
$pathlocal = dirname(__FILE__);
//require_once(dirname($pathlocal)."/paineladm/classes/fpdf.class.php");
//require_once(dirname($pathlocal)."/paineladm/classes/sessao.class.php");
$material = $_COOKIE['material'];
$objetocalculo = new calculos(); //calcula todos valores finais
$sessao = new sessao();
$composto=$sessao->getVar('controle');
list($mesNumero, $anoAmostra, $nomeFuncao, $nomeCategoria, $tipoRelatorio) = explode("*", $composto);
$legendaNatureza=$nomeFuncao.'/'.$nomeCategoria;
$mes=$objetocalculo->mesExtenso($mesNumero);
$legendaPeriodo='Período:'.$mes.'/'.$anoAmostra;
$finalidade=$sessao->getVar('finalidade');
$cliente=$sessao->getVar('cliente');
if($cliente=="QUALITESTE")$legendaNatureza="PRODUÇÃO".'/'.$nomeCategoria;
$senhaCli=$sessao->getVar('iduser');
$idLabo=$sessao->getVar('idLabo');
$inicio=$sessao->getVar('inicio');
$final=$sessao->getVar('final');
$finalidade=$sessao->getVar('finalidade');
$enquadramento=$finalidade;$nomeOperador=$sessao->getVar('nomeuser');
$amostraLong=$sessao->getVar('amostraLong');
//echo("amostralong= $amostraLong<br>");
$vetorCabecalho=$objetocalculo->dadoslaboratorio();

$pdf=new FPDF('L','mm','A4'); //parametos da pagina 
			 $pdf->open();//abre o fpdf
			 //$pdf->AddPage();//adicionando a primera pafina
			 $pdf->SetFont('Arial','',12);
			 $pdf->SetDrawColor(10,10,10);
			 $maximoHAdobe=297;//isso para vertical
			 $maximoLAdobe=210;//isso para vertical
			 $maximoLAdobe=297;//isso para horizontal
			 $maximoHAdobe=210;//isso para horizontal
		     $margemEsquerdaExterna=10;
		     $margemEsquerda=10;
			 $margemDireita=$maximoLAdobe-6;
			 $larguraUtil=$maximoLAdobe-16;
			 $futer=$maximoHAdobe-10;
			 //$larguraUtil=$maximoLAdobe;
			 $cinza=220;
		     $fonte="Arial";
			 $nomeOperador=5;
			 $pdf->SetFillColor($cinza,$cinza,$cinza); 
			 //$pdf->AddPage();//adicionando a primera pafina 
             $pdf->SetFont('Times','',8);
            $larg1=15;
            $larg2=15;
            $larg3=30;
            $larg4=55;
            $larg5=55;
	        $inicio=1;
			$final=3;
			//ENTRA DE QUAKQUER MANEIRA
			$generica=new tabelagenerica();
			
/////////////////parte puxada do antigo/////////////////////////////////////
     //PARAMETROS GERAIS
     //altura util=210  largura util=297(dados do adobe)
	 //como é formulario vwertical a largura é meno que a altura
	 $maximoLAdobe=297;
	 $maximoHAdobe=210;
     $margemEsquerda=10;
	 $margemDireita=$maximoLAdobe-7;
	 //largura de uma margem a outra = 281  se eu imprimo algo esta soma nao pode ultrapassar este valor
	 $larguraUtil=$maximoLAdobe-17;
	 $cinza=220;
	 $pdf->SetFillColor($cinza,$cinza,$cinza);
	 $grosso=0.7;
	 $medio=0.4;
	 $fino=0.3;
	 $extraFino=0.2;
	 //ESTAS COTAS SAO AS COTRAS DAS LINHAS HORINTAIS GROSSAS QUE SERVEM DE ORIGEM PARA O QUE VEM A SEGUIR
	 $cota1=10;
     $cota1a=23;
	 $cota2=31;
	 $cota3=35;//cabecalho inicial amplo
	 $cota4=43;//final do cabecalho e inicio dos dados
	 
	 
	 
	 $cota7=167; //assinatura
     $cota8=192;  //usara 195 se for colocar o rodape na munheca, mas pode usar a funcao footer que da mais 5 milimetros
	 $margem=25;
	 $larguraDaLinha=3.5;
	 //
	 ############################//aqui joga os dados no relatorio########################
     //como funciona VI SER BEM SIMPLES PARA ENTENDER E DAR MANUTENCAO	 
	 //1-Captura todas amostras e coloca num vetor denominado vetorAmostras
	 //Este vetor corpo vai ter as id das amostras, a UF,SAFRA E ESPECIE CIENTIFICA  E NA COLUNA NUMERO 5 VAI TER O NUMERO DO GRUPO 1,2 3,4 5
	 //COM ESTE NUMERO DO GRUPO SERÃO CRIADAS AS DIVISOES DENTRO DO RELATORIO
	 //PRIEMIRO LEIO TODAS AMOSTRA A PARTIR DO BANCO DE DADOS DEPOIS EU PEGO O VETOR E CRIO A COLUNA 5 E CRIO UM VETOR SO COM OS NUMEROS DOS GRUPOS
	//AQUI VAI ACHAR TODAS AMOSTRAS QUE SEJAM DESTA CATEGORIA+FUNCAO+MES/ANO
	if($cliente=="QUALITESTE"):
		 $parte1="SELECT fic_recipiente2, prd_uf,fic_safra,esp_nome_cientifico,fic_id,fic_amostra ";
         $parte2=" FROM especies,cultivar,remetente,documentos,ficha,documentosponte ";		 
         $parte3="  where doc_labo=".$idLabo."  &&  fic_cultivar=ctv_id and ctv_especie=esp_id and fic_produtor=prd_id and doc_tipo='Boletim'";
		 $parte4="  and dpo_amostra_vinculada=fic_id && dpo_documento_autonumerador=doc_id &&  year(doc_data)='".$anoAmostra."' and ";
		 $parte5="  MONTH(doc_data)='".$mesNumero."' and fic_categoria='".$nomeCategoria."'";
		 $parte6="  order by  fic_recipiente2,fic_safra,esp_nome_cientifico,fic_id ";	 
		 $sqlMestra=$parte1.$parte2.$parte3.$parte4.$parte5.$parte6;
	else:
		 $parte1="SELECT  prd_uf,fic_safra,esp_nome_cientifico,fic_id,fic_amostra ";
         $parte2=" FROM especies,cultivar,remetente,documentos,ficha,documentosponte ";		 
         $parte3="  where doc_labo=".$idLabo."  &&  fic_cultivar=ctv_id and ctv_especie=esp_id and fic_produtor=prd_id and doc_tipo='Boletim'";
		 $parte4="  and dpo_amostra_vinculada=fic_id && dpo_documento_autonumerador=doc_id &&  year(doc_data)='".$anoAmostra."' and ";
		 $parte5="  MONTH(doc_data)='".$mesNumero."' and fic_funcao='".$nomeFuncao."' and fic_categoria='".$nomeCategoria."'";
		 $parte6="  order by prd_uf,fic_safra,esp_nome_cientifico,fic_id ";	 
		 $sqlMestra=$parte1.$parte2.$parte3.$parte4.$parte5.$parte6;
	endif;
	
	
	
	
	
	     //$montado='232.............'.$mesNumero.'/'.$anoAmostra.' labo='.$idLabo.$nomeFuncao.$nomeCategoria;
		//o vetor corpo vai armazenar dados das amostras  id/uf/safra/nome cientifico
		$generica=new tabelagenerica();
		$generica->extras_select =$sqlMestra;
		$generica->selecionaCamposEspecial($generica);
        $contaTodasAmostrasInicial=0;
		//$montado="";
		while ($resgenerica= $generica->retornaDados()):
           $contaTodasAmostrasInicial++;
		   //$montado=$montado.'  - '.$resgenerica->fic_amostra;
		   $vetorAmostras[$contaTodasAmostrasInicial][1]=$resgenerica->prd_uf;
 		   if($cliente=='QUALITESTE') $vetorAmostras[$contaTodasAmostrasInicial][1]=$resgenerica->fic_recipiente2;//so qualiteste usa isso de pegar da procedencia
		   $vetorAmostras[$contaTodasAmostrasInicial][2]=$resgenerica->fic_safra;
		   //////////////
			//aqui pega o nome cientifico e puxa so os primeiro dos nomes  exemplo Lycopersucum esculentum duques x esculacho condese Lineu
			$nomeOriginal=$resgenerica->esp_nome_cientifico;
			//list($primeiroNome, $segundoNome) = explode(" ", $nomeOriginal);
            //$nomeMontado=$primeiroNome." ".$segundoNome;	
			$nomeMontado=$nomeOriginal;	   
		   ////////////////
		   $vetorAmostras[$contaTodasAmostrasInicial][3]=$nomeMontado;
		   
		   //$vetorAmostras[$contaTodasAmostrasInicial][3]=$resgenerica->esp_nome_cientifico;
		   $vetorAmostras[$contaTodasAmostrasInicial][4]=$resgenerica->fic_id;
		endwhile; 


		$pdf->setXY(10,75);
	    //$pdf->cell(100,5,'vaca mora='.$contaTodasAmostrasInicial,1,1);



		 //vai criar os grupos: grupo 1, 2  3  de ACORDO se mudou uf,safra ou especie
		 //vai colocar o numero do grupo na coluna numero 5
		 //VAI CRIAR O VETOR GRUPO QUE VAI FAZER TODO CONTROLE.
         $vetorGrupos=0;
		 $uf="@";
		 $safra="@";
		 $especie="@";
		 $contaGrupo=0;
		 $linha=0;
         $contaTodasAmostras=0;
         $contaTodasOto=0;
		 
		 foreach($vetorAmostras as &$ma):
		     $linha++; 
		     $contaTodasAmostras++; 
		     $contaTodasOto++; 
			 $uf1=$ma[1];//uf
	         $safra1=$ma[2];//safra
	         $especie1=$ma[3];//especie
	         $amostraLong=$ma[4];//amostralong
            if($especie!=$especie1 || $uf!=$uf1 || $safra!=$safra1)
			 {
			     //se muda o grupo ele incrementa a o numero do grupo  simples assim....
                 $especie=$especie1;			 
                 $safra=$safra1;			 
                 $uf=$uf1;			 
        		 $contaGrupo++;
				 $vetorGrupo[$contaGrupo-1]=$contaGrupo;//coloquei o indice -1 para ter o vetor na posicao zero contendo o grupo 1
             }		    
			 //if($linha==5)$montado='especie='.$especie. ' uf='.$uf. ' safra='. $safra;
			 $vetorAmostras[$linha][5]=$contaGrupo;//o grupo ele colocara na coluna numero 5
		     //echo "FUNCIONA vetorAmostras:".$ma[1]. " -> " . " quant:" . $ma[2]. " -> "." oque é?:". $ma[3] ."hhhhhhhhhhhhhhhhhhhhhhhhhhhhhh<br/>"; 
	         //estrutura imaginaria 		 
			 //rs    13/14  glicine  grupo1
			 //rs    13/14  glicine  grupo1
			 //rs    13/14  glicine  grupo1
			 //rs    13/14  zea mays grupo2
		    $montados="xxxtrubufu".$sql;   
         endforeach;



		$pdf->setXY(10,80);
	    //$pdf->cell(100,5,'vaca marela='.$contaTodasAmostrasInicial,1,1);
		 
         $linhaFim=$linha+1;
		 $vetorAmostras[$linhaFim][1]="FIM";//isso aqui é so para ele nao sair contando allem do final. coloca no campo uf que fica como um identificaddor extra
		 $vetorAmostras[$linhaFim][4]=0;
		 $vetorAmostras[$linhaFim][5]=9999;//grupo 9999 nunca vai existir entao ele aborta o porcesso

         //aqui ja formou os grupos e eu vou fazer ele trabalhar exclusivamente  com as amostras do grupo
         //pego todas amostras do grupo $vg e faco ele proceder todos os 
		 //calculos, ja formando as linhas do VETOR FINAL
         //PARA ISSO FACO INVESTIGAR QUAIS OS CONTAMINANTES QUE TEM E ORDENALOS


		 //PORTANTO ESTE FOREACH É O QUE VAI FAZER O SEVICO MAIOR 
		 $linhaBase=0;//era 1
		 $linhaNociva=0;//quando comeca tudo a linha nociva =0
		 $linhaSilvestre=0;
         $vege="@";
		 foreach($vetorGrupo as &$vg):
			$grupoLido=$ma[5];
            if($vege!=$grupoLido):
                //se muda o grupo ele aumenta a linha base obvio isso... 
	            $linhaBase++;
			    $maior=$linhaSilvestre;
				if($linhaNociva>$maior)  $maior=$linhaNociva;
				
	            $linhaBase+=$maior;//provisoriamente pois pode ser que tenha mais silvestres;
				$linhaSilvestre=0;
				$linhaNociva=0;
			endif;	
			
			
            //$linhaBase++;//incrementa uma linha para nao lancar o grupo sobre itens anterieres e tambem para colocar a primeira			
		    $contaAmostrasGrupo=0;
			$data="";//este vetor captura as nocivas encontrada no grupo
			$data1="";//este vetor captura as silvestres encontrada no grupo
			$registrosContaminantesNocivas=0;
			$registrosContaminantesSilvestres=0;
            //vai percorrer todas as amostras do vetor corpo
     		foreach($vetorAmostras as &$ma):
			    //PRIMEIRA COISA É VER SE O VETOR NAO ESTA NO FIM POIS AI NAO EXECUTA MAIS NADA
				if($ma[1]!="FIM")://isto aqui é so para testar se ja nao esta no fim daas amostras
	                $amostraLong=$ma[4];//captura a ida de cada amostra 
				    $grupoLido=$ma[5];
                    //VAI TESTAR SE A AMOSTRA É DAQUELE GRUPO                  
                    if($vg==$grupoLido):
	        			$pdf->setXY(10,70);
						$variavelx=$variavelx."*".$grupoLido;
				        //$pdf->cell(180,5,'vaca mora='.$variavelx,1,1);
						    $contaAmostrasGrupo++;
							//$linhaBase++;
	                        $vetorFinal[$linhaBase][1]=$ma[1]; 
	                        $vetorFinal[$linhaBase][2]=$ma[2]; 
	                        //$vetorFinal[$linhaBase][3]=substr($ma[3],0,52); //especie cultivada tem nomes muito comrpido
	                        $vetorFinal[$linhaBase][3]=$ma[3]; //especie cultivada tem nomes muito comrpido
	                        $vetorFinal[$linhaBase][4]=$contaAmostrasGrupo; 
	                        $vetorFinal[$linhaBase][5]='-'; 
	                        $vetorFinal[$linhaBase][6]='-'; 
	                        $vetorFinal[$linhaBase][7]='-'; 
	                        $vetorFinal[$linhaBase][8]='-'; 
	                        $vetorFinal[$linhaBase][9]='-'; 
	                        $vetorFinal[$linhaBase][10]='-'; 
	                        $vetorFinal[$linhaBase][11]='-'; 
	                        $vetorFinal[$linhaBase][12]='-'; 
	                        //$montado=$montado."  g".$vg. " amo=".$amostraLong;
	                        ////////////////////////aqui vai capturar os contaminantes////////////////////////////////
				            //para cada amostra ele tera que examinar os contaminantes do grupo
							//o vetorAmostrasContaminantes pega todos contaminantes numa so matriz
							//AQUI VAI capturar as  NOCIVAS#######################################33
							$sqlc="SELECT con_nome_cientifico,inv_qtd,inv_codigo FROM invasoras,contaminantes where (inv_codigo='3NOT' OR inv_codigo='4NOP') and inv_cod_praga=con_id && inv_amostra=" . $amostraLong;
							$generica->extras_select =$sqlc;
							$generica->selecionaCamposEspecial($generica);
	                        //preciso criar um array de linhas preparado para depois ordenar
							while ($resgenerica= $generica->retornaDados()):
							   $variavelContaminante=$resgenerica->con_nome_cientifico;
	     					   $variavelQuantidade=$resgenerica->inv_qtd;
							   //aqui eu tento ver se os dados sao validos por causa do erro que deu na germinax em maio/2016(para nocivas))
							   if(strlen($variavelContaminante)>5  &&  $variavelQuantidade>0):
					              $registrosContaminantesNocivas++;
	                              $data[] = array('contaminante' => $resgenerica->con_nome_cientifico, 'quantidade' => $resgenerica->inv_qtd, 'controle' => $registrosContaminantesNocivas);
	                           endif;	   
							endwhile; 
							//AQUI VAI capturar as  SILVESTRES#######################################33
							$sqlc="SELECT con_nome_cientifico,inv_qtd,inv_codigo FROM invasoras,contaminantes where inv_codigo='2SIL' and inv_cod_praga=con_id && inv_amostra=" . $amostraLong;
							$generica->extras_select =$sqlc;
							$generica->selecionaCamposEspecial($generica);
	                        //preciso criar um array de linhas preparado para depois ordenar
							while ($resgenerica= $generica->retornaDados()):
							   $variavelContaminante=$resgenerica->con_nome_cientifico;
							   $variavelQuantidade=$resgenerica->inv_qtd;
							   //aqui eu tento ver se os dados sao validos por causa do erro que deu na germinax em maio/2016(para silvestres))
							   if(strlen($variavelContaminante)>5  &&  $variavelQuantidade>0):
					              $registrosContaminantesSilvestres++;
	                              $data1[] = array('contaminante' => $resgenerica->con_nome_cientifico, 'quantidade' => $resgenerica->inv_qtd, 'controle' => $registrosContaminantesSilvestres);
							   endif;
							endwhile; 
                    endif;//testou se vg=grupolido
	            endif;//testa se o vetor corpo chegou ao fim
             endforeach;//TRABALHA TODAS AMOSTRAS DO VETOR CORPO ou seja percorreu todas amostras
			            //formado o vetor de nocivas entao vou manipular as nocivas
                        //ESTAS LINHAS COMENTADAS É PARA SABER COMO ORDENAR VETOR


					 	///////////////////////////////////////////////////////////////////////////////////
                        //ordena o array para eu ter os nomes cientificos oredenados e tambem para poder detectar repeticoes quando dai vai ter minimo e maximo
   				        //exemplo do gringo
						// In this example, we will order by volume descending, edition ascending.
                        //We have an array of rows, but array_multisort() requires an array of columns, so we use the below code to obtain the columns, then perform the sorting.
						//http://www.nusphere.com/kb/phpmanual/function.array-multisort.htm?
						//$data[] = array('volume' => 67, 'edition' => 2);
						//$data[] = array('volume' => 86, 'edition' => 1);
						//$data[] = array('volume' => 85, 'edition' => 6);
						//$data[] = array('volume' => 98, 'edition' => 2);
						//$data[] = array('volume' => 86, 'edition' => 6);
						//$data[] = array('volume' => 67, 'edition' => 7);

						// Obtain a list of columns
						//foreach ($data as $key => $row) {
						//    $volume[$key]  = $row['volume'];
						//    $edition[$key] = $row['edition'];
						//}
						// Sort the data with volume descending, edition ascending
						// Add $data as the last parameter, to sort by the common key
						//array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
                        ///////////////////////////////////////

                        //precisa obter agora  a lista das colunas pois tenho um array de linhas
						if($registrosContaminantesNocivas>0):
						foreach ($data as $key => $row) {
						    $contaminante[$key]  = $row['contaminante'];
						}
						// Sort the data with volume descending
						// Add $data as the last parameter, to sort by the common key
						array_multisort($contaminante, SORT_ASC, $data);
			            //$montado="";
			            $controle=0;
						$linha=0;
						//esta variavel controle eu precisei criar la em cima pois ela que vai me dar o numero da linha qunado eu terei o array ordenado 
                        //aqui recria o vetor para eu poder fazer a manipulacao final com ele ja ordenado 
						$vetorOrdenado="";//limpa este vetor pois nao pode ficar residuo no caso de nao ter nociva no grupo
						foreach ($data as $key => $row):
                           if($row['controle']!=$controle) ://so vai criar uma linha quando o numero de linha mudar
						      $linha++;
							  $vetorOrdenado[$linha][0]=$row['contaminante'];
						      $vetorOrdenado[$linha][1]=$row['quantidade'];
							  $controle=$row['controle'];
						   endif;         
						endforeach;

                        //aqui faz a manipulacao final para achar as ocorrencias o maximo e o minimo
						//$linhaNociva=$linhaBase-1;
						$contaminanteComparado="@";
						$novasNocivas=0;
						foreach($vetorOrdenado as &$ma):
                            $contaminanteEncontrado=$ma[0];
							$quantidadeEncontrado=$ma[1];
							if($contaminanteEncontrado!=$contaminanteComparado):
						       $linhaNociva++;
							   $novasNocivas++; 
							   $contaminanteComparado=$contaminanteEncontrado;
     	   					   $ocorrencias=1;
					     		$minimo=$quantidadeEncontrado;
								$maximo=$quantidadeEncontrado;
								$ocorrencias=1;
							else:   
 						       $ocorrencias++;
                               if($quantidadeEncontrado<$minimo) $minimo=$quantidadeEncontrado;
                               if($quantidadeEncontrado>$aximo) $maximo=$quantidadeEncontrado;
							endif;
						    $vetorFinal[$linhaBase+$linhaNociva-1][9]=substr($ma[0],0,40);//especie cultivada
                            $vetorFinal[$linhaBase+$linhaNociva-1][10]=$ocorrencias;//especie cultivada
                            $vetorFinal[$linhaBase+$linhaNociva-1][11]=$minimo;//especie cultivada
                            $vetorFinal[$linhaBase+$linhaNociva-1][12]=$maximo;//especie cultivada
			            endforeach;
                     endif;//testa se $registrosContaminantesNocivas>0
			            

						###############terminou nocivas###########################################
                        //comeca manipulacao de silvestres//////////////////////////////////////
                        //precisa obter agora  a lista das colunas pois tenho um array de linhas
					if($registrosContaminantesSilvestres>0):
						foreach ($data1 as $key => $row) {
						    $contaminante[$key]  = $row['contaminante'];
						}
						// Sort the data with volume descending
						// Add $data as the last parameter, to sort by the common key
						array_multisort($contaminante, SORT_ASC, $data1);
			            $controle=0;
						$linha=0;
						//esta variavel controle eu precisei criar la em cima pois ela que vai me dar o numero da linha qunado eu terei o array ordenado 
                        //aqui recria o vetor para eu poder fazer a manipulacao final com ele ja ordenado 
						$vetorOrdenadoSilvestre="";//limpa o vetor para nao ficar residuo se nao tem silvestre no grupo seguinte
						foreach ($data1 as $key => $row):
                           if($row['controle']!=$controle) ://so vai criar uma linha quando o numero de linha mudar
							  $linha++;
							  $vetorOrdenadoSilvestre[$linha][0]=$row['contaminante'];
						      $vetorOrdenadoSilvestre[$linha][1]=$row['quantidade'];
							  $maior=$ma5[2];
							  $menor=$ma5[2];
							  $controle=$row['controle'];
						   endif;         
			            endforeach;

                        //aqui faz a manipulacao final para achar as ocorrencias o maximo e o minimo
						$novasSilvestres=0;
						//$linhaSilvestre=$linhaBase-1;
						$contaminanteComparado="@";
						foreach($vetorOrdenadoSilvestre as &$ma):
                            $contaminanteEncontrado=$ma[0];
							$quantidadeEncontrado=$ma[1];
							if($contaminanteEncontrado!=$contaminanteComparado):
						       $linhaSilvestre++; 
                               $novasSilvestres++;
							   $contaminanteComparado=$contaminanteEncontrado;
     	   					   $ocorrencias=1;
					     		$minimo=$quantidadeEncontrado;
								$maximo=$quantidadeEncontrado;
								$ocorrencias=1;
							else:   
 						       $ocorrencias++;
                               if($quantidadeEncontrado<$minimo) $minimo=$quantidadeEncontrado;
                               if($quantidadeEncontrado>$maximo) $maximo=$quantidadeEncontrado;
							endif;
						    $vetorFinal[$linhaBase+$linhaSilvestre-1][5]=substr($ma[0],0,40);//especie cultivada
                            $vetorFinal[$linhaBase+$linhaSilvestre-1][6]=substr($ocorrencias,0,40);//especie cultivada
                            $vetorFinal[$linhaBase+$linhaSilvestre-1][7]=$minimo;//especie cultivada
                            $vetorFinal[$linhaBase+$linhaSilvestre-1][8]=$maximo;//especie cultivada
			            endforeach;
					endif;// testa se $registrosContaminantesSilvestres>0	
						###############terminou silvestres###########################################
         endforeach;//TRABALHA TODOS OS gRUPOS  DO VETOR GRUPO ENCONTRADOS. EXEMPLO: GRUPO 1, GRUPO 2 ETC
		 $maiorLinha=$novasNocivas;//atribui maior linha =novas nocivas
         if($novasSilvestres>$maiorLinha)$maiorLinha=$novasSilvestres; //se tem masi sisvestres entao maior linha ser asilvestes
         if($maiorLinha>0) $linhaBase=$linhaBase+$maiorLinha;
				        //$linhaBase++; 
//cria a linha com fechador -O- 
       $linhaBase++;
	   for($j=1;$j<=12;$j++):
    	 $vetorFinal[$linhaBase][$j]='';
         if($j==2)$vetorFinal[$linhaBase][$j]='TOTAL:'; 
         if($j==4)$vetorFinal[$linhaBase][$j]=$contaTodasOto; 
    	 $vetorFinal[$linhaBase+1][$j]='-O-';
	   endfor;





//fim da montagem do lsesn2014#################################################################################	
	 

//$vetorFinal[1][1]=$amostraOto;
	 
$registros=$linhaBase;	 
	 $cotaCalculada=$cota4;
	 for($i=0;$i<=$registros+1;$i++)
	 {
		 if($contador==0):
        	 $cotaCalculada=$cota4;//é onde vai comecar a imprmir os dados do relatorio para comecara no comeco...
		     //aqui por certo deveria vir o newpage e o cabecalho
		     //moldura externa DO CABECALHO
		     $pdf->AddPage();//adicionando a primera pafina 
			 $pdf->SetLineWidth($grosso);
			 $pdf->Line($margemEsquerda,$cota1,$margemDireita,$cota1);//linha externa superior	
			 $pdf->Line($margemEsquerda,$cota1,$margemEsquerda,$cota1a);//linha externa esquerda	
			 $pdf->Line($margemDireita,$cota1,$margemDireita,$cota1a);//linha externa direita	
			 $pdf->Line($margemEsquerda,$cota1a,$margemDireita,$cota1a);//fecha o cabecalho embaixo
		     //moldura externa do corpo	 
			 $pdf->Line($margemEsquerda,$cota2,$margemDireita,$cota2);//linha externa superior	
			 $pdf->Line($margemEsquerda,$cota2,$margemEsquerda,$cota8);//linha externa esquerda	
			 $pdf->Line($margemDireita,$cota2,$margemDireita,$cota8);//linha externa direita	
			 $pdf->Line($margemEsquerda,$cota8,$margemDireita,$cota8);//ULTIMA LINHA DO RELATORIO
		     //LINHAS FINAL DO CABEÇALHO E AS 2 DIVISORIAS DO CABECALHO
			 $pdf->SetLineWidth($fino);
			 $larguraColuna1=90;
			 $larguraColuna2=120;
			 $larguraColuna3=70;
			 $posicaoColuna1=$margemEsquerda;
			 $posicaoColuna2=$posicaoColuna1+$larguraColuna1;
			 $posicaoColuna3=$posicaoColuna2+$larguraColuna2;
			 $pdf->Line($posicaoColuna2,$cota1,$posicaoColuna2,$cota1a);//primeira linha vertical
			 $pdf->Line($posicaoColuna3,$cota1,$posicaoColuna3,$cota1a);//segunda linha  vetical
		     ####################################CABECALHO  esquerda################################################
		     $cotaLocal=$cota1+1;
			 $pdf->SetFont('Times','',9);
			 $pdf->setXY($margemEsquerda,$cotaLocal);
			 $pdf->Cell($larguraColuna1,4,'MINISTERIO DA AGRICULTURA E DO ABASTECIMENTO',0,0,'C');//lab nome
			 $pdf->Cell($larguraColuna2,4,utf8_decode($vetorCabecalho[0]),0,0,'C');//lab nome
			 $pdf->Cell($larguraColuna3,4,utf8_decode($legendaPeriodo),0,1,'C');//natureza
			 $pdf->setXY($margemEsquerda,$cotaLocal+4);//SEGUNDA LINHA
			 $pdf->Cell($larguraColuna1,4,'SECRETARIA DE DEFESA AGROPECUARIA',0,0,'C');//lab nome
			 $pdf->Cell($larguraColuna2,4,utf8_decode($vetorCabecalho[1]),0,0,'C');//lab nome
			 $pdf->Cell($larguraColuna3,4,'NATUREZA DA ANALISE:',0,1,'C');//natureza
			 $pdf->setXY($margemEsquerda,$cotaLocal+8);//TERCEIRA LINHA
			 $pdf->Cell($larguraColuna1,4,utf8_decode('COORDENAÇÃO DE LABORATÓRIO VEGETAL'),0,0,'C');//lab nome
			 $pdf->Cell($larguraColuna2,4,utf8_decode($vetorCabecalho[2]),0,0,'C');//lab nome
			 $pdf->Cell($larguraColuna3,4,utf8_decode($legendaNatureza),0,1,'C');//VALOR DA NATUREZA
			 	 
			 //########################imprime identificacao#####################################
			 $cotaLocal=$cota1a+1;
			 $pdf->setXY($margemEsquerda,$cotaLocal);
			 $pdf->Cell($larguraUtil,5,utf8_decode('LEVANTAMENTO DE SEMENTES DE ESPÉCIES SILVESTRES E NOCIVAS'),1,1,'C',1);
		     #############mega colunas#####################################
		     //MEGACOLUNA sao as colunas que vam acima das colunas e que devem estar emparelhados com as colunas depois
			 $largura[1]=6;//uf
			 $largura[2]=14;//safra
			 $largura[3]=63;//especie
			 $largura[4]=10;//numero
			 
			 $largura[5]=40;//especie
			 $largura[6]=17;//numero
			 $largura[7]=17;//numero
			 $largura[8]=17;//numero
			 
			 $largura[9]=45;//especie
			 $largura[10]=17;//numero
			 $largura[11]=17;//numero
			 $largura[12]=17;//numero
		     //cria as 4 larguras do setor de megacoluna
			 $larguraMega1=$largura[1]+$largura[2]+$largura[3]+$largura[4];
			 $larguraMega2=$largura[5]+$largura[6]+$largura[7]+$largura[8];
			 $larguraMega3=$largura[9]+$largura[10]+$largura[11]+$largura[12];
		     //CRIA 3 POSICOES PARA AS LINHAS VERTICAIS DESTA AREA
		     $posicao0=$margemEsquerda;
		     $posicao1=$posicao0+$largura[1];
		     $posicao2=$posicao1+$largura[2];
		     $posicao3=$posicao2+$largura[3];
		     $posicao4=$posicao3+$largura[4];
		     $posicao5=$posicao4+$largura[5];
		     $posicao6=$posicao5+$largura[6];
		     $posicao7=$posicao6+$largura[7];
		     $posicao8=$posicao7+$largura[8];
		     $posicao9=$posicao8+$largura[9];
		     $posicao10=$posicao9+$largura[10];
		     $posicao11=$posicao10+$largura[11];
		     $posicao12=$posicao11+$largura[12];
		     $cotaLocal=$cota2;
			 //$pdf->Line($margemEsquerda,$cota3,$margemDireita,$cota3);//linha abaixo do cabecalho geral	
			 //$pdf->Line($posicao4,$cota2,$posicao4,$cota7);//vertical no final de caracterizacao das amostras	
			 //$pdf->Line($posicao6,$cota2,$posicao6,$cota7);//vertical depois da palavra amosta	
			 //$pdf->Line($posicao18,$cota2,$posicao18,$cota7);//vertical depois da palavra ESPECIFICAÇÃO DOS RESULTADOS ANALÍTICOS
			 $pdf->setXY($margemEsquerda,$cotaLocal);
			 $pdf->Cell($larguraMega1,4,utf8_decode('Caracterização das Amostras Analisadas'),1,0,'C');//esta linha é centrada nao acompanha a cota das demais
			 $pdf->Cell($larguraMega2,4,utf8_decode('Caracterização das Silvestres'),1,0,'C',1);
			 $pdf->Cell($larguraMega3,4,utf8_decode('Caracterização das Nocivas'),1,1,'C');

		     ###############cabeçalhop das colunas propriemente ditas##############
			 $cotaLocal=$cota3;
			 $cotaLocalA=$cotaLocal+8;
			 $pdf->setXY($margemEsquerda,$cotaLocal);
			 $pdf->Cell($largura[1],4,'UF',0,0,'C');
			 $pdf->Cell($largura[2],4,'SAFRA',0,0,'C');
			 $pdf->Cell($largura[3],4,utf8_decode('ESPÉCIE'),0,0,'C');
			 
			 
			 $pdf->Cell($largura[4],4,utf8_decode('Nº'),0,0,'C');

			 $pdf->Cell($largura[5],4,utf8_decode('ESPÉCIE'),0,0,'C');
			 $pdf->Cell($largura[6],4,'Amostras',0,0,'C');
			 $pdf->Cell(34,4,'Sem/Amostra',0,0,'C');
			 
			 $pdf->Cell($largura[9],4,utf8_decode('ESPÉCIE'),0,0,'C');
			 $pdf->Cell($largura[10],4,'Amostras',0,0,'C');
			 $pdf->Cell(30,4,'Sem/Amostra',0,0,'C');
		     //imprime legendinha min/max
			 $pdf->setXY($posicao6,$cotaLocal+4);
			 $pdf->Cell($largura[7],4,'Min',1,0,'C');
			 $pdf->Cell($largura[8],4,'Max',1,0,'C');
			 
		     //imprime legendinha min/max
			 $pdf->setXY($posicao10,$cotaLocal+4);
			 $pdf->Cell($largura[11],4,'Min',1,0,'C');
			 $pdf->Cell($largura[12],4,'Max',1,0,'C');
			 $pdf->Line($margemEsquerda,$cotaLocalA,$margemDireita,$cotaLocalA);//linha de fechamento das colunas
			 
			 
			 //LINHAS VERTICAIS
			
			 $pdf->Line($posicao1,$cota3,$posicao1,$cota7);//LINHA VERTICAL DAS COULUNAS FINAIS	
			 $pdf->Line($posicao2,$cota3,$posicao2,$cota7);//LINHA VERTICAL DAS COULUNAS FINAIS	
			 $pdf->Line($posicao3,$cota3,$posicao3,$cota7);//LINHA VERTICAL DAS COULUNAS FINAIS	
			 $pdf->Line($posicao4,$cota3,$posicao4,$cota7);//LINHA VERTICAL DAS COULUNAS FINAIS	
			 $pdf->Line($posicao5,$cota3,$posicao5,$cota7);//LINHA VERTICAL DAS COULUNAS FINAIS	
			 $pdf->Line($posicao6,$cota3,$posicao6,$cota7);//LINHA VERTICAL DAS COULUNAS FINAIS	
			 $pdf->Line($posicao7,$cotaLocalA,$posicao7,$cota7);//LINHA VERTICAL DAS COULUNAS FINAIS	
			 $pdf->Line($posicao8,$cota3,$posicao8,$cota7);//LINHA VERTICAL DAS COULUNAS FINAIS	
			 $pdf->Line($posicao9,$cota3,$posicao9,$cota7);//LINHA VERTICAL DAS COULUNAS FINAIS	
			 $pdf->Line($posicao10,$cota3,$posicao10,$cota7);//LINHA VERTICAL DAS COULUNAS FINAIS	
			 $pdf->Line($posicao11,$cotaLocalA,$posicao11,$cota7);//LINHA VERTICAL DAS COULUNAS FINAIS	
			 //$pdf->Line($posicao12,$cota3,$posicao12,$cota7);//LINHA VERTICAL DAS COULUNAS FINAIS	
			 $pdf->Line($margemEsquerda,$cota7,$margemDireita,$cota7);//fechamento embaixo
		 endif;//aqui fecha o testador se contador =0 para forcar sair o cabecalho inclusive mais de uma vez
		 
		 
		      
		 $pdf->setXY($margemEsquerda,$cotaCalculada);
         for($j=1;$j<=12;$j++)
		 { 
		      
		     if($j==3):
			    $pdf->SetFont('Times','I',7);
			    if(strlen($vetorFinal[$i][$j])>40)$pdf->SetFont('Times','I',6);
			 endif;	
		     if($j==5)$pdf->SetFont('Arial','I',7);
		     if($j==9)$pdf->SetFont('Arial','I',7);
		 
    		 $pdf->Cell($largura[$j],4,$vetorFinal[$i][$j],1,0,'C');
			 $pdf->SetFont('Times','',9);
			 
		 }
		 $contador++;
		 $cotaCalculada=$cota4+$contador*4;
		 if($contador>30) ://cabem 30 linhas, quando exceder ele salta e imprme o cabecalho tambem
		    $contador=0;
		 
		 endif;
	 }


		$pdf->setXY(10,85);
	    //$pdf->cell(100,5,'vaca marela    linhabase='.$linhaBase,1,1);
 
 
	 ####################imprime rodape#########################
     $pdf->SetFont('Arial','',7);
	 $posicaoAssinatura=180;
     $vetorTecnico=$objetocalculo->dadostecnico($idLabo,'BOLE');

     //imprime a data
     $cotaData=$cota7+1; 	 
	 $pdf->setXY($posicaoAssinatura,$cotaData);
	 $dia=date("d")."/".date("m")."/".date("Y");
     $pdf->Cell(100,4,utf8_decode($vetorCabecalho[6]).", ".$dia,0,0,'C');
     //imprime assinatura
	 $cotaAssinatura=$cota7+5;
	 $idTecnico=$vetorTecnico[5];
	 $assinaturaAtivada=$vetorTecnico[4];
	 if($assinaturaAtivada=='SIM'):
		 $caminhoFinalTecnico="ImagensClientes/a".$idTecnico.".JPG";
		 $pdf->Image($caminhoFinalTecnico,$posicaoAssinatura+20,$cotaAssinatura,51,12,'JPG');
     endif;

     //imprime o risquinho
     $cotaRisco=$cota7+17;//
	 $pdf->Line($posicaoAssinatura,$cotaRisco,280,$cotaRisco);//LINHA VERTICAL DAS COULUNAS FINAIS	 $pdf->setXY($posicaoAssinatura,$cota7b);
     //imprime o tecnico
     $cotaTecnico=$cota7+17; 	 
	 $pdf->setXY(1,$cotaTecnico);
	 $pdf->setXY($posicaoAssinatura,$cotaTecnico);//POSICIONAMENTO DO NOME DO TECNICO
	 $pdf->Cell(100,4,utf8_decode($vetorTecnico[1]),0,0,'C');
     //imprime o rebasem
	 $cotaRenasem=$cota7+21;
	 $pdf->setXY($posicaoAssinatura, $cotaRenasem);//POSICIONAMENTO DO NOME DO TECNICO
	 $pdf->Cell(100,4,'RENASEM:' .$vetorTecnico[3].'  CREA:' . $vetorTecnico[2],0,0,'C');


//enxerto


//fim da parte puxada do antigo////////////////////
			 
ob_clean(); // Quando usava essa classe o ob_clean() resolvia meu problema
$pdf->Output("arquivo.pdf","I");
?>