Commit Inicial

This commit is contained in:
Ricardo 2026-08-06 10:30:13 -03:00
commit 0f47953453
24 changed files with 1366 additions and 0 deletions

View file

@ -0,0 +1,77 @@
from datetime import datetime
from pydantic import BaseModel, Field
class Parcela(BaseModel):
valor: float
vencimento: datetime | None = None
class ComprasProperties(BaseModel):
protocolo: str
pedido_linx: str = Field(alias="PEDIDO_LINX")
fornecedor: str = Field(alias="Fornecedores")
tipo_compra: str = Field(alias="Tipo de Compra")
cnpj: str = Field(alias="CNPJ")
nf_entrada: str = Field(alias="NUMERO NF ENTRADA")
num_parcelas: int | None = Field(default=None, alias="num. parcelas")
parcela1: float | None = Field(default=None, alias="parcela1")
parcela2: float | None = Field(default=None, alias="parcela2")
parcela3: float | None = Field(default=None, alias="parcela3")
parcela4: float | None = Field(default=None, alias="parcela4")
parcela5: float | None = Field(default=None, alias="parcela5")
parcela6: float | None = Field(default=None, alias="parcela6")
parcela7: float | None = Field(default=None, alias="parcela7")
parcela8: float | None = Field(default=None, alias="parcela8")
parcela9: float | None = Field(default=None, alias="parcela9")
parcela10: float | None = Field(default=None, alias="parcela10")
parcela11: float | None = Field(default=None, alias="parcela11")
parcela12: float | None = Field(default=None, alias="parcela12")
vencimento1: datetime | None = Field(default=None, alias="vencimento parcela1")
vencimento2: datetime | None = Field(default=None, alias="vencimento parcela2")
vencimento3: datetime | None = Field(default=None, alias="vencimento parcela3")
vencimento4: datetime | None = Field(default=None, alias="vencimento parcela4")
vencimento5: datetime | None = Field(default=None, alias="vencimento parcela5")
vencimento6: datetime | None = Field(default=None, alias="vencimento parcela6")
vencimento7: datetime | None = Field(default=None, alias="vencimento parcela7")
vencimento8: datetime | None = Field(default=None, alias="vencimento parcela8")
vencimento9: datetime | None = Field(default=None, alias="vencimento parcela9")
vencimento10: datetime | None = Field(default=None, alias="vencimento parcela10")
vencimento11: datetime | None = Field(default=None, alias="vencimento parcela11")
vencimento12: datetime | None = Field(default=None, alias="vencimento parcela12")
@property
def parcelas(self) -> dict[int, Parcela]:
"""Junta parcelaN + vencimento parcelaN, ignorando os slots vazios."""
parcelas = {}
for n in range(1, 13):
valor = getattr(self, f"parcela{n}")
if valor is None:
continue
parcelas[n] = Parcela(
valor=valor,
vencimento=getattr(self, f"vencimento{n}"),
)
return parcelas
@property
def total_parcelas(self) -> float:
return round(sum(p.valor for p in self.parcelas.values()), 2)
class DadosCompras(BaseModel):
id: str
properties: ComprasProperties
class PayloadCompras(BaseModel):
cnpj: str
pedido_linx: str
fornecedor: str
tipo: str
nf_entrada: str
aprovador: str
valor_total: float
parcelas: dict[int, Parcela]