85 lines
No EOL
4 KiB
Python
85 lines
No EOL
4 KiB
Python
from models.sienge.services_models import *
|
|
from models.sg_tray_models.services_model import TrayOrderRootResponse
|
|
from appIC2Builder import SystemConfig
|
|
from api.tray import ApiTray
|
|
from db.banco import ConfigTenant
|
|
|
|
from pydantic import ValidationError
|
|
|
|
import redis
|
|
|
|
class ClienteService:
|
|
def __init__(self, config : SystemConfig, redis_client : redis.Redis):
|
|
self.config = config
|
|
self.api_tray = ApiTray(redis_client=redis_client, system_config=config)
|
|
|
|
def _mapper_tray_to_sienge_cliente(self, pedido : TrayOrderRootResponse, config_tenant: ConfigTenant) -> PostCustomerSienge:
|
|
|
|
enderecos : list[Addresses] = []
|
|
try:
|
|
for endereco in pedido.Order.Customer.CustomerAddresses:
|
|
enderecos.append(Addresses(
|
|
cityId = None,
|
|
city = endereco.CustomerAddress.city,
|
|
state = endereco.CustomerAddress.state,
|
|
neighborhood = endereco.CustomerAddress.neighborhood,
|
|
number = endereco.CustomerAddress.number,
|
|
complement = endereco.CustomerAddress.complement,
|
|
streetName = endereco.CustomerAddress.address,
|
|
zipCode = endereco.CustomerAddress.zip_code,
|
|
type = 'C' if endereco.CustomerAddress.description == "Comercial" else 'R'
|
|
))
|
|
except ValidationError as e:
|
|
print(f"Erro ao mapear endereços: {e}",flush=True)
|
|
raise e
|
|
|
|
try:
|
|
telefones = [Phones(
|
|
type = "CE",
|
|
number = pedido.Order.Customer.cellphone,
|
|
main = True
|
|
)]
|
|
except ValidationError as e:
|
|
print(f"Erro ao mapear telefones: {e}",flush=True)
|
|
raise e
|
|
|
|
try:
|
|
if pedido.Order.Customer.cpf is not None and pedido.Order.Customer.cpf != "":
|
|
cliente = PostCustomerSienge(
|
|
addresses = enderecos,
|
|
phones = telefones,
|
|
naturalPersonData = NaturalPersonData(
|
|
name = pedido.Order.Customer.name,
|
|
cpf = pedido.Order.Customer.cpf,
|
|
email = pedido.Order.Customer.email,
|
|
birthDate = pedido.Order.Customer.birth_date,
|
|
sex = 'M' if pedido.Order.Customer.gender == "0" else 'F',
|
|
numberIdentityCard=pedido.Order.Customer.rg
|
|
)
|
|
)
|
|
elif pedido.Order.Customer.cnpj is not None and pedido.Order.Customer.cnpj != "":
|
|
cliente = PostCustomerSienge(
|
|
addresses = enderecos,
|
|
phones = telefones,
|
|
legalPersonData = LegalPersonData(
|
|
name = pedido.Order.Customer.company_name,
|
|
email = pedido.Order.Customer.email,
|
|
cnpj = pedido.Order.Customer.cnpj,
|
|
stateRegistrationNumber = pedido.Order.Customer.state_inscription
|
|
)
|
|
)
|
|
else:
|
|
raise ValueError("Cliente sem CPF ou CNPJ")
|
|
return {
|
|
"config": {
|
|
"subdominio": "s8psasistemas", #config_tenant.tenant if not config_tenant.oauth else None,
|
|
"usuario" : config_tenant.usuario_sienge,
|
|
"senha" : config_tenant.token_sienge,
|
|
"tenant" : config_tenant.tenant if config_tenant.oauth else None,
|
|
"cliente" : config_tenant.tenant
|
|
},
|
|
"cliente": cliente.model_dump()
|
|
}
|
|
except ValidationError as e:
|
|
print(f"Erro ao mapear cliente: {e}",flush=True)
|
|
raise e |