TBI ERP de demostración

Del ERP a TBI, campo por campo

Un ERP ficticio que publica clientes, fabricantes, equipos, repuestos y contratos de prueba en el formato que importa la Integración ERP de TBI. Úselo para probar una configuración o presentar la integración sin depender del sistema de un cliente.

data.customer_name Hospital Santa Clara de Assis Ltda
Razón Social customer.customer_name
data.tax_id 11.223.344/0001-86
Identificación Fiscal customer.tax_id
data.internal_code CLI-0001
Código Interno customer.internal_code
data.address.city São Paulo
Ciudad address.city
data.phones.phone_number 1132145000
Teléfono Principal phones.0.phone_number
Un cliente de este ERP y el campo de TBI que recibe cada valor. Aquí los campos tienen el mismo nombre que en TBI; con un ERP real, el mapeo vincula nombres distintos.

Cómo funciona la integración

Cada distribuidor configura, una sola vez, dónde están los datos en su ERP y qué campo del ERP alimenta cada campo de TBI. A partir de ahí, TBI busca los datos por sí solo.

  1. Autenticar

    TBI entra en el ERP con el método configurado: inicio de sesión con usuario y contraseña (que devuelve un token), una clave fija en el encabezado, o ninguno.

  2. Buscar

    Para cada módulo, TBI llama a la dirección configurada y lee la lista de registros, página por página cuando el ERP pagina la respuesta.

  3. Mapear

    Cada campo de TBI apunta a un campo del ERP. Los vínculos usan códigos que el ERP conoce: el código interno del cliente, el número de serie del equipo, el correo del contacto.

  4. Validar e importar

    Cada registro pasa por las mismas validaciones que un registro creado en pantalla, y el resultado de cada uno queda registrado en la ejecución.

Registro válido: creado

Entra directo en TBI. Si ya existe un registro con el mismo código, la regla de registros existentes de la integración decide si se actualiza, se envía a revisión o se ignora.

Registro con un problema: Zona de Transición

Queda retenido con el motivo, por ejemplo un cliente no encontrado o un campo obligatorio faltante, hasta que alguien lo complete y lo apruebe.

La integración se ejecuta cada hora y también se puede iniciar al momento desde la pantalla. En homologación (staging) no se crea nada directamente: todo registro va a la Zona de Transición, para revisar el mapeo antes de liberarlo.

Conectar TBI a este ERP

En Integración ERP, configure la autenticación una vez por distribuidor. Después, para cada módulo, indique la dirección y mapee los campos.

Inicio de sesión con token

Prueba el flujo completo: TBI inicia sesión, guarda el token y vuelve a iniciar sesión si el token vence.

URL de inicio de sesión
https://integrationtest.tbieightware.com/api/v1/auth/login
Campo del usuario
login
Campo de la contraseña
senha
Usuario
tbi
Contraseña
tbi-mock
Ruta del token
data.0.token

Clave en el encabezado

Para ERPs que entregan una clave de API fija en lugar de un inicio de sesión.

Nombre del encabezado
X-API-Key
Prefijo
déjelo vacío
Clave
tbi-mock-api-key

Sin autenticación

Los mismos datos, abiertos. También sirve para abrirlos en el navegador y pegar el JSON en la pantalla de mapeo.

Dirección base
https://integrationtest.tbieightware.com/public/v1

Direcciones y paginación

Dirección de cada módulo
https://integrationtest.tbieightware.com/api/v1/módulo, p. ej.: https://integrationtest.tbieightware.com/api/v1/customers
Ruta de la lista
data
Paginación por posición
limit y offset (o max y position)
Paginación por página
limit y page, empezando en 1

Configuración lista

Cada módulo tiene su configuración completa (dirección, mapeo de todos los campos y grupos repetibles) en el formato que guarda TBI, para revisar el mapeo campo por campo.

Todas las configuraciones (JSON)

Guía completa en JSON

Orden de importación

Los módulos se refieren unos a otros por código: un contrato busca su cliente, un equipo busca su modelo. Importe en este orden para que cada vínculo encuentre un registro que ya existe.

  1. Fabricantes No depende de otro módulo
  2. Segmentos de Fabricantes Después de Fabricantes
  3. Equipos de Fabricante Después de Fabricantes
  4. Contactos de Fabricantes Después de Fabricantes
  5. Repuestos Después de Fabricantes
  6. Clientes No depende de otro módulo
  7. Contactos de Clientes Después de Clientes
  8. Contratos Después de Clientes y Contactos de Clientes
  9. Adendas de Contrato Después de Contratos
  10. Equipos Después de Equipos de Fabricante, Clientes y Contratos
  11. Periféricos Después de Equipos

Los contratos van antes que los equipos porque cada equipo indica el número del contrato al que pertenece. Los periféricos van al final y se vinculan a su equipo por el número de serie.

Módulos y campos

Todos los campos que ofrece la pantalla de mapeo de TBI, con el campo de este ERP que alimenta cada uno. Los obligatorios están completos en todos los registros.

Fabricantes

5 registros Fabricantes con dirección, teléfono y contactos. La moneda se envía como su código (BRL, USD, EUR). Los contactos dentro de cada fabricante entran como Contactos de Fabricantes. /api/v1/manufacturers

Grupos repetibles: contacts en data.contacts. Cada elemento de la lista se convierte en un elemento en TBI.

Campo en TBI Obligatorio Campo en el ERP
Razón Social del Fabricante
manufacturer.manufacturer_name
Sí data.manufacturer_name
Nombre Comercial
manufacturer.trade_name
Sí data.trade_name
Identificación Fiscal
manufacturer.tax_id
No data.tax_id
Estado
manufacturer.status
No data.status
Código Interno
manufacturer.internal_code
No data.internal_code
Moneda (Código ISO)
manufacturer.currency_id
Sí data.currency_id
Código de País
phone.international_area_code
Sí data.international_area_code
Número de Teléfono
phone.phone_number
Sí data.phone_number
Extensión
phone.extension
No data.extension
Tipo de Teléfono
phone.kind
No data.kind
Nombre de la Dirección
address.name
No data.name
Calle
address.street
Sí data.street
Número
address.street_number
No data.street_number
Complemento
address.complement
No data.complement
Barrio
address.neighborhood
No data.neighborhood
Ciudad
address.city
Sí data.city
Estado/Provincia
address.state
Sí data.state
País
address.country
Sí data.country
Código Postal
address.zipcode
Sí data.zipcode
Latitud
address.latitude
No data.latitude
Longitud
address.longitude
No data.longitude
Nombre del Contacto
contacts.0.first_name
No data.contacts.first_name
Apellido del Contacto
contacts.0.last_name
No data.contacts.last_name
Correo del Contacto
contacts.0.email
No data.contacts.email
Cargo del Contacto
contacts.0.title
No data.contacts.title
Tipo de Contacto
contacts.0.kind
No data.contacts.kind
Segmento del Fabricante (Nombre)
contacts.0.segments_manufacturer_id
No data.contacts.segments_manufacturer_id
Teléfono del Contacto
contacts.0.phone.phone_number
No data.contacts.phone_number
Código de País del Teléfono del Contacto
contacts.0.phone.international_area_code
No data.contacts.international_area_code
Ver un registro de ejemplo
{
  "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",
  "international_area_code": "55",
  "phone_number": "1133445566",
  "extension": "201",
  "kind": "fixed",
  "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_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_number": "1133445588",
      "international_area_code": "55"
    }
  ]
}

Segmentos de Fabricantes

8 registros Los segmentos en los que trabaja cada fabricante, por nombre. TBI encuentra el segmento o crea uno nuevo. /api/v1/manufacturer_segments
Campo en TBI Obligatorio Campo en el ERP
Fabricante (Código Interno)
segment.manufacturer_id
Sí data.manufacturer_id
ID del Segmento
segment.segment_id
No No enviado No enviado: es un ID interno de TBI. El segmento se encuentra por nombre.
Nombre del Segmento
segment.segment_name
Sí data.segment_name
Ver un registro de ejemplo
{
  "manufacturer_id": "FAB-001",
  "segment_name": "Hematologia"
}

Equipos de Fabricante

10 registros Los modelos de cada fabricante, con número de parte, garantías y plan de mantenimiento. /api/v1/manufacturer_equipment
Campo en TBI Obligatorio Campo en el ERP
Fabricante (Código Interno)
manufacturer_equipment.manufacturer_id
Sí data.manufacturer_id
Segmento del Fabricante (Nombre)
manufacturer_equipment.segments_manufacturer_id
Sí data.segments_manufacturer_id
Modelo del Equipo
manufacturer_equipment.equipment_model_name
Sí data.equipment_model_name
Número de Parte
manufacturer_equipment.part_number
No data.part_number
Garantía de Instalación (días)
manufacturer_equipment.warranty_installation
No data.warranty_installation
Garantía de Compra (días)
manufacturer_equipment.warranty_purchase
No data.warranty_purchase
Cantidad de Uso para Mantenimiento
manufacturer_equipment.maintenance_use_quantity
No data.maintenance_use_quantity
Cantidad de Mantenimientos
manufacturer_equipment.maintenance_quantity
No data.maintenance_quantity
Período de Mantenimiento
manufacturer_equipment.maintenance_period
No data.maintenance_period
Ver un registro de ejemplo
{
  "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"
}

Contactos de Fabricantes

9 registros Los mismos contactos de Fabricantes, en su propia lista. TBI crea un contacto por cada segmento del fabricante. /api/v1/manufacturer_contacts
Campo en TBI Obligatorio Campo en el ERP
Fabricante (Código Interno)
contact.manufacturer_id
Sí data.manufacturer_id
Segmento del Fabricante (Nombre)
contact.segments_manufacturer_id
No data.segments_manufacturer_id
Nombre del Contacto
contact.first_name
No data.first_name
Apellido del Contacto
contact.last_name
No data.last_name
Correo del Contacto
contact.email
No data.email
Cargo del Contacto
contact.title
No data.title
Tipo de Contacto
contact.kind
No data.kind
Teléfono del Contacto
contact.phone.phone_number
No data.phone_number
Código de País del Teléfono del Contacto
contact.phone.international_area_code
No data.international_area_code
Ver un registro de ejemplo
{
  "manufacturer_id": "FAB-001",
  "segments_manufacturer_id": "Hematologia",
  "first_name": "Mariana",
  "last_name": "Albuquerque",
  "email": "[email protected]",
  "title": "Gerente de Contas",
  "kind": "default",
  "phone_number": "1133445577",
  "international_area_code": "55"
}

Repuestos

20 registros Repuestos con costo, precio de venta y stock. Los valores llegan con el formato 1.234,56. /api/v1/spare_parts
Campo en TBI Obligatorio Campo en el ERP
Código Interno
spare_part.internal_code
Sí data.internal_code
Nombre del Repuesto
spare_part.part_name
Sí data.part_name
Código del Fabricante
spare_part.manufacturer_code
Sí data.manufacturer_code
País de Origen
spare_part.source_country
Sí data.source_country
Estado
spare_part.status
No data.status
Fabricante (Código Interno)
spare_part.manufacturer_id
Sí data.manufacturer_id
Segmento del Fabricante (Nombre)
spare_part.segments_manufacturer_id
Sí data.segments_manufacturer_id
Moneda Local
spare_part.local_currency
No data.local_currency
Costo
spare_part.cost
No data.cost
Costo Final
spare_part.final_cost
No data.final_cost
Precio de Venta
spare_part.sales_cost
No data.sales_cost
Cantidad en Stock
spare_part.stock_quantity
No data.stock_quantity
Ver un registro de ejemplo
{
  "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 con direcciones, teléfonos y sucursales en listas, configuradas como grupos repetibles en el mapeo. /api/v1/customers

Grupos repetibles: address en data.address, phones en data.phones, customer_branches en data.customer_branches. Cada elemento de la lista se convierte en un elemento en TBI.

Campo en TBI Obligatorio Campo en el ERP
Razón Social
customer.customer_name
Sí data.customer_name
Nombre Comercial
customer.trade_name
Sí data.trade_name
Identificación Fiscal
customer.tax_id
Sí data.tax_id
Código Interno
customer.internal_code
No data.internal_code
Estado
customer.status
Sí data.status
Código Postal
address.zipcode
Sí data.address.zipcode
Calle
address.street
Sí data.address.street
Número
address.street_number
Sí data.address.street_number
Complemento
address.complement
No data.address.complement
Barrio
address.neighborhood
No data.address.neighborhood
Ciudad
address.city
Sí data.address.city
Estado/Provincia
address.state
Sí data.address.state
País
address.country
No data.address.country
Teléfono Principal
phones.0.phone_number
Sí data.phones.phone_number
Código de País
phones.0.international_area_code
Sí data.phones.international_area_code
Tipo de Teléfono
phones.0.kind
No data.phones.kind
Nombre de la Sucursal
customer_branches.0.branch_name
No data.customer_branches.branch_name
Nombre Comercial de la Sucursal
customer_branches.0.branch_trade_name
No data.customer_branches.branch_trade_name
Identificación Fiscal de la Sucursal
customer_branches.0.tax_id
No data.customer_branches.tax_id
Código Interno de la Sucursal
customer_branches.0.internal_code
No data.customer_branches.internal_code
Tipo de Sucursal
customer_branches.0.kind
No data.customer_branches.kind
Estado de la Sucursal
customer_branches.0.status
No data.customer_branches.status
Ver un registro de ejemplo
{
  "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"
    }
  ]
}

Contactos de Clientes

24 registros Los contactos de cada cliente, vinculados por el código interno del cliente. /api/v1/customer_contacts
Campo en TBI Obligatorio Campo en el ERP
Cliente (Código Interno)
contact.customer_id
Sí data.customer_id
Nombre del Contacto
contact.first_name
No data.first_name
Apellido del Contacto
contact.last_name
No data.last_name
Correo del Contacto
contact.email
No data.email
Cargo del Contacto
contact.title
No data.title
Tipo de Contacto
contact.kind
No data.kind
Teléfono del Contacto
contact.phone.phone_number
No data.phone_number
Código de País del Teléfono del Contacto
contact.phone.international_area_code
No data.international_area_code
Ver un registro de ejemplo
{
  "customer_id": "CLI-0001",
  "first_name": "Ana",
  "last_name": "Ribeiro",
  "email": "[email protected]",
  "title": "Coordenadora do Laboratório",
  "kind": "default",
  "phone_number": "1132145007",
  "international_area_code": "55"
}

Contratos

8 registros Contratos con cliente, vigencia y responsables (por el correo del contacto). Los equipos no van aquí: cada equipo indica su contrato. /api/v1/contracts
Campo en TBI Obligatorio Campo en el ERP
Cliente (ID)
customer_id
Sí data.customer_id
Estado del Contrato
status
Sí data.status
Tipo de Contrato
kind
Sí data.kind
Número de Contrato
contract_number
Sí data.contract_number
Observaciones
observations
No data.observations
Fecha de Inicio
start_date
Sí data.start_date
Fecha de Finalización
end_date
Sí data.end_date
Responsable Interno (ID)
internal_responsibles.0
No data.internal_responsibles.email Una lista de objetos con el correo; TBI lee el primero.
Responsable Externo (ID)
external_responsibles.0
No data.external_responsibles.email Una lista de objetos con el correo; TBI lee el primero.
Equipo del Distribuidor (ID)
distributor_equipment_ids.0
No No enviado No enviado: los contratos se importan antes que los equipos, así que cada equipo indica su contrato.
Ver un registro de ejemplo
{
  "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]"
    }
  ]
}

Adendas de Contrato

8 registros Adendas vinculadas a su contrato por el número de contrato. /api/v1/contract_additions
Campo en TBI Obligatorio Campo en el ERP
Número de Contrato
contract_number
Sí data.contract_number
Número de Adenda
additional_number
Sí data.additional_number
Tipo de Adenda
additional_type
Sí data.additional_type
Descripción
description
Sí data.description
Fecha
date
Sí data.date
Ver un registro de ejemplo
{
  "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"
}

Equipos

15 registros Equipos instalados o en stock. El modelo se vincula por número de parte; el fabricante, el cliente y la sucursal, por código interno; el contrato, por número de contrato. /api/v1/distributor_equipment
Campo en TBI Obligatorio Campo en el ERP
ID
id
No No enviado No enviado: es un ID interno de TBI. El número de serie identifica el equipo.
Número de Serie
serial_number
Sí data.serial_number
Código Interno
internal_code
Sí data.internal_code
Estado
status
Sí data.status
ID del Equipo del Fabricante
manufacturer_equipment_id
Sí data.manufacturer_equipment_id
ID del Fabricante
manufacturer_id
Sí data.manufacturer_id
ID del Cliente
customer_id
No data.customer_id
ID de la Sucursal del Cliente
customer_branch_id
No data.customer_branch_id
ID del Segmento del Fabricante
segments_manufacturer_id
Sí data.segments_manufacturer_id
ID del Distribuidor
distributor_id
Sí data.distributor_id TBI siempre usa el distribuidor de la propia integración.
ID de la Dirección de Origen
origin_address_id
Sí data.origin_address_id Enviado vacío: TBI usa la dirección predeterminada del distribuidor.
Año de Fabricación
manufacturing_year
No data.manufacturing_year
Mes de Fabricación
manufacturing_month
No data.manufacturing_month
Día de Fabricación
manufacturing_day
No data.manufacturing_day
Número de Factura
invoice_number
Sí data.invoice_number
Fecha de Adquisición
acquisition_date
Sí data.acquisition_date
Fecha de Instalación
installation_date
No data.installation_date
Versión del Software
software_version
No data.software_version
Activo Fijo
fixed_asset
No data.fixed_asset
SLA sin Cobertura
sla_uncovered_service
Sí data.sla_uncovered_service
Periférico Principal
peripherals.0
No data.peripherals.serial_number Una lista de objetos con el número de serie; TBI lee el primero. El vínculo lo hace la importación de Periféricos, que se ejecuta después.
Contrato (número)Campo extra del ERP — data.contract_number El contrato en el que está instalado el equipo. El mapeo de TBI aún no tiene un campo de contrato para equipos, así que TBI no lee este valor.
Ver un registro de ejemplo
{
  "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 equipo, vinculados por el número de serie del equipo. /api/v1/peripherals
Campo en TBI Obligatorio Campo en el ERP
ID del Distribuidor
distributor_id
Sí data.distributor_id TBI siempre usa el distribuidor de la propia integración.
ID de la Dirección de Origen
origin_address_id
No data.origin_address_id Enviado vacío: TBI usa la dirección predeterminada del distribuidor.
ID del Equipo del Distribuidor
distributor_equipment_id
No data.distributor_equipment_id
Número de Serie
serial_number
No data.serial_number
Número de Parte
part_number
No data.part_number
Número de Factura
invoice_number
Sí data.invoice_number
Fecha de Adquisición
acquisition_date
Sí data.acquisition_date
Marca
brand_peripheral
Sí data.brand_peripheral
Modelo
model_peripheral
Sí data.model_peripheral
Tipo
type_peripheral
Sí data.type_peripheral
Período de Garantía
warranty_period
Sí data.warranty_period
Fin de la Garantía
end_of_warranty
Sí data.end_of_warranty
Estado
status
No data.status
Ver un registro de ejemplo
{
  "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"
}

Escenarios para presentar

La mayoría de los datos entra sin problemas. Algunos registros se armaron a propósito para mostrar qué pasa cuando algo requiere atención.

  • Cliente con dos direcciones

    La Policlínica Litoral Norte (CLI-0007) tiene dos direcciones. TBI no elige por sí solo la dirección de atención: el cliente va a la Zona de Transición para que alguien la elija.

  • Contacto sin cliente

    Los dos contactos de CLI-0007 quedan en revisión como cliente no encontrado hasta que se apruebe el cliente. Es el mismo camino que cualquier vínculo que no existe en TBI.

  • Equipos sin cliente

    Tres equipos no están en ningún cliente: dos en stock (no asignados) y uno en mantenimiento.

  • Repuestos sin stock y un contrato vencido

    Dos repuestos llegan no disponibles, con stock cero, y el contrato CTR-2025-0007 llega inactivo, con su vigencia terminada.