Olá Pessoal,
Normalmente as transportadora fazem seguro da carga que esta sendo transportada. A averbação é a declaração das mercadorias em estado de risco.
O que vai ser apresentado abaixo é como averbar um CT-e se utilizando do componente ACBrANe e a empresa responsável pela averbação será a AT&M.
A averbação de um CT-e é muito simples, os passos são:
1. Emitir o CT-e utilizando o componente ACBrCTe;
2. Averbar o CT-e utilizando o componente ACBrANe;
O programa exemplo do componente ACBrANe é bastante simples e de fácil compreensão.
Abaixo a rotina que alimenta o componente ACBrANe para realizar a averbação de um CT-e:
procedure TfrmACBrANe.AlimentarComponente(ANomeArq: String);
begin
ACBrANe1.Documentos.Clear;
with ACBrANe1.Documentos.Add.ANe do
begin
// ATM
Usuario := ACBrANe1.Configuracoes.Geral.Usuario;
Senha := ACBrANe1.Configuracoes.Geral.Senha;
codatm := ACBrANe1.Configuracoes.Geral.CodATM;
// ELT
NomeArq := ExtractFileName(ANomeArq);
CNPJ := ACBrANe1.Configuracoes.Geral.CNPJEmitente;
// ATM e ELT
xmlDFe := DocNFeCTe;
end;
end;
O componente permite averbar documentos com a AT&M e ELT, como dito estamos exemplificando o processo com base na AT&M.
Para a AT&M precisamos informar o Usuário, Senha e o Código AT&M gerado para cada usuário.
A variável DocNFeCTe é do tipo string e ela contem o conteúdo do XML.
Detalhe importante: podemos averbar uma NF-e ou CT-e, nessa postagem estarei mostrando a averbação de um CT-e, logo o conteúdo da variável DocNFeCTe do programa exemplo vai conter o XML de um CT-e.
Após alimentar o componente com os dados necessários, basta executar o método Enviar, como é mostrado pela codificação do botão [Criar e Enviar] do programa exemplo.
A questão maior é quando o segurado possui coberturas adicionais em sua apólice tais como: Operação de carga e descarga, içamento de carga, contêiner, acessórios, entre outros.
No Manual da AT&M (WebService 2.0 - REST 1.1) temos no item 16.0 e subitens uma relação das coberturas adicionais e os seus valores padrões.
A titulo de exemplo vamos pegar a cobertura: Operação de Carga e Descarga.
O valor padrão é "N" ou seja o segurado não tem essa cobertura.
Caso o segurado venha a ter se faz necessário constar no XML do CT-e a informação que ele tem a cobertura para a Operação de Carga e Descarga.
Como fazer isso?
Vamos utilizar (conforme consta no manual da AT&M) o grupo de observação do contribuinte.
Exemplo genérico:
with compl.ObsCont.New do
begin
xCampo := 'Nome do Campo';
xTexto := 'Valor do Campo';
end;
Informando que o segurado tem cobertura para a Operação de Carga e Descarga na rotina que alimenta o componente ACBrCTe:
with compl.ObsCont.New do
begin
xCampo := 'OCD';
xTexto := 'S';
end;
Isso vai fazer com que ao gerar o XML do CT-e ele vai conter as tags:
<compl>
<ObsCont xCampo =“OCD”>
<xTexto>S</xTexto>
</ObsCont>
</compl>
Vamos supor que o segurando além de ter a cobertura de Operação de Carga e Descarga tenha também a cobertura para içamento de carga da mercadoria.
with compl.ObsCont.New do
begin
xCampo := 'OCD';
xTexto := 'S';
end;
with compl.ObsCont.New do
begin
xCampo := 'IC';
xTexto := 'S';
end;
No XML teremos:
<compl>
<ObsCont xCampo =“OCD”>
<xTexto>S</xTexto>
</ObsCont>
<ObsCont xCampo =“IC”>
<xTexto>S</xTexto>
</ObsCont>
</compl>
Um XML com esses dados vai ser autorizado pela SEFAZ sem nenhum problema, uma vez que essas informações são observações do contribuinte informadas no XML de forma estruturada.
Ao enviar o XML do CT-e com essas tag para o webservice da AT&M ela identifica essas informações no XML e averba o CT-e levando em consideração as coberturas informadas.
Detalhe Importante:
O grupo ObsCont só pode ocorrer no XML no máximo 10 vezes (no exemplo acima temos 2 ocorrências), logo não informe uma cobertura que você não tenha ou com o seu valor padrão.
Exemplo: Se o segurado tenha uma cobertura para uma mercadoria especifica deverá constar no XML, caso contrario não informe.
<compl>
<ObsCont xCampo =“MERCESPECIFICA”>
<xTexto>S</xTexto>
</ObsCont>
</compl>
Espero ter ajudado.