Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat:Evento Ator Interessado na NF-e (NT 2020.007) #1564

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 [email protected] (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
MauricioSuporte marked this conversation as resolved.
Show resolved Hide resolved
/// <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