Skip to content

Commit

Permalink
Warn dos campos deprecados
Browse files Browse the repository at this point in the history
  • Loading branch information
felps-dev committed Mar 19, 2024
1 parent 3cc4fbd commit 7dcdf52
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 1 deletion.
36 changes: 36 additions & 0 deletions pynfe/entidades/base.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,20 @@
# -*- coding: utf-8 -*-

import warnings
from dataclasses import dataclass
from typing import List


@dataclass
class CampoDeprecated(object):
anterior: str
novo: str
motivo: str


class Entidade(object):
_fonte_dados = None
campos_deprecados: List[CampoDeprecated] = []

def __init__(self, **kwargs):
# Codigo para dinamizar a criacao de instancias de entidade,
Expand All @@ -24,6 +36,30 @@ def __str__(self):
def __repr__(self):
return "<%s %s>" % (self.__class__.__name__, str(self))

def __setattr__(self, name, value):
if hasattr(self, name):
# Verifica se o atributo é um campo deprecado
campo_deprecado = next(
(campo for campo in self.campos_deprecados if campo.anterior == name),
None,
)

if campo_deprecado:
if campo_deprecado.novo:
warnings.warn(
f"O campo {campo_deprecado.anterior} foi deprecado e será removido em versões futuras. "
f"Utilize {campo_deprecado.novo} no lugar. Motivo: {campo_deprecado.motivo}",
DeprecationWarning,
)
setattr(self, campo_deprecado.novo, value)
return
else:
raise AttributeError(
f"O campo {campo_deprecado.anterior} foi deprecado e removido."
f"Motivo: {campo_deprecado.motivo}"
)
super(Entidade, self).__setattr__(name, value)


class Lote(object):
pass
17 changes: 16 additions & 1 deletion pynfe/entidades/notafiscal.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from pynfe.utils import so_numeros
from pynfe.utils.flags import CODIGOS_ESTADOS, NF_STATUS

from .base import Entidade
from .base import CampoDeprecated, Entidade


class NotaFiscal(Entidade):
Expand Down Expand Up @@ -548,6 +548,21 @@ def identificador_unico(self):


class NotaFiscalReferenciada(Entidade):

# Campos depreciados
campos_deprecados = [
CampoDeprecated(
"fcp_percentual",
"fcp_aliquota",
"Consistencia de nomes"
),
CampoDeprecated(
"fcp_st_percentual",
"fcp_st_aliquota",
"Consistencia de nomes"
),
]

# - Tipo (seleciona de lista) - NF_REFERENCIADA_TIPOS
tipo = str()

Expand Down

0 comments on commit 7dcdf52

Please sign in to comment.