Skip to content

Commit

Permalink
Merge pull request #1564 from MauricioSuporte/feature/evento-ator-int…
Browse files Browse the repository at this point in the history
…eressado

feat:Evento Ator Interessado na NF-e (NT 2020.007)
  • Loading branch information
MauricioSuporte authored Nov 7, 2024
2 parents 12c7fa2 + 42ee166 commit 2ee3f05
Show file tree
Hide file tree
Showing 12 changed files with 338 additions and 16 deletions.
2 changes: 2 additions & 0 deletions NFe.AppTeste/MainWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -974,6 +974,8 @@
Margin="10,260,0,0" VerticalAlignment="Top" Width="177" Click="BtnConciliacaoFinanceira_Click" />
<Button x:Name="BtnCancConciliacaoFinanceira" Content="Canc. Conciliação Financeira NFe" HorizontalAlignment="Left"
Margin="192,260,0,0" VerticalAlignment="Top" Width="177" Click="BtnCancConciliacaoFinanceira_Click" />
<Button x:Name="BtnAtorInteressado" Content="Ator Interessado NFe" HorizontalAlignment="Left"
Margin="375,235,0,0" VerticalAlignment="Top" Width="177" Click="BtnAtorInteressado_Click" />
</Grid>
</TabItem>

Expand Down
57 changes: 56 additions & 1 deletion NFe.AppTeste/MainWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2263,6 +2263,61 @@ private void BtnCancelarNFeSubstituicao_OnClick(object sender, RoutedEventArgs e
}
}


private void BtnAtorInteressado_Click(object sender, RoutedEventArgs e)
{
const string titulo = "Evento Ator Interessado na NF-e";

try
{
#region Evento Ator Interessado na NF-e

var idlote = Funcoes.InpuBox(this, titulo, "Identificador de controle do Lote de envio:", "1");
if (string.IsNullOrEmpty(idlote)) throw new Exception("A Id do Lote deve ser informada!");

var sequenciaEvento = Funcoes.InpuBox(this, titulo, "Número sequencial do evento:", "2");
if (string.IsNullOrEmpty(sequenciaEvento)) throw new Exception("O número sequencial deve ser informado!");

var chave = Funcoes.InpuBox(this, titulo, "Chave da NFe:", "28241132876302000114550010000090041001283454");
if (string.IsNullOrEmpty(chave)) throw new Exception("A Chave deve ser informada!");
if (chave.Length != 44) throw new Exception("Chave deve conter 44 caracteres!");

var cnpjTransportador = Funcoes.InpuBox(this, titulo, "CPF/CNPJ do Ator Interessado:", "10526704000156");
if (string.IsNullOrEmpty(cnpjTransportador)) throw new Exception("O CPF/CNPJ do Ator Interessado deve ser informado!");
if (cnpjTransportador.Length != 14 && cnpjTransportador.Length != 11) throw new Exception("O CPF/CNPJ deve conter 11 ou 14 caracteres!");

var servicoNFe = new ServicosNFe(_configuracoes.CfgServico);
var cpfcnpj = string.IsNullOrEmpty(_configuracoes.Emitente.CNPJ)
? _configuracoes.Emitente.CPF
: _configuracoes.Emitente.CNPJ;

var retornoAtorInteressado = servicoNFe.RecepcaoEventoAtorInteressado(
Convert.ToInt32(idlote),
Convert.ToInt16(sequenciaEvento),
cpfcnpj,
chave,
cnpjTransportador,
Classes.Servicos.Evento.TipoAutor.taEmpresaEmitente,
Classes.Servicos.Evento.TipoAutorizacao.Permite,
DFe.Classes.Entidades.Estado.SE);

TrataRetorno(retornoAtorInteressado);

#endregion
}
catch (ComunicacaoException ex)
{
Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
}
catch (ValidacaoSchemaException ex)
{
Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
}
catch (Exception ex)
{
if (!string.IsNullOrEmpty(ex.Message))
Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
}
}

}
}
88 changes: 88 additions & 0 deletions NFe.AppTeste/Schemas/110150_v1.00.xsd
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2008 (http://www.altova.com) by sas-softwares@procergs.rs.gov.br (PROCERGS) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.portalfiscal.inf.br/nfe" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" targetNamespace="http://www.portalfiscal.inf.br/nfe" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:include schemaLocation="tiposBasico_v1.03.xsd"/>
<xs:element name="detEvento">
<xs:annotation>
<xs:documentation>Schema XML de validação do evento de Ator Interessado na NF-e - Transportador (110150)”</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="descEvento">
<xs:annotation>
<xs:documentation>Descrição do Evento - "Ator interessado na NF-e”"</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="TString">
<xs:whiteSpace value="preserve"/>
<xs:enumeration value="Ator interessado na NF-e"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="cOrgaoAutor" type="TCodUfIBGE"/>
<xs:element name="tpAutor">
<xs:annotation>
<xs:documentation>Tipo do Órgão Autor do Evento. Informar uma das opções 1=Geração do Evento pelo Emitente; 2=Geração do Evento pelo Destinatário; 3=Geração do Evento pelo Transportador
Outros valores: 1=Empresa Emitente, 2=Empresa destinatária; 3=Empresa; 5=Fisco; 6=RFB; 9=Outros Órgãos;</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
<xs:enumeration value="1"/>
<xs:enumeration value="2"/>
<xs:enumeration value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="verAplic" type="TVerAplic">
<xs:annotation>
<xs:documentation>Versão do aplicativo do Autor do Evento.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="autXML">
<xs:annotation>
<xs:documentation>Pessoas autorizadas a acessar o XML da NF-e</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice>
<xs:element name="CNPJ" type="TCnpj"/>
<xs:element name="CPF" type="TCpf"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="tpAutorizacao" minOccurs="0">
<xs:annotation>
<xs:documentation>0 – Não permite; 1 – Permite o transportador autorizado pelo emitente ou destinatário autorizar outros transportadores para ter acesso ao download da NF-e
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
<xs:enumeration value="0"/>
<xs:enumeration value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="xCondUso" minOccurs="0">
<xs:annotation>
<xs:documentation>Texto Fixo com as Condição de uso do tipo de autorização para o transportador: </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
<xs:enumeration value="O emitente ou destinatário da NF-e, declara que permite o transportador declarado no campo CNPJ/CPF deste evento a autorizar os transportadores subcontratados ou redespachados a terem acesso ao download da NF-e"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
<xs:attribute name="versao" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
<xs:enumeration value="1.00"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>
55 changes: 41 additions & 14 deletions NFe.Classes/Servicos/Evento/detEvento.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,11 @@
/********************************************************************************/
using System;
using System.Collections.Generic;
using System.Runtime.ConstrainedExecution;
using System.Xml.Serialization;
using DFe.Classes.Entidades;
using DFe.Utils;
using NFe.Classes.Informacoes;
using NFe.Classes.Informacoes.Identificacao.Tipos;
using Shared.NFe.Classes.Servicos.Evento;

Expand All @@ -54,20 +56,6 @@ public class detEvento
/// </summary>
public string descEvento { get; set; }

#region Carta de Correção

/// <summary>
/// HP20 - Correção a ser considerada, texto livre. A correção mais recente substitui as anteriores.
/// </summary>
public string xCorrecao { get; set; }

/// <summary>
/// HP20a - Condições de uso da Carta de Correção
/// </summary>
public string xCondUso { get; set; }

#endregion

#region EPEC

/// <summary>
Expand Down Expand Up @@ -328,5 +316,44 @@ public bool ShouldSerializedetPag()
}

#endregion

#region Ator Interessado NFe
/// <summary>
/// P23 - Pessoas autorizadas a acessar o XML da NF-e
/// </summary>
[XmlElement("autXML")]
public List<autXML> autXML { get; set; }

/// <summary>
/// P26 - 0 = Não permite;
/// 1 = Permite o transportador autorizado pelo
/// emitente ou destinatário autorizar outros
/// transportadores para ter acesso ao download da
/// NF-e
/// </summary>
public TipoAutorizacao? tpAutorizacao { get; set; }

public bool ShouldSerializetpAutorizacao()
{
return tpAutorizacao != null;
}

#endregion

#region Carta de Correção

/// <summary>
/// HP20 - Correção a ser considerada, texto livre. A correção mais recente substitui as anteriores.
/// </summary>
public string xCorrecao { get; set; }

/// <summary>
/// HP20a - Condições de uso da Carta de Correção.
/// P27 - Condição de uso do tipo de autorização para o transportador.
/// </summary>
public string xCondUso { get; set; }

#endregion

}
}
28 changes: 28 additions & 0 deletions NFe.Classes/Servicos/Evento/detEventoTipos.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */
/********************************************************************************/
using System.ComponentModel;
using System.Runtime.ConstrainedExecution;
using System.Xml.Serialization;

namespace NFe.Classes.Servicos.Evento
Expand Down Expand Up @@ -128,4 +129,31 @@ public enum MotivoInsucesso
[XmlEnum("4")]
Outros = 4
}

/// <summary>
/// 0 – Não permite;
/// 1 – Permite o transportador autorizado pelo
/// emitente ou destinatário autorizar outros
/// transportadores para ter acesso ao download da
/// NF-e
/// </summary>
public enum TipoAutorizacao
{
/// <summary>
/// 0 – Não permite
/// </summary>
[Description("Não permite")]
[XmlEnum("0")]
NaoPermite = 0,

/// <summary>
/// 1 – Permite o transportador autorizado pelo
/// emitente ou destinatário autorizar outros
/// transportadores para ter acesso ao download da
/// NF-e
/// </summary>
[Description("Permite")]
[XmlEnum("1")]
Permite = 1
}
}
8 changes: 8 additions & 0 deletions NFe.Classes/Servicos/Evento/retEvento.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */
/********************************************************************************/
using System.Xml.Serialization;
using DFe.Classes.Assinatura;

namespace NFe.Classes.Servicos.Evento
{
Expand All @@ -47,5 +48,12 @@ public class retEvento
/// HR11 - Grupo de informações do registro do Evento
/// </summary>
public infEventoRet infEvento { get; set; }

/// <summary>
/// HR91 - Assinatura Digital do documento XML, a assinatura deverá ser aplicada no elemento infEvento.
/// A decisão de assinar a mensagem fica da critério da UF.
/// </summary>
[XmlElement(Namespace = "http://www.w3.org/2000/09/xmldsig#")]
public Signature Signature { get; set; }
}
}
13 changes: 13 additions & 0 deletions NFe.Classes/Servicos/Tipos/NFeServicosTipos.cs
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,11 @@ public enum ServicoNFe
/// </summary>
RecepcaoEventoManifestacaoDestinatario,

/// <summary>
/// serviço destinado à recepção de mensagem do Evento de Ator Interessado da NF-e
/// </summary>
RecepcaoEventoAtorInteressado,

/// <summary>
/// serviço destinado à recepção de mensagens de lote de NF-e versão 2.0
/// </summary>
Expand Down Expand Up @@ -184,6 +189,7 @@ public enum IndicadorSincronizacao
/// 110112 - Cancelamento por substituição
/// 110130 - Comprovante de Entrega da NF-e
/// 110131 - Cancelamento Comprovante de Entrega da NF-e
/// 110150 - Ator Interessado na NF-e
/// 110192 - Insucesso na Entrega da NF-e
/// 110193 - Cancelamento Insucesso na Entrega da NF-e
/// 110750 - Conciliação Financeira da NF-e
Expand Down Expand Up @@ -222,6 +228,13 @@ public enum NFeTipoEvento
[Description("Cancelamento por substituicao")]
[XmlEnum("110112")]
TeNfeCancelamentoSubstituicao = 110112,

/// <summary>
/// 110150 - Ator interessado na NF-e
/// </summary>
[Description("Ator interessado na NF-e")]
[XmlEnum("110150")]
TeNfeAtorInteressadoNFe = 110150,

/// <summary>
/// 110192 - Insucesso na Entrega da NF-e
Expand Down
3 changes: 3 additions & 0 deletions NFe.Servicos/ServicoNfeFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,9 @@ public static INfeServico CriaWsdlOutros(ServicoNFe servico, ConfiguracaoServico

return new RecepcaoEvento(url, certificado, cfg.TimeOut);

case ServicoNFe.RecepcaoEventoAtorInteressado:
return new RecepcaoEvento4AN(url, certificado, cfg.TimeOut);

case ServicoNFe.RecepcaoEventoEpec:
if (cfg.VersaoRecepcaoEventoEpec == VersaoServico.Versao400)
{
Expand Down
Loading

0 comments on commit 2ee3f05

Please sign in to comment.