Ir para o conteúdo
  1. Verificar conexão de rede

    paulosemblano
    Por paulosemblano,

    Tenho uma macro que salva na rede três planilhas de um arquivo em PDF.
    Faz um loop e verifica quais planilhas vai salvar em PDF, e salva corretamente.
    A macro trava ou dá erro quando a rede está ruim ou caiu, precisando utilizar a tecla ESC.
    Como verificar antes se a rede está ativa e operacional?

    Se a rede está mapeada como unidades, logicamente não achando é porque a rede está inativa ou o caminho não existe.
    Uso On Error Resume Next uma linha antes do salvamento em PDF, e logo após If Err.Number > 0
    Dim CaminhoArq As String
    Dim NomeArq As String
    CaminhoArq = ActiveSheet.Range("F2").Value
    NomeArq = ActiveSheet.Range("F4").Value
    If Right(CaminhoArq, 1) <> "\" Then CaminhoArq = CaminhoArq & "\"
    On Error Resume Next
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
    Filename:=CaminhoArq & NomeArq & ".pdf", _
    Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
    If Err.Number > 0 Then
    MsgBox "Caminho da pasta não existe!", vbExclamation, "AAAAA"
    Exit Sub
    End If
    Não existindo o caminho a mensagem de erro é imediata.
    Mas existindo o caminho e a rede estando inativa ou fraca, era para dar erro imediato e cair no IF Err.Number, mas o Excel trava e não responde, somente teclando ESC se consegue parar a macro.

    Um código que achei na Internet, que gostaria de saber se funciona tanto para rede como para internet.
    E continua o código somente se a rede estiver boa: estando ruim ou com algum problema ou inativa, para o código.

    Private Declare PtrSafe Function InternetGetConnectedStateEx Lib "wininet.dll" (ByRef lpdwFlags As Long, ByVal lpszConnectionName As String, ByVal dwNameLen As Integer, ByVal dwReserved As Long) As Long

    Public Function IsInternetConnected() As Boolean
    IsInternetConnected = InternetGetConnectedStateEx(0, "", 254, 0)
    End Function

    Sub TestandoConexão()
    If IsInternetConnected = True Then
    MsgBox "Continua o código"
    Else
    MsgBox "Código interrompido"
    End If
    End Sub

    • 0 respostas
  2. Re: Mostrar texto por dia do Mes

    MarcilioLobao
    Por MarcilioLobao,

    Dementor4842, Bom dia.

    Existem várias maneiras de se fazer isso.

    Vai depender muito da organização dos seus dados e do layout da sua planilha.

    Segue uma sugestão:

    Suponhamos que os objetivos na Folha 2 estejam colocados no intervalo A1:A31

    Na Folha 1 suponhamos que você irá colocar o objetivo na célula A1

    Experimente fazer:

    A1 --> FÓRMULA --> =INDIRETO("'FOLHA 2'!A" & DIA(HOJE()))

    Era isso o que você precisava?

    Eu espero ter ajudado.

    • 1 resposta
  3. Re: SAFT-PT: debate de dúvidas e ideias

    Rui Pedro
    Por Rui Pedro,

    Boa tarde a todos,

    Tenho uma duvida. No caso de utilização do webservice para obter o código da AT de documentos de transporte, se o mesmo falhar, existe algum tipo de validação para a inserção do código manualmente no programa?

    Antes de mais obrigado!

     

    • 6163 respostas
  4. Re: Faturas de Vb para PDF

    jose_gomes_00
    Por jose_gomes_00,

    pergunta no stackoverflow és capaz de conseguir mais respostas do que aqui ;)

     

    • 1 resposta
  5. Re: Faturas de Vb para PDF

    RubeNeto
    Por RubeNeto,

    Boa dia,

    Estou a finalizar o meu Projecto PAP para o final do 12ºAno, e estou a desenvolver um projecto do tipo gestão de restaurante, baseado nos sistemas de restaurantes/cafés em que seleccionamos os pedidos, com os respectivos preços, etc

    Pensei em melhorar ao ponto de ao finalizar o "pagamento" iria abrir um ficheiro PDF com o pedido e o preço respectivo aos pedidos do cliente.

    Queria saber se é possível faze-lo, e de que modo o posso fazer. 

    (Se ajudar, todos os produtos/preços estão ligado com uma base de dados) 

    Agradeço a ajuda, Obrigado 

    • 1 resposta
  6. PHP - Ajuda Sistema de Busca com Paginação

    toarelli
    Por toarelli,

    Caros amigos

    Recorro ao auxílio dos amigos, pois já não consigo mais entender.

    Estou criando uma rotina em PHP  com opção de: Busca / Paginação.

    Consegui fazer a busca, mas não estou conseguindo paginar a página, abaixo o código que estou usando:

    <?php include_once("header.php"); ?>
    
    <?php include_once("menu.php");?>     
    
    
    <div class="content-wrapper">
        <!-- Content Header (Page header) -->
        <section class="content-header">
          <h1>
            Clientes
          </h1>
          <ol class="breadcrumb">
            <li><a href="painel.php?exe=home/home"><i class="fa fa-dashboard"></i> Home</a></li>
            <li class="active">Clientes</li>
          </ol>
        </section>
    
        <!-- Main content -->
        <section class="content">
    
          <div class="row">
    
            <div class="box box-primary">
    
                <div class="box-header">
                  <i class="ion ion-clipboard"></i>
                  <h3 class="box-title">Lista de Clientes</h3>              
    
                  <a href="painel.php?exe=admin/clientes/clientes_novo" type="button" class="btn btn-default pull-right">
                  <i class="fa fa-plus"></i> Cadastrar Clientes</a>
    
                </div><!--Fim div box-header --> 
    
                <form name="frm_busca" action="" enctype="multipart/form-data" method="post" >
                  <div class="col-sm-6 invoice-col">
                     <div class="input-group margin">
                      <input type="text" name="pesquisa" id="pesquisa" class="form-control" onkeyup="up(this)" 
                             placeholder="Digite a Razão Social ou um Status" >
                          
                        <span class="input-group-btn">
    
                          <button type="submit" name="busca" id="busca" class="btn btn-primary btn-flat" value="Pesquisar" >
                                  Pesq. / Limpa
                          </button>
    
                         </span>
                          
                     </div>    
                  </div>
                </form>
    
                <table id="tabClienteLista" class="table table-bordered table-hover">
                    <thead>
                        <tr style="background: #26C776;">
                          <td align="center"><strong>Código:</strong></td>
                          <td align="center"><strong>Razão Social:</strong></td> 
                          <td align="center"><strong>Nome Fantasia:</strong></td> 
                          <td align="center"><strong>Categoria de Acesso:</strong></td> 
                          <td align="center"><strong>Status:</strong></td>                                             
                          <td align="center"><strong>Cadastrado:</strong></td>    
                          <td align="center"><strong>Ação:</strong></td> 
                        </tr>
                    </thead>
     
                    <?php
    
                      //Paginação da página
                      $pag = isset($_GET['pag']) ? (int)$_GET['pag']  : 1;
    
                      $maximo = '10'; //RESULTADOS POR PÁGINA
                      $inicio = ($pag * $maximo) - $maximo; 
    
                      $where = "";
    
                      $pesquisaGet = isset($_GET['pesquisa']) ? $_GET['pesquisa'] : false;
                      $pesquisa = isset($_POST['pesquisa']) ? $_POST['pesquisa'] : $pesquisaGet;   
    
                      //Função para buscar os dados digitados
                      if( isset($_POST['busca']) && $_POST['busca'] == 'Pesquisar' ){
    
                            if (isset($_POST['pesquisa'])){
                                
                                $where = "WHERE razaoSocial LIKE '%".$pesquisa."%' OR 
                                                clienteStatus LIKE '%".$pesquisa."%' ";
    
                              } elseif (!isset($_POST['pesquisa'])) {     
                                
                                $where=" ORDER BY clienteId ASC LIMIT ".$inicio.','.$maximo;                         
                              }     
                      }                  
                    
                      $sql_pegaCliente = "SELECT * FROM clientes $where ";
    
                      try{
                        $query_pegaClientes = $conecta->prepare($sql_pegaCliente);
                        $query_pegaClientes->execute();
                        
                        $res_queryPegaCliente = $query_pegaClientes->fetchAll(PDO::FETCH_ASSOC);
                        $count_pegaClientes   = $query_pegaClientes->rowCount(PDO::FETCH_ASSOC);
    
                        }catch(PDOexcetpion $error_clientes){
                          echo 'Erro ao seleciona os clientes!';  
                        }
                        
                        foreach($res_queryPegaCliente as $resCliente){
                                $clienteId           = $resCliente['clienteId'];
                                $clienteRazaoSocial  = $resCliente['razaoSocial'];
                                $clienteNomeFantasia = $resCliente['nome'];
                                $clienteCategoria    = $resCliente['clienteCategoria'];
                                $clienteStatus       = $resCliente['clienteStatus'];
                                $clienteCriadoEM     = $resCliente['criadoEM'];
                            
                    ?> 
                    
                        <!-- Mostra na Tabela apenas Cliente e Fornecedor -->
                        <?php if($clienteCategoria != "administrador" && $clienteCategoria != "fornecedor") { ?>
                            <tr class="tr_Filtro">
                              <td align="center" width="40"><?php echo $clienteId;?></td>
                              <td align="left" width="200"><?php echo $clienteRazaoSocial;?></td>
                              <td align="left" width="50"><?php echo $clienteNomeFantasia;?></td>
                              <td align="left" width="30">&nbsp;&nbsp;<?php echo $clienteCategoria;?></td>
                              <td align="left" width="15">&nbsp;&nbsp;<?php echo $clienteStatus;?></td>
                              <td align="center" width="10">&nbsp;&nbsp;<?php echo date('d/m/Y',strtotime($clienteCriadoEM)); ?></td>
    
                              <td align="center" width="30">
                              <form name="edita" action="painel.php?exe=admin/clientes/clientes_editar&clienteid=<?php echo $clienteId;?>" 
                                          enctype="multipart/form-data" method="post" >
                                  
                                  <input class="btn btn-primary btn-xs" type="submit" name="executar" id="executar" 
                                         style="font-size: 14px;" value="Editar" />
    
                                  <input type="hidden" name="clienteId" value="<?php echo $clienteId;?>" />
    
                              </form>    
                              </td> 
    
                            </tr>
    
                        <?php }//Fim do IF 
                      
                      }//fim foreach
                  
                  ?>
    
                </table>
    
                    <!-- Função para informar que nenhum Código Cliente foi encontrado -->
                    <tbody>
                        <tr>
                           <?php 
                            if($count_pegaClientes == '0'){
                               echo '<h2>&nbsp;Nenhum registro encontrado!</h2>';
                           echo '<br/>';
                            } else {
    
                            }
                          ?>
                        </tr>
                    </tbody>
    
                <div class="box-footer clearfix no-border" style="font-size: 16px;">
    
                    <!--Paginação da página -->
                    <?php
    
                      //Faz a conexão com o Banco de Dados
                      $cnx = mysql_connect("localhost", "root", "");
                      mysql_select_db("siscotaweb", $cnx);
    
                      //USANDO A MESMA SQL QUE QUE USOU PARA RECUPERAR OS RESULTADOS, SE TIVER A PROPRIEDADE WHERE USE A MESMA TAMBÉM
                      $sql_res = mysql_query("SELECT * FROM clientes ORDER BY clienteId ASC");
                      $total = mysql_num_rows($sql_res);           
    
                      $paginas = ceil($total/$maximo);
                      $links = '10'; //QUANTIDADE DE LINKS NO PAGINATOR
                      
                      echo "<a href=\"painel.php?exe=admin/clientes/clientes_lista&amp;pag=1\">Primeira</a>&nbsp;&nbsp;&nbsp;";
    
                      for ($i = $pag-$links; $i <= $pag-1; $i++){
                        if ($i <= 0){
                        }else{
                         echo"<a href=\"painel.php?exe=admin/clientes/clientes_lista&amp;pag=$i\">$i</a>&nbsp;&nbsp;&nbsp;";
                        }
                      } echo "$pag &nbsp;&nbsp;&nbsp;";
    
                      for($i = $pag +1; $i <= $pag+$links; $i++){
                        if($i > $paginas){
                        }else{
                         echo "<a href=\"painel.php?exe=admin/clientes/clientes_lista&amp;pag=$i\">$i</a>&nbsp;&nbsp;&nbsp;";
                        }
                      }
                      echo "<a href=\"painel.php?exe=admin/clientes/clientes_lista&amp;pag=$paginas\">Última</a>&nbsp;&nbsp;&nbsp;";
                    ?> 
                                    
              </div>   
    
    
            </div><!--Fim div primary -->           
    
          </div><!--Fim div row -->          
    
        </section> 
    
    </div>
         
    <?php include_once("footer.php");?>
    
    <!--Script para Validar o Formulário -->
    <script language="JavaScript" >
    
        function up(lstr){              //converte minusculas em maiusculas
          var str=lstr.value;           //obtem o valor
          lstr.value=str.toUpperCase(); //converte as strings e retorna ao campo
        }
      
    
    </script> 

     

    Como consigo paginar a página.

     

    Grato,

     

    Toarelli

     

     

    • 0 respostas
  7. Problemas com GoToXY e Matrizes

    Gabriel Gomes
    Por Gabriel Gomes,

    Olá,

    Estou a programar um joguinho, e estou tentando acessar as matrizes de forma rápida, mas sem usar muitos For..Do e estou tendo o seguinte problema..

    // PARAMETROS DO DESENHAXY(Cor, Objeto, X, Y).
    
    For I := 1 To MaxObjetos Do
    	    If (Objeto[I].CriaObjeto[Jogador.X, Jogador.Y]) Then // SE PLAYER ENTROU NUMA COORDENADA DE UM OBJETO
    	    Begin
    	      ObjetoSuport.X[I] := Jogador.X; // SALVA AS COORDS 
    		  ObjetoSuport.Y[I] := Jogador.Y; // PARA SER USADO QUANDO O PLAYER SAIR DESSAS COORDS
    		  Inc(J); // ATIVA O SISTEMA
    	    End;
    
    	  If (J > 0) Then
    		For I := 1 To J Do
    		Begin
              If (Jogador.X <> ObjetoSuport.X[I]) Or (Jogador.Y <> ObjetoSuport.Y[I]) Then // SE PLAYER SAIR DA COORDS DO OBJETO ENTAO REDESENHE OBJETO
      		    DesenhaXY(CorObstac, #177, ObjetoSuport.X[I], ObjetoSuport.Y[I]); // << PROBLEMA AQUI.
    		  If (I = J) Then J := 0; // RESETA
    		End;

    O código funciona, se eu retirar esse comando:

    Citação

    DesenhaXY(CorObstac, #177, ObjetoSuport.X, ObjetoSuport.Y);

    Mas sem ele, não dá para eu re-desenhar nas coordenadas exatas. Caso tenha ficado um pouco confuso, e você não tenha conseguido entender, estou tentando criar um método que irá varrer uma área na tela de forma eficaz, procurando objetos que já existem no jogo, e que  o jogador passou por cima, a fim de re-desenhar os objetos.

    Estive a desenvolver outro método, mas ele usa muitos For..Do atrapalhando o decréscimo do tempo de habilidades no meu jogo, não é muito perceptível a não ser que haja um número muito grande de objetos criados. Olhem:

    	  For I := 1 To MaxObjetos Do
    	    If (Objeto[I].CriaObjeto[Jogador.X, Jogador.Y]) Then 
    	    Begin
    	      Objeto[I].ReDesenhaObjeto[Jogador.X, Jogador.Y] := True;
    		  Inc(J);
    	    End;	  
    
    	  If (J > 0) Then
    	    For X := TelaX_Min To TelaX_Max Do
    	      For Y := TelaY_Min To TelaY_Max Do
    		    For I := 1 To MaxObjetos Do
                  If (Objeto[I].ReDesenhaObjeto[X, Y]) And ((Jogador.X <> X) Or (Jogador.Y <> Y)) Then
    			  Begin
    			    Objeto[I].ReDesenhaObjeto[X, Y] := False;
    			    DesenhaXY(CorObstac, #177, X, Y);
    			    If (I = MaxObjetos) Then J := 0;
    		      End;

    São necessários 3 For..Do, atrasa um pouco o programa.

    Enfim, tentei muitas coisas para fazer o primeiro método funcionar, mas ainda sim não funciona. Poderia me dar alguma sugestão?

    Desde já, agradeço!

    Moriturus te saluto!

    • 0 respostas
  8. Re: Mostrar texto por dia do Mes

    dementor4842
    Por dementor4842,

    Boa Noite.

    Estou com uma duvida no excel para a qual necessito de ajuda.

    Estou a criar um documento para o trabalho, o qual e impresso todos os dias pelos colaboradores. Cada dia quero dar um "Target" diferente.

    Ou seja basicamente tenho a "folha 1" que é a capa da folha que é impressa em que todas as manhas o colaborador abre e por cada dia do mês tem um objectivo diferente,

    Esses objetivos ficariam numa "folha 2" a qual o colaborador não tem acesso pois os objetivos são definidos por mim para um mês. Basta fazer 31 dias, ou seja todos os dias 1 de cada mês é sempre o mesmo objetivo.

     

    Obrigado amigos

    • 1 resposta
  9. Re: Várias dúvidas/questões Java

    Convidado
    Por Convidado,

    Alguém me podia ajudar que fiquei um pouco baralhada com isto, alguém pode ajudar?

    public void ligar() {
    
    Try { //
      nick = jtfNick.getText().trim();
      jtaMensagens.append("<-cliente->: A ligar...\n");
      String host = jtfEndereco.getText().trim();
      int port = Integer.parseInt(jffPorto.getText().trim());
    
      //criar o socket
      socket = new Socket(host, port);
      //como não ocorreu uma excepção temos um socket aberto
      jtaMensagens.append("<-cliente->: Ligação estabelecida...\n");
    
      //Vamos obter as streams de comunicação fornecidas pelo socket
      din = new DataInputStream(socket.getInputStream());
      dout = new DataOutputStream(socket.getOutputStream());
      //e iniciar a thread que vai estar constantemente à espera de novas
      //mensages. Se não usassemos uma thread, não conseguiamos receber
      //mensagens enquanto estivessemos a escrever e toda a parte gráfica
      //ficaria bloqueada.
      new Thread(new Runnable() {
        //estamos a usar uma classe anónima...
    
        public void run() {
          try {
            while (true) {
              //sequencialmente, ler as mensagens uma a uma e acrescentar ao
              //texto que já recebemos
              //para o utilizador ver
              jtaMensagens.append(din.readUTF() + "\n");
            }
          } catch (IOException ex) {
            jtaMensagens.append("<-cliente->: " + ex.getMessage());
          }
        }
      }).start();
    } catch (IOException ex) {
      jtaMensagens.append("<-cliente->: " + ex.getMessage());
    }
    }

    Ou seja preciso de colocar comentários em tudo mas estou um pouco confusa., pois é para entregar este trabalho a uma professora.. Alguém me pode explicar para eu perceber melhor este pedaço de código?

    • 12 respostas
  10. Re: Tempo de execução do código

    Pedro Augusto
    Por Pedro Augusto,
    20 minutos atrás, Rui Carlos disse:

    Em Haskell também podes compilar o programa para uma executável, e depois correr o executável com o comando time.

    Mais info aqui: http://downloads.haskell.org/~ghc/latest/docs/html/users_guide/using.html#getting-started-compiling-programs

     

    Muito obrigado pela ajuda, amigo!

    • 4 respostas
  11. Re: Tempo de execução do código

    Rui Carlos
    Por Rui Carlos,
    3 minutos atrás, Pedro Augusto disse:

    Mas em Haskell não aceita, a compilação é feita dentro de um "programa" no proprio terminal, não é igual a linguagem C e outras.

    Em Haskell também podes compilar o programa para uma executável, e depois correr o executável com o comando time.

    Mais info aqui: http://downloads.haskell.org/~ghc/latest/docs/html/users_guide/using.html#getting-started-compiling-programs

     

    • 4 respostas
  12. Re: Tempo de execução do código

    Pedro Augusto
    Por Pedro Augusto,
    2 horas atrás, Rui Carlos disse:

    Em sistemas Unix-like podes usar o comando time ao correr o programa.

    Mas em Haskell não aceita, a compilação é feita dentro de um "programa" no proprio terminal, não é igual a linguagem C e outras.

    • 4 respostas
  13. Re: Vendas no Ebay (Particular/Vendedor) - Taxas

    Rui Carlos
    Por Rui Carlos,

    Relativamente às taxas do Ebay, isto deve-te ser útil.

    • 1 resposta
  14. Re: Tempo de execução do código

    Rui Carlos
    Por Rui Carlos,

    Em sistemas Unix-like podes usar o comando time ao correr o programa.

    • 4 respostas
  15. Re: Tempo de execução do código

    Pedro Augusto
    Por Pedro Augusto,

    Olá Senhores, preciso medir o tempo de execução de alguns códigos em Haskell, preciso do tempo Real, User e Sys. Como proceder?

    • 4 respostas
  16. Re: SAFT-PT: debate de dúvidas e ideias

    Marco Figueiredo
    Por Marco Figueiredo,

    Tenho uma dúvida, e de certeza que já alguém perguntou o mesmo,

    o Ponto 4.4.  do SAFT é obrigatório em que casos? é que é bastante dúbio e parece ser sempre que a aplicação permita fazer recibos, sendo eles de IVA de caixa ou não, mas depois não tem * de obrigatório.

    Obrigado,

    • 6163 respostas
  17. Re: GDPR - Impactos no software

    CrominhO
    Por CrominhO,
    7 horas atrás, M6 disse:

    @CrominhO, a tua visão sobre a coisa é diferente da realidade.

    O RGPD é um regulamento e como tal é de aplicação direta a todos os estados membros, não tem adoção nem transposição.
    Os estamos membros é que criaram esta situação dos regulamentos e estão, obviamente, de acordo com este modelo. Foi criado precisamente para normalizar a coisa, é como a normas de emissão de CO2 dos carros vendidos na UE, também é de adoção direta, não tem de ser transposto nem adotado por cada estado membro.

    PS: no teu comentário estás a fazer confusão entre "governo" e "estado", o que queres dizer é estado.

    @M6 vocês têm razão, my bad :)

    Em todo o caso o Regulamento revoga a Directiva anterior de Protecção de Dados 95/46/EC, Sendo que toda e qualquer Directiva necessita de transposição. 

    E só hoje fiquei a saber que parte do Direito Europeu tem cabimento no Direito Nacional, só não sei bem como se processa em caso de conflito, porque os magistrados judiciais com certeza não têm de saber todos os códigos Nacionais e Europeus, ao contrário da Directiva que ao ser transposta supostamente já acautela essa situação. 

    E também como já houve 2 despachos em conselho de ministros sobre o RGPD, estava a tentar perceber como funciona a coisa :)

    Não me estou a tentar justificar, até porque já admiti que estava errado :) mas para além de gostar de perceber bem as coisas, também não me parece, até pelas fontes que tive de recorrer que seja uma matéria tão facil quanto aqui foi falado :) 

    • 120 respostas
  18. Re: Utilizar Webservices da AT

    bugmen
    Por bugmen,
    Em 29/04/2016 às 09:25, cyrusmoney disse:

    Já tentei usar o código do utilizador eskiso.

    Primeiro pensei que era o meu servidor a bloquear o pedido. Da me a sensação que o pedido não é feito de todo.

    Não importa se faço para o 401 ou para o 701 o erro é sempre o mesmo.

    Tenho o seguinte erro ao tentar conectar webservice:

    Unknown SSL protocol error in connection to servicos.portaldasfinancas.gov.pt:701 35

    Já tentei várias versões do código e nunca:

     

    
    <?php
    $SoapAction = "https://servicos.portaldasfinancas.gov.pt:701/sgdtws/documentosTransporte/";
    //$SoapAction = "https://servicos.portaldasfinancas.gov.pt:401/sgdtws/documentosTransporte/";
    $Action = "https://servicos.portaldasfinancas.gov.pt:701/sgdtws/documentosTransporte";
    //Action = "https://servicos.portaldasfinancas.gov.pt:401/sgdtws/documentosTransporte";
    $cert_pem = 'pfxcert.pem'; //Caminho completo para o pfxcert.pem ou so o nome se estiver na mesma pasta
    $key_pem  = 'pfxKey.pem'; //Caminho completo para o pfxKey.pem ou so o nome se estiver na mesma pasta
    $pass_cert = 'TESTEwebservice';
    $curl = curl_init(trim($Action));
    
    						curl_setopt($curl, CURLOPT_FRESH_CONNECT, TRUE);
    						curl_setopt($curl, CURLOPT_HTTPHEADER,array(
    										'Content-Type:text/xml;Charset=UTF-8',
    										'Accept: text/xml',
    										'Cache-Control: no-cache',
    										'SoapAction='.$SoapAction
    						));
    						curl_setopt($curl, CURLOPT_URL, trim($Action));
    						curl_setopt($curl, CURLOPT_SSLVERSION, 3);
    						curl_setopt($curl, CURLOPT_VERBOSE, TRUE); // para ver o que se passa...
    						curl_setopt($curl, CURLOPT_AUTOREFERER, TRUE);
    						curl_setopt($curl, CURLOPT_POST, 1);
    						//curl_setopt($curl, CURLOPT_POSTFIELDS, $xml);
    						curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    						curl_setopt($curl, CURLOPT_SSLCERT, $cert_pem); // o certificado em formato PEM (.pem)
    						curl_setopt($curl, CURLOPT_SSLCERTTYPE, 'PEM');
    						curl_setopt($curl, CURLOPT_SSLCERTPASSWD, $pass_cert);
    						curl_setopt($curl, CURLOPT_SSLKEY, $key_pem);
    						curl_setopt($curl, CURLOPT_SSLKEYPASSWD, $pass_cert);
    						curl_setopt($curl, CURLOPT_SSLKEYTYPE, 'PEM');
    						curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    						$response = curl_exec($curl);
    						$info = curl_getinfo($curl);
    						print_r( $response );
    						print_r( $info );
    
    		if (FALSE === $response) {
    			print_r( curl_error($curl) );
    			print_r( curl_errno($curl) );
    		}
     

     

    (tirei propositadamente o $xml do código mas não importa dá sempre o mesmo erro)

    Agradecia de saber se alguém tem solução para este problema que pudesse ajudar mesmo resolver o problema pagando. Mas precisava mesmo de saber qual o problema e solução.

    Informação extra sobre servidor :

    CURL Version: 7.38.0

    CURL SSL Version: OpenSSL/1.0.1e

    PHP Version: 5.5.31

    Desde já muito obrigado.

    Tenho o mesmo problema... conseguiu descobrir o problema? como conseguiu resolver ?

    Obrigado desde já.

    Estou a usar:

    PHP 7.2

    CURL: 7.45

    CURL SSL: OpenSSL/1.0.2.n

     

    • 7462 respostas
  19. Re: Autoridade Tributária - Problemas na comunicação Webservice

    bugmen
    Por bugmen,
    Em 13/12/2017 às 15:18, Alltech disse:

    Tenta adicionar estas linhas de codigo:

    
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_VERBOSE, 0);

    Se não funcionar adiciona torca isto:

    
    curl_setopt($curl, CURLOPT_POST, 1);

    por isto:

    
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");

     

    ALLTECH

    Obrigado desde já pela sua partilha @Alltech

    Em ambiente de testes não consigo comunicar faturas com sucesso (fiz as devidas adaptações às url).

     

    Numa abordagem como a do seu código por CURL, tenho sempre ou erro "Unknown SSL protocol error in connection to servicos.portaldasfinancas.gov.pt:700"  ou "Could not connect to host"

    ou se fizer a implementação através de soap client :

    "particle 2.1: in element {http://servicos.portaldasfinancas.gov.pt/faturas/}RegisterInvoiceElem of type {http://servicos.portaldasfinancas.gov.pt/faturas/}RegisterInvoiceType, found <InvoiceNo> (in default namespace), but next item should be {http://servicos.portaldasfinancas.gov.pt/faturas/}InvoiceNo"

    Segui as indicações que foi colocando mas sem sucesso.

    O que acha que poderá estar a falhar?

    • 6 respostas
  20. Re: Autoridade Tributária - Utilização de webservice com SSL

    bugmen
    Por bugmen,
    Em 21/08/2017 às 12:19, Nuno Bagulho Marques disse:

    Bom dia!

    Utilizei o código do @eSkiSo ( e desde já obrigado). Fiz as alterações recomendadas, nomeadamente a alteração do formato do certificado, mas não consigo ligar ao web-servivce

    não obtenho nenhuma resposta, depois da instrução

    $response = curl_exec($curl);  

    resultado vem em branco

    Alguma ajuda? Obrigado

     

    Boa tarde

    Como conseguiu ultrapassar esta dificuldade ? Estou com o mesmo problema há 1 semana e não consigo avançar.  Também estou a programar em PHP e quer por SoapClient quer por Curl não consigo comunicar faturas com o servidor de testes.

    Por curl o resutado também vem em branco... ou seja fazendo um dump fico a saber que está a false (houve um erro)... depois o erro é  "Unknown SSL protocol error in connection to servicos.portaldasfinancas.gov.pt:700"  ou "Could not connect to host" .

    O que acha que poderá estar a falhar?

    Qualquer dica será bem vinda. Obrigado desde já.

    • 30 respostas
  1. Ver Mais Actividade
×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.