Last active
February 20, 2025 16:40
-
-
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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