Ir para o conteúdo

Rankings


Conteúdo Popular

A mostrar o conteúdo com mais reputação desde 20-04-2018 em todas as áreas

  1. 3 pontos
    isso é o operador ternário. imagina um if, mas que "retorna" um valor. olha para a estrutura do operador ternário: <expr1> ? <expr2> : <expr3> agora é necessário como a linguagem processa essa expressão (toda a combinação acima descrita): - caso o valor de expr1 for verdadeiro, então o resultado do operador ternário é o resultado da expr2, caso contrário, será expr3.
  2. 2 pontos
    https://faturas.portaldasfinancas.gov.pt/testarLigacaoWebService.action
  3. 2 pontos
    hum ... só uns warnings ? gcc -c -g -MD -MP -Wall -Werror -pedantic -std=c99 -I. -I./include/ src/main.c -o obj/MINGW64_NT-10.0/main.o src/main.c: In function 'main': src/main.c:46:12: error: format '%c' expects argument of type 'char *', but argument 2 has type 'int' [-Werror=format=] scanf("%c",linha); ~^ src/main.c:46:12: error: format '%c' expects argument of type 'char *', but argument 2 has type 'int' [-Werror=format=] src/main.c:47:12: error: format '%d' expects argument of type 'int *', but argument 2 has type 'int' [-Werror=format=] scanf("%d",coluna); ~^ src/main.c:47:12: error: format '%d' expects argument of type 'int *', but argument 2 has type 'int' [-Werror=format=] src/main.c:67:23: error: suggest parentheses around comparison in operand of '==' [-Werror=parentheses] if (tabuleiro[1][1]==tabuleiro[1][2]==tabuleiro[1][3]){ ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ src/main.c:71:23: error: suggest parentheses around comparison in operand of '==' [-Werror=parentheses] if (tabuleiro[2][1]==tabuleiro[2][2]==tabuleiro[2][3]){ ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ src/main.c:75:23: error: suggest parentheses around comparison in operand of '==' [-Werror=parentheses] if (tabuleiro[3][1]==tabuleiro[3][2]==tabuleiro[3][3]){ ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ src/main.c:79:23: error: suggest parentheses around comparison in operand of '==' [-Werror=parentheses] if (tabuleiro[1][1]==tabuleiro[2][1]==tabuleiro[3][1]){ ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ src/main.c:83:23: error: suggest parentheses around comparison in operand of '==' [-Werror=parentheses] if (tabuleiro[1][2]==tabuleiro[2][2]==tabuleiro[3][2]){ ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ src/main.c:87:23: error: suggest parentheses around comparison in operand of '==' [-Werror=parentheses] if (tabuleiro[1][3]==tabuleiro[2][3]==tabuleiro[3][3]){ ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ src/main.c:91:23: error: suggest parentheses around comparison in operand of '==' [-Werror=parentheses] if (tabuleiro[1][1]==tabuleiro[2][2]==tabuleiro[3][3]){ ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ src/main.c:112:48: error: left-hand operand of comma expression has no effect [-Werror=unused-value] printf(("O vencedor dos cinco jogos foi %s", jogadores[1].nickname)); ^ src/main.c: In function 'preencher_dados': src/main.c:126:12: error: format '%d' expects argument of type 'int *', but argument 2 has type 'int' [-Werror=format=] scanf("%d",identificacao); ~^ src/main.c:126:12: error: format '%d' expects argument of type 'int *', but argument 2 has type 'int' [-Werror=format=] src/main.c:129:12: error: 'return' with a value, in function returning void [-Werror] return 0; ^ src/main.c:120:6: note: declared here void preencher_dados () ^~~~~~~~~~~~~~~ src/main.c:139:14: error: format '%d' expects argument of type 'int *', but argument 2 has type 'int' [-Werror=format=] scanf("%d",jogadores[i].numero_de_estudante); ~^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/main.c:139:14: error: format '%d' expects argument of type 'int *', but argument 2 has type 'int' [-Werror=format=] src/main.c:147:13: error: format '%c' expects argument of type 'char *', but argument 2 has type 'int' [-Werror=format=] scanf("%c",jogadores[i].simbolo); ~^ ~~~~~~~~~~~~~~~~~~~~ src/main.c:147:13: error: format '%c' expects argument of type 'char *', but argument 2 has type 'int' [-Werror=format=] src/main.c:126:4: error: 'identificacao' may be used uninitialized in this function [-Werror=maybe-uninitialized] scanf("%d",identificacao); ^~~~~~~~~~~~~~~~~~~~~~~~~ src/main.c: In function 'main': src/main.c:46:4: error: 'linha' may be used uninitialized in this function [-Werror=maybe-uninitialized] scanf("%c",linha); ^~~~~~~~~~~~~~~~~ src/main.c:47:4: error: 'coluna' may be used uninitialized in this function [-Werror=maybe-uninitialized] scanf("%d",coluna); ^~~~~~~~~~~~~~~~~~ cc1.exe: all warnings being treated as errors Makefile:78: recipe for target 'obj/MINGW64_NT-10.0/main.o' failed make: *** [obj/MINGW64_NT-10.0/main.o] Error 1 só existe um tipo de compilação aceitável : 0 errors and 0 warnings
  4. 2 pontos
    Aqui está a última versão da estrutura XML usada em Portugal para exportar o ficheiro SEPA: https://www.bportugal.pt/sites/default/files/sepa-manual-c2b-xml-022016-en.pdf Estamos a comparar se este ficheiro corresponde ao LibSEPA que já usamos para a Alemanha (https://libsepa.com/de/) ou se precisa de ajustes. O validador para as exportações eu encontrei aqui no fórum mesmo (ainda não testamos para ver se funciona): https://www.mobilefish.com/services/sepa_xml_validation/sepa_xml_validation.php
  5. 1 ponto
    Sensors detected Elaine Herzberg, but software reportedly decided to ignore her. [Continua...] In Ars Technica, 7 de Maio de 2018.
  6. 1 ponto
    no dia em que as aplicações vão a servidores pedir código para ser executado localmente, desligo todo da net ... o que podes fazer é ter um servidor que, depois de autenticação, te fornece os dados de ligação ao teu sistema de permanência (base de dados)
  7. 1 ponto
    Vê os primeiros tópicos da secção de C#, em particular este.
  8. 1 ponto
    @soad0605, @M6 Pela minha compreensão da pergunta, a minha resposta é não. Isto porque o protocolo HTTPS não é mais do que a execução do HTTP dentro de um tunel TLS/SSL, que terá a função de encriptar toda a ligação entre o browser e o servidor. O que estou a dizer é que toda a informação (e isto engloba a totalidade dos pacotes HTTP) são encriptados e enviados pelo tunel criado.
  9. 1 ponto
    Tens de usar a propriedade SelectItem (ou algo assim, não sei de cor) para escolheres o item que deve ser selecionado.
  10. 1 ponto
    Eu vivo no UK e diria que meter no correio é uma má ideia. Eu diria que contratar uma empresa global de entregas será muito mais seguro (algo como UPS or Fedex) do que utilizar os correios normais. Um dos motivos é que quando se paga por correio registado num país, o "registo" apenas é válido dentro do país onde compraste... ou seja, quando o teu tio meter isso no Royal Mail, o pacote é vigiado até sair do UK e depois é metido com todos os outros para serem entregues em Portugal. Outra coisa a ter em conta são as baterias... o teu tio vai ter de responder se tem baterias dentro do pacote. E nada te garante que eles não vão verificar e possivelmente bloquear o transporte.
  11. 1 ponto
    1 trilião de palavras com 10 caracteres são 10 triliões de caracteres (10 Terabytes) a 1 byte por caracteres, como só usas 16 caracteres diferentes podes reduzir para metade...4 bits por caracter... completar essa lista com palavras criadas aleatoriamente iria ser quase impossivel.... imagina que já só te faltava uma palavra, olha só a quantidade de vezes que o computador tinha que gerar palavras até acertar a que faltava... o que podias fazer era preencher uma lista (List<string>), com AAAAAAAAAA, AAAAAAAAAB, etc... e escolheres um index aleatório (de zero ao count-1 da list) e copiares para o *.txt... depois removeres esse elemento da List<string>.... assim já não precisavas de verificar se existe no *.txt... o maximo de elementos da list são 2.147.483.647 (2^31-1)... tinhas de criar umas poucas...
  12. 1 ponto
    Podes usar a aplicação de envio disponibilizada pela AT: https://faturas.portaldasfinancas.gov.pt/envioBatchInfo.action
  13. 1 ponto
    Caro amigo Nesse caso aconselho a utilizar o INNER JOIN, ou seja, união entre 2 ou mais tabela, um exemplo abaixo de como ficaria: $sql_pegaProd = "SELECT cl.clienteId, cl.razaoSocial AS clientes, ct.cotaId, ct.cotaNumero, ct.cotaDtInicio, ct.cotaHrsInicio, ct.cotaDtFim, ct.cotaHrsFim, ct.cotaTitulo, ct.cotaStatus, ct.clientes_clienteId AS cotacao FROM clientes AS cl INNER JOIN cotacao AS ct ON cl.clienteId = ct.clientes_clienteId WHERE cotaNumero = :cotaNumero"; Antes de incluir no seu sistema, utiliza o exemplo acima diretamente no seu banco de dados. Verifica se traz a informação necessária e depois inclui no seu código.
  14. 1 ponto
    depende da maneira como estás a obter os dados da notícia para ser apresentada, mas supondo que estamos a falar de uma base de dados relacional, a maneira mais simples será fazer uma referência à tabela Utilizadores quando estas a declarar do SQL a ser execurato. Esta relação deverá ser declarada através da instrução inner join ou left join
  15. 1 ponto
    Viva, oficialmente não existe. O truque que se faz é fazer Scraping. Ou seja autênticas-te nos serviços da AT e depois invocas os métodos de json e voilá tens as faturas depois é só comparares com os documentos que já lanças-te na contabilidade. Abraço Pedro
  16. 1 ponto
    Viva. Aconselho vivamente a não usares Flash. Além de ser uma tecnologia totalmente descontinuada, é "mal vista" a nível de segurança e totalmente incompatível com SEO.
  17. 1 ponto
    M6, Peço-lhe desculpa. Descobri o erro no programa. Uma coisa completamente estúpida: Escrevi "AdressBook" no preenchimento do DataSet: 'FILL THE DATASET WITH RECORDS FROM DATABASE TABLE da.Fill(ds, "AdressBook") E escrevia "AddressBook" com dois "dd" no código - o que, naturalmente, dava erro. ds.Tables("AddressBook").Rows(inc).Item(1) = txtFirstName.Text Obrigado pelo seu tempo. Diogo Sousa
  18. 1 ponto
    Boas 😄 não é a minha praia mas isso é um iif.
  19. 1 ponto
    Primeiro tens de criar Criar a fatura, não sei se o fizeste. Para isso tens de ir a Form que pretendes colocar o botão depois vais à Toolbox e colocas o PrintDocument, PrintPreviewDialog e PrintDialog. Depois programas o PrintDocument1 como se fosse um timer, clicas em cima dele e programas o que queres que apareça na fatura. Eu recomendo-te que não exportes para pdf, pois a PAP tem como conceito aplicar o programa à situação, e tu nunca vais integrar um pdf como fatura num restaurante/café. Deixo-te aqui um exemplo de código para te orientares melhor. Dim font1 As New Font("Microsoft Sans Serif", 18) ' defenir a fonte Dim Logo As Image = Image.FromFile(Application.StartupPath + "imagem.png") ' declarar uma imagem e.Graphics.DrawImage(Logo, 20, 30, 300, 100) ' aplicar imagem e.Graphics.DrawString("Texto", font1, Brushes.Black, 40, 150) ' escrever texto e.Graphics.DrawLine(Pens.Black, 50, 800, 770, 800) ' Fazer uma linha Espero que tenha ajudado, boa sorte para a tua PAP. Atentamente, Diogo.
  20. 1 ponto
    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
  21. 1 ponto
    Relativamente às taxas do Ebay, isto deve-te ser útil.
  22. 1 ponto
    A utilização de linhas negativas (contrárias à natureza do documento) está regulamentada no ponto 2.2.6. do despacho 8632/2014. O exemplo dado viola claramente o que está regulamentado.
  23. 1 ponto
    Olá a todos! Estamos a tentar usar os Webservices referentes ao STADA Exportação. Finalmente hoje enviaram-nos um certificado para o sistema de testes sem o WSDL (apesar de já o ter pedido) e foi assim que cheguei a este fórum através do nome do ficheiro do certificado. Alguém tem experiência com o STADA Exportação ou consegue arranjar o WSDL? Para adiantar a parte da autenticação estou a tentar enviar umas faturas para o ambiente de testes e estou sempre a obter o famoso <?xml version='1.0' ?> <env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'> <env:Body> <env:Fault> <faultcode>env:Client</faultcode> <faultstring>Internal Error</faultstring> </env:Fault> </env:Body> </env:Envelope> Hoje estive na luta e consegui finalmente enviar alguma coisa para o servidor de testes. Basicamente a luz acendeu quando passei o parâmetro encoding com UTF-8 nas opções de encoding do SoapClient e devolveu um erro diferente de Internal Error. A partir daí foi dar marteladas atrás de marteladas, ler coisas neste tópico, tratar da autenticação e embrulhar Para quem esteja a chegar agora e trabalhe com PHP fica aqui o código com o SoapClient e phpseclib (não usa mcrypt que foi descontinuado nas versões mais recentes e é considerado inseguro). Este exemplo é para as guias de transporte. Eu vou estar a trabalhar com outros webservices que não estão no site das finanças referentes ao STADA Exportação portanto espero que a autenticação seja igual!! Neste caso estou a usar composer para instalar a dependência do phpseclib portanto terão de adaptar ao vosso código! 1. Obter os certificados do Portal das Finanças. 2. Pegar no ficheiro TesteWebservices.pfx, converter para o formato PEM e copiar o resultado para uma pasta acessível pelo vosso script (no meu caso a pasta certs). A password é TESTEwebservice. O comando irá retirar a password do ficheiro portanto não será necessária no código. openssl pkcs12 -in TesteWebservices.pfx -out TesteWebservices.pem -nodes 3. Copiar o ficheiro da chave pública da AT que está no link indicado no número 1 para a pasta do vosso script. 4. Personalizar o código em baixo com as vossas credenciais, caminhos e endpoints no array $options. <?php require 'vendor/autoload.php'; use phpseclib\Crypt\AES; use phpseclib\Crypt\Random; use phpseclib\Crypt\RSA; use phpseclib\File\X509; $transport = new stdClass(); $transport->TaxRegistrationNumber = '599999993'; $transport->CompanyName = 'Nome Empresa Lda'; $transport->CompanyAddress = new stdClass(); $transport->CompanyAddress->Addressdetail = 'Rua da Empresa, 123'; $transport->CompanyAddress->City = 'Maia'; $transport->CompanyAddress->PostalCode = '4470-263'; $transport->CompanyAddress->Country = 'PT'; $transport->DocumentNumber = bin2hex(openssl_random_pseudo_bytes(8)); $transport->MovementStatus = 'N'; $transport->MovementDate = date('Y-m-d'); $transport->MovementType = 'GT'; $transport->CustomerName = 'Nome Cliente Lda'; $transport->CustomerTaxID = 599999993; $transport->CustomerAddress = new stdClass(); $transport->CustomerAddress->Addressdetail = 'Local'; $transport->CustomerAddress->City = 'Lisboa'; $transport->CustomerAddress->PostalCode = '2775-089'; $transport->CustomerAddress->Country = 'PT'; $transport->AddressFrom = new stdClass(); $transport->AddressFrom->Addressdetail = 'Local carga'; $transport->AddressFrom->City = 'Maia'; $transport->AddressFrom->PostalCode = '4470-263'; $transport->AddressFrom->Country = 'PT'; $transport->AddressTo = new stdClass(); $transport->AddressTo->Addressdetail = 'Local entrega'; $transport->AddressTo->City = 'Lisboa'; $transport->AddressTo->PostalCode = '2775-089'; $transport->AddressTo->Country = 'PT'; $transport->VehicleID = '00-00-KK'; $transport->MovementStartTime = date('Y-m-d\TH:i:s', mktime(date('H') + 1, date('i'), 0, date('m'), date('d'), date('Y'))); $transport->MovementEndTime = date('Y-m-d\TH:i:s', mktime(date('H') + 5, date('i'), 0, date('m'), date('d'), date('Y'))); $transport->Line = []; $transport->Line[] = (function () { $line = new stdClass(); $line->ProductDescription = 'prod1'; $line->Quantity = 1; $line->UnitOfMeasure = 'Kg'; $line->UnitPrice = 11; return $line; })(); $transport->Line[] = (function () { $line = new stdClass(); $line->ProductDescription = 'prod2'; $line->Quantity = 1; $line->UnitOfMeasure = 'Kg'; $line->UnitPrice = 12; return $line; })(); $wsdl = 'wsdl/documentosTransporte.wsdl'; $options = [ 'local_cert' => 'certs/TesteWebservices.pem', 'encoding' => 'utf-8', 'soap_version' => SOAP_1_2, 'at_username' => '599999993/37', 'at_password' => 'testes1234', 'at_public_key' => 'certs/ChavePublicaAT.cer', 'location' => 'https://servicos.portaldasfinancas.gov.pt:701/sgdtws/documentosTransporte', 'uri' => 'https://servicos.portaldasfinancas.gov.pt:701/sgdtws/documentosTransporte', ]; $client = new SoapClientAT($wsdl, $options); var_dump($client->envioDocumentoTransporte($transport)); /** * Class SoapClientAT */ class SoapClientAT extends SoapClient { /** * @var array|null */ private $options = null; /** * SoapClientAT constructor. * @param string $wsdl * @param array $options */ public function __construct($wsdl, $options) { $this->options = $options; parent::__construct($wsdl, $options); } /** * @param DOMDocument $document * @return DOMElement */ private function createHeaderNode($document) { $publicKey = $this->options['at_public_key']; if (is_file($publicKey)) { $publicKey = file_get_contents($publicKey); } $key = Random::string(16); $certificate = new X509(); $certificate->loadX509($publicKey); $rsa = new RSA(); $rsa->loadKey($certificate->getPublicKey()); $rsa->setEncryptionMode(RSA::ENCRYPTION_PKCS1); $nonce = $rsa->encrypt($key); $cipher = new AES(AES::MODE_ECB); $cipher->setKey($key); $password = $cipher->encrypt($this->options['at_password']); $created = $cipher->encrypt(gmdate('Y-m-d\TH:i:s\Z')); $usernameToken = $document->createElement('wss:UsernameToken'); $usernameTokenData = [ 'wss:Username' => $this->options['at_username'], 'wss:Password' => base64_encode($password), 'wss:Nonce' => base64_encode($nonce), 'wss:Created' => base64_encode($created), ]; foreach ($usernameTokenData as $tag => $value) { $usernameToken->appendChild($document->createElement($tag, $value)); } $security = $document->createElement('wss:Security'); $security->appendChild($usernameToken); $security->setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:wss', 'http://schemas.xmlsoap.org/ws/2002/12/secext' ); $header = $document->createElement('env:Header'); $header->appendChild($security); return $header; } /** * @param $request * @return string */ private function embedHeader($request) { $document = new DOMDocument(); $document->preserveWhiteSpace = true; $document->loadXML($request); $body = $document->getElementsByTagName('Body')->item(0); $header = $this->createHeaderNode($document); $envelope = $document->getElementsByTagName('Envelope'); $envelope->item(0)->insertBefore($header, $body); // Must change the namespace of the Envelope tag to match the one specified in the WSDL otherwise we'll get // an HTTP 500 Error with the text "Internal Error" $envelope->item(0)->setAttributeNS( 'http://www.w3.org/2000/xmlns/', 'xmlns:env', 'http://schemas.xmlsoap.org/soap/envelope/' ); return $document->saveXML(); } /** * @param string $request * @param string $location * @param string $action * @param int $version * @param int $one_way * * @return string */ public function __doRequest($request, $location, $action, $version, $one_way = 0) { $request = $this->embedHeader($request); return parent::__doRequest($request, $location, $action, $version, $one_way); } } Cumprimentos, Ricardo
  24. 1 ponto
    Bom dia João Creio que estás com uma noção errada da realidade da faturação em PT, o que é normal para quem está fora da área de software deste género, por isso permite-me identificar alguns pontos: Em tempos isto foi importante, sim. Até há alguns anos atrás, software produzido internamente na empresa não necessitava de ser certificado. Já não é assim. Todo e qualquer software que produza faturas em Portugal deve ser certificado. A excepção teórica é quem já usava antes software não certificado e não atinge os 100000€ anuais não precisa trocar por software certificado. No entanto é só mesmo teórica, porque actualmente já não é possível enviar o ficheiro SAF-T em nenhuma versão anterior à 1.04, o que torna o uso de software antigo, não certificado, impossível na prática. Sim, existe. A AT disponibiliza duas formas de enviar os documentos de faturação, via ficheiro normalizado SAF-T (actualmente na v1.04_01), ou via WebService SOAP, através de API própria da AT, cujo padrão está disponível na página do E-Fatura, na área de Produtores de Software. No entanto, como já deves ter percebido do ponto anterior, não, não elimina a necessidade de certificares o teu software. Se queres fazer faturas nele, tens de o certificar. Poderia quando muito haver um software que disponibilize ele proprio a sua API, e nesse caso tu farias apenas o Front-End na tua LP de eleição. Mas o programa usado no que toca à AT seria sempre esse, e não o teu. Isto significa que a DB usada seria também a desse programa, e não a tua. O ficheiro SAF-T não serve para gerar faturas, mas sim para enviar para a AT as faturas geradas no programa, quando não usado o webservice. Quem não faça o envio imediato por WS, deve até ao dia 20 do mês seguinte ao da emissão das faturas (dia 25 era antigamente, já foi alterado) enviar o ficheiro para a AT, ou manualmente no portal E-Fatura ou por via da aplicação Java de Linha de Comandos que a AT disponibiliza para o efeito. Se quiseres mesmo avançar com esse projecto, terás mesmo de certificar o software, com tudo o que isso significa. Significa que tens de o fazer por forma a cumprir toda a legislação relevante em vigor, e manter o programa actualizado sempre que alguma dessa legislação seja alterada. Significa que tens de ir à AT, em Lx, para uma certificação, após o envio do Mod. 24, apresentar o teu produto, e corrigir tudo o que os inspectores considerarem errado para que o software passe, independentemente de teres ou não intenção de o vender. Se pesando os contras achares que os pros ainda valem a pena, força nisso. Tens muita informação nos tópicos respectivos que mencionaste, e se alguns links podem já estar em baixo, a informação que por lá anda é na sua maior parte um bom ponto de partida. Mas lembra-te que um software de faturação, com tanta alteração que a AT faz à legislação, é quase um trabalho a tempo inteiro. Vale a pena?
  25. 1 ponto
    Bem... eu tenho de começar a fazer isto também!!! Mas será em .NET
×

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.