Skip to content

Commit

Permalink
Merge pull request #295 from leogregianin/fix/nota-importacao
Browse files Browse the repository at this point in the history
Ajusta campos para emissão de nota de importação
  • Loading branch information
juniortada authored Oct 18, 2023
2 parents fbc5b71 + 6e5221a commit a8f2d54
Show file tree
Hide file tree
Showing 9 changed files with 290 additions and 13 deletions.
1 change: 1 addition & 0 deletions pynfe/data/MunIBGE/MunIBGE-UF99.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
9999999 Exterior
249 changes: 249 additions & 0 deletions pynfe/data/MunIBGE/PaisIBGE.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,249 @@
132 AFEGANISTAO
175 ALBANIA, REPUBLICA DA
1504 GUERNSEY, ILHA DO CANAL (INCLUI ALDERNEY E SARK)
230 ALEMANHA
310 BURKINA FASO
370 ANDORRA
400 ANGOLA
418 ANGUILLA
434 ANTIGUA E BARBUDA
477 ANTILHAS HOLANDESAS
531 ARABIA SAUDITA
590 ARGELIA
639 ARGENTINA
647 ARMENIA, REPUBLICA DA
655 ARUBA
698 AUSTRALIA
728 AUSTRIA
736 AZERBAIJAO, REPUBLICA DO
779 BAHAMAS, ILHAS
809 BAHREIN, ILHAS
817 BANGLADESH
833 BARBADOS
850 BELARUS, REPUBLICA DA
876 BELGICA
884 BELIZE
906 BERMUDAS
930 MIANMAR (BIRMANIA)
973 BOLIVIA
981 BOSNIA-HERZEGOVINA (REPUBLICA DA)
9900 BONAIRE, SAINT EUSTATIUS E SABA
1015 BOTSUANA
1058 BRASIL
1082 BRUNEI
1112 BULGARIA, REPUBLICA DA
1155 BURUNDI
1198 BUTAO
1279 CABO VERDE, REPUBLICA DE
1376 CAYMAN, ILHAS
1414 CAMBOJA
1457 CAMAROES
1490 CANADA
1508 JERSEY, ILHA DO CANAL
1511 CANARIAS, ILHAS
1538 CAZAQUISTAO, REPUBLICA DO
1546 CATAR
1589 CHILE
1600 CHINA, REPUBLICA POPULAR
1619 FORMOSA (TAIWAN)
1635 CHIPRE
1651 COCOS(KEELING),ILHAS
1694 COLOMBIA
1732 COMORES, ILHAS
1775 CONGO
1830 COOK, ILHAS
1872 COREIA, REP.POP.DEMOCRATICA
1902 COREIA, REPUBLICA DA
1937 COSTA DO MARFIM
1953 CROACIA (REPUBLICA DA)
1961 COSTA RICA
1988 COVEITE
1996 CUBA
2003 CURAÇAO
2291 BENIN
2321 DINAMARCA
2356 DOMINICA,ILHA
2399 EQUADOR
2402 EGITO
2437 ERITREIA
2445 EMIRADOS ARABES UNIDOS
2453 ESPANHA
2461 ESLOVENIA, REPUBLICA DA
2470 ESLOVACA, REPUBLICA
2496 ESTADOS UNIDOS
2518 ESTONIA, REPUBLICA DA
2534 ETIOPIA
2550 FALKLAND (ILHAS MALVINAS)
2593 FEROE, ILHAS
2674 FILIPINAS
2712 FINLANDIA
2755 FRANCA
2810 GABAO
2852 GAMBIA
2895 GANA
2917 GEORGIA, REPUBLICA DA
2933 GIBRALTAR
2976 GRANADA
3018 GRECIA
3050 GROENLANDIA
3093 GUADALUPE
3131 GUAM
3174 GUATEMALA
3255 GUIANA FRANCESA
3298 GUINE
3310 GUINE-EQUATORIAL
3344 GUINE-BISSAU
3379 GUIANA
3417 HAITI
3450 HONDURAS
3514 HONG KONG
3557 HUNGRIA, REPUBLICA DA
3573 IEMEN
3595 MAN, ILHA DE
3611 INDIA
3654 INDONESIA
3697 IRAQUE
3727 IRA, REPUBLICA ISLAMICA DO
3751 IRLANDA
3794 ISLANDIA
3832 ISRAEL
3867 ITALIA
3913 JAMAICA
3964 JOHNSTON, ILHAS
3999 JAPAO
4030 JORDANIA
4111 KIRIBATI
4200 LAOS, REP.POP.DEMOCR.DO
4235 LEBUAN,ILHAS
4260 LESOTO
4278 LETONIA, REPUBLICA DA
4316 LIBANO
4340 LIBERIA
4383 LIBIA
4405 LIECHTENSTEIN
4421 LITUANIA, REPUBLICA DA
4456 LUXEMBURGO
4472 MACAU
4499 MACEDONIA, ANT.REP.IUGOSLAVA
4502 MADAGASCAR
4525 MADEIRA, ILHA DA
4553 MALASIA
4588 MALAVI
4618 MALDIVAS
4642 MALI
4677 MALTA
4723 MARIANAS DO NORTE
4740 MARROCOS
4766 MARSHALL,ILHAS
4774 MARTINICA
4855 MAURICIO
4880 MAURITANIA
4885 MAYOTTE (ILHAS FRANCESAS)
4901 MIDWAY, ILHAS
4936 MEXICO
4944 MOLDAVIA, REPUBLICA DA
4952 MONACO
4979 MONGOLIA
4985 MONTENEGRO
4995 MICRONESIA
5010 MONTSERRAT,ILHAS
5053 MOCAMBIQUE
5070 NAMIBIA
5088 NAURU
5118 CHRISTMAS,ILHA (NAVIDAD)
5177 NEPAL
5215 NICARAGUA
5258 NIGER
5282 NIGERIA
5312 NIUE,ILHA
5355 NORFOLK,ILHA
5380 NORUEGA
5428 NOVA CALEDONIA
5452 PAPUA NOVA GUINE
5487 NOVA ZELANDIA
5517 VANUATU
5568 OMA
5665 PACIFICO,ILHAS DO (POSSESSAO DOS EUA)
5738 PAISES BAIXOS (HOLANDA)
5754 PALAU
5762 PAQUISTAO
5780 PALESTINA
5800 PANAMA
5860 PARAGUAI
5894 PERU
5932 PITCAIRN,ILHA
5991 POLINESIA FRANCESA
6033 POLONIA, REPUBLICA DA
6076 PORTUGAL
6114 PORTO RICO
6238 QUENIA
6254 QUIRGUIZ, REPUBLICA
6289 REINO UNIDO
6408 REPUBLICA CENTRO-AFRICANA
6475 REPUBLICA DOMINICANA
6602 REUNIAO, ILHA
6653 ZIMBABUE
6700 ROMENIA
6750 RUANDA
6769 RUSSIA, FEDERACAO DA
6777 SALOMAO, ILHAS
6781 SAINT KITTS E NEVIS
6858 SAARA OCIDENTAL
6874 EL SALVADOR
6904 SAMOA
6912 SAMOA AMERICANA
6955 SAO CRISTOVAO E NEVES,ILHAS
6971 SAN MARINO
6980 SAO MARTINHO, ILHA DE (PARTE FRANCESA)
6998 SAO MARTINHO, ILHA DE (PARTE HOLANDESA)
7005 SAO PEDRO E MIQUELON
7056 SAO VICENTE E GRANADINAS
7102 SANTA HELENA
7153 SANTA LUCIA
7200 SAO TOME E PRINCIPE, ILHAS
7285 SENEGAL
7315 SEYCHELLES
7358 SERRA LEOA
7370 SERVIA
7412 CINGAPURA
7447 SIRIA, REPUBLICA ARABE DA
7480 SOMALIA
7501 SRI LANKA
7544 ESWATINI
7560 AFRICA DO SUL
7595 SUDAO
7600 SUDAO DO SUL
7641 SUECIA
7676 SUICA
7706 SURINAME
7722 TADJIQUISTAO, REPUBLICA DO
7765 TAILANDIA
7803 TANZANIA, REP.UNIDA DA
7820 TERRITORIO BRIT.OC.INDICO
7838 DJIBUTI
7889 CHADE
7919 TCHECA, REPUBLICA
7951 TIMOR LESTE
8001 TOGO
8052 TOQUELAU,ILHAS
8109 TONGA
8150 TRINIDAD E TOBAGO
8206 TUNISIA
8230 TURCAS E CAICOS,ILHAS
8249 TURCOMENISTAO, REPUBLICA DO
8273 TURQUIA
8281 TUVALU
8311 UCRANIA
8338 UGANDA
8451 URUGUAI
8478 UZBEQUISTAO, REPUBLICA DO
8486 VATICANO, EST.DA CIDADE DO
8508 VENEZUELA
8583 VIETNA
8630 VIRGENS,ILHAS (BRITANICAS)
8664 VIRGENS,ILHAS (E.U.A.)
8702 FIJI
8737 WAKE, ILHA
8885 CONGO, REPUBLICA DEMOCRATICA DO
8907 ZAMBIA
8958 ZONA DO CANAL DO PANAMA
3 changes: 1 addition & 2 deletions pynfe/entidades/cliente.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# -*- coding: utf-8 -*-
from .base import Entidade
from pynfe.utils.flags import CODIGO_BRASIL


class Cliente(Entidade):
Expand Down Expand Up @@ -50,7 +49,7 @@ class Cliente(Entidade):
endereco_cep = str()

# - Pais (seleciona de lista)
endereco_pais = CODIGO_BRASIL
endereco_pais = str()

# - UF (obrigatorio)
endereco_uf = str()
Expand Down
4 changes: 2 additions & 2 deletions pynfe/entidades/notafiscal.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

from .base import Entidade
from pynfe import get_version
from pynfe.utils.flags import NF_STATUS, CODIGO_BRASIL, CODIGOS_ESTADOS
from pynfe.utils.flags import NF_STATUS, CODIGOS_ESTADOS

# from pynfe.utils import so_numeros, memoize
from pynfe.utils import so_numeros
Expand Down Expand Up @@ -1064,7 +1064,7 @@ class NotaFiscalEntregaRetirada(Entidade):
endereco_cep = str()

# - Pais (seleciona de lista)
endereco_pais = CODIGO_BRASIL
endereco_pais = str()

# - UF (obrigatorio)
endereco_uf = str()
Expand Down
4 changes: 2 additions & 2 deletions pynfe/processamento/serializacao.py
Original file line number Diff line number Diff line change
Expand Up @@ -1024,7 +1024,7 @@ def _serializar_imposto_ipi(
else:
if (produto_servico.ipi_valor_base_calculo > 0) and\
(produto_servico.ipi_aliquota > 0) and\
(produto_servico.ipi_valor > 0):
(produto_servico.ipi_valor_ipi > 0):
ipi = etree.SubElement(tag_raiz, 'IPI')

# Preenchimento conforme Atos Normativos editados pela Receita Federal
Expand All @@ -1040,7 +1040,7 @@ def _serializar_imposto_ipi(
etree.SubElement(ipi_item, 'pIPI').text = '{:.2f}'.format(
produto_servico.ipi_aliquota or 0)
etree.SubElement(ipi_item, 'vIPI').text = '{:.2f}'.format(
produto_servico.ipi_valor or 0)
produto_servico.ipi_valor_ipi or 0)

def _serializar_imposto_pis(
self, produto_servico, modelo, tag_raiz="imposto", retorna_string=True
Expand Down
21 changes: 18 additions & 3 deletions pynfe/utils/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,14 @@ def so_numeros(texto) -> str:

# @memoize
def obter_pais_por_codigo(codigo):
# TODO
if codigo == "1058":
return "Brasil"
if codigo == '1058' or codigo == '' or codigo is None:
return 'Brasil'

pais = carregar_arquivo_pais(codigo=codigo)
pais = pais.get(codigo)
if not pais:
raise ValueError
return pais


CAMINHO_DATA = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "data")
Expand Down Expand Up @@ -157,6 +162,16 @@ def remover_acentos(txt):
return normalize("NFKD", txt).encode("ASCII", "ignore").decode("ASCII")


def carregar_arquivo_pais(codigo):
caminho_arquivo = os.path.join(CAMINHO_MUNICIPIOS, 'PaisIBGE.txt')

with open(caminho_arquivo, "r", encoding="utf-8-sig") as arquivo:
linhas = arquivo.readlines()

return {linha.split('\t', maxsplit=1)[0].strip(): linha.split('\t', maxsplit=1)[1].strip()
for linha in linhas}


class CustomXMLSigner(XMLSigner):
def __init__(self, method, signature_algorithm, digest_algorithm, c14n_algorithm):
super().__init__(method, signature_algorithm, digest_algorithm, c14n_algorithm)
Expand Down
1 change: 1 addition & 0 deletions pynfe/utils/flags.py
Original file line number Diff line number Diff line change
Expand Up @@ -595,4 +595,5 @@
"GO": "52",
"DF": "53",
"AN": "91",
"EX": "99",
}
6 changes: 3 additions & 3 deletions tests/test_nfe_serializacao_ii_di_ipi.py
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ def preenche_notafiscal_produto_cst00(self):
ipi_codigo_enquadramento='00',
ipi_valor_base_calculo=Decimal('117.00'),
ipi_aliquota=Decimal('10.00'),
ipi_valor=Decimal('11.70'),
ipi_valor_ipi=Decimal('11.70'),
# ii
imposto_importacao_valor_base_calculo=Decimal('117.00'),
imposto_importacao_valor_despesas_aduaneiras=Decimal('0.00'),
Expand Down Expand Up @@ -394,12 +394,12 @@ def total_e_produto_cst00_test(self):
self.assertEqual(vSeg, '0.00')
self.assertEqual(vDesc, '0.00')
self.assertEqual(vII, '0.00')
self.assertEqual(vIPI, '0.00')
self.assertEqual(vIPI, '11.70')
self.assertEqual(vIPIDevol, '10.00')
self.assertEqual(vPIS, '0.76')
self.assertEqual(vCOFINS, '3.51')
self.assertEqual(vOutro, '0.00')
self.assertEqual(vNF, '127.00')
self.assertEqual(vNF, '138.70')
self.assertEqual(vTotTrib, '21.06')

def test_notafiscal_produto_cst00(self):
Expand Down
14 changes: 13 additions & 1 deletion tests/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,20 @@ def test_so_numeros_somente_com_letras(self):
def test_obter_pais_por_codigo_brasil(self):
self.assertEqual(obter_pais_por_codigo("1058"), "Brasil")

def test_obter_pais_por_codigo__informar_vazio_e_retornar_brasil(self):
self.assertEqual(obter_pais_por_codigo(""), "Brasil")

def test_obter_pais_por_codigo__informar_none_e_retornar_brasil(self):
self.assertEqual(obter_pais_por_codigo(None), "Brasil")

def test_obter_pais_por_codigo_paisesbaixos(self):
self.assertEqual(obter_pais_por_codigo("5738"), None)
self.assertEqual(obter_pais_por_codigo("5738"), 'PAISES BAIXOS (HOLANDA)')

def test_obter_pais_por_codigo_reino_unido(self):
self.assertEqual(obter_pais_por_codigo("6289"), 'REINO UNIDO')

def test_obter_pais_por_codigo_ilhas_cayman(self):
self.assertEqual(obter_pais_por_codigo("1376"), 'CAYMAN, ILHAS')

# normalizar_municipio
def test_normalizar_municipio_acento_til_na_letra_a(self):
Expand Down

0 comments on commit a8f2d54

Please sign in to comment.