Jump to content
  1. Re: Utilizar Webservices da AT

    jacPereira
    By jacPereira,
    17 minutos atrás, Vitor Pereira disse:

     

    Eu entendo quando a AT quer que o Ultimo Documento seja superior ao Documento que iniciou a Série, pois caso contrário o Webservice poderia fazer uma Finalização de um Série que nunca fez nenhum documento quando deveria ser Anulada e não Finalizada.

     

    Agora, quando a Série só tem mesmo um único Documento ( o que raramente ou nunca acontecerá convenhamos  )  o problema está mesmo instalado  pois o Nº do Documento inicial é o mesmo que o Nº Final !!!  

     

    Está à 1ª vista aquilo um pequeno buraco, muito embora se não for resolvido pela AT ( tipo não fazer Controle quando o Doc. Inicial é igual ao Doc. Final ) será facilmente resolvido pelo cliente final, que faz mais um Documento ( mesmo que o Anule de seguida ) e depois já pode Finalizar a Série.

     

    Expuseste o problema no Site da AT ?

     

    Obrigado pela análise exposta. 

    Ainda não coloquei a questão à AT porque estou no desenho da implementação da comunicação na minha aplicação e ao passar nas validações surgiu-me essa situação,

    Por vezes acontece um cliente enviar um artigo à consignação a um cliente dele. Se for uma situação pontual, irá haver apenas uma guia de consignação, uma fatura de consignação e (com o prazo de até 12 meses) haverá uma fatura ou credito de consignação. 

    Só aqui, irá haver pelo menos 2 conjuntos tipoDoc/serie com apenas 1 documento, independentemente do cliente vender o conteúdo consignado ou não.

    Mas vou seguir a tua sugestão e colocar a questão no e-balcão. Mais uma vez obrigado.

     

    • 9,562 replies
  2. Re: Utilizar Webservices da AT

    Vitor Pereira
    By Vitor Pereira,
    12 minutos atrás, jacPereira disse:

    Uma duvida parva:

    Segundo o manual, o código de retorno 4047 para a finalização de séries refere "O valor indicado no ultimo documento emitido deve ser superior ao indicado no inicio da sequencia".

    Assim sendo, como finalizamos uma série que contenha apenas um documento emitido? (Ultimo documento = numero inicial da serie)?

    Alguém experimentou finalizar uma série com apenas um documento?

     

     

    Eu entendo quando a AT quer que o Ultimo Documento seja superior ao Documento que iniciou a Série, pois caso contrário o Webservice poderia fazer uma Finalização de um Série que nunca fez nenhum documento quando deveria ser Anulada e não Finalizada.

     

    Agora, quando a Série só tem mesmo um único Documento ( o que raramente ou nunca acontecerá convenhamos  )  o problema está mesmo instalado  pois o Nº do Documento inicial é o mesmo que o Nº Final !!!  

     

    Está à 1ª vista aquilo um pequeno buraco, muito embora se não for resolvido pela AT ( tipo não fazer Controle quando o Doc. Inicial é igual ao Doc. Final ) será facilmente resolvido pelo cliente final, que faz mais um Documento ( mesmo que o Anule de seguida ) e depois já pode Finalizar a Série.

     

    Expuseste o problema no Site da AT ?

     

    • 9,562 replies
  3. Re: Utilizar Webservices da AT

    jacPereira
    By jacPereira,

    Uma duvida parva:

    Segundo o manual, o código de retorno 4047 para a finalização de séries refere "O valor indicado no ultimo documento emitido deve ser superior ao indicado no inicio da sequencia".

    Assim sendo, como finalizamos uma série que contenha apenas um documento emitido? (Ultimo documento = numero inicial da serie)?

    Alguém experimentou finalizar uma série com apenas um documento?

     

    • 9,562 replies
  4. Re: Utilizar Webservices da AT

    MrFroggy
    By MrFroggy,
    5 horas atrás, JPGB disse:

    Estou na mesma situação no ambiente de testes (e utilizador de testes)... estou a passar xml idêntico...recebo o seguinte erro:

    <?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>

    Quer em PHP (CURL), quer em VB.NET...

    Alguém tem alguma sugestão?

    @TheBug

    Reparei nisto:

    Após o body, tens de colocar a TAG da operação:

    <ns2:registarSerie xmlns:ns2="http://at.gov.pt/">

    (Aqui dentro é que colocas os campos <serie>, <tipoSerie>, etc.)

    </ns2:registarSerie>

    • 9,562 replies
  5. Re: Utilizar Webservices da AT

    MrFroggy
    By MrFroggy,
    4 horas atrás, JPGB disse:

    Estou na mesma situação no ambiente de testes (e utilizador de testes)... estou a passar xml idêntico...recebo o seguinte erro:

    <?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>

    Quer em PHP (CURL), quer em VB.NET...

    Alguém tem alguma sugestão?

    Eu fiz em C#, mas fica aqui a minha sugestão do que poderá estar errado no seu código

    Quase de certeza que o problema está na formatação do do XML. Mas verifica também se o SOAP Action está correto!

    Verifica se a hora do PC que está a correr o código está sincronizado com a hora do Observatório Astronómico de Lisboa;

    Verifica se está a utilizar os certificados corretos! Verifica a validade dos mesmos.

    • 9,562 replies
  6. Re: Utilizar Webservices da AT

    JPGB
    By JPGB,
    Em 16/09/2021 às 11:10, TheBug disse:

    Bom dia, sou novo nisto de serviços da AT e vinha solicitar se possível ajuda.

    Estou a receber como resposta, quando meto o url (https://servicos.portaldasfinancas.gov.pt:722/SeriesWSService)no browser e uso o certificado de teste:

    <faultcode>env:Client</faultcode>
    <faultstring>Internal Error</faultstring>

    Dentro do codigo, recebo o erro "O servidor remoto devolveu um erro: (500) Erro interno de servidor." quando faço o (HttpWebResponse)request.GetResponse(); .

    Usando o  

    catch (WebException webex)
                    {
                        WebResponse errResp = webex.Response;
                        using (Stream respStream = errResp.GetResponseStream())
                        {
                            StreamReader reader = new StreamReader(respStream);
                            string text = reader.ReadToEnd();
                        }
                    }

    Consigo ver que a minha string text está preenchida com o que vem quando meto o link no browser

    <?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>

     

    No meu caso, o serviço é em C# pelo que estou a enviar este xml:

    <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
        <S:Header>
            <wss:Security xmlns:wss="http://schemas.xmlsoap.org/ws/2002/12/secext">
            <wss:UsernameToken>
                <wss:Username>xxxxxxxxxxxxxxxx</wss:Username>
                <wss:Password>xxxxxxxxxxxxxxxxx</wss:Password>
                <wss:Nonce>IjDSMT0wHTFpS+9GOA/vrTdc4xtJGSgk+GLTilzLf9N6JJe+uGjykiAFEplvErL4gE46Hk3/IYzwL0AzFOM2ssKNZBirfnZSpmzdaxD1YyS6LxVzojbZTAskE/z1q0y5yyDW9rOSNdP/YhuhR6gDnfCEHgNspPKISkD10yWGr9vm5KRbYrFDHxTCua/BAEC1C4STw8pPbrlDQyyA8VBb5/Mb4Fq9Wmh5/B1SJjCfFHfjnOHF3liTkiGNagMm641czSYxSAvuv2VnFWX82Rknfsk0+ikwQoVpPfKTrLR2IYyfbZLuuX4wrQeyPj6ZYHC2wjnLUb0fkgSd03sPueRBBw==</wss:Nonce>
                <wss:Created>a0Jh01g62q0qW3V0Ps/rc8cdTD5BNgsCk2zZ8+D12f4=</wss:Created>
            </wss:UsernameToken></wss:Security>
        </S:Header>
        <S:Body>
            <serie>A</serie>
            <tipoSerie>N</tipoSerie>
            <classeDoc>SI</classeDoc>
            <tipoDoc>S003</tipoDoc>
            <numInicialSeq>0</numInicialSeq>
            <dataInicioPrevUtiliz></dataInicioPrevUtiliz>
            <numCertSWFatur>0095</numCertSWFatur>
            <meioProcessamento>PI</meioProcessamento>
        </S:Body>
    </S:Envelope>

    Será que alguém me pode ajudar no que estou a fazer mal ou que me possa estar a faltar fazer?

    Desde já obrigado pela ajuda!

    Estou na mesma situação no ambiente de testes (e utilizador de testes)... estou a passar xml idêntico...recebo o seguinte erro:

    <?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>

    Quer em PHP (CURL), quer em VB.NET...

    Alguém tem alguma sugestão?

    • 9,562 replies
  7. Re: Utilizar Webservices da AT

    RubenAlves
    By RubenAlves,
    11 minutos atrás, marcolopes disse:

    - A ANULAÇÃO de séries tem um LIMITE temporal (ainda analisei qual é)

    - SIM, é possível voltar a registar uma série anulada (é emitido novo código de validação)

    Sobre as possibilidades, criei testes com "todos" os cenários:

    /** Situações ACEITES */
    //Registar
    //Registar -> Anular
    //Registar -> Finalizar
    //Registar -> Anular -> Registar

    /** Situações NÃO ACEITES */
    //Registar -> Registar
    //Registar -> Anular -> Finalizar
    //Registar -> Finalizar -> Anular

    TEST CASE: https://github.com/marcolopes/dma/blob/master/org.dma.services.at/src/org/dma/services/at/test/SeriesServiceTest.java

    Eu já consigo anular séries registadas recentemente, mas séries registadas no inicio dos testes ainda não consigo.

    Quando tiver em fase de produção deve ficar tudo reslvido, mas era muito bom ter uma opção para fazer reset á área  de testes e começar do 0.

    Obrigado.

    • 9,562 replies
  8. Re: Utilizar Webservices da AT

    marcolopes
    By marcolopes,
    4 hours ago, RubenAlves said:

    Se eu anular uma série será que posso voltar a registar a mesma série?

    - A ANULAÇÃO de séries tem um LIMITE temporal (ainda analisei qual é)

    - SIM, é possível voltar a registar uma série anulada (é emitido novo código de validação)

    Sobre as possibilidades, criei testes com "todos" os cenários:

    /** Situações ACEITES */
    //Registar
    //Registar -> Anular
    //Registar -> Finalizar
    //Registar -> Anular -> Registar

    /** Situações NÃO ACEITES */
    //Registar -> Registar
    //Registar -> Anular -> Finalizar
    //Registar -> Finalizar -> Anular

    TEST CASE: https://github.com/marcolopes/dma/blob/master/org.dma.services.at/src/org/dma/services/at/test/SeriesServiceTest.java

    • 9,562 replies
  1. Load more activity
×
×
  • 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.