Skip to content

Instantly share code, notes, and snippets.

@fonini
Last active February 20, 2025 16:40
Show Gist options
  • Save fonini/af6f38f26b3b18914707f4596290628c to your computer and use it in GitHub Desktop.
Save fonini/af6f38f26b3b18914707f4596290628c to your computer and use it in GitHub Desktop.
Função em bash que retorna os componentes de uma chave de DFe. Suporta todos os documentos fiscais eletrônicos brasileiros.
# Uso: parse_dfe_key 00000000000000000000000000000000000000000000
function parse_dfe_key() {
local chave="$1"
if [[ ! $chave =~ ^[0-9]{44}$ ]]; then
echo "Erro: A chave de acesso deve ter exatamente 44 dígitos numéricos."
return 1
fi
local cUF="${chave:0:2}"
local AAMM="${chave:2:4}"
local CNPJ="${chave:6:14}"
local mod="${chave:20:2}"
local serie="$((10#${chave:22:3}))"
local numDF="$((10#${chave:25:9}))"
local tpEmis="${chave:34:1}"
local cNF="${chave:35:8}"
local cDV="${chave:43:1}"
local doc_name="Desconhecido"
case $mod in
55) doc_name="NF-e" ;;
57) doc_name="CT-e" ;;
58) doc_name="MDF-e" ;;
59) doc_name="CF-e" ;;
63) doc_name="BP-e" ;;
64) doc_name="GTV-e" ;;
65) doc_name="NFC-e" ;;
66) doc_name="NF3-e" ;;
67) doc_name="CT-e OS" ;;
esac
echo "------------------------------"
echo " Chave de Acesso - $doc_name "
echo "------------------------------"
echo "Código da UF: $cUF"
echo "Ano e Mês: $AAMM"
echo "CNPJ do Emitente: $CNPJ"
echo "Modelo: $mod - $doc_name"
printf "Série: %-3s\n" "$serie"
printf "Número: %-9s\n" "$numDF"
echo "Forma de emissão: $tpEmis"
echo "Código Numérico: $cNF"
echo "Dígito Verif.: $cDV"
echo "------------------------------"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment