

antseq
Member-
Posts
337 -
Joined
-
Last visited
Everything posted by antseq
-
SAFT-PT: debate de dúvidas e ideias
antseq replied to pv2013's topic in Software de Contabilidade, Finanças e Admin. Pública
Penso que será o ";" que tens no fim da mensagem quando há "hashAnterior": $message = "$invoiceDate;$systemEntryDate;$invoiceNo;$grossTotal;$hashAnterior->hash;"; Remove o ";" final: $message = "$invoiceDate;$systemEntryDate;$invoiceNo;$grossTotal;$hashAnterior->hash"; -
Utilizar Webservices da AT
antseq replied to cjulio's topic in Software de Contabilidade, Finanças e Admin. Pública
Uma pessoa pediu ajuda e educamente até agradeceu antecipadamente pela ajuda. As vezes um exemplo vale mais que 1000 palavras. Bom fim de semana. -
Se dentro da tua função "Sign" conseguires por cá para fora esta informação, de 3 chamadas, pode ser que ajude a excluir problemas, ou a encontrar o problema: Console.WriteLine("now: {0}", DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffZ")); Console.WriteLine("dataCriacao: {0}", dataCriacao.ToString("yyyy-MM-ddTHH:mm:ss.fffZ")); Console.WriteLine("retorno.Created (encrypt): {0}", retorno.Created); Console.WriteLine("retorno.Nonce (encrypt): {0}", retorno.Nonce);
-
Utilizar Webservices da AT
antseq replied to cjulio's topic in Software de Contabilidade, Finanças e Admin. Pública
Tenho ideia que o ATCUD deve seguir o mesmo critério que usaste na elaboração da Identificação unica do documento (InvoiceNo, DocumentNumber, etc) Se tens a Identificação unica do documento como "NGT NGT2024/696" o ATCUD sera "AABABA-696" Se tens a Identificação unica do documento como "NGT NGT2024/0696" o ATCUD sera "AABABA-0696" Se tens a Identificação unica do documento como "NGT NGT2024/0000000000696" o ATCUD sera "AABABA-0000000000696" -
o que é que faz o teu "CreateEncryptor()"? porque "create" tantas vezes? Sign - CreateEncryptor(); //Gerar a Chave - retorno.Password = EncryptBytes -> CreateEncryptor() - retorno.Created = EncryptBytes -> CreateEncryptor() - retorno.Digest = EncryptBytes -> CreateEncryptor() - retorno.Nonce = GenerateNonce -> CreateEncryptor()
-
viva, já programei muito em c, c++, mas há anos que não tenho oportunidades de trabalhar nisto. do que vejo no teu código (posso estar errado): 1. fazes "malloc" de 4096, caso não seja possível, tentas fazer "realloc" de apenas 1024 >> salvo erro, tens de assignar o "str = realloc(…" 2. fazes um "fgets" com size 4096 fixo independentemente de acima teres conseguido 4096 ou apenas 1024 >> para não complicar, nesta fase, usa sempre 1024, 256, 126 em todos (as tantas 80 seria suficiente) 3. dizes que o user passa uma string e o programa deve embaralhar… a seguir usas "strtok" para partir a string delimitada por ";" >> o teu código está a pegar nisto str="a;b;c;d;e;f" e a transformar nisto copy="abcdef" É isto que pretendes? >> o user envia "uma" string com várias strings separadas por ";", tipo "não sei como;criar um jogo;boa tarde" >> queres separar e baralhar esta lista de strings ["não sei como", "criar um jogo", "boa tarde"] ? >> o user deve acertar em que? Ou apenas? >> o user envia UMA string com VÁRIOS caracteres, sem separadores, tipo "portugal" >> baralhas os caracteres "logtprua" >> o user tenta acertar em "logtprua" ?
-
A mim não me incomoda em nada. Só referi o termo, ao contrário do entendido por forma de realmente ajudar (não entendido). Explico... Por “força bruta” assumo, à bruta, muitas (em quantidade) tentativas, forçadas a torto-e-a-direito, sem olhar a meios, o mais rápido possível até dar. Ao contrário do “normal”, pensado, planeado, envio, resposta OK ou NOK, volto a repetir, sim/não/talvez, o operador decide quando/manual?, automático?, espera algum tempo? Portanto (ajuda), não sei se no início por teres tido um azar dos azares de ocorrerem vários erros, saíste (por vias das circunstâncias) do caminho “normal” para outro de “força bruta” e dadas as características do mesmo (rápido, tentar-tentar-tentar-até dar, atalhando/reaproveitando algo entre tentativas, etc, etc, etc) não terá ficado alguma ponta solta que causa o grande número de rejeições e/ou derivado ao “azar” inicial. Consegues gerar algum tipo de “LOG”, tipo: 13-11-2024 17:40:10 | request | created: ?????????????, nonce: ?????????????? 13-11-2024 17:40:12 | response | fail motivo ???????? ou success Ou mais detalhado a ver se há alguma lógica nas rejeições? [penso que a informação ???????? acima não é confidencial]
-
Tenho algo semelhante Empresas x Filiais x Terminais x Tipos de documentos e nenhum problema em comunicar apenas 1, múltiplos por Terminal, múltiplos por Filial, múltiplos por Empresa. Até os dispomos em grelha, multiselecção, no envio e a medida que são comunicados (e sem erro) podemos ver os ATCUDs a serem preenchidos na grelha em tempo real. Nunca tive erros... ou dá erro de conexão e não segue nada.. ou se envia o 1o os seguintes também seguem com sucesso. Nunca tive de usar a abordagem de "força bruta"... simplesmente segue 1, segue 1, segue 1, segue 1, ..., segue N e resultam em sucesso. Cada envio é distinto, sem qualquer optimização para "força bruta", sem qualquer reaproveitamento de valores ou variáveis do envio anterior.
-
Não percebo como alguém pode usar "força bruta", "diversas vezes ao dia" até que "gere todas as chaves"!? 1) Quantas séries ainda tens sem ATCUD? 10000000000? 2) A "força bruta" não estará a repetir o mesmo "Nonce" em todas as chamadas? [Não se pode repetir "Nonce"s] 3) Muita gente tem a mania de forçar a data do observatório em vez de usar a data do sistema (ESTANDO esta última minimamente sincronizada com a hora legal). Ao menos os segundos da "hora" variam entre as chamadas ou é "força bruta" centenas de pedidos com a mesma data/hora?
-
Utilizar Webservices da AT
antseq replied to cjulio's topic in Software de Contabilidade, Finanças e Admin. Pública
Já se falou aqui no forum sobre isso. Não é só 7 meses, salvo erro vai expirar no mesmo dia que o "ChaveCrifraPublicaAT", ou seja, ambos sem 28.06.2025 (o meu pedido em julho teve 11 meses) Suponho que por volta de Junho/2025 já deverá haver um novo "ChaveCrifraPublicaAT" e os nossos novos certificados já poderão ter um prazo até ao fim deste último. -
Este certificado é exclusivamente vosso/empresa, daí terem a .key e respectiva password do vosso lado. Transmitir os mesmos a terceiros não parece boa ideia.
-
salvo erro, deverá ser este: openssl pkcs12 -export -in "51483XXX.cer" -inkey "51483XXX.key" -out "51483XXX.pfx" [vai pedir a [TUA] password para concluir o processo]
-
Boa tarde, Vor repetir de outra forma, se seguiste as instruções no comando para gerar o teu certificado SSL há 2 outputs : "51483XXX.csr" e "51483XXX.key", Tens ambos os "51483XXX.csr" e "51483XXX.key" do teu lado, na tua máquina, são teus, ninguém te vai enviar. Já usaste o teu "51483XXX.csr" para enviar a AT, agora utiliza o teu "51483XXX.key" para completar o processo.
-
Boa tarde, Quando geraste o teu certificado SSL, foram gerados 2 ficheiros: 51483XXX.csr e 51483XXX.key, Enviaste para a AT o 51483XXX.csr portanto ainda deves ter o respectivo 51483XXX.key do teu lado.
-
Utilizar Webservices da AT
antseq replied to cjulio's topic in Software de Contabilidade, Finanças e Admin. Pública
Também tenho ideia que é apenas o certificado SSL do servidor e não o certificado da AT (chave publica) usada para encriptar. Como dizes alguns "explicitamente" ignoram a validação, outros deixam em modo "automatico" assumindo que as libraries e sistemas operativos envolvidos estão preparados para lidar com a conexão, ficando alguns casos raros em que não funcionará. -
SAFT-PT: debate de dúvidas e ideias
antseq replied to pv2013's topic in Software de Contabilidade, Finanças e Admin. Pública
Versão simplificada: Em princípio "N"ormal (caso geral) é o estado quando se cria um documento. - Não se cria de raiz um documento no estado (inicial) "A"nulado - Não se cria de raiz um documento no estado (inicial) "F"aturado Uma vez gravado/finalizado o documento no estado (inicial) "N"ormal: - Pode ser necessário mudar de estado "N" para "A"nulado - Pode ser necessário mudar de estado "N" para "F"aturado O passar de "N"ormal para "F"aturado, dependerá do tipo de documento e tipo de operação, não vou exemplificar todos, só vou mencionar alguns: FS("N") [existente] => transformada em FT [nova] Ou + NC("N") [nova] de FS("N") [existente] + FT("N") [nova] Ou FS("N"->"F") [existente] + FT("N") [nova] "idêntico" ("N"->"F") para outros documentos transformados/faturados CM("N") [existente] => transformada em FS [nova] ou FT [nova] Ou CM ("N"->"F") [existente] + FS ("N") [nova] Ou CM ("N"->"F") [existente] + FT ("N") [nova] CM("N") [existente] => transformada CM(N) [nova] ainda da mesma mesa/conta CM("N"->"F") [existente] + CM("N") [nova] (pedido pela AT numa determinada certificação, embora não tenha isto em outras certificações) + outros casos + outras operações + outros documentos, ver documentação do SAFT. -
AT - questões legais
antseq replied to marcolopes's topic in Software de Contabilidade, Finanças e Admin. Pública
Obrigado, entretanto consultando o ebalcao, responderam rápido e aconselham a usar o 'TaxBase' para o efeito. https://info.portaldasfinancas.gov.pt/pt/apoio_contribuinte/questoes_frequentes/Pages/faqs-00276.aspx 63-2958 “Valor tributável unitário” (TaxBase) até tinha sido a minha primeira ideia, mas como nem todos os SWs permitem forçar o TaxBase da linha "ignorando" os valores de UnitPrice, CreditAmount ou DebitAmount estava a ver se havia alguma alternativa como a apresentada por outras SW Houses que as tantas também não conseguem forçar o TaxBase. fica a informação para quem precisar. -
AT - questões legais
antseq replied to marcolopes's topic in Software de Contabilidade, Finanças e Admin. Pública
bom dia, se alguém puder ajudar, desde já agradeço, obrigado. uma empresa fez uma fatura X de por exemplo 1000.00 eur, sem IVA, foi paga, já passaram meses da emissão. agora deu com a situação, não quer (pode) anular o documento e/ou porque não tem os originais, passou meses, já foi processado por várias entidades (próprio, cliente, AT, saft, declarações de iva, etc) entre outros motivos. dúvida, como cobrar (agora) os 230,00 (23% IVA) em falta no documento? vi uma página na internet a sugerirem uma nota de débito Y referente a fatura X com 1 linha: * Qtd:1; Preço: 230,00; Total: 230,00; * IVA: 0%, M99, "Não sujeito ou não tributado", "nº5 do artigo 16º do CIVA" . será a melhor solução? . não vai aumentar a receita/faturação em 230,00? . o entregar os respetivos 230,00 (IVA 23%) só agora recebidos a AT, terá de ser feito de alguma forma manual pela contabilidade da empresa? senão será um mero recebimento de 230,00 isentos de iva? o mesmo do lado de quem compra? alguma experiência em casos deste tipo? nota adicional: a empresa "não quer" fazer (agora) uma nota de crédito Y referente ao documento original fatura X + (agora) nova fatura Z com os valores e IVAs correctos, visto que o cliente destino só processa notas de crédito de factos recentes, de resto só aceita notas de débito para acertos passados!? -
Chave cifra pública AT
antseq replied to cassiano pascoal's topic in Software de Contabilidade, Finanças e Admin. Pública
Chave pública do Sistema de Autenticação de cifra para a comunicação via Web Services da AT https://info.portaldasfinancas.gov.pt/pt/apoio_contribuinte/Faturacao/Documents/ChaveCifraPublicaAT2025.zip -
SAFT-PT: debate de dúvidas e ideias
antseq replied to pv2013's topic in Software de Contabilidade, Finanças e Admin. Pública
Para questões de "certificação" havia um endereço semelhante "-cs" e da última vez (meses) que os contactei veio na resposta "Em virtude do serviço de correio eletrónico ter sido descontinuado, futuras questões deverão ser colocadas através do serviço e-balcão disponível no Portal das Finanças (Outras obrigações\Certif Softw), autenticando-se para o efeito." Desde então tenho enviado questões pelo "e-balcão", e... respondem. -
Utilizar Webservices da AT
antseq replied to cjulio's topic in Software de Contabilidade, Finanças e Admin. Pública
Viva, no meu corre sem problemas (Galaxy A52, Android 14, OneUI 6.0). -
o teu código parece estar a correr sem erros... no entanto: - estas a retornar "algo" (return newPass) que nem sequer utilizas (return), uma vez que assumes o acesso (global) a variável "newPass". - como também só inicializas a variável "newPass" uma vez com [], se chamas a função "extractPassword" 2 ou + vezes estas a acumular em "newPass" os vários resultados anteriores extractPassword (password); console.log(newPass.join('')); OUTPUT=a1aA7C extractPassword (password); extractPassword (password); console.log(newPass.join('')); OUTPUT = a1aA7Ca1aA7C
-
Utilizar Webservices da AT
antseq replied to cjulio's topic in Software de Contabilidade, Finanças e Admin. Pública
Sobre este tema, alguma conclusão? mudou algo no pedido? criação do pfx? tudo na mesma como antes? Desde já obrigado. -
Problema na instalação do Delphi 2010
antseq replied to Fabricio S Martinez's topic in Delphi/Lazarus
Usei o Delphi durante muitos anos, +20 anos, do 1.0 ao XE2, depois menos tempo no XE7 e algumas apps no XE10. Do que me recordo, ver "Delphi 2010 feature matrix" abaixo, a secção "DATASNAP" só estaria disponível em edições "Architect" ou "Enterprise". https://www.embarcadero.com.pl/produkty/delphi/d2010/feature-matrix-d2010.pdf Sinceramente, também já não me recordo se em versões futuras, passou a estar disponível também em "Professional" ou se mantiveram a mesma limitação ao longo do tempo. Algum motivo especial, para passados 14 anos?, ir ao um Delphi tão antigo? fazer algo tão específico que necessite uma edição "Architect" ou "Enterprise"? -
Problema na instalação do Delphi 2010
antseq replied to Fabricio S Martinez's topic in Delphi/Lazarus
Que edição do Delphi 2010 instalou? Professional? Enterprise? Architect?