feat(): Ajustes nos detalhes do pedido de Balcão
This commit is contained in:
parent
25d904b0bb
commit
9b784f8d1a
10 changed files with 79 additions and 89 deletions
88
actions/env/env_config_loader.py
vendored
88
actions/env/env_config_loader.py
vendored
|
|
@ -1,76 +1,36 @@
|
||||||
|
from dotenv import dotenv_values, load_dotenv
|
||||||
import os
|
import os
|
||||||
import json
|
|
||||||
from types import SimpleNamespace
|
|
||||||
from typing import Any, Dict
|
|
||||||
|
|
||||||
|
|
||||||
class EnvConfigLoader:
|
class EnvConfigLoader:
|
||||||
"""
|
"""
|
||||||
Carrega variáveis de ambiente com um prefixo comum
|
Classe para carregar todas as variáveis de ambiente (.env)
|
||||||
e permite acessá-las diretamente via ponto, sem agrupar subníveis.
|
e permitir acesso via atributo (settings.VAR).
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, prefix: str):
|
def __init__(self, env_file: str = ".env"):
|
||||||
self.prefix = prefix.upper().strip("_")
|
|
||||||
self._data = self._load()
|
|
||||||
# transforma o dicionário em objeto (sem agrupar)
|
|
||||||
self._object = SimpleNamespace(**self._data)
|
|
||||||
|
|
||||||
# -------------------------------
|
# Garante que o .env será carregado no ambiente do sistema
|
||||||
# Conversão de valores automáticos
|
load_dotenv(env_file)
|
||||||
# -------------------------------
|
|
||||||
def _convert_value(self, value: str) -> Any:
|
|
||||||
value = value.strip()
|
|
||||||
|
|
||||||
# Boolean
|
# Lê todas as variáveis (do arquivo + sistema)
|
||||||
if value.lower() in ["true", "false"]:
|
self._values = {
|
||||||
return value.lower() == "true"
|
**dotenv_values(env_file), # Conteúdo do .env
|
||||||
|
**os.environ, # Variáveis já existentes no ambiente
|
||||||
|
}
|
||||||
|
|
||||||
# Integer
|
def __getattr__(self, name: str):
|
||||||
if value.isdigit():
|
"""Permite acessar como settings.VAR"""
|
||||||
return int(value)
|
# Normaliza o nome para maiúsculo
|
||||||
|
key = name.upper()
|
||||||
|
if key in self._values:
|
||||||
|
return self._values[key]
|
||||||
|
raise AttributeError(f"A variável '{name}' não existe no .env")
|
||||||
|
|
||||||
# Float
|
def __repr__(self):
|
||||||
try:
|
"""Exibe todas as variáveis carregadas"""
|
||||||
return float(value)
|
return f"<Settings {self._values}>"
|
||||||
except ValueError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
# JSON (dicts, arrays)
|
def all(self) -> dict:
|
||||||
try:
|
"""Retorna todas as variáveis como dicionário"""
|
||||||
return json.loads(value)
|
return dict(self._values)
|
||||||
except Exception:
|
|
||||||
pass
|
|
||||||
|
|
||||||
return value
|
|
||||||
|
|
||||||
# -------------------------------
|
|
||||||
# Carrega variáveis do ambiente
|
|
||||||
# -------------------------------
|
|
||||||
def _load(self) -> Dict[str, Any]:
|
|
||||||
prefix_match = f"{self.prefix}_"
|
|
||||||
data = {}
|
|
||||||
|
|
||||||
for key, value in os.environ.items():
|
|
||||||
if key.startswith(prefix_match):
|
|
||||||
subkey = key[len(prefix_match) :].lower() # tudo em minúsculo
|
|
||||||
data[subkey] = self._convert_value(value)
|
|
||||||
|
|
||||||
return data
|
|
||||||
|
|
||||||
# -------------------------------
|
|
||||||
# Permite acesso direto via ponto
|
|
||||||
# -------------------------------
|
|
||||||
def __getattr__(self, name: str) -> Any:
|
|
||||||
if hasattr(self._object, name):
|
|
||||||
return getattr(self._object, name)
|
|
||||||
raise AttributeError(f"'{self.prefix}' não contém '{name}'")
|
|
||||||
|
|
||||||
# -------------------------------
|
|
||||||
# Acesso via dicionário
|
|
||||||
# -------------------------------
|
|
||||||
def __getitem__(self, key: str) -> Any:
|
|
||||||
return getattr(self._object, key.lower(), None)
|
|
||||||
|
|
||||||
def __repr__(self) -> str:
|
|
||||||
return json.dumps(self._data, indent=2, ensure_ascii=False)
|
|
||||||
|
|
|
||||||
|
|
@ -11,27 +11,27 @@ class Firebird:
|
||||||
def get_engine(cls) -> Engine:
|
def get_engine(cls) -> Engine:
|
||||||
|
|
||||||
# Instancia o loader com o prefixo correto
|
# Instancia o loader com o prefixo correto
|
||||||
env_database = EnvConfigLoader(prefix="ORIUS_API_FDB")
|
env_database = EnvConfigLoader(".env")
|
||||||
|
|
||||||
# Cria a engine apenas uma vez
|
# Cria a engine apenas uma vez
|
||||||
if cls._engine is None:
|
if cls._engine is None:
|
||||||
|
|
||||||
# DSN para o SQLAlchemy usando firebird-driver
|
# DSN para o SQLAlchemy usando firebird-driver
|
||||||
dsn = (
|
dsn = (
|
||||||
f"firebird+firebird://{env_database.user}:"
|
f"firebird+firebird://{env_database.ORIUS_API_FDB_USER}:"
|
||||||
f"{env_database.password}@"
|
f"{env_database.ORIUS_API_FDB_PASSWORD}@"
|
||||||
f"{env_database.host}:"
|
f"{env_database.ORIUS_API_FDB_HOST}:"
|
||||||
f"{env_database.port}/"
|
f"{env_database.ORIUS_API_FDB_PORT}/"
|
||||||
f"{env_database.name}"
|
f"{env_database.ORIUS_API_FDB_NAME}"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Criação da engine SQLAlchemy
|
# Criação da engine SQLAlchemy
|
||||||
cls._engine = create_engine(
|
cls._engine = create_engine(
|
||||||
dsn,
|
dsn,
|
||||||
connect_args={"charset": env_database.charset},
|
connect_args={"charset": env_database.ORIUS_API_FDB_CHARSET},
|
||||||
pool_pre_ping=bool(env_database.pool_pre_ping),
|
pool_pre_ping=bool(env_database.ORIUS_API_FDB_POOL_PRE_PING),
|
||||||
pool_size=env_database.pool_size,
|
pool_size=int(env_database.ORIUS_API_FDB_POOL_SIZE),
|
||||||
max_overflow=env_database.pool_max_overflow,
|
max_overflow=int(env_database.ORIUS_API_FDB_POOL_MAX_OVERFLOW),
|
||||||
)
|
)
|
||||||
|
|
||||||
return cls._engine
|
return cls._engine
|
||||||
|
|
|
||||||
|
|
@ -350,14 +350,14 @@ api_router.include_router(
|
||||||
# Inclui as rotas de g_emolumento periodo
|
# Inclui as rotas de g_emolumento periodo
|
||||||
api_router.include_router(
|
api_router.include_router(
|
||||||
t_servico_pedido_endpoint.router,
|
t_servico_pedido_endpoint.router,
|
||||||
prefix="/servicos/balcao/t_servico_pedido",
|
prefix="/servicos/pedidos/t_servico_pedido",
|
||||||
tags=["Pedido"],
|
tags=["Pedido"],
|
||||||
)
|
)
|
||||||
|
|
||||||
# Inclui as rotas de g_emolumento periodo
|
# Inclui as rotas de g_emolumento periodo
|
||||||
api_router.include_router(
|
api_router.include_router(
|
||||||
t_servico_itempedido_endpoint.router,
|
t_servico_itempedido_endpoint.router,
|
||||||
prefix="/servicos/balcao/t_servico_itempedido",
|
prefix="/servicos/pedidos/t_servico_itempedido",
|
||||||
tags=["Itens do Pedido"],
|
tags=["Itens do Pedido"],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -365,7 +365,7 @@ api_router.include_router(
|
||||||
# Inclui as rotas de g_emolumento periodo
|
# Inclui as rotas de g_emolumento periodo
|
||||||
api_router.include_router(
|
api_router.include_router(
|
||||||
t_pessoa_cartao_endpoint.router,
|
t_pessoa_cartao_endpoint.router,
|
||||||
prefix="/servicos/balcao/t_pessoa_cartao",
|
prefix="/servicos/pedidos/t_pessoa_cartao",
|
||||||
tags=["Pessoa Cartao"],
|
tags=["Pessoa Cartao"],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
from packages.v1.servicos.balcao.controllers.t_servico_itempedido_controller import (
|
|
||||||
TServicoItemPedidoSaveSituacaoSchema,
|
|
||||||
)
|
|
||||||
from packages.v1.servicos.balcao.repositories.t_servico_itempedido.t_servico_itempedido_save_situacao_repository import (
|
from packages.v1.servicos.balcao.repositories.t_servico_itempedido.t_servico_itempedido_save_situacao_repository import (
|
||||||
TServicoItemPedidoSaveSituacaoRepository,
|
TServicoItemPedidoSaveSituacaoRepository,
|
||||||
)
|
)
|
||||||
|
from packages.v1.servicos.balcao.schemas.t_servico_itempedido_schema import (
|
||||||
|
TServicoItemPedidoSaveSituacaoSchema,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class TServicoItemPedidoSaveSituacaoAction:
|
class TServicoItemPedidoSaveSituacaoAction:
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,9 @@ from packages.v1.servicos.balcao.schemas.t_servico_itempedido_schema import (
|
||||||
TServicoItemPedidoUpdateSchema,
|
TServicoItemPedidoUpdateSchema,
|
||||||
TServicoItemPedidoIdSchema,
|
TServicoItemPedidoIdSchema,
|
||||||
)
|
)
|
||||||
|
from packages.v1.servicos.balcao.services.t_servico_itempedido.go.t_servico_itempedido_cancelar_service import (
|
||||||
|
TServicoItemPedidoCancelarService,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class TServicoItemPedidoController:
|
class TServicoItemPedidoController:
|
||||||
|
|
@ -83,8 +86,7 @@ class TServicoItemPedidoController:
|
||||||
|
|
||||||
# Importação da classe desejada
|
# Importação da classe desejada
|
||||||
cancelar_service = self.dynamic_import.service(
|
cancelar_service = self.dynamic_import.service(
|
||||||
"t_servico_itempedido_cancelar_service",
|
"t_servico_itempedido_cancelar_service", "TServicoItemPedidoCancelarService"
|
||||||
"TServicoItemPedidoCancelarService",
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# Instância da classe service
|
# Instância da classe service
|
||||||
|
|
|
||||||
|
|
@ -115,6 +115,28 @@ class TServicoItemPedidoSaveSchema(TServicoItemPedidoSchema):
|
||||||
from_attributes = True
|
from_attributes = True
|
||||||
|
|
||||||
|
|
||||||
|
class TServicoItemPedidoSaveSchema_(TServicoItemPedidoSchema):
|
||||||
|
|
||||||
|
emolumento_id: Optional[Decimal] = None
|
||||||
|
emolumento_item_id: Optional[Decimal] = None
|
||||||
|
servico_tipo_id: Optional[Decimal] = None
|
||||||
|
tipo_item: Optional[str] = None
|
||||||
|
descricao: Optional[str] = None
|
||||||
|
tabela: Optional[str] = None
|
||||||
|
situacao: Optional[str] = None
|
||||||
|
qtd: Optional[int] = None
|
||||||
|
valor: Optional[Decimal] = None
|
||||||
|
emolumento: Optional[Decimal] = None
|
||||||
|
fundesp: Optional[Decimal] = None
|
||||||
|
taxa_judiciaria: Optional[Decimal] = None
|
||||||
|
valor_iss: Optional[Decimal] = None
|
||||||
|
pessoa_id: Optional[Decimal] = None
|
||||||
|
index: Optional[int] = None
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
from_attributes = True
|
||||||
|
|
||||||
|
|
||||||
class TServicoItemPedidoUpdateSchema(TServicoItemPedidoSchema):
|
class TServicoItemPedidoUpdateSchema(TServicoItemPedidoSchema):
|
||||||
|
|
||||||
class Config:
|
class Config:
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
from typing import Annotated, Optional
|
from typing import Annotated, List, Optional
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
|
|
@ -7,6 +7,9 @@ from pydantic.config import ConfigDict
|
||||||
from pydantic.functional_validators import BeforeValidator
|
from pydantic.functional_validators import BeforeValidator
|
||||||
|
|
||||||
from packages.v1.parametros.schemas.g_config_schema import GConfigNomeSchema
|
from packages.v1.parametros.schemas.g_config_schema import GConfigNomeSchema
|
||||||
|
from packages.v1.servicos.balcao.schemas.t_servico_itempedido_schema import (
|
||||||
|
TServicoItemPedidoSaveSchema,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
# ---------- Utilidades ----------
|
# ---------- Utilidades ----------
|
||||||
|
|
@ -42,6 +45,7 @@ class TServicoPedidoSchema(BaseModel):
|
||||||
nfse_id: Optional[Decimal] = None
|
nfse_id: Optional[Decimal] = None
|
||||||
chave_importacao: Optional[Decimal] = None
|
chave_importacao: Optional[Decimal] = None
|
||||||
cpfcnpj_apresentante: Optional[str] = None
|
cpfcnpj_apresentante: Optional[str] = None
|
||||||
|
itens: Optional[List[TServicoItemPedidoSaveSchema]] = None
|
||||||
|
|
||||||
model_config = ConfigDict(from_attributes=True)
|
model_config = ConfigDict(from_attributes=True)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,12 +9,14 @@ from packages.v1.servicos.balcao.actions.t_servico_itempedido.t_servico_itempedi
|
||||||
TServicoItemPedidoSaveSituacaoAction,
|
TServicoItemPedidoSaveSituacaoAction,
|
||||||
)
|
)
|
||||||
from packages.v1.servicos.balcao.controllers.t_servico_itempedido_controller import (
|
from packages.v1.servicos.balcao.controllers.t_servico_itempedido_controller import (
|
||||||
TServicoItemPedidoSaveSituacaoSchema,
|
|
||||||
TServicoItemPedidoSituacaoSchema,
|
TServicoItemPedidoSituacaoSchema,
|
||||||
)
|
)
|
||||||
from packages.v1.administrativo.services.c_caixa_item.go.c_caixa_item_save_service import (
|
from packages.v1.administrativo.services.c_caixa_item.go.c_caixa_item_save_service import (
|
||||||
SaveService,
|
SaveService,
|
||||||
)
|
)
|
||||||
|
from packages.v1.servicos.balcao.schemas.t_servico_itempedido_schema import (
|
||||||
|
TServicoItemPedidoSaveSituacaoSchema,
|
||||||
|
)
|
||||||
from packages.v1.servicos.balcao.schemas.t_servico_pedido_schema import (
|
from packages.v1.servicos.balcao.schemas.t_servico_pedido_schema import (
|
||||||
TServicoPedidoIdSchema,
|
TServicoPedidoIdSchema,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -2,19 +2,19 @@ from packages.v1.administrativo.schemas.c_caixa_item_schema import CaixaItemSche
|
||||||
from packages.v1.administrativo.schemas.t_servico_tipo_schema import (
|
from packages.v1.administrativo.schemas.t_servico_tipo_schema import (
|
||||||
TServicoTipoIdSchema,
|
TServicoTipoIdSchema,
|
||||||
)
|
)
|
||||||
|
from packages.v1.administrativo.services.c_caixa_item.go.c_caixa_item_save_service import (
|
||||||
|
SaveService,
|
||||||
|
)
|
||||||
from packages.v1.administrativo.services.t_servico_tipo.go.t_servico_tipo_show_service import (
|
from packages.v1.administrativo.services.t_servico_tipo.go.t_servico_tipo_show_service import (
|
||||||
ShowService,
|
ShowService,
|
||||||
)
|
)
|
||||||
from packages.v1.servicos.balcao.actions.t_servico_itempedido.t_servico_itempedido_save_situacao_action import (
|
from packages.v1.servicos.balcao.actions.t_servico_itempedido.t_servico_itempedido_save_situacao_action import (
|
||||||
TServicoItemPedidoSaveSituacaoAction,
|
TServicoItemPedidoSaveSituacaoAction,
|
||||||
)
|
)
|
||||||
from packages.v1.servicos.balcao.controllers.t_servico_itempedido_controller import (
|
from packages.v1.servicos.balcao.schemas.t_servico_itempedido_schema import (
|
||||||
TServicoItemPedidoSaveSituacaoSchema,
|
TServicoItemPedidoSaveSituacaoSchema,
|
||||||
TServicoItemPedidoSituacaoSchema,
|
TServicoItemPedidoSituacaoSchema,
|
||||||
)
|
)
|
||||||
from packages.v1.administrativo.services.c_caixa_item.go.c_caixa_item_save_service import (
|
|
||||||
SaveService,
|
|
||||||
)
|
|
||||||
from packages.v1.servicos.balcao.schemas.t_servico_pedido_schema import (
|
from packages.v1.servicos.balcao.schemas.t_servico_pedido_schema import (
|
||||||
TServicoPedidoIdSchema,
|
TServicoPedidoIdSchema,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,7 @@ class TServicoPedidoSaveService:
|
||||||
for item in t_servico_pedido_save_schema.itens:
|
for item in t_servico_pedido_save_schema.itens:
|
||||||
|
|
||||||
# Define o id do item do serviço
|
# Define o id do item do serviço
|
||||||
item.servico_pedido_id = response_pedido.servico_pedido_id
|
item.servico_pedido_id = response_pedido["servico_pedido_id"]
|
||||||
|
|
||||||
# Define o id do item do usuario
|
# Define o id do item do usuario
|
||||||
item.usuario_id = response_pedido.usuario_id
|
item.usuario_id = response_pedido.usuario_id
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue