nfe

package module
v0.0.0-...-e9dc4aa Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 15, 2021 License: MPL-2.0 Imports: 14 Imported by: 0

README

nfe

Bibliotecas para geração, validação, assinatura e transmissão de XMLs da NFe. Pretendo desenvolver essa biblioteca conforme a necessidade surgir. Por enquanto apenas as consultas de Status, NFe e Cadastro estão disponíveis.

Extraindo chaves de um certificado A1 (.pfx) para uso com o biblioteca

openssl pkcs12 -in certificado.pfx -out ~/client.pem -clcerts -nokeys -nodes
openssl pkcs12 -in certificado.pfx -out ~/key.pem -nocerts -nodes

Consulta NFe

Exemplo
package main

import (
	"encoding/json"
	"net/http"
	"fmt"

	"github.com/frones/nfe"
)

func main() {
	client, err := nfe.NewHTTPClient("~/client.pem", "~/key.pem")
	if err != nil {
		fmt.Printf("Erro na criação do HTTP Client e leitura do certificado. Detalhes: %v\n", err)
		return
	}
	ret, xmlfile, err := nfe.ConsultaNFe("12345678901234567890123456789012345678901234", nfe.Homologacao, client, func(req *http.Request) {req.Header.Set("User-Agent", "MyUA/1.0")})
	if err != nil {
		fmt.Printf("Erro na consulta da chave de acesso. Detalhes: %v\n", err)
		return
	}

	fmt.Printf("Objeto RetConsSitNFe: %v\n", ret)
	fmt.Printf("Arquivo XML: %v\n", string(xmlfile))

	jsonfile, err := json.Marshal(ret)
	if err != nil {
		fmt.Printf("Erro na serialização do json. Detalhes: %v\n", err)
		return
	}
	fmt.Printf("Arquivo JSON: %v\n", string(jsonfile))
}

Documentation

Overview

O package nfe fornece funções para fazer toda a comunicação com as Sefazes no âmbito da NFe.

Index

Examples

Constants

View Source
const VerConsCad = "2.00"
View Source
const VerConsSitNFe = "4.00"
View Source
const VerConsStatServ = "4.00"

Variables

This section is empty.

Functions

func GetChaveInfo

func GetChaveInfo(DFeChave string) (int, int, int, string, string, int, int, string, int, error)

GetChaveInfo extrai todas as informações que estão embutidas em uma chave de acesso da NFe:

cUF, Ano, Mes, CNPJ, Modelo (55/65), Número da NFe, tpEmis e cNF.

func GetUF

func GetUF(cUF int) string

GetUF retorna a sigla da UF a partir do código IBGE

func GetcUF

func GetcUF(uf string) int

GetcUF retorna o código IBGE da UF a partir da sigla

func NewHTTPClient

func NewHTTPClient(certFile string, certKeyFile string) (*http.Client, error)

NewHTTPClient cria um http.Client com todas as configurações necessárias para comunicação com as Sefazes.

O certificado digital para usar com essa biblioteca pode ser gerado a partir de um certificado A1 da seguinte maneira:

openssl pkcs12 -in certificado.pfx -out ~/client.pem -clcerts -nokeys -nodes
openssl pkcs12 -in certificado.pfx -out ~/key.pem -nocerts -nodes

func ValidaChaveDeAcesso

func ValidaChaveDeAcesso(DFeChave string) bool

ValidaChaveDeAcesso verifica se a chave de acesso fornecida é válida, através dos seguintes critérios:

  • Tamanho = 44 e conteúdo numérico
  • Dígito verificador consistente
  • cUF corresponde a um item da tabela do IBGE
  • Mes/Ano válidos, posteriores a 01/2006 e não posteriores ao ano atual
  • CNPJ válido e diferente de 00000000000000
  • Modelo igual a 55 ou 65 ou 67
  • Número da NF diferente de zero

Types

type ConsCad

type ConsCad struct {
	XMLName xml.Name `json:"-" xml:"http://www.portalfiscal.inf.br/nfe ConsCad"`
	Versao  string   `json:"versao" xml:"versao,attr"`
	InfCons struct {
		XServ string `json:"xServ" xml:"xServ"`
		UF    string `json:"UF" xml:"UF"`
		IE    string `json:"IE,omitempty" xml:"IE,omitempty"`
		CNPJ  string `json:"CNPJ,omitempty" xml:"CNPJ,omitempty"`
		CPF   string `json:"CPF,omitempty" xml:"CPF,omitempty"`
	} `json:"infCons" xml:"infCons"`
}

ConsCad representa o XML de consulta do cadastro do contribuinte

func (ConsCad) Consulta

func (cons ConsCad) Consulta(tpAmb TAmb, client *http.Client, optReq ...func(req *http.Request)) (RetConsCad, []byte, error)

Realiza a consulta na Sefaz correspondente (determinada automaticamente pelo UF), utilizando o http.Client (ver NewHTTPClient) e as funções de personalização da http.Request fornecidos.

Ver ConsultaCad() para uma maneira mais simples de consultar o status do serviço

type ConsSitNFe

type ConsSitNFe struct {
	XMLName xml.Name `json:"-" xml:"http://www.portalfiscal.inf.br/nfe consSitNFe"`
	Versao  string   `json:"versao" xml:"versao,attr"`
	TpAmb   TAmb     `json:"tpAmb" xml:"tpAmb"`
	XServ   string   `json:"xServ" xml:"xServ"`
	ChNFe   string   `json:"chNFe" xml:"chNFe"`
}

ConsSitNFe representa o XML de consulta de uma NFe

func (ConsSitNFe) Consulta

func (cons ConsSitNFe) Consulta(client *http.Client, optReq ...func(req *http.Request)) (RetConsSitNFe, []byte, error)

Realiza a consulta na Sefaz correspondente (determinada automaticamente pelo cUF presente na chave), utilizando o http.Client (ver NewHTTPClient) e as funções de personalização da http.Request fornecidos.

Ver ConsultaNFe() para uma maneira mais simples de consultar a NFe

Example
client, err := nfe.NewHTTPClient("~/client.pem", "~/key.pem")
if err != nil {
	fmt.Printf("Erro na criação do HTTP Client e leitura do certificado. Detalhes: %v\n", err)
	return
}

cons := nfe.ConsSitNFe{
	Versao: nfe.VerConsSitNFe,
	TpAmb:  nfe.Homologacao,
	XServ:  "CONSULTAR",
	ChNFe:  "12345678901234567890123456789012345678901234",
}

ret, xmlfile, err := cons.Consulta(client)
if err != nil {
	fmt.Printf("Erro na consulta da chave de acesso. Detalhes: %v\n", err)
	return
}

fmt.Printf("%v\n\n", ret)
fmt.Printf("%s\n", xmlfile)
Output:

type ConsStatServ

type ConsStatServ struct {
	XMLName xml.Name `json:"-" xml:"http://www.portalfiscal.inf.br/nfe consStatServ"`
	Versao  string   `json:"versao" xml:"versao,attr"`
	TpAmb   TAmb     `json:"tpAmb" xml:"tpAmb"`
	CUF     int      `json:"cUF" xml:"cUF"`
	XServ   string   `json:"xServ" xml:"xServ"`
}

ConsStatServ representa o XML de consulta do status do serviço

func (ConsStatServ) Consulta

func (cons ConsStatServ) Consulta(client *http.Client, optReq ...func(req *http.Request)) (RetConsStatServ, []byte, error)

Realiza a consulta na Sefaz correspondente (determinada automaticamente pelo cUF), utilizando o http.Client (ver NewHTTPClient) e as funções de personalização da http.Request fornecidos.

Ver ConsultaStatServ() para uma maneira mais simples de consultar o status do serviço

Example
client, err := nfe.NewHTTPClient("~/client.pem", "~/key.pem")
if err != nil {
	fmt.Printf("Erro na criação do HTTP Client e leitura do certificado. Detalhes: %v\n", err)
	return
}

cons := nfe.ConsStatServ{
	Versao: nfe.VerConsStatServ,
	TpAmb:  nfe.Homologacao,
	XServ:  "STATUS",
	CUF:    35,
}

ret, xmlfile, err := cons.Consulta(client)
if err != nil {
	fmt.Printf("Erro na consulta da chave de acesso. Detalhes: %v\n", err)
	return
}

fmt.Printf("%v\n\n", ret)
fmt.Printf("%s\n", xmlfile)
Output:

type Envelope

type Envelope struct {
	XMLName xml.Name `xml:"soap12:Envelope"`
	Xsi     string   `xml:"xmlns:xsi,attr"`
	Xsd     string   `xml:"xmlns:xsd,attr"`
	Soap12  string   `xml:"xmlns:soap12,attr"`
	Body    struct {
		NfeDadosMsg struct {
			Xmlns string `xml:"xmlns,attr"`
			Value []byte `xml:",innerxml"`
		} `xml:"nfeDadosMsg"`
	} `xml:"soap12:Body"`
}

Envelope representa o XML do envelope SOAP que será usado na comunicação.

type EnvelopeConsCadMT

type EnvelopeConsCadMT struct {
	XMLName xml.Name `xml:"soap12:Envelope"`
	Xsi     string   `xml:"xmlns:xsi,attr"`
	Xsd     string   `xml:"xmlns:xsd,attr"`
	Soap12  string   `xml:"xmlns:soap12,attr"`
	Body    struct {
		ConsultaCadastro struct {
			Xmlns       string `xml:"xmlns,attr"`
			NfeDadosMsg struct {
				Value []byte `xml:",innerxml"`
			} `xml:"nfeDadosMsg"`
		} `xml:"consultaCadastro"`
	} `xml:"soap12:Body"`
}

EnvelopeConsCadMT representa o XML do envelope SOAP que será usado na comunicação com a consulta de cadastro do MT.

type EnvelopeResult

type EnvelopeResult struct {
	XMLName xml.Name `xml:"Envelope"`
	Body    struct {
		NfeResultMsg struct {
			Value []byte `xml:",innerxml"`
		} `xml:"nfeResultMsg"`
	} `xml:"Body"`
}

EnvelopeResult representa o XML do envelope SOAP de retorno da requisição.

type EnvelopeResultConsCadMG

type EnvelopeResultConsCadMG struct {
	XMLName xml.Name `xml:"Envelope"`
	Body    struct {
		ConsultaCadastro4Result struct {
			Value []byte `xml:",innerxml"`
		} `xml:"consultaCadastro4Result"`
	} `xml:"Body"`
}

EnvelopeResultConsCadMG representa o XML do envelope SOAP de retorno da requisição ConsCad em MG, que é diferente de todas as outras respostas do sistema NFe.

type EnvelopeResultConsCadMT

type EnvelopeResultConsCadMT struct {
	XMLName xml.Name `xml:"Envelope"`
	Body    struct {
		NfeResultMsg struct {
			ConsultaCadastroResult struct {
				Value []byte `xml:",innerxml"`
			} `xml:"consultaCadastroResult"`
		} `xml:"nfeResultMsg"`
	} `xml:"Body"`
}

EnvelopeResultConsCadMT representa o XML do envelope SOAP de retorno da requisição ConsCad em MT, que é diferente de todas as outras respostas do sistema NFe.

type EventoNFe

type EventoNFe struct {
	Versao    string `json:"-" xml:"versao,attr"`
	InfEvento struct {
		Versao     string    `json:"versao,omitempty" xml:"versao,attr,omitempty"`
		ID         string    `json:"Id" xml:"Id,attr"`
		COrgao     int       `json:"cOrgao" xml:"cOrgao"`
		TpAmb      TAmb      `json:"tpAmb" xml:"tpAmb"`
		CNPJ       string    `json:"CNPJ,omitempty" xml:"CNPJ,omitempty"`
		CPF        string    `json:"CPF,omitempty" xml:"CPF,omitempty"`
		ChNFe      string    `json:"chNFe" xml:"chNFe"`
		DhEvento   time.Time `json:"dhEvento" xml:"dhEvento"`
		TpEvento   string    `json:"tpEvento" xml:"tpEvento"`
		NSeqEvento int       `json:"nSeqEvento" xml:"nSeqEvento"`
		VerEvento  string    `json:"verEvento" xml:"verEvento"`
		DetEvento  struct {
			Versao string `xml:"versao,attr"`
			Value  []byte `xml:",innerxml"`
		} `json:"-" xml:"detEvento"`
	} `json:"infEvento" xml:"infEvento"`
	Signature *xmlsig.Signature `json:"-" xml:"Signature"`
}

EventoNFe representa o XML de registro de um evento junto à Sefaz.

type InfCad

type InfCad struct {
	IE         string     `json:"IE" xml:"IE"`
	CNPJ       string     `json:"CNPJ,omitempty" xml:"CNPJ,omitempty"`
	CPF        string     `json:"CPF,omitempty" xml:"CPF,omitempty"`
	UF         string     `json:"UF" xml:"UF"`
	CSit       int        `json:"cSit" xml:"cSit"`
	IndCredNFe int        `json:"indCredNFe" xml:"indCredNFe"`
	IndCredCTe int        `json:"indCredCTe" xml:"indCredCTe"`
	XNome      string     `json:"xNome" xml:"xNome"`
	XFant      string     `json:"xFant,omitempty" xml:"xFant,omitempty"`
	XRegApur   string     `json:"xRegApur,omitempty" xml:"xRegApur,omitempty"`
	CNAE       string     `json:"CNAE,omitempty" xml:"CNAE,omitempty"`
	DIniAtiv   civil.Date `json:"dIniAtiv,omitempty" xml:"dIniAtiv,omitempty"`
	DUltSit    civil.Date `json:"dUltSit,omitempty" xml:"dUltSit,omitempty"`
	DBaixa     civil.Date `json:"dBaixa,omitempty" xml:"dBaixa,omitempty"`
	IEUnica    string     `json:"IEUnica,omitempty" xml:"IEUnica,omitempty"`
	IEAtual    string     `json:"IEAtual,omitempty" xml:"IEAtual,omitempty"`
	Ender      *struct {
		XLgr    string `json:"xLgr,omitempty" xml:"xLgr,omitempty"`
		Nro     string `json:"nro,omitempty" xml:"nro,omitempty"`
		XCpl    string `json:"xCpl,omitempty" xml:"xCpl,omitempty"`
		XBairro string `json:"xBairro,omitempty" xml:"xBairro,omitempty"`
		CMun    string `json:"cMun,omitempty" xml:"cMun,omitempty"`
		XMun    string `json:"xMun,omitempty" xml:"xMun,omitempty"`
		CEP     string `json:"CEP,omitempty" xml:"CEP,omitempty"`
	} `json:"ender,omitempty" xml:"ender,omitempty"`
}

type ProcEventoNFe

type ProcEventoNFe struct {
	XMLName   xml.Name      `json:"-" xml:"procEventoNFe"`
	Versao    string        `json:"versao" xml:"versao,attr"`
	Evento    *EventoNFe    `json:"evento" xml:"http://www.portalfiscal.inf.br/nfe evento"`
	RetEvento *RetEventoNFe `json:"retEvento" xml:"retEvento"`
}

ProcEventoNFe representa o XML que contem tanto a requisição (EventoNFe) quanto o retorno da Sefaz (RetEventoNFe), e poderá vir dentro de consultas de status (ConsSitNFe).

type ProtNFe

type ProtNFe struct {
	Versao  string `json:"-" xml:"versao,attr"`
	InfProt struct {
		TpAmb    TAmb      `json:"tpAmb" xml:"tpAmb"`
		VerAplic string    `json:"verAplic" xml:"verAplic"`
		ChNFe    string    `json:"chNFe" xml:"chNFe"`
		DhRecbto time.Time `json:"dhRecbto" xml:"dhRecbto"`
		NProt    string    `json:"nProt" xml:"nProt"`
		DigVal   string    `json:"digVal" xml:"digVal"`
		CStat    int       `json:"cStat" xml:"cStat"`
		XMotivo  string    `json:"xMotivo" xml:"xMotivo"`
	} `json:"infProt" xml:"infProt"`
}

ProtNFe representa o XML do protocolo de autorização da NFe, encontrado em RetConsSitNFe.

type RetCancNFe

type RetCancNFe struct {
	Versao  string `json:"-" xml:"versao,attr"`
	InfCanc struct {
		TpAmb    TAmb      `json:"tpAmb" xml:"tpAmb"`
		VerAplic string    `json:"verAplic" xml:"verAplic"`
		CStat    int       `json:"cStat" xml:"cStat"`
		XMotivo  string    `json:"xMotivo" xml:"xMotivo"`
		CUF      int       `json:"cUF" xml:"cUF"`
		ChNFe    string    `json:"chNFe" xml:"chNFe"`
		DhRecbto time.Time `json:"dhRecbto" xml:"dhRecbto"`
		NProt    string    `json:"nProt" xml:"nProt"`
	} `json:"infCanc" xml:"infCanc"`
}

RetCancNFe representa o XML de retorno da Sefaz do cancelamento da NFe. Não é mais usado, tendo sido substituído pelos eventos (EventoNFe), mas ainda pode ser retornado em uma consulta de protocolo (ConsSitNFe) de notas antigas.

type RetConsCad

type RetConsCad struct {
	XMLName xml.Name `json:"-" xml:"http://www.portalfiscal.inf.br/nfe retConsCad"`
	Versao  string   `json:"versao" xml:"versao,attr"`
	InfCons struct {
		VerAplic string    `json:"verAplic" xml:"verAplic"`
		CStat    int       `json:"cStat" xml:"cStat"`
		XMotivo  string    `json:"xMotivo" xml:"xMotivo"`
		UF       string    `json:"UF" xml:"UF"`
		IE       string    `json:"IE,omitempty" xml:"IE,omitempty"`
		CNPJ     string    `json:"CNPJ,omitempty" xml:"CNPJ,omitempty"`
		CPF      string    `json:"CPF,omitempty" xml:"CPF,omitempty"`
		DhCons   time.Time `json:"dhCons" xml:"dhCons"`
		CUF      int       `json:"cUF" xml:"cUF"`
		InfCad   *[]InfCad `json:"infCad,omitempty" xml:"infCad,omitempty"`
	} `json:"infCons" xml:"infCons"`
}

RetConsCad representa o XML de retorno da Sefaz à consulta do cadastro do contribuinte

func ConsultaCad

func ConsultaCad(ie string, cnpj string, cpf string, cUF int, tpAmb TAmb, client *http.Client, optReq ...func(req *http.Request)) (RetConsCad, []byte, error)

Função auxiliar para executar a ConsCad.Consulta()

type RetConsSitNFe

type RetConsSitNFe struct {
	XMLName       xml.Name         `json:"-" xml:"http://www.portalfiscal.inf.br/nfe retConsSitNFe"`
	Versao        string           `json:"versao" xml:"versao,attr"`
	TpAmb         TAmb             `json:"tpAmb" xml:"tpAmb"`
	VerAplic      string           `json:"verAplic" xml:"verAplic"`
	CStat         int              `json:"cStat" xml:"cStat"`
	XMotivo       string           `json:"xMotivo" xml:"xMotivo"`
	CUF           int              `json:"cUF" xml:"cUF"`
	DhRecbto      time.Time        `json:"dhRecbto" xml:"dhRecbto"`
	ChNFe         string           `json:"chNFe" xml:"chNFe"`
	ProtNFe       *ProtNFe         `json:"protNFe" xml:"protNFe"`
	RetCancNFe    *RetCancNFe      `json:"retCancNFe,omitempty" xml:"retCancNFe,omitempty"`
	ProcEventoNFe *[]ProcEventoNFe `json:"procEventoNFe,omitempty" xml:"procEventoNFe,omitempty"`
}

RetConsSitNFe representa o XML de retorno da Sefaz à consulta da NFe

func ConsultaNFe

func ConsultaNFe(dfechave string, tpAmb TAmb, client *http.Client, optReq ...func(req *http.Request)) (RetConsSitNFe, []byte, error)

Função auxiliar para executar a ConsSitNFe.Consulta()

Example

Esse exemplo mostra todos os passos para se fazer uma consulta de protocolo na Sefaz. Desde a criação de um novo http.Client (através da NewHTTPClient) até a personalização do User-Agent por meio do parâmetro optReq.

client, err := nfe.NewHTTPClient("~/client.pem", "~/key.pem")
if err != nil {
	fmt.Printf("Erro na criação do HTTP Client e leitura do certificado. Detalhes: %v\n", err)
	return
}
ret, xmlfile, err := nfe.ConsultaNFe("12345678901234567890123456789012345678901234", nfe.Homologacao, client, func(req *http.Request) { req.Header.Set("User-Agent", "MyUA/1.0") })
if err != nil {
	fmt.Printf("Erro na consulta da chave de acesso. Detalhes: %v\n", err)
	return
}

fmt.Printf("Objeto RetConsSitNFe: %v\n", ret)
fmt.Printf("Arquivo XML: %v\n", string(xmlfile))

jsonfile, err := json.Marshal(ret)
if err != nil {
	fmt.Printf("Erro na serialização do json. Detalhes: %v\n", err)
	return
}
fmt.Printf("Arquivo JSON: %v\n", string(jsonfile))
Output:

type RetConsStatServ

type RetConsStatServ struct {
	XMLName   xml.Name  `json:"-" xml:"http://www.portalfiscal.inf.br/nfe retConsStatServ"`
	Versao    string    `json:"versao" xml:"versao,attr"`
	TpAmb     TAmb      `json:"tpAmb" xml:"tpAmb"`
	VerAplic  string    `json:"verAplic" xml:"verAplic"`
	CStat     int       `json:"cStat" xml:"cStat"`
	XMotivo   string    `json:"xMotivo" xml:"xMotivo"`
	CUF       int       `json:"cUF" xml:"cUF"`
	DhRecbto  time.Time `json:"dhRecbto" xml:"dhRecbto"`
	TMed      int       `json:"tMed" xml:"tMed"`
	DhRetorno time.Time `json:"dhRetorno,omitempty" xml:"dhRetorno,omitempty"`
	XObs      string    `json:"xObs,omitempty" xml:"xObs,omitempty"`
}

RetConsStatServ representa o XML de retorno da Sefaz à consulta do status do serviço

func ConsultaStatServ

func ConsultaStatServ(cUF int, tpAmb TAmb, client *http.Client, optReq ...func(req *http.Request)) (RetConsStatServ, []byte, error)

Função auxiliar para executar a ConsStatServ.Consulta()

Example

Esse exemplo mostra todos os passos para se fazer uma consulta de status do serviço na Sefaz. Desde a criação de um novo http.Client (através da NewHTTPClient) até a personalização do User-Agent por meio do parâmetro optReq.

client, err := nfe.NewHTTPClient("~/client.pem", "~/key.pem")
if err != nil {
	fmt.Printf("Erro na criação do HTTP Client e leitura do certificado. Detalhes: %v\n", err)
	return
}
ret, xmlfile, err := nfe.ConsultaStatServ(35, nfe.Homologacao, client, func(req *http.Request) { req.Header.Set("User-Agent", "MyUA/1.0") })
if err != nil {
	fmt.Printf("Erro na consulta da chave de acesso. Detalhes: %v\n", err)
	return
}

fmt.Printf("Objeto RetConsStatServ: %v\n", ret)
fmt.Printf("Arquivo XML: %v\n", string(xmlfile))

jsonfile, err := json.Marshal(ret)
if err != nil {
	fmt.Printf("Erro na serialização do json. Detalhes: %v\n", err)
	return
}
fmt.Printf("Arquivo JSON: %v\n", string(jsonfile))
Output:

type RetEventoNFe

type RetEventoNFe struct {
	Versao    string `json:"versao" xml:"versao,attr"`
	InfEvento struct {
		ID          string    `json:"Id" xml:"Id,attr,omitempty"`
		TpAmb       TAmb      `json:"tpAmb" xml:"tpAmb"`
		VerAplic    string    `json:"verAplic" xml:"verAplic"`
		COrgao      int       `json:"cOrgao" xml:"cOrgao"`
		CStat       int       `json:"cStat" xml:"cStat"`
		XMotivo     string    `json:"xMotivo" xml:"xMotivo"`
		ChNFe       string    `json:"chNFe" xml:"chNFe"`
		TpEvento    string    `json:"tpEvento" xml:"tpEvento"`
		XEvento     string    `json:"xEvento" xml:"xEvento"`
		NSeqEvento  int       `json:"nSeqEvento" xml:"nSeqEvento"`
		CNPJDest    string    `json:"CNPJDest,omitempty" xml:"CNPJDest,omitempty"`
		CPFDest     string    `json:"CPFDest,omitempty" xml:"CPFDest,omitempty"`
		EmailDest   string    `json:"emailDest,omitempty" xml:"emailDest,omitempty"`
		DhRegEvento time.Time `json:"dhRegEvento" xml:"dhRegEvento"`
		NProt       string    `json:"nProt" xml:"nProt"`
	} `json:"infEvento" xml:"infEvento"`
}

RetEventoNFe representa o XML de retorno da Sefaz à solicitação de registro de evento. Normalmente será utilizado encapsulado em um ProcEventoNFe.

type TAmb

type TAmb int

TAmb representa o ambiente (tpAmb) que será usado na comunicação.

const (
	Producao    TAmb = 1
	Homologacao TAmb = 2
)

type TWebService

type TWebService int

TWebService representa o serviço que será consultado. Usado pela função getURLWS para obter a URL da requisição.

const (
	ConsultaStatus TWebService = iota
	ConsultaProtocolo
	ConsultaCadastro
	Autorizacao
	RetAutorizacao
	Evento
	Inutilizacao
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL