Jump to content

Leaderboard

  1. marcolopes

    marcolopes

    Member


    • Points

      67

    • Content Count

      1,399


  2. nunopicado

    nunopicado

    Moderator


    • Points

      51

    • Content Count

      6,042


  3. chesser

    chesser

    Member


    • Points

      41

    • Content Count

      256


  4. Vitor Pereira

    Vitor Pereira

    Member


    • Points

      32

    • Content Count

      126



Popular Content

Showing content with the highest reputation since 10/17/2018 in Posts

  1. 4 points
    Olá, A Autoridade Tributária agora já me deu uma resposta mais concreta sobre a pergunta efectuada, pelo que cito para futuras dúvidas: Obrigado, abraço.
  2. 4 points
    Relativamente a este assunto, ontem tivemos uma reunião com DIgitalSign ( empresa emissora de Certificados Digitais ), pois a Faturação Eletrónica vai obrigar a um Certificado por cada utilizador ( 125 € por ano e por cliente ) Na reunião informaram-nos que também estão com reuniões agendadas com as grandes Softwares-Houses pois na verdade ainda ninguém tem o sistema a funcionar ( muito embora algumas publicitem que sim ) Também nos informaram que a informação que tinha chegado até eles é de que seria utilizado o UBL 2.1 e não o UBL 2.0 como se tem falado aqui no Forum, mas também não tinham certezas de nada Como tal, a situação é: A Portaria que vai regular ainda não saiu …... A data de inicio já vai em Abril de 2019 …... As Empresas do Estado ainda não tem Software preparado para recolha das Faturas Eletrónicas …. e por ai fora ….. Vamos aguardando e juntando toda a informação que vai saindo, mas com toda a certeza a menos fiável é a publicada pelos jornalista, e que devemos descartar pois tem objetivos sensacionalistas e não profissionais
  3. 4 points
    Se alguém usar .NET, o seguinte link poderá ter interesse: https://github.com/UblSharp/UblSharp
  4. 3 points
    Acabei de receber a resposta a ilink: O seu pedido foi recebido e analisado atentamente. Ticket ID: 2018121788260 Assunto: e-Invoicing Boa tarde Exmo. Sr. Vítor Pereira, Informamos que a integração com o nosso software iLink é gratuito. Assim sendo, de forma a podermos disponibilizar a documentação e proceder à criação dos acessos, deverão ,apenas, indicar-nos o nome do Vosso ERP. Por favor, não hesite em contactar-nos se necessitar de ajuda em mais alguma questão. Filipa Câmara ACIN iCloud Solutions Lda
  5. 2 points
    Já agora, saliento no final da página 9 do referido Oficio Circulado nº 30213: "23 - Durante o ano de 2019, a comunicação dos elementos das faturas pode ser efetuada até ao dia 15 do mês seguinte ao da emissão da fatura (conforme Despacho n.º 411/2019.XXI, de 24 de setembro, do Secretário de Estado dos Assuntos Fiscais, sobre a norma transitória prevista no artigo 43.º, n.º 8 do Decreto-Lei). A partir de 1 de janeiro de 2020, deve ser efetuada até ao dia 12 do mês seguinte ao da emissão da fatura (ver alteração ao n.º 2 do artigo 3.º do Decreto-Lei n.º 198/2012 introduzida pelo artigo 16.º da Lei n.º 119/2019, de 18 de setembro)."
  6. 2 points
    @Nandinho, A tua função converter() não devia ser responsável por imprimir o resultado do cálculo que faz. Regra geral, as operações de input/output (através das funções input() e print(), neste caso), devem ficar fora da função propriamente dita. Assim sendo, a tua função deveria ser reduzida a algo como: def converter(miles): return 1.6 * miles Podes então utilizar da seguinte forma: milhas = int(input('entre as milhas a converter: ')) km = converter(milhas) print('{} milhas, são {} kilometros'.format(milhas, km)) Repara na utilização da função format() para mostrar o resultado final; é mais flexível que a forma que utilizaste no teu código. E por fim, um pormenor: o teu código não funciona quando introduzes um número de milhas com casas decimais (experimenta). Facilmente consegues contornar isso substituindo int() por float() na obtenção do valor do utilizador. No entanto, a apresentação de resultados sofre de um problema de arredondamentos: entre as milhas a converter: 6 6 milhas, são 9.600000000000001 kilometros Investiga um pouco sobre a função format() para conseguires chegar ao pretendido: entre as milhas a converter: 6 6 milhas, são 9.6 kilometros
  7. 2 points
    Sim, a reunião do Conselho de ministros em que isso foi aprovado e noticiado, quer pelo comunicado, quer pela comunicação social já foi no ano passado e esperava-se que entrasse em vigor em 1 de Janeiro. Por isso é que se disse que todas as faturas emitidas a partir de 1 de Janeiro 2019 passariam ser comunicadas até ao dia 15 do mês seguinte. Porém, alguma coisa deve ter corrido mal, ou quiseram juntar várias coisas no mesmo Decreto-Lei e a coisa deve ter emperrado. De facto o que determina o prazo é um Decreto-Lei de 2012 (DL 198/2012) que entrou em vigor em 2013 e estabeleceu o dia 25. Depois, houve o Projeto de Orçamento do Estado, salvo erro de 2015, que queria alterar o prazo para o dia 8, mas esse artigo não passou. Por acordo ficou o dia 20, com a promessa de no ano seguinte passar a ser 15 e depois 8. Só que, desde essa alteração para dia 20, nunca mais ninguém mexeu. Refira-se que, tratando-se de um Decreto-Lei, para altera-lo não serve uma Portaria. Tem de ser alterado com outro Decreto-Lei (do Governo) ou com uma Lei (da Assembleia da Republica) e tem sempre que tem de ser Promulgado pelo Presidente da Republica.
  8. 2 points
    LOL e quando sai já depois da Data de entrada em Vigor com a data da Comunicação anterior ao dia em que aparece o decreto como já aconteceu pelo menos 2 vezes lol 😂
  9. 2 points
    No meu entendimento, e pelo que podemos ver pelo formato da Factura Electrónica da área da saúde, tem de haver uma assinatura do XML (seja ele enviado em envelope SOAP ou não).
  10. 1 point
    Alguém me sabe dizer onde um produtor de software pode pedir para fazer testes com a eSPap? Já enviamos pedido de informação para lá mas até hoje ninguém respondeu. Eles têm lá um registo para fornecedores da AP mas nós não somos fornecedores da AP. É por ai que temos que ir? Nós iniciamos o processo de entrega de documentos com a Saphety mas esta tem custos para os clientes (não para nós) enquanto que aparentemente a eSPap não. Gostava de começar os trabalhos com o portal FE-AP mas não consigo encontrar informação para isso. Aparentemente o brunotoira já o fez. Podes-me dizer como o fizeste? E não me refiro á parte técnica mas sim quem contactaste e como?
  11. 1 point
    Na altura em que falamos a ordem ainda não se tinha pronunciado sobre isso, apenas lançou uma nota com 2 linhas :-\ em todo o caso, de facto eles dizem Mas é a interpretação da ordem. Como dizes e bem, na Lei diz que entra em vigor a 1 de Outubro e que a comunicação é referente ao mês seguinte. Até porque existem sistemas normalizados que têm de ser alterados. Parece-me um bocadinho em cima. Em todo o caso, não me parece que seja aplicada coima a quem em Outubro comunicar até dia 15 nem me parece difícil comunicar até ao dia 12 em vez de o dia 15 de Outubro :-) Acho que mais vale prevenir :-)
  12. 1 point
    Ao ler o enunciado do problema, tenho uma leitura completamente diferente (provavelmente ainda o vai desenvolver), nomeadamente: - não vejo em lado algum que deve ignorar os espaços (para mim é um carácter normal) - diz caracteres distintos, portanto também não é para contar os outros (diferentes de espaços) mas sim os DISTINTOS Até fui procurar um calculo online, para demonstrar o que "leio" e encontrei este (https://www.somacon.com/p525.php) onde a string "Portugal a Programar" tem os seguintes caracteres DISTINTOS: Code: 32 0x20 ' ' Count: 2 Code: 80 0x50 'P' Count: 2 Code: 97 0x61 'a' Count: 4 Code: 103 0x67 'g' Count: 2 Code: 108 0x6C 'l' Count: 1 Code: 109 0x6D 'm' Count: 1 Code: 111 0x6F 'o' Count: 2 Code: 114 0x72 'r' Count: 4 Code: 116 0x74 't' Count: 1 Code: 117 0x75 'u' Count: 1 -----TOTAL CHARACTERS: 20 Não será uma aplicação com este tipo de resultado que deves desenvolver?
  13. 1 point
    Olá. Permite-me primeiro fazer alguns reparos ao código em si. É boa prática que os #defines sejam em letra maiúscula. Depois, é bom também utiliza-los coerentemente, ou seja, fgets(nome, N, stdin); em vez do valor hardcoded. Depois, for (i=0; i < strlen(nome) != '\0'; i++) { count++; } isto é redundante. Faz exatamente o mesmo do que o strlen(). " i < strlen(nome) != '\0' " Acho que devias rever isto. Não sei se percebes muito bem o que é que a função strlen() faz, e o significado do '\0'. No entanto, aproveitando esse teu pedaço de código, deixo uma dica para os espaços: for (i=0; i < strlen(nome) != '\0'; i++) { if (nome[i] != ' ') count++; } A tua solução está a dar um caracater a mais. Mas deixo isso para resolveres, que também é preciso estudar um bocadinho
  14. 1 point
    O que necessitas é: =IF(($D$1-D92)<=30;"0-30 Dias";IF(($D$1-D92)<=60;"31-60 Dias";IF(($D$1-D92)<=90;"61-90 Dias";"+ 90 Dias"))) Atenção, noto que utilizas como separador de parâmetro a vírgula. Não sei se é erro teu (mais provável) ou configuração. Não precisas de utilizar o AND. O resto é uma questão de ordenação e lógica. Cumprimentos
  15. 1 point
    a variável v contem um ponteiro para uma região de memória da qual não podes alterar (a string "PaP Programar") quando vais tentar atribuir o caracter ch à posição v[i ], tens o problema que referes.
  16. 1 point
    Bom liguei agora para a AT e o servidor dos ws de testes quer das faturas quer dos documentos de transporte, quer da parte agricola está desligado. Daí não se conseguir comunicar. A senhora com quem falei não me soube foi dizer quando estará operacional o servidor. EDIT: @Cu5co olha o que escrevi em cima.
  17. 1 point
    Isso não quer dizer que estava tudo bem, pelo contrario a comunicação sempre esteve mal. desde o inicio que isto deveria ser obrigatório para garantir a autenticação fidedigna. portanto acho que se deveriam se preparar e tentar entender como se faz, para poderem contornar este tipo de situações facilmente. O que eu acho é que foi uma tentativa de alterar um erro que desde o inicio esteve presente, sem que lhes sejam atribuídas culpas no cartório.
  18. 1 point
    Como Adicionaste Sérgio? Ontem (hoje de madrugada) tentei mandar o crt directo no pedido, nada. Tentei extrair a Publica do Crt para assinar o CA, nada. Cheguei a assinar a Nonce essa publica em vez de ser com a publica da AT e nada também 😕 Basicamente os ficheiros têm 3 chaves, uma do Root, outra da assinatura e outra de ligação ao CA 😕 Como é que "adicionaste" os ficheiros de ontem à cadeia (PublicChainCA2.p7b) ??? podes meter o comando por favor? É que se metermos a funcionar mas não percebermos o que está acontecer é mau porque pode parar outra vez 😕
  19. 1 point
    Eu utilizo -K, --config <file> No ficheiro é que coloco os parametros. Acho que se o ficheiro pem for colocado na pasta /etc/ssl/certs/ (linux) é provável que também funcione
  20. 1 point
    <script> function processar1 (botao) { alert( botao.value ) } function processar2 (arg) { alert( arg ) } </script> <body> <input type="image" id="submit" class="grupos" src="imgs/t.png" name="p1" value="1" onclick="processar1(this)"> <input type="image" id="submit" class="grupos" src="imgs/t.png" name="p1" value="1" onclick="processar2(1)"> </body> </html>
  21. 1 point
    Esse erro acontece porque miles não está definido no scope que chama a função convert. O que devias fazer é colocar o input de dados fora da função convert: esta função deveria ter única e exclusivamente o objectivo de fazer a conversão, e não de lidar com o input do utilizador. Exemplo: # Função só com o objectivo de cálculo def dobro(x): return 2*x # Scope onde a função é chamada: aqui deve decorrer o input e a chamada do cálculo a = int(input()) b = dobro(a) print("O dobro de {0} é {1}.".format(a, b)) Cumprimentos.
  22. 1 point
    Viva, Se queres começar sempre com um ficheiro (registos) vazio, penso que só precisas disto: {$I-} rewrite(f); {$I+} Se queres manter os registos na sessão anterior, acrescenta o "Seek(f,Filesize(f));" {$I-} reset(f); if ioresult<>0 then rewrite(f); Seek(f,Filesize(f)); {$I+} Cps,
  23. 1 point
    Pessoal, sinceramente acho que estão a fazer uma tempestade num copo de água, E eu estou à vontade para falar, porque em primeiro lugar não usei 1 linha de código do @brunotoira, em 2º quando me registei em 2009 foi precisamente para ajudar um amigo que já cá estava no forum, e não para pedir ajuda, como de resto é possível ver no histórico. Quero com isto dizer que nunca fui ajudado ou nunca ajudei no P@P ??? Claro que não, faz parte, mas cada um sabe até onde pode ir. Da ultima o rapaz partilhou uma app com código em 3 ou 4 linguagens, e ao que parece, foi utilizado por dezenas de aplicações Certificadas em Portugal. Aqui estava tudo bem, O @nunopicado partilhou uma DLL que deve ter sido usada por mais uma dezenas de APPs Certificadas em Portugal, Aqui também estava tudo bem, Desta vez, alem da APP ao que parece até tem um gateway (quem paga o servidor?), e já não está tudo bem porque o P@P é ajuda sem contrapartida... O que distingue dos Gateways que falamos em páginas anteriores que são cobrados ?? 😐 .. Os outros Podem, um membro do P@P não?? 😐 Até porque ninguém obriga ninguém a nada. Bom senso pessoal, bom senso... O que não me parece que fique nada bem @#sa, é meter em causa o P@P por causa de um colega achar (e está no seu direito) que não deve partilhar determinado código. Isso é que não me parece mesmo nada bem. Porque eu, tal como tu, de certeza que já foste muito ajudado aqui no forum, tal como já ajudaste. Bom Senso
  24. 1 point
    A parte física há várias hipóteses, o normal é usar células de carga. Se usares células de carga, tens 2 hipóteses de a ligar ao PLC, diretamente, se o PLC tiver cartas especificas para isso ou com um controlador e uma entrada analógica do PLC A nível de PLC a programação de uma carta especifica para células de carga, ou uma entrada analógica (com o valor do peso) é completamente diferente
  25. 1 point
    Olhando para o código, acho que não percebeste a ideia do exercício... Mas olhando para o que disseste, parece que entendeste... ... A variável soma não faz falta no exercício, mas sim o tal array C. Para somar, é quase isso: for i := 1 to n do C[i] := A[i] + B[i]; A partir daí é mostrar o resultado no ecrã. Resumindo, precisas de 3 arrays, uma variável de índice para os FOR e 4 ciclos FOR (partindo do princípio que não vais criar funções/procedimentos para reaproveitar código).
  26. 1 point
    Boas, tenho as minhas dúvidas que dê, e é coisa que nunca experimentei... Mas encontrei este artigo: https://www.thoughtco.com/changing-font-properties-in-vbnet-3424232 e talvez dê se fizeres como ele diz e depois qualquer coisa como Button.Caption =Texto1 + Texto2... Boa sorte.
  27. 1 point
    Na minha opinião, que já aqui dei anteriormente, esta norma é a mera transposição do que já constava (e vigorava) na portaria da certificação e só se aplica aos documentos de conferência. Se repararmos ainda na alínea b) do artigo 2.º do DL 28/2019, na definição de "documentos fiscalmente relevantes" : os documentos de transporte, recibos e quaisquer outros documentos emitidos, independentemente da sua designação, que sejam suscetíveis, nomeadamente, de apresentação ao cliente que possibilitem a conferência de mercadorias ou de prestação de serviços. Estando descritos em separado, penso que se pode concluir que documentos de transporte e documentos de conferência não são a mesma coisa. Acresce que os requisitos dos documentos de transporte estão descritos em legislação especial (n.º 2 do artigo 4.º do RBC criado pelo DL 147/2003), pelo que é essa que se aplica aos mesmos. Ou seja as faturas e os DTs, que são os documentos "oficiais", têm regras próprias. Toda a outra parafernália de documentos criados pelas necessidades e criatividade dos operadores ao longo dos anos (consultas de mesa, pró-formas, notas de honorários, etc, etc) têm de cumprir estes requisitos.
  28. 1 point
    É o SAF-T. A Portaria 321-A/2007 (a que criou o SAF-T) regulamenta o dito n.º 8 do artigo 123.º do CIRC (na altura era o 115.º).
  29. 1 point
    Vamos ter de aguardar para ver o que aí vem, mas tenho sérias dúvidas quanto ao sucesso disto. Para pequenas empresas (mesmo pequenas) isto até poderá ser solução, mas se as empresas quiserem as coisas minimamente integradas... aí já não me parece. Um software de facturação actualmente é muito mais que uma aplicação que emite documentos certificados. Mas, enfim, eles lá sabem. Seja como for, não deixa de ser engraçado ver estes senhores tão preocupados com o que as empresas gastam com o software. Mas não se preocupam com a grande carga de impostos que essas mesmas empresas têm de suportar ou com o valor da factura energética ou com o que deixam nos postos de combustíveis. O grande problema são mesmo os produtores de software, esses gatunos, que andam por aí a extorquir as pobres empresas. Os clientes já acham que nós somos todos um bando de ladrões e que estamos sempre a aproveitar as alterações impostas pelo estado para os obrigar a actualizar programas. Pelos vistos o estado acha o mesmo. Vai-se a ver devíamos todos trabalhar de borla. Por outro lado, podemos ver isto como uma oportunidade de negócio para uma qualquer grande software house do mercado. Será que a AT não vai subcontratar? Mais, eles vão ter capacidade para dar formação? E quem vai estar no helpdesk (ou os utilizadores vão colocar dúvidas no e-balcão)? Ou seja, talvez haja por aí novas oportunidades de emprego: fechamos as nossas "tasquinhas" e vamos todos para funcionários públicos! 😀
  30. 1 point
    A aplicação que existe, dos "recibos-verdes", é pouco mais que uma maquina de escrever, que permite passar faturas e recibos. Não me parece que os nossos softwares tenham esse publico alvo. Os nossos clientes querem controlo de Contas Correntes, gestão de Stocks, gestão de produção, controlo de POS complexos com gavetas, impressoras, balanças, códigos de barras, etc. que a AT nunca irá fazer. Alem disso, estão sempre disponíveis, não precisam de internet para trabalhar e não bloqueiam nos últimos dias de prazos fiscais. Só espero é que eles atualizem o programa deles para fazer o que obrigam os outros, para os clientes não virem dizer que se o da AT dá para fazer, o vosso também tem de dar.
  31. 1 point
    Porque eles não fazem nada disso, nope never.
  32. 1 point
    https://www.espap.gov.pt/noticias/Paginas/noticia.aspx?nid=1600 https://www.sgeconomia.gov.pt/destaques/espap-fatura-eletronica-na-administracao-publica-span-classnovo-novospan.aspx
  33. 1 point
    @nuno35, vamos por partes. Podemos começar pelo teu tipo de dados. Aquela variável html não está ali a fazer nada, e o compilador não sabe o que ela representa (porque na realidade não representa nada). O que tu pretendes com o construtor Div é dizer que dentro dele pode haver uma lista de elementos HTML... logo, o correcto é: data HTML = Div [HTML] | Texto String | Negrito String Repara que utilizo HTML tanto à esquerda como à direita do =, porque o nosso tipo de dados é, de certa forma, recursivo. Passamos então para a implementação da typeclass Show, que o @thoga31 falou; podes utilizar a solução que te foi dada, ou então utilizar deriving Show para automatizar o processo. Passemos à função converter. O teu tipo de dados HTML tem 3 construtores, como achas que deve comportar-se em cada caso? Vou resolver o primeiro por ti, e tentarás completar os restantes: converter (Negrito x) = Negrito x converter (Texto x) = ... converter (Div elems) = ... Uma dica: no caso do construtor Div lembra-te que podes aceder aos elementos dentro dele como se fosse uma lista... logo, podes aplicar a função converter a cada um deles facilmente com um map. E agora vamos à tal "propriedade". Desconheço o tipo de dados Property, mas vamos para já assumir que deveria ser um Bool. Para conseguires testar se a profundidade de uma árvore é maior que outra, temos primeiro que ter uma forma de saber a profundidade. Vamos construir essa função: profundidade (Div elems) = 1 + ... profundidade _ = 0 Sabemos que a profundidade de um Div é a soma de 1 com a profundidade da maior árvore nele contida. Assumimos que os restantes construtores (Texto e Negrito) têm profundidade 0. Deixo para ti a tarefa de completar a função acima (dica: podes utilizar as funções map e maximum para solucionar o problema). Uma vez tendo esta função profundidade, podemos testar facilmente a propriedade que pretendias: prop_arvore_maior_que_subarvores x@(Div xs) = profundidade x > (maximum (map profundidade xs)) A notação x@(Div xs) permite-nos referir-nos ao argumento na sua totalidade (x) e desconstruí-lo (Div xs) em simultâneo. Se leres este post e tentares completar os espaços... penso que consegues compreender o raciocínio e perceber como fazer isto por ti. Vai expondo as tuas dúvidas.
  34. 1 point
    A primeira questão é, está a fazer a leitura do campo das qtt, quando está a carregar a página, através do documento ready. Isto é, a leitura das qtt é feita quando a página é carregada pelo browser e não quando clica no botão. Deve só despoletar a acção de actualização, quando depois de actualizar o campo, clicar no botão actualizar, para isso, deve dar ao referido botão o evento click. $( "#actualizar" ).click(function() { alert( "O botão actualizar foi premido." ); }); A tag actualizar seria o id do botão actualizar. Depois existe a segunda fase da questão, é a de saber qual é a linha que está a actualizar, isto se quiser fazer o update na base de dados. E para isso, convinha ter um elemento identificativo, um id, por cada uma das linhas, coisa que aparentemente a sua tabela não mostra. Neste caso, nem precisa de um botão, basta clicar na linha da tabela para obter o resultado. ${'#tabela tr td').click(function(){ var qt = $(this).attr('qtt'); alert(qt); }); Por último, se não quiser estar a redescobrir a roda, e facilitar o trabalho, pode utilizar DataTables, que lhe permite manipular as tabelas em html. Ver exemplo em : https://editor.datatables.net/examples/inline-editing/simple
  35. 1 point
    O certificado de Testes (TesteWebservices.pfx) para aceder aos webservices em modo de desenvolvimento / testes estão expirados desde dia 29 de Dezembro de 2018 9:19:03. Enquanto a AT não emitir e publicar o novo não há ambiente de testes para ninguem.
  36. 1 point
    Pormenores à parte, o que interpreto dos prazos: - Os contraentes públicos são obrigados a receber as facturas em formato electrónico a partir de 18 de abril de 2019 (nada impede de receber outros formatos) - Se não for Estado nem instituto público (é o caso de autarquias, regiões autónomas, Banco de Portugal, os hospitais Entidades Públicas Empresariais e empresa publicas ) o prazo é alargado para 18 de Abril de 2020, (estamos a falar da obrigação de receber em formato electrónico) - Em todo o caso até 17 de Abril de 2020 podem receber em formato diferente (ou seja como recebem até agora)
  37. 1 point
    Não encontras porque ainda não existe (o Expresso ainda não faz leis). Foi aprovado em Conselho de Ministros, mas falta promulgar pelo Prof. Marcelo e publicar em Diário da Republica, só depois é que vale. Se ainda vai sair antes de 1 de Janeiro, ninguém sabe a não ser quem promulga. Se calhar sai depois mas com efeitos retroativos.
  38. 1 point
    Concordo plenamente, devemos todos partilhar e ler toda a informação que vamos trocando aqui, pois um pouco de cada um é o melhor caminho para o objetivo final Também acho que os desabafos em cima da AT, Governo, e outros organismos de nada serve, para alem de sermos nós mesmo a "levar" com os desabafos, no final também teremos de ser nós a conseguir que o e-Invoicing funcione, e vamos conseguir como aconteceu com o SAF-T, Webservice, etc, etc. Muito embora os valores aqui mencionados vindo supostamente dos Brokers não são reais, e que pode ser uma opção temporária em caso de algum "encravanço", acabaremos todos no final por enviar diretamente via Webservice para o ESPAP
  39. 1 point
    Sim, é só escrever o XML. Mas o que o @marcolopes defende (e bem, a meu ver) é que não se crie o XML "à unha", e sim se use o XSD correspondente junto com as ferramentas que cada linguagem de programação tem para que o XML seja criado automaticamente com base nas regras estipuladas pelo XSD. Tanto quanto se sabe à data, ainda não há nenhuma estrutura específica para Portugal do UBL 2.1. O que se espera é que saia entretanto uma portaria com indicação específica de uma adaptação do UBL 2.1 para a realidade portuguesa (por exemplo que inclua o campo HASH). Dito isto, anda uma circular a... circular (:cheesygrin:) aqui nas minhas bandas, proveniente da autarquia, que dá a entender que o formato é o UBL 2.1 usado a nível europeu (seja ele qual for) e que deve incluir o campo "Número de Compromisso" (seja isso o que for), os restantes campos normais das facturas, e quaisquer outros campos que o fornecedor decidir que devem constar. Diz esta circular ainda que a acompanhar o XML (que deve ser enviado por email para a autarquia - lá cai por terra a teoria do WS centralizado só para isto), deve seguir também um PDF assinado, de acordo com a outra lei portuguesa sobre facturação electrónica. Se isto significar o que eu acho que significa, meus caros colegas, temos aqui algo tipo um Champô + Amaciador, vulgo 2 em 1. Uma dobradinha, e tal como a pescada, de rabo na boca... O que vale é que é natal, e daqui a nada o ano novo trás-nos vida nova... Ou não! Aliás... Como independentemente disto, as facturas ainda têm de ser comunicadas à AT por WebService, temos aqui o belo do hat-trick! Se o Ronaldo fosse programador, talvez não se incomodasse muito!
  40. 1 point
    Nem deviamos estar a falar tão exaustivamente desta questão da factura sem papel aqui neste tópico... é bom para quebrar o gelo, mas alguém que crie um novo tópico para este assunto, sff! (a já agora, passar as duas páginas de discussão que já temos aqui para esse mesmo tópico) EDIT: Já agora... os CTT têm há algum tempo um serviço de RECIBOS ONLINE (documentação enviada pelas lojas de forma totalmente digital - Factura Electrónica): https://www.recibosonline.pt/
  41. 1 point
    Aí é que está... Quando enviadas por WS, não há detalhes das compras, apenas valores. Os campos das linhas de faturas enviadas por WS são: DebitAmount CreditAmount TaxType TaxCountryRegion TaxPercentage TaxExemptionReason Isto é menos que até o SAFT mensal, que leva por exemplo quantidades...
  42. 1 point
    Obrigado pela resposta CrominhO. Realmente espero que, qualquer que seja a opção adoptada, não traga custos para os clientes, caso contrário vamos ter que ouvir reclamar muito. Penso que a ideia deveria ser simplificar processos, não aumentar os custos. Mas vamos ver a surpresa que o Pai Natal nos irá trazer... Também fiquei com essa ideia. Tal como dizes, quem estiver a comunicar as facturas por web service poderá, se quiser (e se o cliente não exigir a factura em papel), não imprimir. Também não vejo nenhuma obrigatoriedade nisto. Quanto ao prazo, pelo que se pode ver em https://www.simplex.gov.pt/medidas em Fatura sem Papel, esta medida tem o prazo de implementação previsto de "2.º Trimestre 2019". Quanto à descrição da medida diz: "Regulamentar a possibilidade de dispensa do impressão de faturas." Ou seja, fala-se em possibilidade de não ser preciso imprimir. Seja como for, só falta mesmo o tal regulamento.
  43. 1 point
    Antes demais quero agradecer a todos a partilha, se isto já é um CAOS imaginem se cada um de nós ficasse com o bocadinho de informação que possui e não partilhássemos... Era a loucura total :-\ @chesser antigamente, back in 2012 se a memória não me falha, o certificado era para os teus Clientes e para os clientes deles, para que ninguém pudesse interferir nessa comunicação. E deveria ser emitido por uma terceira entidade independente e imparcial. Essa entidade garantia o recebimento e a entrega do documento, que na altura nos "levava" ~€0.70 por documento :-\ ... Ora isto num software Vertical, é facil de perceber que até poderá trazer vantagens, já num Horizontal é surreal, imagina a "loja da esquina" a pagar 70 centimos por documento... Não quer dizer, (e espero bem que não seja) que desta vez seja assim :-\
  44. 1 point
    Faz por partes. Primeiro: escrever código que faz a tal multiplicação de todos os números de 3 dígitos. Algo como: for(int i=0.......) for(int j =0........) produto = //multiplicação aqui usando o 100 e o i é o j dos loops for Não posso dizer muito mais senão faço tudo. É isto leva ao pequeno problema que falei. Vai acontecer que o loop exterior vai acabar por repetir valores do loop interior. Mas como para já não tenho outra solução, esta deve servir para tentares resolver o problema. Depois mais logo ou durante o dia, certamente alguém te encaminhará para uma solução mais optimizada e robusta.
  45. 1 point
    Obrigado pelo exemplo. No meu caso estou a construir e a validar num validador http://13.80.11.48:8000/invoice/upload , depois a ideia é ir retirando os erros .... Por exemplo ele obriga a ter dentro do TaxSubtotal um TaxCategory que indique depois o tipo de IVA, equivalente ao TN, RED, mas já encontrei uma equivalência (não muito equivalente) http://docs.peppol.eu/pracc/catalogue/1.0/codelist/UNCL5305/ , mas que depois a códigos que o validador não reconhece.. Mas no caso do exemplo não tem essa informação, agora não sei se foi adicionado ao 2.1 Mais uma vez Obrigado, dá para ter uma ideia.
  46. 1 point
    Uma Guia de Devolução é um documento de transporte emitido pela empresa para efetuar um transporte para o fornecedor, logo terá o SupplierID.
  47. 1 point
    olá, se ainda tiveres este problema, tens que gerar o par .po/.mo. depois tens que confimar que o tema está a carregar os ficheiros de traducao (mo/po) na directoria certa. ( ou melhor ainda, carregar as traducoes ,deixando o wp tratar da localizacao
  48. 1 point
    Olá Fred, O que procuras são, como o HappyHippyHippo disse, ciclos. Em C++, para o efeito que queres é mais comum usar-se while(condição){} e do{}while(condição). No caso do primeiro tens de pedir a opção desejada ao utilizador, visto que antes de entrar no ciclo faz logo o teste à condição. No caso do segundo, não precisas de modificar o teu programa, basta meter o teu código dentro do do{}while, visto que o teste é no fim. Espero ter ajudado, Almirante
  49. 1 point
    ainda tenho que ver se o phpmd ou o phpcs apanha esse tipo de brincadeiras ... esconder erros/warnings/avisos é uma condição imediata para eu invalidar um PullRequest. o caso indicado deverá ser processado devidamente através do null-coalescing operator: $dados = $_POST['field'] ?: 'dados caso não estiver definido';
  50. 1 point
    Communication of a document has to be made in advance - prior to the movement of goods start date/time.
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.