TBI ERP de demonstração

Do ERP para o TBI, campo a campo

Um ERP fictício que publica clientes, fabricantes, equipamentos, peças e contratos de teste no formato que a Integração ERP do TBI importa. Use-o para testar uma configuração ou demonstrar a integração sem depender do sistema de um cliente.

data.customer.customer_name Hospital Santa Clara de Assis Ltda
Razão Social customer.customer_name
data.customer.tax_id 11.223.344/0001-86
CPF / CNPJ customer.tax_id
data.customer.internal_code CLI-0001
Código Interno customer.internal_code
data.address.city São Paulo
Cidade address.city
data.phones.phone_number 1132145000
Telefone Principal phones.0.phone_number
Um cliente deste ERP e o campo do TBI que recebe cada valor. Aqui os campos têm o mesmo nome dos campos do TBI; num ERP real, o mapeamento liga nomes diferentes.

Como a integração funciona

Cada distribuidor configura, uma única vez, onde estão os dados no ERP dele e qual campo do ERP alimenta cada campo do TBI. A partir daí, o TBI busca os dados sozinho.

  1. Autenticar

    O TBI entra no ERP com o método configurado: login com usuário e senha (que devolve um token), uma chave fixa no cabeçalho, ou nenhum.

  2. Buscar

    Para cada módulo, o TBI chama o endereço configurado e lê a lista de registros, página por página quando o ERP pagina a resposta.

  3. Mapear

    Cada campo do TBI aponta para um campo do ERP. Vínculos usam códigos que o ERP conhece: o código interno do cliente, o número de série do equipamento, o e-mail do contato.

  4. Validar e importar

    Cada registro passa pelas mesmas validações de um cadastro feito na tela, e o resultado de cada um fica registrado na execução.

Registro válido: cadastro criado

Entra direto no TBI. Se já existe um cadastro com o mesmo código, a regra de registros existentes da integração decide se ele é atualizado, enviado para revisão ou ignorado.

Registro com problema: Zona de Transição

Fica retido com o motivo, por exemplo um cliente não encontrado ou um campo obrigatório faltando, até alguém completar e aprovar.

A integração roda a cada hora e também pode ser disparada na hora pela tela. Em homologação (staging) nada é criado direto: todo registro vai para a Zona de Transição, para conferir o mapeamento antes de liberar.

Conectar o TBI a este ERP

Em Integração ERP, configure a autenticação uma vez por distribuidor. Depois, para cada módulo, informe o endereço e faça o mapeamento dos campos.

Login com token

Testa o fluxo completo: o TBI faz login, guarda o token e refaz o login se o token expirar.

URL de login
https://integrationtest.tbieightware.com/api/v1/auth/login
Campo do usuário
login
Campo da senha
senha
Usuário
tbi
Senha
tbi-mock
Caminho do token
data.0.token

Chave no cabeçalho

Para ERPs que entregam uma chave de API fixa em vez de login.

Nome do cabeçalho
X-API-Key
Prefixo
deixe vazio
Chave
tbi-mock-api-key

Sem autenticação

Os mesmos dados, abertos. Também serve para abrir no navegador e colar o JSON na tela de mapeamento.

Endereço base
https://integrationtest.tbieightware.com/public/v1

Endereços e paginação

Endereço de cada módulo
https://integrationtest.tbieightware.com/api/v1/módulo, ex.: https://integrationtest.tbieightware.com/api/v1/customers
Caminho da lista
data
Paginação por posição
limit e offset (ou max e position)
Paginação por página
limit e page, começando em 1

Configuração pronta

Cada módulo tem a configuração completa (endereço, mapeamento de todos os campos e grupos repetidos) no formato que o TBI salva, para conferir o mapeamento campo a campo.

Todas as configurações (JSON)

Guia completo em JSON

Ordem de importação

Os módulos se referem uns aos outros pelos códigos: um contrato procura o cliente, um equipamento procura o modelo. Importe nesta ordem para cada vínculo encontrar o registro que já existe.

  1. Fabricantes Não depende de outro módulo
  2. Segmentos de Fabricantes Depois de Fabricantes
  3. Modelos de Equipamento Depois de Fabricantes
  4. Contatos de Fabricantes Depois de Fabricantes
  5. Peças Depois de Fabricantes
  6. Clientes Não depende de outro módulo
  7. Contatos de Clientes Depois de Clientes
  8. Contratos Depois de Clientes e Contatos de Clientes
  9. Aditivos de Contrato Depois de Contratos
  10. Equipamentos Depois de Modelos de Equipamento, Clientes e Contratos
  11. Periféricos Depois de Equipamentos

Os contratos vêm antes dos equipamentos porque cada equipamento informa o número do contrato a que pertence. Os periféricos vêm por último e se ligam ao equipamento pelo número de série dele.

Módulos e campos

Todos os campos que a tela de mapeamento do TBI oferece, com o campo deste ERP que alimenta cada um. Os obrigatórios estão preenchidos em todos os registros.

Fabricantes

5 registros Fabricantes com endereço, telefone e contatos. A moeda vai como sigla (BRL, USD, EUR). Os contatos que vêm dentro de cada fabricante entram como Contatos de Fabricantes. /api/v1/manufacturers

Grupos repetidos: contacts em data.contacts. Cada item da lista vira um item no TBI.

Campo no TBI Obrigatório Campo no ERP
Razão Social do Fabricante
manufacturer.manufacturer_name
Sim data.manufacturer.manufacturer_name
Nome Fantasia
manufacturer.trade_name
Sim data.manufacturer.trade_name
CPF / CNPJ
manufacturer.tax_id
Não data.manufacturer.tax_id
Status
manufacturer.status
Não data.manufacturer.status
Código Interno
manufacturer.internal_code
Não data.manufacturer.internal_code
Moeda (Código ISO)
manufacturer.currency_id
Sim data.manufacturer.currency_id
DDI
phone.international_area_code
Sim data.phone.international_area_code
Número do Telefone
phone.phone_number
Sim data.phone.phone_number
Ramal
phone.extension
Não data.phone.extension
Tipo do Telefone
phone.kind
Não data.phone.kind
Nome do Endereço
address.name
Não data.address.name
Logradouro
address.street
Sim data.address.street
Número
address.street_number
Não data.address.street_number
Complemento
address.complement
Não data.address.complement
Bairro
address.neighborhood
Não data.address.neighborhood
Cidade
address.city
Sim data.address.city
Estado (UF)
address.state
Sim data.address.state
País
address.country
Sim data.address.country
CEP
address.zipcode
Sim data.address.zipcode
Latitude
address.latitude
Não data.address.latitude
Longitude
address.longitude
Não data.address.longitude
Nome do Contato
contacts.0.first_name
Não data.contacts.first_name
Sobrenome do Contato
contacts.0.last_name
Não data.contacts.last_name
E-mail do Contato
contacts.0.email
Não data.contacts.email
Cargo do Contato
contacts.0.title
Não data.contacts.title
Tipo do Contato
contacts.0.kind
Não data.contacts.kind
Segmento do Fabricante (Nome)
contacts.0.segments_manufacturer_id
Não data.contacts.segments_manufacturer_id
Telefone do Contato
contacts.0.phone.phone_number
Não data.contacts.phone.phone_number
DDI do Telefone do Contato
contacts.0.phone.international_area_code
Não data.contacts.phone.international_area_code
Ver um registro de exemplo
{
  "manufacturer": {
    "manufacturer_name": "Hemalux Equipamentos Médicos Ltda",
    "trade_name": "Hemalux",
    "tax_id": "12.345.678/0001-95",
    "status": "active",
    "internal_code": "FAB-001",
    "currency_id": "BRL"
  },
  "phone": {
    "international_area_code": "55",
    "phone_number": "1133445566",
    "extension": "201",
    "kind": "fixed"
  },
  "address": {
    "name": "Matriz",
    "street": "Avenida Paulista",
    "street_number": "1578",
    "complement": "Conj. 1203",
    "neighborhood": "Bela Vista",
    "city": "São Paulo",
    "state": "SP",
    "country": "Brasil",
    "zipcode": "01310-200",
    "latitude": "-23.561414",
    "longitude": "-46.655881"
  },
  "contacts": [
    {
      "segments_manufacturer_id": "Hematologia",
      "first_name": "Mariana",
      "last_name": "Albuquerque",
      "email": "[email protected]",
      "title": "Gerente de Contas",
      "kind": "default",
      "phone": {
        "phone_number": "1133445577",
        "international_area_code": "55"
      }
    },
    {
      "segments_manufacturer_id": "Coagulação",
      "first_name": "Rafael",
      "last_name": "Teixeira",
      "email": "[email protected]",
      "title": "Engenheiro de Aplicação",
      "kind": "emergency",
      "phone": {
        "phone_number": "1133445588",
        "international_area_code": "55"
      }
    }
  ]
}

Segmentos de Fabricantes

8 registros Os segmentos em que cada fabricante atua, pelo nome. O TBI encontra o segmento ou cria um novo. /api/v1/manufacturer_segments
Campo no TBI Obrigatório Campo no ERP
Fabricante (Código Interno)
segment.manufacturer_id
Sim data.segment.manufacturer_id
ID do Segmento
segment.segment_id
Não Não enviado Não enviado: é um ID interno do TBI. O segmento é encontrado pelo nome.
Nome do Segmento
segment.segment_name
Sim data.segment.segment_name
Ver um registro de exemplo
{
  "segment": {
    "manufacturer_id": "FAB-001",
    "segment_name": "Hematologia"
  }
}

Modelos de Equipamento

10 registros Os modelos de cada fabricante, com part number, garantias e plano de manutenção. /api/v1/manufacturer_equipment
Campo no TBI Obrigatório Campo no ERP
Fabricante (Código Interno)
manufacturer_equipment.manufacturer_id
Sim data.manufacturer_equipment.manufacturer_id
Segmento do Fabricante (Nome)
manufacturer_equipment.segments_manufacturer_id
Sim data.manufacturer_equipment.segments_manufacturer_id
Modelo do Equipamento
manufacturer_equipment.equipment_model_name
Sim data.manufacturer_equipment.equipment_model_name
Número da Peça
manufacturer_equipment.part_number
Não data.manufacturer_equipment.part_number
Garantia de Instalação (dias)
manufacturer_equipment.warranty_installation
Não data.manufacturer_equipment.warranty_installation
Garantia de Compra (dias)
manufacturer_equipment.warranty_purchase
Não data.manufacturer_equipment.warranty_purchase
Quantidade de Uso para Manutenção
manufacturer_equipment.maintenance_use_quantity
Não data.manufacturer_equipment.maintenance_use_quantity
Quantidade de Manutenções
manufacturer_equipment.maintenance_quantity
Não data.manufacturer_equipment.maintenance_quantity
Período de Manutenção
manufacturer_equipment.maintenance_period
Não data.manufacturer_equipment.maintenance_period
Ver um registro de exemplo
{
  "manufacturer_equipment": {
    "manufacturer_id": "FAB-001",
    "segments_manufacturer_id": "Hematologia",
    "equipment_model_name": "Hemalux HX-500",
    "part_number": "HX-500-BR",
    "warranty_installation": 365,
    "warranty_purchase": 365,
    "maintenance_use_quantity": 10000,
    "maintenance_quantity": 2,
    "maintenance_period": "year"
  }
}

Contatos de Fabricantes

9 registros Os mesmos contatos de Fabricantes, em lista própria. O TBI cria um contato para cada segmento do fabricante. /api/v1/manufacturer_contacts
Campo no TBI Obrigatório Campo no ERP
Fabricante (Código Interno)
contact.manufacturer_id
Sim data.contact.manufacturer_id
Segmento do Fabricante (Nome)
contact.segments_manufacturer_id
Não data.contact.segments_manufacturer_id
Nome do Contato
contact.first_name
Não data.contact.first_name
Sobrenome do Contato
contact.last_name
Não data.contact.last_name
E-mail do Contato
contact.email
Não data.contact.email
Cargo do Contato
contact.title
Não data.contact.title
Tipo do Contato
contact.kind
Não data.contact.kind
Telefone do Contato
contact.phone.phone_number
Não data.contact.phone.phone_number
DDI do Telefone do Contato
contact.phone.international_area_code
Não data.contact.phone.international_area_code
Ver um registro de exemplo
{
  "contact": {
    "manufacturer_id": "FAB-001",
    "segments_manufacturer_id": "Hematologia",
    "first_name": "Mariana",
    "last_name": "Albuquerque",
    "email": "[email protected]",
    "title": "Gerente de Contas",
    "kind": "default",
    "phone": {
      "phone_number": "1133445577",
      "international_area_code": "55"
    }
  }
}

Peças

20 registros Peças com custo, preço de venda e estoque. Os valores vêm no formato 1.234,56. /api/v1/spare_parts
Campo no TBI Obrigatório Campo no ERP
Código Interno
spare_part.internal_code
Sim data.spare_part.internal_code
Nome da Peça
spare_part.part_name
Sim data.spare_part.part_name
Código do Fabricante
spare_part.manufacturer_code
Sim data.spare_part.manufacturer_code
País de Origem
spare_part.source_country
Sim data.spare_part.source_country
Status
spare_part.status
Não data.spare_part.status
Fabricante (Código Interno)
spare_part.manufacturer_id
Sim data.spare_part.manufacturer_id
Segmento do Fabricante (Nome)
spare_part.segments_manufacturer_id
Sim data.spare_part.segments_manufacturer_id
Moeda Local
spare_part.local_currency
Não data.spare_part.local_currency
Custo
spare_part.cost
Não data.spare_part.cost
Custo Final
spare_part.final_cost
Não data.spare_part.final_cost
Custo de Venda
spare_part.sales_cost
Não data.spare_part.sales_cost
Quantidade em Estoque
spare_part.stock_quantity
Não data.spare_part.stock_quantity
Ver um registro de exemplo
{
  "spare_part": {
    "internal_code": "PEC-00001",
    "part_name": "Lâmpada halógena 12V 20W",
    "manufacturer_code": "HX-LMP-12V",
    "source_country": "Brasil",
    "status": "available",
    "manufacturer_id": "FAB-001",
    "segments_manufacturer_id": "Hematologia",
    "local_currency": "BRL",
    "cost": "189,90",
    "final_cost": "224,08",
    "sales_cost": "313,34",
    "stock_quantity": 14
  }
}

Clientes

12 registros Clientes com endereços, telefones e filiais em listas, configuradas como grupos repetidos no mapeamento. /api/v1/customers

Grupos repetidos: address em data.address, phones em data.phones, customer_branches em data.customer_branches. Cada item da lista vira um item no TBI.

Campo no TBI Obrigatório Campo no ERP
Razão Social
customer.customer_name
Sim data.customer.customer_name
Nome Fantasia
customer.trade_name
Sim data.customer.trade_name
CPF / CNPJ
customer.tax_id
Sim data.customer.tax_id
Código Interno
customer.internal_code
Não data.customer.internal_code
Status
customer.status
Sim data.customer.status
CEP
address.zipcode
Sim data.address.zipcode
Logradouro
address.street
Sim data.address.street
Número
address.street_number
Sim data.address.street_number
Complemento
address.complement
Não data.address.complement
Bairro
address.neighborhood
Não data.address.neighborhood
Cidade
address.city
Sim data.address.city
Estado (UF)
address.state
Sim data.address.state
País
address.country
Não data.address.country
Telefone Principal
phones.0.phone_number
Sim data.phones.phone_number
DDI
phones.0.international_area_code
Sim data.phones.international_area_code
Tipo do Telefone
phones.0.kind
Não data.phones.kind
Nome da Filial
customer_branches.0.branch_name
Não data.customer_branches.branch_name
Nome Fantasia da Filial
customer_branches.0.branch_trade_name
Não data.customer_branches.branch_trade_name
CNPJ da Filial
customer_branches.0.tax_id
Não data.customer_branches.tax_id
Código Interno da Filial
customer_branches.0.internal_code
Não data.customer_branches.internal_code
Tipo da Filial
customer_branches.0.kind
Não data.customer_branches.kind
Status da Filial
customer_branches.0.status
Não data.customer_branches.status
Ver um registro de exemplo
{
  "customer": {
    "customer_name": "Hospital Santa Clara de Assis Ltda",
    "trade_name": "Hospital Santa Clara",
    "tax_id": "11.223.344/0001-86",
    "internal_code": "CLI-0001",
    "status": "active"
  },
  "address": [
    {
      "zipcode": "01405-001",
      "street": "Rua Pamplona",
      "street_number": "1200",
      "complement": null,
      "neighborhood": "Jardim Paulista",
      "city": "São Paulo",
      "state": "SP",
      "country": "Brasil"
    }
  ],
  "phones": [
    {
      "phone_number": "1132145000",
      "international_area_code": "55",
      "kind": "fixed"
    },
    {
      "phone_number": "11987001122",
      "international_area_code": "55",
      "kind": "mobile"
    }
  ],
  "customer_branches": [
    {
      "branch_name": "Unidade Morumbi",
      "branch_trade_name": "Santa Clara Morumbi",
      "tax_id": "11.223.344/0002-67",
      "internal_code": "CLI-0001-F1",
      "kind": "operational",
      "status": "active"
    },
    {
      "branch_name": "Centro Administrativo",
      "branch_trade_name": "Santa Clara Adm",
      "tax_id": "11.223.344/0003-48",
      "internal_code": "CLI-0001-F2",
      "kind": "administrative",
      "status": "active"
    }
  ]
}

Contatos de Clientes

24 registros Os contatos de cada cliente, ligados pelo código interno do cliente. /api/v1/customer_contacts
Campo no TBI Obrigatório Campo no ERP
Cliente (Código Interno)
contact.customer_id
Sim data.contact.customer_id
Nome do Contato
contact.first_name
Não data.contact.first_name
Sobrenome do Contato
contact.last_name
Não data.contact.last_name
E-mail do Contato
contact.email
Não data.contact.email
Cargo do Contato
contact.title
Não data.contact.title
Tipo do Contato
contact.kind
Não data.contact.kind
Telefone do Contato
contact.phone.phone_number
Não data.contact.phone.phone_number
DDI do Telefone do Contato
contact.phone.international_area_code
Não data.contact.phone.international_area_code
Ver um registro de exemplo
{
  "contact": {
    "customer_id": "CLI-0001",
    "first_name": "Ana",
    "last_name": "Ribeiro",
    "email": "[email protected]",
    "title": "Coordenadora do Laboratório",
    "kind": "default",
    "phone": {
      "phone_number": "1132145007",
      "international_area_code": "55"
    }
  }
}

Contratos

8 registros Contratos com cliente, vigência e responsáveis (pelo e-mail do contato). Os equipamentos não vêm aqui: cada equipamento informa o seu contrato. /api/v1/contracts
Campo no TBI Obrigatório Campo no ERP
Cliente (ID)
customer_id
Sim data.customer_id
Status do Contrato
status
Sim data.status
Tipo do Contrato
kind
Sim data.kind
Número do Contrato
contract_number
Sim data.contract_number
Observações
observations
Não data.observations
Data de Início
start_date
Sim data.start_date
Data de Término
end_date
Sim data.end_date
Responsável Interno (ID)
internal_responsibles.0
Não data.internal_responsibles.email Lista de objetos com o e-mail; o TBI lê o primeiro.
Responsável Externo (ID)
external_responsibles.0
Não data.external_responsibles.email Lista de objetos com o e-mail; o TBI lê o primeiro.
Equipamento do Distribuidor (ID)
distributor_equipment_ids.0
Não Não enviado Não enviado: os contratos são importados antes dos equipamentos, então cada equipamento informa o seu contrato.
Ver um registro de exemplo
{
  "customer_id": "CLI-0001",
  "status": "active",
  "kind": "maintenance",
  "contract_number": "CTR-2026-0001",
  "observations": "Manutenção preventiva semestral e corretiva ilimitada.",
  "start_date": "2026-01-01",
  "end_date": "2027-12-31",
  "internal_responsibles": [
    {
      "email": "[email protected]"
    }
  ],
  "external_responsibles": [
    {
      "email": "[email protected]"
    }
  ]
}

Aditivos de Contrato

8 registros Aditivos ligados ao contrato pelo número do contrato. /api/v1/contract_additions
Campo no TBI Obrigatório Campo no ERP
Número do Contrato
contract_number
Sim data.contract_number
Número do Aditivo
additional_number
Sim data.additional_number
Tipo do Aditivo
additional_type
Sim data.additional_type
Descrição
description
Sim data.description
Data
date
Sim data.date
Ver um registro de exemplo
{
  "contract_number": "CTR-2026-0001",
  "additional_number": "AD-01",
  "additional_type": "Inclusão de equipamento",
  "description": "Inclusão do HX-3000 da Unidade Morumbi.",
  "date": "2026-07-02"
}

Equipamentos

15 registros Equipamentos instalados ou em estoque. O modelo vem pelo part number; o fabricante, o cliente e a filial, pelo código interno; o contrato, pelo número do contrato. /api/v1/distributor_equipment
Campo no TBI Obrigatório Campo no ERP
ID
id
Não Não enviado Não enviado: é um ID interno do TBI. O número de série identifica o equipamento.
Número de Série
serial_number
Sim data.serial_number
Código Interno
internal_code
Sim data.internal_code
Status
status
Sim data.status
ID do Equipamento do Fabricante
manufacturer_equipment_id
Sim data.manufacturer_equipment_id
ID do Fabricante
manufacturer_id
Sim data.manufacturer_id
ID do Cliente
customer_id
Não data.customer_id
ID da Filial do Cliente
customer_branch_id
Não data.customer_branch_id
ID do Segmento do Fabricante
segments_manufacturer_id
Sim data.segments_manufacturer_id
ID do Distribuidor
distributor_id
Sim data.distributor_id O TBI usa sempre o distribuidor da própria integração.
ID do Endereço de Origem
origin_address_id
Sim data.origin_address_id Enviado vazio: o TBI usa o endereço padrão do distribuidor.
Ano de Fabricação
manufacturing_year
Não data.manufacturing_year
Mês de Fabricação
manufacturing_month
Não data.manufacturing_month
Dia de Fabricação
manufacturing_day
Não data.manufacturing_day
Número da Nota Fiscal
invoice_number
Sim data.invoice_number
Data de Aquisição
acquisition_date
Sim data.acquisition_date
Data de Instalação
installation_date
Não data.installation_date
Versão do Software
software_version
Não data.software_version
Patrimônio
fixed_asset
Não data.fixed_asset
SLA sem Cobertura
sla_uncovered_service
Sim data.sla_uncovered_service
Periférico Principal
peripherals.0
Não data.peripherals.serial_number Lista de objetos com o número de série; o TBI lê o primeiro. O vínculo vem da importação de Periféricos, que roda depois.
Contrato (número)Campo extra do ERP — data.contract_number O contrato em que o equipamento está instalado. O mapeamento do TBI ainda não tem campo de contrato para equipamentos, então o TBI não lê este valor.
Ver um registro de exemplo
{
  "serial_number": "SN-HX500-21000",
  "internal_code": "EQP-0001",
  "status": "allocated",
  "manufacturer_equipment_id": "HX-500-BR",
  "manufacturer_id": "FAB-001",
  "customer_id": "CLI-0001",
  "customer_branch_id": null,
  "contract_number": "CTR-2026-0001",
  "segments_manufacturer_id": "Hematologia",
  "distributor_id": "DIST-MOCK",
  "origin_address_id": null,
  "manufacturing_year": 2023,
  "manufacturing_month": 11,
  "manufacturing_day": 10,
  "invoice_number": "NF-120400",
  "acquisition_date": "2024-02-10",
  "installation_date": "2024-03-01",
  "software_version": "4.2.1",
  "fixed_asset": "PAT-30000",
  "sla_uncovered_service": false,
  "peripherals": [
    {
      "serial_number": "PER-ENERSAFE-0001"
    }
  ]
}

Periféricos

10 registros Periféricos de cada equipamento, ligados pelo número de série do equipamento. /api/v1/peripherals
Campo no TBI Obrigatório Campo no ERP
ID do Distribuidor
distributor_id
Sim data.distributor_id O TBI usa sempre o distribuidor da própria integração.
ID do Endereço de Origem
origin_address_id
Não data.origin_address_id Enviado vazio: o TBI usa o endereço padrão do distribuidor.
ID do Equipamento do Distribuidor
distributor_equipment_id
Não data.distributor_equipment_id
Número de Série
serial_number
Não data.serial_number
Part Number
part_number
Não data.part_number
Número da Nota Fiscal
invoice_number
Sim data.invoice_number
Data de Aquisição
acquisition_date
Sim data.acquisition_date
Marca
brand_peripheral
Sim data.brand_peripheral
Modelo
model_peripheral
Sim data.model_peripheral
Tipo
type_peripheral
Sim data.type_peripheral
Período de Garantia
warranty_period
Sim data.warranty_period
Fim da Garantia
end_of_warranty
Sim data.end_of_warranty
Status
status
Não data.status
Ver um registro de exemplo
{
  "distributor_id": "DIST-MOCK",
  "origin_address_id": null,
  "distributor_equipment_id": "SN-HX500-21000",
  "serial_number": "PER-ENERSAFE-0001",
  "part_number": "ES1500-BR",
  "invoice_number": "NF-130900",
  "acquisition_date": "2024-02-10",
  "brand_peripheral": "EnerSafe",
  "model_peripheral": "ES-1500VA",
  "type_peripheral": "Nobreak",
  "warranty_period": "24",
  "end_of_warranty": "2026-02-10",
  "status": "allocated"
}

Cenários para demonstrar

A maior parte dos dados entra sem problemas. Alguns registros foram montados de propósito para mostrar o que acontece quando algo precisa de atenção.

  • Cliente com dois endereços

    A Policlínica Litoral Norte (CLI-0007) tem dois endereços. O TBI não escolhe sozinho qual é o endereço de atendimento: o cliente vai para a Zona de Transição para alguém escolher.

  • Contato sem cliente

    Os dois contatos da CLI-0007 ficam em revisão como cliente não encontrado, até o cliente ser aprovado. É o mesmo caminho de qualquer vínculo que não existe no TBI.

  • Equipamentos sem cliente

    Três equipamentos não estão em nenhum cliente: dois em estoque (não alocados) e um em manutenção.

  • Peças sem estoque e contrato encerrado

    Duas peças vêm indisponíveis, com estoque zero, e o contrato CTR-2025-0007 vem inativo, com a vigência encerrada.