<?php
$sNomeIdJan1 = 'iJSeqCom_Princ';
$nTmpFrmEnv = 500;
$sMov_Codigo    = SQLVarConfig('FAT_ITEM_SEQCOD');
$sData_Trabalho = SQLVarConfig('DATA_DE_TRABALHO');
$sTipoLocal     = SQLVarConfig('NOME_LOCAIS_SVC');
$nTipoTrabCtl   = SQLVarConfig('CONTROLE_DO_FAT_GERAL')+0;
If ($sData_Trabalho<>DATE("Y-m-d")) {          // Se a data for diferente
   // Se ainda houver mais de 5 horas de diferença
   If ( (ConvertDataSTR($sData_Trabalho)+(5*60*60)<TIME()) OR (ConvertDataSTR($sData_Trabalho)-(5*60*60)>TIME()) ) {
      $sSubModulo='SEQCOM';
   }
}
//
If ($sSubModulo=='SEQCOM') {
   // Criar objeto Janela
   $oJanelaPrinc = New R_Janela();
   $oJanelaPrinc->sIdObj  = $sNomeIdJan1; 
   $oJanelaPrinc->nTop    = 60;
   $oJanelaPrinc->nLeft   = 5;
   $oJanelaPrinc->nWidth  = 550;   // Largura
   $oJanelaPrinc->nHeight = 0;     // Altura
   $oJanelaPrinc->nLeft   += ($nTela_W/2)-($oJanelaPrinc->nWidth/2);
   $oJanelaPrinc->sTitulo = 'Data de trabalho do sistema';
   //    
   $sJavaTravarJ = "document.getElementById('".$oJanelaPrinc->sIdObj."_Travar').style.visibility='visible'; parent.Disabled_In_Elems('".$oJanelaPrinc->sIdObj."',true);";
   //$oJanelaPrinc->sJavOnClick  = "document.getElementById('in_SeqComV_Tecla').focus();";
   $oJanelaPrinc->sJavKeyDown = "return ".$sNomeQdrJ.".Teclas_F(this,event);";
   //
   $oJanelaPrinc->sJavOnClickF =
        $sJavaTravarJ.
        "document.forms.fmSeqComF.acao.value='FECHAR'; ".
		"document.forms.fmSeqComF.target='".$sNomeQdrH."'; ".
        "document.forms.fmSeqComF.submit();".
        "Alerta_Simples('A data de trabalho do sistema permanecerá ".ConvertDataUSBR($sData_Trabalho).".');".
		"";
   //
   // MUDAR A DATA E ZERAR OU MUDAR A SEQUENCIA DAS COMANDAS
   If ( $sAcao=="MUDAR_DATA" ) {
      $sRet_Javs .=
         'parent.JanEspera(false);'.
         "";
      If ( $aSessao[$sNomeQdrH.'_MUDAR_DATA'] ) {
         $nSeqComanda_L = 0;   // Sequencia de comanda das Mesas ou Comandas
         $nSeqComanda_B = 0;   // Sequencia de comanda das Balcão
         $nSeqComanda_E = 0;   // Sequencia de comanda das Disk Entrega
         $Row_Temp = MYSQL_QUERY("SELECT * FROM fat_geral WHERE (FAT_TIP_LOC=0 OR FAT_TIP_LOC=3) AND FAT_DATAINI='".DATE('Y-m-d')."' ORDER BY FAT_SQCOMAN DESC LIMIT 1;") or die(MYSQL_ERROR());
         If ( $Row_Temp = MYSQL_FETCH_OBJECT($Row_Temp) ) {
            $nSeqComanda_L = $Row_Temp->FAT_SQCOMAN+19;
         }
         $Row_Temp = MYSQL_QUERY("SELECT * FROM fat_geral WHERE FAT_TIP_LOC=1 AND FAT_DATAINI='".DATE('Y-m-d')."' ORDER BY FAT_SQCOMAN DESC LIMIT 1;") or die(MYSQL_ERROR());
         If ( $Row_Temp = MYSQL_FETCH_OBJECT($Row_Temp) ) {
            $nSeqComanda_B = $Row_Temp->FAT_SQCOMAN+19;
         }
         $Row_Temp = MYSQL_QUERY("SELECT * FROM fat_geral WHERE FAT_TIP_LOC=2 AND FAT_DATAINI='".DATE('Y-m-d')."' ORDER BY FAT_SQCOMAN DESC LIMIT 1;") or die(MYSQL_ERROR());
         If ( $Row_Temp = MYSQL_FETCH_OBJECT($Row_Temp) ) {
            $nSeqComanda_E = $Row_Temp->FAT_SQCOMAN+19;
         }
		 // Cancelar comandas não abandonadas e nem confirmadas
         $Rows_Temp = MYSQL_QUERY("SELECT * FROM fat_geral WHERE FAT_CANCELA=0 AND FAT_RCFORMA=0 AND FAT_TOT_REC=0;") or die(MYSQL_ERROR());
		 While ( $Row_Temp = MYSQL_FETCH_OBJECT($Rows_Temp) ) {
		       $sFat_Observ = $Row_Temp->FAT_OBSERV2.
			      CHR(13).CHR(10).
			      "** Esta comanda foi cancelada por motivo".CHR(13).CHR(10).
				  "de virada de data de trabalho, a mesma"  .CHR(13).CHR(10).
				  "se encontrava parada sem confirmação de" .CHR(13).CHR(10).
				  "pedido **";
                MYSQL_QUERY(
                  "UPDATE fat_geral SET ".
				    "FAT_OBSERV2=".SQL_Bin($sFat_Observ).",".
				    "FAT_CANCELA='".$R_CadFuncionario->FUN_CODIGO."',".
					"FAT_CAN_DAT='".DATE("Y-m-d H:i:s")."' ".
                  "WHERE FAT_CODIGOI=".$Row_Temp->FAT_CODIGOI."; "
				) or die(MYSQL_ERROR());
		 }
		 //
	     $aLstCaixaAbr = $aSessao[$sNomeQdrH.'_CAIXASABR'];
	     ForEach ( $aLstCaixaAbr as $aCaixa ) {
		    $sSQLQuery =
               "INSERT INTO mov_caixa(".
			      "MVC_SQCAIXA, MVC_COD_FUN, MVC_DATAFIC, MVC_DATAMOV, MVC_TIPOMOV, MVC_VALORMV".
			   ") VALUES (".
			      $aCaixa[0].",".
			  	  $aCaixa[3].",".
			  	  "'".$aCaixa[2]."',".
			      "'".DATE("Y-m-d H:i:s")."',".
			      "1,".
			      "0".
			   "); ";
            MYSQL_QUERY($sSQLQuery) or die(MYSQL_ERROR().' '.$sSQLQuery);
	     }
		 //
		 If ($nTipoTrabCtl==0) {         // Por local
		    SQLVarConfigG('COMANDA_L_SEQCOD',$nSeqComanda_L+1);
		 } ElseIf ($nTipoTrabCtl==1) {   // Por comanda
		    SQLVarConfigG('COMANDA_L_SEQCOD',@$_REQUEST['Num_Comanda_Ini']+0);
		 }
		 SQLVarConfigG('COMANDA_B_SEQCOD',$nSeqComanda_B+1);
		 SQLVarConfigG('COMANDA_E_SEQCOD',$nSeqComanda_E+1);
		 SQLVarConfigG('SENHA_RETIRAR_PRODUTO_SEQCOD',1);
		 //
		 SQLVarConfigG('DATA_DE_TRABALHO',DATE('Y-m-d'));
         //
         $sRet_Javs .=
            "parent.JanEspera(true, 'Operação realizado com sucesso, recarregando o sistema... Aguarde...');".
            "setTimeout( function() { ".
              "parent.document.location.href='./';".
            "}, 1000);".
            "";
		If ( IS_DIR(Url_Site_Path.'log_info') ) {
           $hInfoArq = FOPEN(Url_Site_Path.'log_info/'.DATE("Y_m_d").'_info.txt','a');
           FWRITE($hInfoArq,DATE("H:i:s").' INICIAL(,)'.' - Alerta : O funcionário '.$R_CadFuncionario->FUN_NOMECP.' zerou a(s) comanda(s)'.' na data : '.DATE('d/m/Y').' IP: '.ObterIPdoCliente().CHR(13).CHR(10));
           FCLOSE($hInfoArq);
        }
	  } Else {
         $sRet_Javs .=
			Info_Evento("ERRO: Não é possível realizar a operação, erro interno de continuidade.",1).
			"";
	  }
	  $aSessao[$sNomeQdrH.'_MUDAR_DATA'] = False;
   //
   // VERIFICAR E CONFIRMAR
   } ElseIf ( $sAcao=="CONFIRMAR" ) {
       $sHTML_MsgBlq = '';
       // Verifica se há comandas sem receber e não cancelada (Fat_Geral)
	   $Rows_Temp = MYSQL_QUERY("SELECT FAT_TIP_LOC,FAT_TOT_REC FROM fat_geral WHERE FAT_CANCELA=0 AND FAT_RCFORMA=0;") or die(MYSQL_ERROR());
	   $nFatG_Qtd_V = 0;       // Quantidade total de comanda com valor Zerado
	   $nFatG_Qtd_L = 0;       // Quantidade total de Mesas
	   $nFatG_Qtd_B = 0;       // Quantidade total de Balcão
	   $nFatG_Qtd_E = 0;       // Quantidade total de Disk Entrega
       While ( $Row_Temp = MYSQL_FETCH_OBJECT($Rows_Temp) ) {
	      If ($Row_Temp->FAT_TOT_REC==0) {
		     $nFatG_Qtd_V++;
	      } ElseIf ($Row_Temp->FAT_TIP_LOC==0 OR $Row_Temp->FAT_TIP_LOC==3) {
		     $nFatG_Qtd_L++;
	      } ElseIf ($Row_Temp->FAT_TIP_LOC==1) {
		     $nFatG_Qtd_B++;
	      } ElseIf ($Row_Temp->FAT_TIP_LOC==2) {
		     $nFatG_Qtd_E++;
		  }
	   }
	   If ( ($nFatG_Qtd_L+$nFatG_Qtd_B+$nFatG_Qtd_E)>0 ) {
	      $sHTML_MsgBlq .=
		      "Existem ".($nFatG_Qtd_L+$nFatG_Qtd_B+$nFatG_Qtd_E)." comandas em aberto (".$nFatG_Qtd_L." ".$sTipoLocal.", ".$nFatG_Qtd_B." Balc&atilde;o, ".$nFatG_Qtd_E." Disk Entrega) ".
			  "<br>&nbsp;<br>";
	   }
	   // Verificar se existem caixas abertos
       $Rows_Temp = MYSQL_QUERY("SELECT mov_caixa.*,cad_funcionario.FUN_NOMECP FROM mov_caixa,cad_funcionario WHERE MVC_DATAMOV>'".DATE('Y-m-d',TIME()-(365 *24*60*60))."' AND (MVC_TIPOMOV=0 OR MVC_TIPOMOV=1) AND FUN_CODIGO=MVC_COD_FUN ORDER BY MVC_DATAMOV ASC;") or die(MYSQL_ERROR());
	   $aLMovCaixa = ARRAY();   // Lista de sequencia dos caixas    Ex: [0][0]=2, [1][0]=4, [2][0]=6...
	   $aFMovCaixa = ARRAY();   // Lista de fechamento dos caixas   Ex: [2]=1, [4]=1, [6]=1...
       While ( $Row_Temp = MYSQL_FETCH_OBJECT($Rows_Temp) ) {
		   If ($Row_Temp->MVC_TIPOMOV==0 && (!ISSET($aFMovCaixa[$Row_Temp->MVC_SQCAIXA])) ) {
		      $a_MovCaixa = ARRAY( $Row_Temp->MVC_SQCAIXA, $Row_Temp->MVC_DATAMOV, $Row_Temp->MVC_DATAFIC, $Row_Temp->MVC_COD_FUN, $Row_Temp->FUN_NOMECP );
	          $aLMovCaixa[] = $a_MovCaixa;
		      $aFMovCaixa[$Row_Temp->MVC_SQCAIXA]=0;  // Aberto
		   } Else {
		      $aFMovCaixa[$Row_Temp->MVC_SQCAIXA]=1;  // Fechado
		   }
	   }
	   $aLstCaixaAbr = ARRAY();  // Lista de caixas abertos
       ForEach ( $aLMovCaixa as $aTemp ) {
	       $nSeqCaixa = $aTemp[0];
		   If ( $aFMovCaixa[$nSeqCaixa]==0 ) {
		      $aLstCaixaAbr[] = $aTemp;
		   }
	   }
	   $aSessao[$sNomeQdrH.'_CAIXASABR'] = $aLstCaixaAbr;
	   //
	   $nCaixasAberto = COUNT($aLstCaixaAbr);
	   If ( $nCaixasAberto>0 ) {
	      $sHTML_MsgBlq .=
		      "Existem ".$nCaixasAberto." caixas abertos no sistema: ".
			  "<br>";
          ForEach ( $aLstCaixaAbr as $aTemp ) {
              $sHTML_MsgBlq .=
			    '&nbsp;&nbsp;&nbsp;<span style="font-size:12px; color:#CC0000">'.
                 Str_Zero($aTemp[0],6).
                 ' - '.
                 ConvertDataUSBR($aTemp[2]).
                 ' - '.
                 Str_Zero($aTemp[3],4).
                 '-'.
                 $aTemp[4].
                "</span><br>";
          }
	      $sHTML_MsgBlq .= '<br>';
	   }
	   // Verificar se não há terminais com locais abertos
	   $nQtd_LocAbr = 0;
	   $sTmpMsg = '';
	   $Rows_Temp = MYSQL_QUERY("SELECT * FROM garcom_term_local;") or die(MYSQL_ERROR());
	   While ( $Row_Temp = MYSQL_FETCH_OBJECT( $Rows_Temp ) ) {
	      $nQtd_LocAbr++;
		  $sTmpMsg .=
			    '&nbsp;&nbsp;&nbsp;<span style="font-size:12px; color:#CC0000">'.
                 Str_Zero($Row_Temp->LOC_CODNUM,6).
                 ' - '.
                 ConvertDataUSBR($Row_Temp->LOC_ULTACS).
                 ' - '.
                 Str_Zero($Row_Temp->LOC_NUMTRM,3).
                "</span><br>";
		  
	   }
	   If ($nQtd_LocAbr>0) {
	      $sHTML_MsgBlq .=
		      "Existem ".(COUNT($nQtd_LocAbr))." ".STRTOLOWER($sTipoLocal)."(s) abertas(os) com terminal: ".
			  "<br>".
		      $sTmpMsg.
			  "<br>";
       }
	   //
       // Enviar para zerar comandas e atualizar data de trabalho
	   //If ( ($nFatG_Qtd_V+$nFatG_Qtd_L+$nFatG_Qtd_B+$nFatG_Qtd_E)==0 && ( $nCaixasAberto==0 OR $R_CadFuncionario->FUN_APELID=="A99" ) ) {
	   If ( STRLEN($sHTML_MsgBlq)==0 OR @$_POST['acao2']=="SIM" ) {
		  $aSessao[$sNomeQdrH.'_MUDAR_DATA'] = True;
	      $sJav_Confirm = 
		     JAVA_CharCode(
			    "if (_NUM_BOT_==1) { ".
                    "parent.JanEspera(true, 'Atualizando data e zerando comandas... Aguarde...');".
                    "setTimeout( function() { ".
                      "parent.document.forms.fmSeqComF.acao.value='MUDAR_DATA';".
                      "parent.document.forms.fmSeqComF.submit(); ".
                    "}, ".$nTmpFrmEnv.");".
				"}"
		     );
		  //
          $sRet_Javs .=
	           "parent.document.getElementById('in_SeqComV_Tecla').focus();".
		       "parent.Qdr_Prompt_H(true,'".
			      ( $nFatG_Qtd_V>0   ? 'Há comandas ainda não gravadas ou abandonadas, o sistema vai cancelá-las.<br>&nbsp;<br>' : '').
				  ( $nCaixasAberto>0 ? 'Há '.$nCaixasAberto.' caixa(s) em aberto, o sistema vai fechar todos eles.<br>&nbsp;<br>' : '').
			      "Tem certeza que deseja ".( $nTipoTrabCtl==0 ? 'ZERAR o sequencial' : '').( $nTipoTrabCtl==1 ? 'mudar a sequencial inicial' : '')." das comandas e iniciar um novo periodo?',".$sJav_Confirm.",['Sim','Não']);".
			   
		       "";
	   // Ocorreu algum erro e não pode zerar comandas
       } Else {
		  $bBotaoSim2 = ( ($nFatG_Qtd_V+$nFatG_Qtd_L+$nFatG_Qtd_B+$nFatG_Qtd_E)==0 && ( $nCaixasAberto==0 OR $R_CadFuncionario->FUN_APELID=="A99" ) );
		  //
	      Info_Evento($sHTML_MsgBlq);
	      $sHTML_MsgBlq =
		       '<table width="100%" height="100%">'.
			    "<tr>".
				 '<td align="left" valign="middle" style="font-size:13px;">'.
				  $sHTML_MsgBlq.
				  ( $bBotaoSim2 ?
				    ""
				  :
		            "Não será possível ZERAR as comandas."
				  ).
				  //"<br>".
				  //"O sistema permanecerá na data de trabalho <strong>".ConvertDataUSBR($sData_Trabalho)."</strong>.".
				 "</td>".
				"</tr>".
			   "</table>";
		  //
          $sRet_Javs .=
		       "parent.document.getElementById('".$oJanelaPrinc->sIdObj."_Travar').style.visibility='hidden';".
			   "parent.document.getElementById('img_SeqCom_Ico').src = 'images/icone_erro.png';".
			   "parent.Disabled_In_Elems('".$oJanelaPrinc->sIdObj."',false);".
               "parent.document.getElementById('td_SeqCom_Msg').innerHTML = ".JAVA_CharCode_Mini($sHTML_MsgBlq).";".
               "parent.document.getElementById('SeqCom_BT_Sim').style.display = 'none';".
	           "parent.document.getElementById('in_SeqComV_Tecla').focus();".
			   ( $bBotaoSim2 ? 
	           "parent.document.getElementById('SeqCom_BT_Sim2').style.display = 'inline-block';"
			   : '').
			   "";
		  //
	   }
	   //
   //
   // FECHAR JANELA
   } ElseIf ( $sAcao=="FECHAR" ) {
        $sRet_Javs .=
	       'parent.document.getElementById("dv_MenuL_Barra").style.visibility="visible";'.
	       "parent.RmElem('".$oJanelaPrinc->sIdObj."');".
	       "document.location.href='about:blank';".
		   "";
   //
   // JANELA PRINCIPAL
   } Else {
      // Limpar fat_geral
	  MYSQL_QUERY(
           "UPDATE fat_geral SET ".
		     "FAT_CANCELA='".$R_CadFuncionario->FUN_CODIGO."',".
		     "FAT_CAN_DAT='".DATE("Y-m-d H:i:s")."' ".
           "WHERE FAT_TIP_LOC=0 AND FAT_NUM_MES=0 AND FAT_CANCELA=0; "
	  ) Or Die(MYSQL_ERROR());
      //
	  $aSessao[$sNomeQdrH.'_MUDAR_DATA'] = False;
	  $nSeqComanda_L = SQLVarConfig('COMANDA_L_SEQCOD',True);
	  //
	  $oJanelaPrinc->aIdsObjList = ARRAY( 'in_SeqComV_Tecla', 'in_SeqComV_NumCo');
      //
      // Tela HTML
      $sRet_TelaJ_HTML =
        '<div id="qdr_SeqCom_TelaTrava" style="position:absolute; top:0px; left:0px; width: 100%; height: 100%; opacity:0.65; -moz-opacity: 0.65; filter: alpha(opacity=65); background-color: #000000;"></div>'.
         $oJanelaPrinc->MontaJanHTML(True).
         '<input id="in_SeqComV_Tecla" style="position:absolute; top:-100; left:-100; width:1px; height:1px;">'.
		 '<iframe name="'.$sNomeQdrH.'_1"></iframe>'.
         '<form name="fmSeqComF" accept-charset="utf-8" method="post" action="./car_js.php" target="'.$sNomeQdrH.'_1">'.
          '<input name="mod" type="hidden" value="'.$sModulo.'">'.
          '<input name="submod" type="hidden" value="'.$sSubModulo.'">'.
          '<input name="acao" type="hidden" value="">'.
          '<input name="NomeQdrH" type="hidden" value="'.$sNomeQdrH.'">'.
          '<input name="acao2" type="hidden" value="">'.
         '<table width="100%">'.
          '<tr>'.
		   '<td width="90px" height="160px" valign="middle" align="center">'.
		    '<img id="img_SeqCom_Ico" src="images/img_alerta.png" border="0">'.
		   '</td>'.
           '<td valign="middle" style="font-size:14px;" align="center" id="td_SeqCom_Msg">'.
		    'A data de trabalho de seu sistema é '.
			'<strong>'.ConvertDataUSBR($sData_Trabalho).'</strong>'.
			' e está diferente da <br> data real que é <strong>'.DATE("d/m/Y").'</strong>.'.
			'<br>&nbsp;<br>'.
			( $nTipoTrabCtl==0 ? 'Deseja ZERAR as comandas e começar um novo período?' : '').
			( $nTipoTrabCtl==1 ?
			 'Deseja mudar a sequência inicial das comandas<br>e começar um novo período?'.
		     '<br>&nbsp;<br>'.
			 'Número inicial das comandas: <input type="text" id="in_SeqComV_NumCo" name="Num_Comanda_Ini" maxlength="6" value="'.$nSeqComanda_L.'" style="width:70px;">'.
			 ''
			: '').
		   '</td>'.
		  '</tr>'.
		 '</table>'.
         '</form>'.
         '<table width="100%"></tr>'.
          '<td width="4px" align="left">&nbsp;</td>'.
          '</td>'.
          '<td>'.
           HTML_Botao( 3, 'SeqCom_BT_Sim', //$sJavaTravarJ.
		                                   "document.forms.fmSeqComF.acao.value='CONFIRMAR'; ".
                                           "document.forms.fmSeqComF.submit();"
                        , 'SIM (F10)' ,'images/btimg_ativar.png',120).'&nbsp;&nbsp;'.
           HTML_Botao( 3, 'SeqCom_BT_Sim2', //$sJavaTravarJ.
		                                   "document.forms.fmSeqComF.acao.value='CONFIRMAR';".
		                                   "document.forms.fmSeqComF.acao2.value='SIM';".
                                           "document.forms.fmSeqComF.submit();".
		                                   "document.forms.fmSeqComF.acao2.value='';"
                        , 'Fechar Caixas (F10)' ,'images/btimg_ativar.png',180).
          '</td>'.
          '<td width="124px" align="left">'.
           HTML_Botao( 3, 'SeqCom_BT_Fch', $oJanelaPrinc->sJavOnClickF
                        , 'Não (ESC)' ,'images/btimg_fechar.png',120).
          '</td>'.
         '</tr></table>'.
         $oJanelaPrinc->MontaJanHTML(False);     
      //
      $sRet_Javs .=
	     'parent.document.getElementById("dv_MenuL_Barra").style.visibility="hidden";'.
         "function Teclas_F( Objeto, Evento ) { ".
           "vNumTecla = parent.Tecla_Apertada(Evento); ".
           "if ( vNumTecla==121) { ".         // ** [F10] **
               "if (parent.document.getElementById('SeqCom_BT_Sim').style.display!='none') {".           // (Visualizar)
                  "parent.".$sJava_Desfoca_Input.
                  "setTimeout( parent.document.getElementById('SeqCom_BT_Sim').onclick , 10);".
               "} else if (parent.document.getElementById('SeqCom_BT_Sim2').style.display!='none') {".           // (SIM 2)
                  "parent.".$sJava_Desfoca_Input.
                  "setTimeout( parent.document.getElementById('SeqCom_BT_Sim2').onclick , 10);".
         	   "}".
		   "} else if ( vNumTecla==116) { ".  // ** [F5] **     Não atualizar
                //
           "} else if ( vNumTecla==27 ) { ".  // [ESC]
               "parent.".$sJava_Desfoca_Input.
               "setTimeout( parent.document.getElementById('SeqCom_BT_Fch').onclick , 10);".
		   "} else {".
		     "return true;".
		   "} ".
	       "return false;".
		 '}'.
		 "";
      // Java posterior
      $sRet_JavsPos .=
	     "parent.document.getElementById('SeqCom_BT_Sim2').style.display = 'none';".
	     ( $nTipoTrabCtl==0 ? "parent.document.getElementById('in_SeqComV_Tecla').focus();" : '').
		 ( $nTipoTrabCtl==1 ? "parent.document.getElementById('in_SeqComV_NumCo').focus();" : '').
		 "";
      //
   }
   $aSessao['MODAB_'.$sModulo.$sSubModulo] = '';
}



?>