Jump to content
cjulio

Utilizar Webservices da AT

Recommended Posts

Zex

Então o que se deve usar?

Os tipos da AT são um bocado paranóicos.

Mas, acho que o que eles querem dizer é que o programa só deve mostrar o PDF quando ele é necessário.

No caso do original da factura, o PDF só deve ser mostrado uma vez para imprimir e depois nunca mais mostrado ou mesmo apagado.

Analogia: Uma faca pode ser usada como arma. Por isso só deve ser usada na cozinha.

De qualquer modo, já não adianta a ninguém andar a duplicar facturas porque as facturas estão todas certificadas e a AT pode detectar facilmente as duplicações.

Share this post


Link to post
Share on other sites
bioshock

Compreendo. Pessoalmente ainda estou em fase de desenvolvimento, mas já tenho a parte da pré-visualização da facturação desenhada e completa. Eu permito inclusive visualizar rascunhos sendo que leva uma marca de água a dizer "RASCUNHO" e respectiva menção "Este documento não serve de factura" como requerido pela AT.

Eu posso bloquear o saveFile do PDF através da library que estou a utilizar mas a pessoa pode sempre tirar printscreen..portanto, não vale a pena andar a criar estes mecanismos.

Share this post


Link to post
Share on other sites
CrominhO

Os tipos da AT são um bocado paranóicos.

Não concordo nada com isto... A AT englobou a DGCI, a DGITA e muitas outras, como tal o Universo não é pequeno para que se possa generalizar, e como em qualquer outra Profissão, existem bons e maus, especialmente tendo em conta que não são eles que fazem as Leis :-/

Em relação ao que estamos aqui a falar, já não é a primeira vez, e se fores rever o Tópico verás que fui um dos que se manifestaram contra esse processo da impressões, mas tens de ver o lado deles... Imagina que a todas as Pessoas que fossem à Certificação eles diziam que se podiam Imprimir para PDF, então se já existem Bares e Restaurantes sempre a imprimir a 2ªVia sem o serem, imagina com PDF, era um Festival :-/ ... Eles têm de fazer o trabalho deles e ás vezes também não deve ser fácil...

Edited by CrominhO

As mentes humanas são realmente um local estranho!

Share this post


Link to post
Share on other sites
bioshock

Não legislou, assim como não legislou (que eu tenha conhecimento) que só é possível anular documentos do dia.

Share this post


Link to post
Share on other sites
car4321

Não legislou, assim como não legislou (que eu tenha conhecimento) que só é possível anular documentos do dia.

Assim como chega a dizer que só se pode anular o último documento produzido.

Quando se está perante uma certificação há duas hipóteses:

- guias-te apenas pela lei, aí tens de contestar o certificador; se houver conflito, há contencioso. Alguém já ouviu falar dum caso destes na certificação de software?

- és flexível e vais na conversa do certificador para despachar o mais rapidamente possível e sem chatices; é a diplomacia, e acredito que é o que todos pensam e fazem em plena consciência.

Share this post


Link to post
Share on other sites
CrominhO

Assim como chega a dizer que só se pode anular o último documento produzido.

Quando se está perante uma certificação há duas hipóteses:

- guias-te apenas pela lei, aí tens de contestar o certificador; se houver conflito, há contencioso. Alguém já ouviu falar dum caso destes na certificação de software?

- és flexível e vais na conversa do certificador para despachar o mais rapidamente possível e sem chatices; é a diplomacia, e acredito que é o que todos pensam e fazem em plena consciência.

Há uma terceira hipótese, conseguires justificar com bases reais na Hora que precisas de fazer determinado procedimento que normalmente não seria aceite, se eles aceitarem ficou escrito... Uma coisa é certa, a certificação em si e o mod. 24 assinado por ambas as partes é um contrato, ou não?

O Bio dizia em cima e bem, a questão de não estar na Legislação o facto de se puder anular o documento no próprio dia, mas se foi dito na Certificação e não foi contraposto é o que é que pudemos fazer? :-/


As mentes humanas são realmente um local estranho!

Share this post


Link to post
Share on other sites
marcolopes

Não legislou, assim como não legislou (que eu tenha conhecimento) que só é possível anular documentos do dia.

Isto é assunto para o "questões legais", mas relativamente à questão de anulação: https://dl.dropboxusercontent.com/u/126065/Colibri/Documentacao/fisco/INFORMACAO4948.pdf

O Código do Imposto sobre o Valor Acrescentado (CIVA) estabelece no n.º7 do artigo 29.º que, quando o valor tributável de uma operação ou o imposto correspondente sejam alterados por qualquer motivo, incluindo inexatidão, deve ser emitido documento retificativo de fatura.

O Ofício-Circulado n.º30136, de 2012-11-19, no seu ponto 14, sobre os documentos retificativos da fatura, refere que de harmonia com a nova redação do n.º7 do artigo 29.º, quando o valor tributável de uma operação ou o correspondente imposto sejam alterados por qualquer motivo, incluindo inexatidão, deve ser emitido documento retificativo de fatura (nota de crédito ou de débito), o qual deve conter os elementos referidos na alínea a) do n.º5 do artigo 36.º, bem como a referência à fatura a que respeitam e a menção dos elementos alterados. Refere ainda o Ofício-Circulado, no referido ponto, que não pode, assim, ser emitida nova fatura, como forma de retificação do valor tributável ou do correspondente imposto, sem prejuízo da possibilidade de anulação da fatura inicial e sua substituição por outra, quando a retificação se deva a outros motivos.

Edited by marcolopes
  • Vote 1

The simplest explanation is usually the correct one

JAVA Utilities: https://github.com/marcolopes/dma

Share this post


Link to post
Share on other sites
bioshock

Sim, já tinha conhecimento, mas atenção que esse excerto de texto apenas é referente a um tipo de anulação, nomeadamente a quem queira fazer rectificações de valores. No entanto, as anulações a que me referia é por exemplo se eu me enganar a escolher o cliente. Não posso emitir documento rectificativo de valores, tenho de anular a factura por completo e na legislação não está implícito (como os tipos da certificação to dizem quando vais certificar) que só é permitido anular documentos do próprio dia. Eu ainda não implementei esta condição mas provavelmente terei de o fazer.

Share this post


Link to post
Share on other sites
car4321

Há uma terceira hipótese, conseguires justificar com bases reais na Hora que precisas de fazer determinado procedimento que normalmente não seria aceite, se eles aceitarem ficou escrito... Uma coisa é certa, a certificação em si e o mod. 24 assinado por ambas as partes é um contrato, ou não?

O peso da opinião dos certificadores será sempre superior ao peso da tua. Não há verdadeiro equilíbrio entre as duas forças, e em geral é quase de não considerar esta hipótese. Pensar que o bom senso impera não funciona aqui a meu ver.

(..) na legislação não está implícito (como os tipos da certificação to dizem quando vais certificar) que só é permitido anular documentos do próprio dia.

Onde?

Share this post


Link to post
Share on other sites
nunopicado

car, o bioshock disse que NÃO está implícito! :)


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
HenrieCosta

Bom dia

estou neste momento a cria uma funcionalidade para envio de guias de aquisição globais/parciais por web service.

Ao testar o webservice no portal da AT este apresenta a mensagem de sucesso.

No entanto, quando tento o envio através da minha aplicação obtenho erro "Internal Error".

Já comparei o xml enviado com o que o portal da AT gera e não deteto nenhuma diferença na sua estrutura.

Mais, a mensagem de erro que obtenho sugere que o servidor da AT nem sequer conseguiu tratar o pedido!

Já alguém teve este problema?

Fiz uma pesquisa no forum, mas não encontrei ninguém com este problema

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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>123456789/0001</wss:Username>
<wss:Password>pjKudsspvWOupg5TJGeZng==</wss:Password>
<wss:Nonce>GRsQaKlqAuH0nxGpjwaWNgJUz4KcV3wto2FprWSGDkLiLCy4+xfDkkJvcnoQHMUoZCFFWKSIbyvXbBgBeJdfWH55IFX5ZkQzOOwT9W9bM+X2fYdZhinDzAuF/2lUPA4/0pdJzFbUX3NxZTCPa3fyEwhfAQZIIgnjFRZk9vdJfx6tJ2h/0usQ4bMEUCtgrFmjnmkCM80zuQqZ3pSeuzwtRs+Oq1T/AbwFRbeh3YYMqTI9vpRoUdOWEiNyraGZPTfNHtGqtDQk7rbRIt/elfzAS7XxxJJqFaFVocoRbqVKmuS1LNd8VhlbXM6fRgzAPB9rL70mUzidt8A1Q9QSzPd0jg==</wss:Nonce>
<wss:Created>lxXRuy+55k2+SUZFgQeJnCwj75WdKiZzquC/ZiXqY4Q=</wss:Created>
</wss:UsernameToken>
</wss:Security>
</S:Header>
<S:Body>
<registerFarmersPurchaseDocRequestElem xmlns="https://servicos.portaldasfinancas.gov.pt/sgdtws/GuiasAquisicaoProdAgricola/">
<TaxRegistrationNumber >123456789</TaxRegistrationNumber>
<CompanyName >Company</CompanyName>
<CompanyAddress >
<Addressdetail>address</Addressdetail>
<City>city</City>
<PostalCode>0000-000</PostalCode>
<Country>PT</Country>
</CompanyAddress>
<DocumentNumber >guiaaqg A15/1</DocumentNumber>
<MovementStatus >N</MovementStatus>
<MovementDate >2015-05-11</MovementDate>
<MovementType >GT</MovementType>
<MovementStartTime >2015-05-11</MovementStartTime>
<InAcores >false</InAcores>
<FarmerTaxID>123456789</FarmerTaxID>
<FarmerTaxID>987654321</FarmerTaxID>
</registerFarmersPurchaseDocRequestElem>
</S:Body>
</S:Envelope>

Share this post


Link to post
Share on other sites
car4321

car, o bioshock disse que NÃO está implícito! :)

Ups! :cheesygrin:

Errare humanum est, e eu sou muito humano!

Então voltamos à arbitrariedade de pedir o que está na lei, porque está;

e pedir o que não está, porque sim.

Como se argumenta com a segunda situação?

Share this post


Link to post
Share on other sites
HenrieCosta

Bom dia

estou neste momento a cria uma funcionalidade para envio de guias de aquisição globais/parciais por web service.

Ao testar o webservice no portal da AT este apresenta a mensagem de sucesso.

No entanto, quando tento o envio através da minha aplicação obtenho erro "Internal Error".

Já comparei o xml enviado com o que o portal da AT gera e não deteto nenhuma diferença na sua estrutura.

Mais, a mensagem de erro que obtenho sugere que o servidor da AT nem sequer conseguiu tratar o pedido!

Já alguém teve este problema?

Fiz uma pesquisa no forum, mas não encontrei ninguém com este problema

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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>123456789/0001</wss:Username>
<wss:Password>pjKudsspvWOupg5TJGeZng==</wss:Password>
<wss:Nonce>GRsQaKlqAuH0nxGpjwaWNgJUz4KcV3wto2FprWSGDkLiLCy4+xfDkkJvcnoQHMUoZCFFWKSIbyvXbBgBeJdfWH55IFX5ZkQzOOwT9W9bM+X2fYdZhinDzAuF/2lUPA4/0pdJzFbUX3NxZTCPa3fyEwhfAQZIIgnjFRZk9vdJfx6tJ2h/0usQ4bMEUCtgrFmjnmkCM80zuQqZ3pSeuzwtRs+Oq1T/AbwFRbeh3YYMqTI9vpRoUdOWEiNyraGZPTfNHtGqtDQk7rbRIt/elfzAS7XxxJJqFaFVocoRbqVKmuS1LNd8VhlbXM6fRgzAPB9rL70mUzidt8A1Q9QSzPd0jg==</wss:Nonce>
<wss:Created>lxXRuy+55k2+SUZFgQeJnCwj75WdKiZzquC/ZiXqY4Q=</wss:Created>
</wss:UsernameToken>
</wss:Security>
</S:Header>
<S:Body>
<registerFarmersPurchaseDocRequestElem xmlns="https://servicos.portaldasfinancas.gov.pt/sgdtws/GuiasAquisicaoProdAgricola/">
<TaxRegistrationNumber >123456789</TaxRegistrationNumber>
<CompanyName >Company</CompanyName>
<CompanyAddress >
<Addressdetail>address</Addressdetail>
<City>city</City>
<PostalCode>0000-000</PostalCode>
<Country>PT</Country>
</CompanyAddress>
<DocumentNumber >guiaaqg A15/1</DocumentNumber>
<MovementStatus >N</MovementStatus>
<MovementDate >2015-05-11</MovementDate>
<MovementType >GT</MovementType>
<MovementStartTime >2015-05-11</MovementStartTime>
<InAcores >false</InAcores>
<FarmerTaxID>123456789</FarmerTaxID>
<FarmerTaxID>987654321</FarmerTaxID>
</registerFarmersPurchaseDocRequestElem>
</S:Body>
</S:Envelope>

Já descobri o problema....

estava entre a minha cadeira e o meu monitor... lol

O endereço de comunicação estava mal escrito...

https://servicos.portaldasfinancas.gov.pt:702/sgdtws/GuiasAquisicaoProdAgricula em vez de

https://servicos.portaldasfinancas.gov.pt:702/sgdtws/GuiasAquisicaoProdAgricola

  • Vote 1

Share this post


Link to post
Share on other sites
CrominhO

O peso da opinião dos certificadores será sempre superior ao peso da tua. Não há verdadeiro equilíbrio entre as duas forças, e em geral é quase de não considerar esta hipótese. Pensar que o bom senso impera não funciona aqui a meu ver.

Olha que comigo na ultima Certificação funcionou amigo :) ... eles obviamente que não estão a par de todo o tipo de negócios, e como tal analisamos a situação em conjunto com eles :) ... já na situação dos PDFs ele disseram logo que não e não havia argumentação Possível loOl :D

OFFTOPIC: SicN -> Fisco efetuou mais de 2 milhões de penhoras nos últimos 2 Anos, reforçando os prémios dos trabalhadores da Administração dos impostos... o numero mais que Duplicou em 3 anos....

lol há valentes, mais uns anitos e não há pessoa singular ou colectiva que não tenha uma penhora no Curriculo lol :cheesygrin::P


As mentes humanas são realmente um local estranho!

Share this post


Link to post
Share on other sites
bioshock

Alguém me consegue elucidar o porquê de, ao tentar anular uma Guia Transporte - em versão teste, me é retornado o erro:

Já foi inserido um Documento de Transporte com o número fornecido

Encontrei um post semelhante neste mesmo tópico umas valentes páginas atrás http://www.portugal-a-programar.pt/topic/57734-utilizar-webservices-da-at/page__st__740

no entanto na continuação do tópico ninguém falou mais sobre o assunto.

Já enviei um sem número de Guias para a AT e até agora tudo bem, no entanto, chegou a hora de começar a testar a anulação das Guias e aí começam os problemas:

  • Enviei a Guia 8 com o estado a normal
  • Veio a resposta que se esperava "0 -OK"
  • Anulei a Guia e voltei a tentar enviar mas desta vez com o estado anulado
  • Veio a resposta: "Já foi inserido um Documento de Transporte com o número fornecido."

Alguém já conseguiu anular desta forma a Guia?

É este o procedimento correcto? A mim parece-me o mais lógico mas com a AT nunca se sabe! :confused:

Fiz o mesmo procedimento e obtenho o mesmo erro. Será por estar a utilizar o servidor 701?

Share this post


Link to post
Share on other sites
car4321

Pois é amigão, não há regra sem exceção. :)

Mas sabes, isto das certificações tem mudado tanto!

Na primeira que fiz, uma das que tem numeração com 1 dígito, eles só se importavam com o saft, com a assinatura dos documentos, e pouco mais.

Na última, implicavam com tudo, e tinha de fundamentar tudo.

O hiato entre elas até é normal.

Só que fui percebendo que cada vez menos valia a pena argumentar, porque chegava o momento do: "lamentamos, mas tem mesmo de ser assim", quando eles próprios já não tinham argumentos. Parece-me que já existe uma lista de consensualidades entre certificadores, e alguns deles, mesmo podendo não concordar a 100%, preferem não criar polémica ficando no conforto do consenso.

A maturidade será atingida quando os certificadores tomarem consciência de que não podem pedir mais do que a lei refere. E a facilidade está do lado deles, porque na teoria, se quiserem acrescentar mais umas coisas, basta uma portaria, mesmo que essa coisa não faça sentido. Mas ao menos, essa portaria servirá como fundamento legal.

  • Vote 1

Share this post


Link to post
Share on other sites
CrominhO

Pois acredito amigo, eu realmente já não certifico nenhuma a algum tempo... nas primeiras um dos certificadores ainda me ajudava por Email com algumas situações "extra" certificação, nas ultimas já com uma equipa diferente, responderam a dizer que tinha de enviar as questões pa outro departamento lol :-)

Em todo o caso eu não os tava a defender, só estava contra a generalização :-) ... porque se houve alturas em que determinados funcionários da AT pareciam nem saber o que estavam a falar, também houve outros que me ajudaram e muito :)

  • Vote 1

As mentes humanas são realmente um local estranho!

Share this post


Link to post
Share on other sites
car4321

Em todo o caso eu não os tava a defender, só estava contra a generalização :-) ... porque se houve alturas em que determinados funcionários da AT pareciam nem saber o que estavam a falar, também houve outros que me ajudaram e muito :)

Com certeza amigo!

Quanto mais informação formos recolhendo uns dos outros melhor.

E todos nós temos experiências diferentes.

  • Vote 1

Share this post


Link to post
Share on other sites
spcl

Boas

Sabem se é possivel submeter o modelo 10 pelos webservices da AT?

Algum codigo necessario para quem esta em c#

Class para RSA

public class RSA
{
 public static string PublicKeyLocation	 = "C:/Users/asd/Desktop/keys/pubkey.xml"; //convertida para xml
 public static string PrivateKeyLocation	 = "C:/Users/asd/Desktop/keys/privatekey.xml";
 public static string PublicKey			 = System.IO.File.ReadAllText(@PublicKeyLocation);	 //use this key to encode data coming to AT
 public static string PrivateKey			 = System.IO.File.ReadAllText(@PrivateKeyLocation); //use this key to decode data coming from AT
 public static string Encode(string ToEncode)
 {
	 using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(1024))
	 {
		 try
		 {
			 RSA.FromXmlString(PublicKey);

			 byte[] BytesToEncode = Encoding.UTF8.GetBytes(ToEncode);
			 byte[] encryptedData = RSA.Encrypt(BytesToEncode, true);
			 string base64Encrypted = Convert.ToBase64String(encryptedData);
			 return base64Encrypted;
		 }
		 finally
		 {
			 RSA.PersistKeyInCsp = false;
		 }
	 }
 }
 public static string Decode(string ToDecode)
 {
	 using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(1024))
	 {
		 try
		 {
			 RSA.FromXmlString(PrivateKey);
			 byte[] BytesToDecode = Convert.FromBase64String(ToDecode);
			 byte[] decryptedBytes = RSA.Decrypt(BytesToDecode, true);
			 string decryptedData = Encoding.UTF8.GetString(decryptedBytes);
			 return decryptedData;
		 }
		 finally
		 {
			 RSA.PersistKeyInCsp = false;
		 }
	 }
 }
}

Class AES

public class AES
{
 public static string Encode(string toEncrypt, string simkey)
 {
	 byte[] keyArray = ASCIIEncoding.ASCII.GetBytes(simkey);
	 byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);
	 RijndaelManaged rDel = new RijndaelManaged();
	 rDel.BlockSize = 128;
	 rDel.KeySize = 128;
	 rDel.Key = keyArray;
	 rDel.IV = new byte[16];
	 rDel.Mode = CipherMode.ECB;
	 rDel.Padding = PaddingMode.PKCS7; // better lang support
	 ICryptoTransform cTransform = rDel.CreateEncryptor();
	 byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
	 return Convert.ToBase64String(resultArray, 0, resultArray.Length);
 }
 public static string Decode(string toDecrypt, string simkey)
 {
	 byte[] keyArray = ASCIIEncoding.ASCII.GetBytes(simkey);
	 byte[] toDecryptArray = Convert.FromBase64String(toDecrypt);
	 RijndaelManaged rDel = new RijndaelManaged();
	 rDel.Key = keyArray;
	 rDel.Mode = CipherMode.ECB;
	 rDel.Padding = PaddingMode.PKCS7; // better lang support
	 ICryptoTransform cTransform = rDel.CreateDecryptor();
	 byte[] resultArray = cTransform.TransformFinalBlock(toDecryptArray, 0, toDecryptArray.Length);
	 return UTF8Encoding.UTF8.GetString(resultArray);
 }
}

Edited by spcl

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • 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.