<?php
// -- Consultar empresa no Simdesk --
Function P_SQL_Simdesk_CadCli( $nCli_CodigoInt = 0, $sCli_Api_Ent_Chave = '' ) {
  SQL_Conectar( 2 );
  $sSQLQuery =
    'SELECT '.
      'CLI_CODIGO,'.
      'CLI_FANTAS,'.
      'CLI_TEL_01,'.
      'CLI_ENDERE,'.
      'CLI_APLLST,'.
      'CLI_API_ENT_CHAVE,'.
      'CLI_BLOQUEADO,'.
      'CLI_ATIVO_ '.
    'FROM cadcli '.
    'WHERE (0+CLI_CODIGO)>0 '.
      ( $nCli_CodigoInt<1 ? '' :
      'AND (0+CLI_CODIGO) = '.$nCli_CodigoInt.' '
      ).
      ( EMPTY($sCli_Api_Ent_Chave) ? '' :
      'AND CLI_API_ENT_CHAVE = "'.$sCli_Api_Ent_Chave.'" '
      ).
    'LIMIT 1 '.
    ';';
  $aConsulta = SQL_Query( $sSQLQuery );
  $aConsulta = SQL_Extrair( $aConsulta );
  SQL_Conectar( 1 );
  //
  return $aConsulta;
}
// -- Consultar registro de terminais --
Function P_SQL_Reg_Terminais( $nTrm_CodigoSim = 0, $nTrm_CodigoInt = 0, $sTrm_Id_Indice = '', $sTrm_Ses_Chave = '' ) {
  $sSQLQuery =
    'SELECT '.
      '* '.
    'FROM reg_terminal '.
    'WHERE TRM_CODIGOINT>0 '.
    ( $nTrm_CodigoSim==0 ? '' :
      'AND TRM_CODIGOSIM = '.$nTrm_CodigoSim.' '
    ).
    ( $nTrm_CodigoInt==0 ? '' :
      'AND TRM_CODIGOINT = '.$nTrm_CodigoInt.' '
    ).
    ( EMPTY($sTrm_Id_Indice) ? '' :
      'AND TRM_ID_INDICE = "'.$sTrm_Id_Indice.'" '
    ).
    ( EMPTY($sTrm_Ses_Chave) ? '' :
      'AND TRM_SES_CHAVE = "'.$sTrm_Ses_Chave.'" '
    ).
    ';';
  $aConsulta = SQL_Query( $sSQLQuery );
  $aConsulta = SQL_Extrair_Cmp( $aConsulta );
  //
  return $aConsulta;
}
// -- Consultar cadastros de produtos --
Function P_SQL_Cad_Produtos( $nIte_CodigoSim = 0, $sLst_CodigoInd = '' ) {
  $sSQLQuery =
    'SELECT '.
      '* '.
    'FROM cad_produto '.
    'WHERE ITE_CODIGOSIM='.$nIte_CodigoSim.' '.
    ( EMPTY($sLst_CodigoInd) ? '' :
      'AND ITE_CODIGOIND IN ('.$sLst_CodigoInd.') '
    ).
    ';';
  $aConsulta = SQL_Query( $sSQLQuery );
  $aConsulta = SQL_Extrair_Cmp( $aConsulta, 'ITE_CODIGOIND' );
  //
  return $aConsulta;
}
// -- Consultar cadastro de operadores --
Function P_SQL_Cad_Operadores( $nEmp_CodigoInt = 0, $nOpe_CodigoInd = 0 ) {
  $sSQLQuery =
    'SELECT '.
      '* '.
    'FROM cad_operador '.
    'WHERE OPE_CODIGOSIM = '.$nEmp_CodigoInt.' '.
    ( $nOpe_CodigoInd==0 ? '' :
      'AND OPE_CODIGOIND = '.$nOpe_CodigoInd.' '
    ).
    ';';
  $aConsulta = SQL_Query( $sSQLQuery );
  $aConsulta = SQL_Extrair_Cmp( $aConsulta );
  If ( $nOpe_CodigoInd>0 && COUNT($aConsulta)==1 ) {
    $aConsulta = $aConsulta[0];
  }
  //
  return $aConsulta;
}
// -- Consultar registros de pedidos do fat_geral --
Function P_SQL_Fat_Geral( $nFat_CodigoSim = 0, $sFat_CodigoInd = '', $bNaoIncluir_FinBlq = False ) {
  $sSQLQuery =
    'SELECT '.
      'ftg.* '.
    'FROM fat_geral AS ftg '.
    'WHERE ftg.FAT_CODIGOSIM='.$nFat_CodigoSim.' '.
    ( EMPTY($sFat_CodigoInd) ? '' :
      'AND ftg.FAT_CODIGOIND IN ('.$sFat_CodigoInd.') '
    ).
    ( $bNaoIncluir_FinBlq ?
      'AND FAT_DH_FINALI=0 '.
      'AND FAT_BLOQUEADO=0 '
    : '' ).
    ';';
  $aConsulta = SQL_Query( $sSQLQuery );
  $aConsulta = SQL_Extrair_Cmp( $aConsulta );
  //
  return $aConsulta;
}
// -- Consultar registros de pedidos do fat_geral de origem filial --
Function P_SQL_Fat_Geral_Mz( $nFat_CodigoSim = 0, $sFat_CodigoInd = '', $bNaoIncluir_FinBlq = False ) {
  $sSQLQuery =
    'SELECT '.
      'ftg.* '.
    'FROM fat_geral AS ftg '.
    'WHERE ftg.FAT_MZ_CODSIM='.$nFat_CodigoSim.' '.
    ( EMPTY($sFat_CodigoInd) ? '' :
      'AND ftg.FAT_CODIGOIND IN ('.$sFat_CodigoInd.') '
    ).
    ( $bNaoIncluir_FinBlq ?
      'AND FAT_DH_FINALI=0 '.
      'AND FAT_BLOQUEADO=0 '
    : '' ).
    ';';
  $aConsulta = SQL_Query( $sSQLQuery );
  $aConsulta = SQL_Extrair_Cmp( $aConsulta );
  //
  return $aConsulta;
}
// -- Consultar itens do pedido "fat_item" --
Function P_SQL_Fat_Item( $nFat_CodigoSim = 0, $sFat_CodigoGer = '' ) {
  $sSQLQuery =
    'SELECT '.
      '* '.
    'FROM fat_item '.
    'WHERE FAT_CODIGOSIM='.$nFat_CodigoSim.' '.
    ( EMPTY($sFat_CodigoGer) ? '' :
      'AND FAT_CODIGOGER IN ('.$sFat_CodigoGer.') '
    ).
    ';';
  $aConsulta = SQL_Query( $sSQLQuery );
  $aConsulta = SQL_Extrair_Cmp( $aConsulta );
  //
  return $aConsulta;
}
// -- Consultar cadastros de clientes --
Function P_SQL_Cad_Clientes( $nCad_CodigoSim = 0, $sCad_CodigoInd = '' ) {
  $sSQLQuery =
    'SELECT '.
      '* '.
    'FROM cad_cliente '.
    'WHERE CAD_CODIGOSIM='.$nCad_CodigoSim.' '.
    ( EMPTY($sCad_CodigoInd) ? '' :
      'AND CAD_CODIGOIND IN ('.$sCad_CodigoInd.') '
    ).
    ';';
  $aConsulta = SQL_Query( $sSQLQuery );
  $aConsulta = SQL_Extrair_Cmp( $aConsulta );
  //
  return $aConsulta;
}
// -- Consultar registros de pedidos do fat_geral em aberto --
Function P_SQL_Fat_Geral_Cmp_Abertos( $dFat_DtHr_RegP_Ini = 0 ) {
  Global $aGlobal;
  //
  $sSQLQuery =
    'SELECT ftg.*, cli.* '.
    'FROM      fat_geral   AS  ftg '.
    'LEFT JOIN cad_cliente AS  cli  ON  ( (cli.CAD_CODIGOSIM = ftg.FAT_MZ_CODSIM  OR  cli.CAD_CODIGOSIM = '.$aGlobal->nSim_Emp_CodigoI.') AND cli.CAD_CODIGOIND = ftg.FAT_CODIGOCLI) '.
    'WHERE  FAT_CODIGOSIM='.$aGlobal->nSim_Emp_CodigoI.' '.
     ( @$aGlobal->aSessao_Terminal['Operador_Indice']+0 > 0 ?
      'AND (FAT_CODIGOENT=0 '.
      'OR FAT_CODIGOENT='.$aGlobal->aSessao_Terminal['Operador_Indice'].

      ') '
     : '' ).
     ( $dFat_DtHr_RegP_Ini==0 ? '' :
      'AND FAT_DTHR_REGP >= "'.date('Y-m-d H:i:s', $dFat_DtHr_RegP_Ini).'" '
      ).
      //'AND  FAT_DH_ENTREG=0 '.   // Pedido não entregue
      //'AND  FAT_DH_RECUSA=0 '.   // Pedido não recusado
      'AND  FAT_DH_FINALI=0 '.   // Pedido não finalizado
      'AND  FAT_BLOQUEADO=0 '.   // Registro não bloqueado
    ';';
  $aConsulta = SQL_Query( $sSQLQuery );
  $aConsulta = SQL_Extrair_Cmp( $aConsulta );
  //
  return $aConsulta;
}
//
// -- Gravar atividade no banco de dados do Simdesk --
Function G_SQL_Simdesk_AplAtv( $nAtv_CodigoAtv = 0, $sAtv_DtHr_Remt = '', $sAtv_Sist_Oper = '', $sAtv_VersaoApl = '' ) {
  Global $aGlobal;
  //
  switch ( $nAtv_CodigoAtv ) {
    // --
    case 0 :  //     Atualizar atividade
      If ( $aGlobal->aSessao_Terminal['Trm_CodigoAtv'] < 1 ) {
        return false;
      }
      $sSQLQuery =
        'UPDATE '.
          'reg_apl_atividades '.
        'SET '.
          'ATV_DTHR_REAL = NOW() '.                                             //  Data e hora real
        'WHERE ATV_CODIGOINT='.$aGlobal->aSessao_Terminal['Trm_CodigoAtv'].' '.
        ';';
      SQL_Conectar( 3 );
      SQL_Query( $sSQLQuery );
      SQL_Conectar( 1 );
    break;
    // --
    case 1 :  // 1 = "Aplicativo iniciado"
      $sAtv_Referenci =
        'Id Device: '.$aGlobal->aSessao_Terminal['Trm_Id_Device'].
        '';
      $sAtv_IP_Remoto = SQL_Bin(Conv_IP_Binario($aGlobal->sNumeroIP_Remoto));
      $dAtv_DtHr_Remt = ConvertDtHrSTR( $sAtv_DtHr_Remt );
      $sAtv_DtHr_Remt = '';
      If ( $dAtv_DtHr_Remt > mktime(0,0,0,1,1,2000) ) {
        $sAtv_DtHr_Remt = DATE("Y-m-d H:i:s",$dAtv_DtHr_Remt);
      }
      //
      $sSQLQuery =
        'INSERT INTO '.
          'reg_apl_atividades '.
        'SET '.
          'ATV_CODIGOCLI   = '.$aGlobal->nSim_Emp_CodigoI.','.                       //  Código do cliente (empresa)
          'ATV_CODIGOAPL   = '.CodigoAppSimsoft.','.                                 //  Código do aplicativo
          'ATV_VERSAOAPL   = "'.stripslashes($sAtv_VersaoApl).'",'.                  //  Versão do aplicativo
          'ATV_DTHR_REAL   = NOW(),'.                                                //  Data e hora real
          'ATV_DTHR_REMT   = "'.$sAtv_DtHr_Remt.'",'.                                //  Data e hora do terminal remoto
          'ATV_SIST_OPER   = "'.stripslashes($sAtv_Sist_Oper).'",'.                  //  Nome do sistema operacional e versão
          'ATV_IP_REMOTO   ="'.$aGlobal->sNumeroIP_Remoto.'",'.                      //  IP do terminal remoto
          'ATV_IP_REMOTO_B = '.$sAtv_IP_Remoto.','.                                  //  IP do terminal remoto : modo binario
          'ATV_CODIGOATV   = 1,'.                                                    //  Código da atividade do aplicativo
          'ATV_NUMEROTRM   = '.$aGlobal->aSessao_Terminal['Trm_CodigoInt'].','.      //  Número do terminal ou PDV
          'ATV_REFERENCI   = "'.stripslashes($sAtv_Referenci).'",'.                  //  Texto livre de referência a atividade
          'ATV_NOME_REDE   = "'.$aGlobal->aSessao_Terminal['Trm_Nome_Rotulo'].'" '.  //  Nome do terminal remoto na rede local
        ';';
      SQL_Conectar( 3 );
      SQL_Query( $sSQLQuery );
      $aGlobal->aSessao_Terminal['Trm_CodigoAtv'] = SQL_Insert_Id();
      SQL_Conectar( 1 );
      $sSQLQuery =
        'UPDATE '.
          'reg_terminal '.
        'SET '.
          'TRM_CODIGOATV = '.$aGlobal->aSessao_Terminal['Trm_CodigoAtv'].' '.
        'WHERE TRM_CODIGOINT='.$aGlobal->aSessao_Terminal['Trm_CodigoInt'].' '.
        ';';
      SQL_Query( $sSQLQuery );
    break;
    //
    // --
    case 2 :  // 2 = "Falha Login"
      If ( $aGlobal->aSessao_Terminal['Trm_CodigoAtv'] < 1 ) {
        return false;
      }
      $sSQLQuery =
        'UPDATE '.
          'reg_apl_atividades '.
        'SET '.
          'ATV_CODIGOATV = 2,'.                                                 //  Código da atividade do aplicativo
          'ATV_DTHR_REAL = NOW() '.                                             //  Data e hora real
        'WHERE ATV_CODIGOINT='.$aGlobal->aSessao_Terminal['Trm_CodigoAtv'].' '.
        ';';
      SQL_Conectar( 3 );
      SQL_Query( $sSQLQuery );
      SQL_Conectar( 1 );
      $sSQLQuery =
        'UPDATE '.
          'reg_terminal '.
        'SET '.
          'TRM_CODIGOATV = 0 '.
        'WHERE TRM_CODIGOINT='.$aGlobal->aSessao_Terminal['Trm_CodigoInt'].' '.
        ';';
      SQL_Query( $sSQLQuery );
      $aGlobal->aSessao_Terminal['Trm_CodigoAtv'] = 0;
    break;
    //
    // --
    case 3 :  // 3 = "Login no sistema"
      If ( $aGlobal->aSessao_Terminal['Trm_CodigoAtv'] < 1 ) {
        return false;
      }
      //
      $aCad_Operador = P_SQL_Cad_Operadores( $aGlobal->nSim_Emp_CodigoI, $aGlobal->aSessao_Terminal['Operador_Indice'] );
      $sAtv_Nome_Oper = @$aCad_Operador['OPE_CODIGOINT'].' - '.@$aCad_Operador['OPE_NOME_COMP'];
      //
      $sSQLQuery =
        'UPDATE '.
          'reg_apl_atividades '.
        'SET '.
          'ATV_NOME_OPER = "'.stripslashes($sAtv_Nome_Oper).'",'.               //  Código e nome do operador no aplicativo
          'ATV_CODIGOATV = 3,'.                                                 //  Código da atividade do aplicativo
          'ATV_DTHR_REAL = NOW() '.                                             //  Data e hora real
        'WHERE ATV_CODIGOINT='.$aGlobal->aSessao_Terminal['Trm_CodigoAtv'].' '.
        ';';
      SQL_Conectar( 3 );
      SQL_Query( $sSQLQuery );
      SQL_Conectar( 1 );
    break;
    //
    // --
    case 4 :  // 3 = "Logoff no sistema"
      If ( $aGlobal->aSessao_Terminal['Trm_CodigoAtv'] < 1 ) {
        return false;
      }
      $sAtv_Nome_Oper = $aGlobal->aSessao_Terminal['Operador_Indice'];
      $sSQLQuery =
        'UPDATE '.
          'reg_apl_atividades '.
        'SET '.
          'ATV_CODIGOATV = 4,'.                                                 //  Código da atividade do aplicativo
          'ATV_DTHR_RL_2 = NOW() '.                                             //  Data e hora real
        'WHERE ATV_CODIGOINT='.$aGlobal->aSessao_Terminal['Trm_CodigoAtv'].' '.
        ';';
      SQL_Conectar( 3 );
      SQL_Query( $sSQLQuery );
      SQL_Conectar( 1 );
      $sSQLQuery =
        'UPDATE '.
          'reg_terminal '.
        'SET '.
          'TRM_CODIGOATV = 0 '.
        'WHERE TRM_CODIGOINT='.$aGlobal->aSessao_Terminal['Trm_CodigoInt'].' '.
        ';';
      SQL_Query( $sSQLQuery );
      $aGlobal->aSessao_Terminal['Trm_CodigoAtv'] = 0;
    break;
    //
  }
  //
  return true;
}
//
//
?>