Correção arredondamento dasalíquotas e valor taxa
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -64,6 +64,41 @@ async def process_single_file(caminho_pdf_temp: str, nome_original: str, cliente
|
||||
dados = extrair_dados_pdf(caminho_pdf_temp)
|
||||
dados['arquivo_pdf'] = nome_original
|
||||
|
||||
from decimal import Decimal, ROUND_HALF_UP
|
||||
|
||||
_Q6 = Decimal("0.000000")
|
||||
|
||||
def _to_percent_6(x):
|
||||
"""Converte para percent (se vier em fração) e quantiza em 6 casas."""
|
||||
if x is None:
|
||||
return None
|
||||
try:
|
||||
v = Decimal(str(x))
|
||||
except Exception:
|
||||
return None
|
||||
# se vier em fração (ex.: 0.012872), vira 1.2872… (percentual)
|
||||
if Decimal("0") < v <= Decimal("1"):
|
||||
v = v * Decimal("100")
|
||||
return v.quantize(_Q6, rounding=ROUND_HALF_UP)
|
||||
|
||||
def _to_dec6(x):
|
||||
"""Apenas 6 casas, sem % (use para tarifa, bases, etc.)."""
|
||||
if x is None:
|
||||
return None
|
||||
try:
|
||||
v = Decimal(str(x))
|
||||
except Exception:
|
||||
return None
|
||||
return v.quantize(_Q6, rounding=ROUND_HALF_UP)
|
||||
|
||||
dados['icms_aliq'] = _to_percent_6(dados.get('icms_aliq'))
|
||||
dados['pis_aliq'] = _to_percent_6(dados.get('pis_aliq'))
|
||||
dados['cofins_aliq'] = _to_percent_6(dados.get('cofins_aliq'))
|
||||
|
||||
# tarifa NÃO é percentual: apenas 6 casas
|
||||
dados['tarifa'] = _to_dec6(dados.get('tarifa'))
|
||||
|
||||
|
||||
# Verifica se a fatura já existe
|
||||
existente_result = await session.execute(
|
||||
select(Fatura).filter_by(
|
||||
|
||||
Reference in New Issue
Block a user