Propriedades Extras

O mecanismo de Propriedades Extras do RUB permite estender as entidades nativas do sistema com atributos e metadados customizados, sem a necessidade de alterações no esquema fixo do banco de dados relacional ou no código-fonte da aplicação.

Através desse recurso, informações comerciais, operacionais, fiscais e logísticas específicas de cada rede varejista (como indicação de item de alta relevância, curva ABC, temperatura de conservação, tipo de picking ou e-mail de fornecedor) são integradas, validadas e propagadas tanto para as telas do portal web quanto para os coletores de dados móveis no chão de loja.

Flexibilidade sem Acoplamento:
As propriedades extras funcionam como metadados dinâmicos fortemente tipados. Uma vez definida a propriedade no RUB, os diferentes mecanismos de integração — seja via API REST (payloads JSON ou arquivos CSV massivos) ou por banco de dados (tabelas intermediárias de interface) — passam a aceitar, validar e persistir seus valores automaticamente.

Como Funciona o Mecanismo

O funcionamento das propriedades extras é dividido em duas etapas fundamentais:

  1. Definição do Metadado: O RUB precisa conhecer previamente a existência da propriedade, em qual entidade ela se aplica, qual o seu tipo de dado e onde ela deve ser exibida (portal web, relatórios ou dispositivos móveis).
  2. Atribuição dos Valores: Durante a integração de dados (via API REST ou importação em lote), os sistemas de retaguarda (ERP) enviam os valores correspondentes vinculados a cada registro da entidade.
graph TD
    subgraph Definição do Metadado
        ADM["Administração / API de Carga<br/>(Cadastro da Propriedade)"] -->|Define entidade, tipo e visibilidade| RUB_PROP["MetaProperty no RUB"]
    end
    subgraph Integração Operacional
        ERP["ERP / Retaguarda"] -->|" properties: { chave: valor } "| INTF["Endpoints de Integração<br/>(Produto, Fornecedor, etc.)"]
        INTF -->|Validação de Tipo e Persistência| DB["Tabelas de Propriedade<br/>(ex: PRODUTO_PROPRIEDADE)"]
    end
    RUB_PROP -.->|Regras e Tipagem| INTF
    DB --> WEB["Portal Web / Relatórios<br/>(exibe_list)"]
    DB --> MOB["Coletores Móveis<br/>(exibe_mobile)"]
    DB --> REGRAS["Motores de Prioridade<br/>e Regras de Tarefa"]

Tipos de Propriedades Suportados

Cada propriedade extra possui um tipo de dado específico. O RUB valida a conformidade dos dados recebidos durante a integração antes de persistir o valor na coluna correspondente da tabela de propriedades:

TipoCódigo InternoTipo ArmazenadoDescrição e Regras de ValidaçãoFormato de Exemplo
TEXT0String (TEXTO)Texto alfanumérico livre. Aceita qualquer cadeia de caracteres."SETOR_REFRIGERADOS"
DECIMAL1Numérico (VALOR)Número fracionário/ponto flutuante. Aceita formatação numérica padrão ou delimitador monetário."12.50" ou "12,50"
INTEGER2Inteiro (INTEIRO)Número inteiro positivo ou negativo. Utilizado para contadores, códigos e agrupamentos numéricos."42"
BOOLEAN3Booleano (BOOLEAN)Valor booleano (verdadeiro/falso). Aceita "true", "false", "1", "0", "sim"/"nao", "yes"/"no"."true" ou "1"
TIMESTAMP4Data e Hora (DATA_HORA)Carimbo de data e hora no formato estrito yyyy-MM-dd HH:mm:ss."2026-09-04 14:30:00"
ESTOQUE5Inteiro (INTEIRO)Quantidade de estoque em unidades inteiras. Validação numérica de inteiros."150"
IMAGEM6String (TEXTO)URL ou caminho relativo da imagem/foto associada ao registro."https://cdn.exemplo.com/img.jpg"
MOEDA7Numérico (VALOR)Valor financeiro monetário. Tratado e exibido com máscaras monetárias da aplicação."199.90"

Suporte nos Mecanismos de Integração

O suporte a propriedades extras não é restrito às integrações via API REST (seja em payloads JSON 1:1 ou via arquivos CSV massivos): o mecanismo de integração por banco de dados também respeita integralmente as propriedades extras.

Independentemente de os dados serem alimentados por chamadas REST ou por tabelas intermediárias de banco de dados do sistema de integração, o modelo conceitual de propriedades extras permanece idêntico, validando a tipagem definida e propagando os valores atribuídos para o portal web, coletores móveis e motores de regras.

Impacto Operacional no RUB

As propriedades extras cadastradas não servem apenas para armazenamento passivo; elas afetam ativamente o comportamento da aplicação:

  • Exibição em Listas Web (Exibe nas Listas): A propriedade torna-se uma coluna configurável em telas de consulta e relatórios nas telas web do RUB, permitindo ordenação e visualização direta pelos operadores.
  • Exibição no Coletor Móvel (Exibe no Mobile): O dado é transmitido para os dispositivos portáteis dos operadores em campo, facilitando a tomada de decisão no chão de loja durante auditorias e conferências.
  • Controle de Acesso por Permissão (Permissão): O RUB pode gerar automaticamente papéis de segurança específicos no controle de acesso, restringindo a visualização ou edição da propriedade apenas a usuários autorizados.
  • Critérios de Prioridade Operacional: Motores de regras internas (como CriterioPrioridadePropriedadeExtra) utilizam valores booleanos ou numéricos para alterar a prioridade na fila de reposição e auditoria de gôndola.

Cenários de Cadastro

1. Cadastro da Definição da Propriedade (Metadado)

Antes de enviar valores nas entidades integradas, a propriedade deve ser registrada no RUB. Isso pode ser feito de duas formas:

A. Pelo Portal Web do RUB

Acesse o menu Configuração > Avançado > Propriedades, selecione a entidade desejada e informe:

  • Identificador (Propriedade): Nome do campo técnico (ex.: curva_abc, temperatura_min). Sempre convertido para letras minúsculas.
  • Nome de Exibição: Título apresentado nas telas (ex.: Curva ABC).
  • Tipo de Dado: Selecione um dos tipos suportados (Texto, Decimal, Inteiro, Booleano, etc.).
  • Exibir na Lista / Mobile: Marque para exibir nas tabelas web e/ou nos coletores portáteis.
  • Sobrescrever na Interface: Permite que a integração atualize o valor quando enviado.

2. Associação de Valores via API REST (JSON 1:1)

Nas integrações via API REST com payload JSON, os valores das propriedades extras são enviados dentro do objeto properties (dicionário de chave/valor string) no schema da entidade correspondente:

{
  "code": "1001",
  "properties": {
    "campo_customizado_1": "Valor Exemplo",
    "campo_customizado_2": "true"
  }
}

3. Associação de Valores via CSV Massivo

Na importação em lote via arquivos CSV, colunas não pertencentes ao catálogo padrão de campos da entidade são interpretadas como propriedades extras, desde que a propriedade já esteja cadastrada na entidade:

"code";"nome_padrao";"campo_customizado_1";"campo_customizado_2"
"1001";"Registro Exemplo";"Valor Exemplo";"true"

Regras de Sobrescrita e Sincronização

Ao integrar dados com propriedades extras, atente-se às regras do protocolo HTTP utilizado:

  • Método POST (Incremental): Insere ou atualiza os campos e propriedades enviados no payload. Quaisquer propriedades já existentes no registro que não forem mencionadas na requisição permanecem intactas.
  • Método PUT (Sincronização Total): O registro é sincronizado estritamente com o payload enviado. Quaisquer propriedades extras previamente gravadas que forem omitidas na requisição serão removidas.
  • Flag sobrescreve: Quando a definição da propriedade extra estiver configurada com sobrescreve = false, as rotinas de interface de carga respeitam a trava manual e não substituem o valor caso ele tenha sido manipulado manualmente no sistema.