🗄️ Estoques

Tabela principal de estoques do sistema OndeVou.

📋 12 colunas 🔗 2 relacionamentos 🎮 7 controles 👁️ view_estoques 🔑 PRIMARY KEY 🎮 1 ações externas

📋 Estrutura da Tabela

A tabela estoques possui 12 colunas.

🔑 Id PRIMARY KEY
🔑 PRIMARY KEY🔒 Somente leitura💾 Grava
Campo Tabela id
Campo VIEW / Exibido id_estoque 🔹 Alias na VIEW: id_estoque
Tipo number (readonly - PRIMARY KEY)
Data Table estoques
Descrição

Campo id

🔑 PRIMARY KEY

Campo na tabela: id

Alias na VIEW: id_estoque

Readonly: ✅ Gerado automaticamente pelo sistema

📦 produtos: Consumo de estoque Estoque
📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou id
  • Alias OndeVou id_estoque
  • Tabela OndeVou estoques
🎮 Controls Acao
  • {
      "produtos": {
        "acao": "setEstoquesConsumoFromTableEstoques",
        "messagem": "Formulação do estoque"
      }
    }
  • Alias: id_estoque
  • Tabelas: estoques ✅
  • ControlsAcao: ✓
  • 🔑 PRIMARY KEY
  • VIEW: id_estoque
📋 Participante
🔒 Somente leitura💾 Grava
Campo Tabela participante
Campo VIEW / Exibido participante
Tipo number
Data Table estoques
Descrição

Campo participante

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
Validacao
  • Somente leitura 🔒 Sim
⚙️ Comportamento
  • Valor padrão 1
📊 Dados
  • Campo OndeVou participante
  • Tabela OndeVou estoques
  • Tabelas: estoques ✅
  • Value: 1
📋 Data estoque
✅ Obrigatório💾 Grava
Campo Tabela data_estoque
Campo VIEW / Exibido data_estoque
Tipo date
Data Table estoques
Descrição

Campo data estoque

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados date
  • Tipo de input date
Validacao
  • Obrigatório ✅ Sim
📊 Dados
  • Campo OndeVou data_estoque
  • Tabela OndeVou estoques
🔍 Formsearch
  • {
      "required": ""
    }
  • Tabelas: estoques ✅
  • FormSearch: ✓
📋 Implantação
💾 Grava
Campo Tabela implantacao
Campo VIEW / Exibido implantacao
Tipo text
Data Table estoques
Descrição

Campo implantação

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados text
  • Tipo de input checkbox
  • Checkbox options {"Sim":["S","N"]}
📊 Dados
  • Campo OndeVou implantacao
  • Tabela OndeVou estoques
  • WHERE verdadeiro implantacao=`S`
🔍 Formsearch
  • {
      "required": ""
    }
  • Tabelas: estoques ✅
  • Checkbox: configurado
  • FormSearch: ✓
📋 Código
📋 Somente view
Campo Tabela codigo_erplinux
Campo VIEW / Exibido codigo_erplinux_produto ⚠️ (somente view)
Tipo text
Data Table produtos
Descrição

Campo código

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados text
📊 Dados
  • Campo OndeVou codigo_erplinux
  • Alias OndeVou codigo_erplinux_produto
  • Campo ErpLinux codigo
  • Tabela OndeVou produtos
  • Alias: codigo_erplinux_produto
  • Tabelas: produtos (só view)
📋 Produto
✅ Obrigatório💾 Grava🔗 getdata
Campo Tabela id_produto
Campo VIEW / Exibido descricao_produto (ID: id_produto)
Tipo number (getdata)
Data Table estoques
Descrição

Campo produto

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
Validacao
  • Obrigatório ✅ Sim
📊 Dados
  • Campo OndeVou descricao_produto
  • ID OndeVou id_produto
  • Tabela OndeVou estoques
🔗 Getdata
  • {
      "view": "view_produtos",
      "data": "view_produtos",
      "text-empty-search": "sim",
      "campo-data-id": "id_produto",
      "campo-data-value-input": "codigo_erplinux_produto,descricao_produto",
      "campo-data-input-select-view": "codigo_erplinux_produto,descricao_produto,nome_unidade_venda",
      "query": {
        "select": "* from view_produtos",
        "where": {
          "and": {
            "texto_digitado": {
              "left": "(unaccent(LOWER(concat(id_produto,` `,codigo_erplinux_produto,` `,descricao_produto))) ilike `%",
              "right": "%`) and (participante=`1`)"
            }
          }
        },
        "order": "id_produto desc"
      }
    }
🔍 Formsearch
  • {
      "required": ""
    }
  • ID: id_produto
  • Tabelas: estoques ✅
  • FormSearch: ✓
📋 Quantidade
✅ Obrigatório💾 Grava
Campo Tabela quantidade
Campo VIEW / Exibido quantidade
Tipo number
Data Table estoques
Descrição

Campo quantidade

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
Validacao
  • Obrigatório ✅ Sim
📊 Dados
  • Campo OndeVou quantidade
  • Tabela OndeVou estoques
  • Tabelas: estoques ✅
📋 Peso total
💾 Grava
Campo Tabela peso_total
Campo VIEW / Exibido peso_total
Tipo number
Data Table estoques
Descrição

Campo peso total

📋 Todos os Atributos
Eventos
  • Tecla solta setInputFormatNumber(this,`3`) 📌 setInputFormatNumber
🎨 Formatacao
  • Tipo de dados number
📊 Dados
  • Campo OndeVou peso_total
  • Tabela OndeVou estoques
  • Tabelas: estoques ✅
  • Eventos: keyup
📋 Peso unitario
💾 Grava
Campo Tabela peso_unitario
Campo VIEW / Exibido peso_unitario
Tipo number
Data Table estoques
Descrição

Campo peso unitario

📋 Todos os Atributos
Eventos
  • Tecla solta setInputFormatNumber(this,`3`) 📌 setInputFormatNumber
🎨 Formatacao
  • Tipo de dados number
📊 Dados
  • Campo OndeVou peso_unitario
  • Tabela OndeVou estoques
  • Tabelas: estoques ✅
  • Eventos: keyup
📋 Peso cadastro
💾 Grava
Campo Tabela peso_cadastro
Campo VIEW / Exibido peso_cadastro
Tipo number
Data Table estoques
Descrição

Campo peso cadastro

📋 Todos os Atributos
Eventos
  • Tecla solta setInputFormatNumber(this,`3`) 📌 setInputFormatNumber
🎨 Formatacao
  • Tipo de dados number
📊 Dados
  • Campo OndeVou peso_cadastro
  • Tabela OndeVou estoques
  • Tabelas: estoques ✅
  • Eventos: keyup
📋 Formula
💾 Grava🔗 getdata
Campo Tabela id_formula
Campo VIEW / Exibido nome_formula (ID: id_formula)
Tipo number (getdata)
Data Table estoques
Descrição

Campo formula

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
📊 Dados
  • Campo OndeVou nome_formula
  • ID OndeVou id_formula
  • Tabela OndeVou estoques
🔗 Getdata
  • {
      "view": "view_produtos_formulas",
      "data": "view_produtos_formulas",
      "text-empty-search": "sim",
      "campo-data-id": "id_formula",
      "campo-data-value-input": "nome_formula",
      "campo-data-input-select-view": "codigo_erplinux_produto,descricao_produto,codigo_erplinux_formula,nome_formula",
      "query": {
        "select": "* from view_produtos_formulas",
        "where": {
          "and": {
            "texto_digitado": {
              "left": "(unaccent(LOWER(concat(id_produto,` `,codigo_erplinux_produto,` `,descricao_produto))) ilike `%",
              "right": "%`) and (participante=`1`)"
            }
          }
        }
      }
    }
  • ID: id_formula
  • Tabelas: estoques ✅
📋 Tipo
📋 Somente view
Campo Tabela id_tipo
Campo VIEW / Exibido nome_tipo ⚠️ (somente view)
Tipo number
Data Table view_estoques
Descrição

Campo tipo

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
📊 Dados
  • Campo OndeVou nome_tipo
  • ID OndeVou id_tipo
  • Tabela OndeVou view_estoques
  • ID: id_tipo
  • Tabelas: view_estoques (só view)
📌 Legenda: 🔑 PRIMARY KEY ✅ Obrigatório 🔒 Somente leitura 👁️ Oculto 💾 Grava 📋 Somente view 🔗 getdata 📝 putdata 🔢 AutoInc 📱 QR Code 📋 Auditoria 📱 GetCollector

🔗 Relacionamentos

Tabelas relacionadas via getdata.

produtos · Principal: Produto 📄
produtos_formulas · Auxiliar: Formula 📄

🔍 Filtros (formsearch)

Campos disponíveis para filtragem na busca.

Nenhum filtro disponível.

🎮 Controles Disponíveis

Ações que o usuário pode realizar na tabela.

📂 Controle
🔘 Add add 🔘 Copy copy 🔘 Edit edit 💾 Salvar save 🔘 Delete delete 🔘 Remove remove
📂 Documento
📊 Produtos produtos

👁️ View Associada

Nome: view_estoques

🔑 PRIMARY KEY - Campo Id

O campo Id é a chave primária da tabela estoques.

Configuração

'Id': {
    'input': {
        'readonly': 'readonly',
        'data-type-ondevou': 'number',
        'data-field-ondevou': 'id',
        "data-field-alias-ondevou": "id_estoque",
        'data-table-ondevou': 'estoques'
    }
}

Comportamento

  • 🔒 Readonly: Campo não editável
  • 📊 Tipo: number
  • 🔹 Alias na VIEW: id_estoque

🎮 Controls-Ação

📂 Estoque
produtos: Consumo de estoque setEstoquesConsumoFromTableEstoques

💾 JSON da Tabela

Estrutura completa em JSON para integração com APIs e IAs.

code Clique para ver o JSON completo 8 KB
{
  "table-id": "estoques",
  "data-table-ondevou": "estoques",
  "table-class": "highlight",
  "controls": [
    "add",
    "produtos",
    "copy",
    "edit",
    "save",
    "delete",
    "remove"
  ],
  "html": {
    "div": {
      "before": "",
      "after": ""
    }
  },
  "headers": {
    "Id": {
      "width": "7%"
    },
    "Participante": {
      "width": "8%"
    },
    "Data estoque": {
      "width": "13%"
    },
    "Implantação": {
      "width": "8%"
    },
    "Código": {
      "width": "10%"
    },
    "Produto": {
      "width": "20%"
    },
    "Quantidade": {
      "align": "right",
      "width": "7%"
    },
    "Peso total": {
      "align": "right",
      "width": "7%"
    },
    "Peso unitario": {
      "align": "right",
      "width": "7%"
    },
    "Peso cadastro": {
      "align": "right",
      "width": "7%"
    },
    "Formula": {
      "width": "30%"
    },
    "Tipo": {
      "width": "10%"
    }
  },
  "columns": {
    "Id": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-field-ondevou": "id",
        "data-field-alias-ondevou": "id_estoque",
        "data-table-ondevou": "estoques",
        "controls-acao": {
          "produtos": {
            "acao": "setEstoquesConsumoFromTableEstoques",
            "messagem": "Formulação do estoque"
          }
        }
      }
    },
    "Participante": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "value": "1",
        "data-field-ondevou": "participante",
        "data-table-ondevou": "estoques"
      }
    },
    "Data estoque": {
      "input": {
        "required": "required",
        "type": "date",
        "data-type-ondevou": "date",
        "data-field-ondevou": "data_estoque",
        "data-table-ondevou": "estoques",
        "formsearch": {
          "required": ""
        }
      }
    },
    "Implantação": {
      "input": {
        "data-type-ondevou": "text",
        "type": "checkbox",
        "checkbox-options": "{\"Sim\":[\"S\",\"N\"]}",
        "data-field-ondevou": "implantacao",
        "data-table-ondevou": "estoques",
        "data-where-true": "implantacao=`S`",
        "formsearch": {
          "required": ""
        }
      }
    },
    "Código": {
      "input": {
        "data-type-ondevou": "text",
        "data-field-ondevou": "codigo_erplinux",
        "data-field-alias-ondevou": "codigo_erplinux_produto",
        "data-field-erplinux": "codigo",
        "data-table-ondevou": "produtos"
      }
    },
    "Produto": {
      "input": {
        "required": "required",
        "data-type-ondevou": "number",
        "data-id-field-ondevou": "id_produto",
        "data-field-ondevou": "descricao_produto",
        "data-table-ondevou": "estoques",
        "getdata": "{\"view\":\"view_produtos\",\"data\":\"view_produtos\",\"text-empty-search\":\"sim\",\"campo-data-id\":\"id_produto\",\"campo-data-value-input\":\"codigo_erplinux_produto,descricao_produto\",\"campo-data-input-select-view\":\"codigo_erplinux_produto,descricao_produto,nome_unidade_venda\",\"query\":{\"select\":\"* from view_produtos\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(concat(id_produto,` `,codigo_erplinux_produto,` `,descricao_produto))) ilike `%\",\"right\":\"%`) and (participante=`1`)\"}}},\"order\":\"id_produto desc\"}}",
        "formsearch": {
          "required": ""
        }
      }
    },
    "Quantidade": {
      "input": {
        "required": "required",
        "data-type-ondevou": "number",
        "data-field-ondevou": "quantidade",
        "data-table-ondevou": "estoques"
      }
    },
    "Peso total": {
      "input": {
        "data-type-ondevou": "number",
        "data-field-ondevou": "peso_total",
        "onkeyup": "setInputFormatNumber(this,`3`)",
        "data-table-ondevou": "estoques"
      }
    },
    "Peso unitario": {
      "input": {
        "data-type-ondevou": "number",
        "data-field-ondevou": "peso_unitario",
        "onkeyup": "setInputFormatNumber(this,`3`)",
        "data-table-ondevou": "estoques"
      }
    },
    "Peso cadastro": {
      "input": {
        "data-type-ondevou": "number",
        "data-field-ondevou": "peso_cadastro",
        "onkeyup": "setInputFormatNumber(this,`3`)",
        "data-table-ondevou": "estoques"
      }
    },
    "Formula": {
      "input": {
        "data-type-ondevou": "number",
        "data-id-field-ondevou": "id_formula",
        "data-field-ondevou": "nome_formula",
        "data-table-ondevou": "estoques",
        "getdata": "{\"view\":\"view_produtos_formulas\",\"data\":\"view_produtos_formulas\",\"text-empty-search\":\"sim\",\"campo-data-id\":\"id_formula\",\"campo-data-value-input\":\"nome_formula\",\"campo-data-input-select-view\":\"codigo_erplinux_produto,descricao_produto,codigo_erplinux_formula,nome_formula\",\"query\":{\"select\":\"* from view_produtos_formulas\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(concat(id_produto,` `,codigo_erplinux_produto,` `,descricao_produto))) ilike `%\",\"right\":\"%`) and (participante=`1`)\"}}}}}"
      }
    },
    "Tipo": {
      "input": {
        "data-type-ondevou": "number",
        "data-id-field-ondevou": "id_tipo",
        "data-field-ondevou": "nome_tipo",
        "data-table-ondevou": "view_estoques"
      }
    }
  },
  "formsearch": {
    "data-table-ondevou": "view_estoques",
    "data-where-limit": "N",
    "data-where-fixed": "participante=`1`",
    "data-where-order": "order by id_estoque asc",
    "input": {}
  },
  "graficos": {
    "1": {
      "data": {
        "Quantidade": {
          "type": "bar",
          "name": "Qtd",
          "x": "data_estoque",
          "y": "quantidade"
        },
        "Peso total": {
          "type": "bar",
          "name": "Peso",
          "x": "data_estoque",
          "y": "peso_total"
        }
      },
      "layout": {
        "title": {
          "text": "Estoque por data (Qtd e peso)"
        }
      }
    },
    "2": {
      "data": {
        "Quantidade": {
          "type": "pie",
          "name": "Peso",
          "x": "data_estoque",
          "y": "peso_total"
        }
      },
      "layout": {
        "title": {
          "text": "Estoque por data (Peso)"
        }
      }
    },
    "3": {
      "data": {
        "Quantidade": {
          "type": "bar",
          "name": "Qtd",
          "x": "descricao_produto",
          "y": "quantidade"
        },
        "Peso total": {
          "type": "bar",
          "name": "Peso",
          "x": "descricao_produto",
          "y": "peso_total"
        }
      },
      "layout": {
        "title": {
          "text": "Estoque por produto (Qtd e Peso)"
        }
      }
    },
    "4": {
      "data": {
        "Quantidade": {
          "type": "pie",
          "name": "Peso",
          "x": "descricao_produto",
          "y": "peso_total"
        }
      },
      "layout": {
        "title": {
          "text": "Estoque por produto (Peso)"
        }
      }
    },
    "5": {
      "data": {
        "Quantidade": {
          "type": "bar",
          "name": "Qtd",
          "x": "nome_formula",
          "y": "quantidade"
        },
        "Peso total": {
          "type": "bar",
          "name": "Peso",
          "x": "nome_formula",
          "y": "peso_total"
        }
      },
      "layout": {
        "title": {
          "text": "Estoque por formula (Qtd e peso)"
        }
      }
    },
    "6": {
      "data": {
        "Quantidade": {
          "type": "pie",
          "name": "Peso",
          "x": "nome_formula",
          "y": "peso_total"
        }
      },
      "layout": {
        "title": {
          "text": "Estoque por formula (Peso)"
        }
      }
    },
    "7": {
      "data": {
        "Quantidade": {
          "type": "bar",
          "name": "Qtd",
          "x": "nome_tipo",
          "y": "quantidade"
        },
        "Peso total": {
          "type": "bar",
          "name": "Peso",
          "x": "nome_tipo",
          "y": "peso_total"
        }
      },
      "layout": {
        "title": {
          "text": "Estoque por tipo (Qtd e peso)"
        }
      }
    },
    "8": {
      "data": {
        "Quantidade": {
          "type": "pie",
          "name": "Peso",
          "x": "nome_tipo",
          "y": "peso_total"
        }
      },
      "layout": {
        "title": {
          "text": "Estoque por tipo (Peso)"
        }
      }
    }
  },
  "url_documentacao": "/docs/ondevou-db-estoques.html",
  "nome_tabela": "estoques"
}

📝 SQL CREATE TABLE - Estrutura Completa

Comando SQL COMPLETO para criar a tabela estoques no PostgreSQL. Esta estrutura foi extraída DIRETAMENTE do banco de dados.

🏗️ Estrutura Completa

📋 12 colunas 🔗 2 constraints 📑 7 índices ⚡ 0 triggers
code Clique para ver o SQL completo ✅ COMPLETO
-- ============================================================
-- ESTRUTURA COMPLETA DA TABELA estoques
-- Fonte: PostgreSQL - 12/08/2026 10:24:20
-- ============================================================

CREATE TABLE public.estoques (
    id integer NOT NULL DEFAULT nextval('estoques_id_seq'::regclass),
    participante integer,
    id_produto integer,
    id_formula integer,
    quantidade numeric(25, 10),
    peso_total numeric(25, 10),
    peso_unitario numeric(25, 10),
    peso_cadastro numeric(25, 10),
    data timestamp DEFAULT now(),
    data_estoque date,
    id_membro integer,
    implantacao varchar(1),
    CONSTRAINT estoques_pkey PRIMARY KEY (id),
    CONSTRAINT 2200_221314_1_not_null CHECK (id IS NOT NULL)
);

-- ============================================================
-- ÍNDICES
-- ============================================================
CREATE UNIQUE INDEX estoques_pk_id ON public.estoques USING btree (id);
CREATE INDEX idx_estoques_id_formula ON public.estoques USING btree (id_formula);
CREATE INDEX idx_estoques_id_membro ON public.estoques USING btree (id_membro);
CREATE INDEX idx_estoques_id_produto ON public.estoques USING btree (id_produto);
CREATE INDEX idx_estoques_p_data ON public.estoques USING btree (participante, data DESC);
CREATE INDEX idx_estoques_p_id ON public.estoques USING btree (participante, id DESC);
CREATE INDEX idx_estoques_participante ON public.estoques USING btree (participante);

SQL extraído DIRETAMENTE do banco de dados

📊 Comparação: JSON Config vs Banco Real

Verifique se a configuração JSON está sincronizada com a estrutura do banco de dados.

Campo Tipo (JSON) Tipo (Banco) Status
codigo_erplinux text - ⚠️ Só no JSON
data - timestamp without time zone ❌ Só no banco
data_estoque date date ✅ OK
descricao_produto number - ⚠️ Só no JSON
id number integer ✅ OK
id_formula - integer ❌ Só no banco
id_membro - integer ❌ Só no banco
id_produto - integer ❌ Só no banco
implantacao text character varying ✅ OK
nome_formula number - ⚠️ Só no JSON
nome_tipo number - ⚠️ Só no JSON
participante number integer ✅ OK
peso_cadastro number numeric ✅ OK
peso_total number numeric ✅ OK
peso_unitario number numeric ✅ OK
quantidade number numeric ✅ OK

💡 Dica: Use esta comparação para garantir que a configuração JSON está atualizada com a estrutura do banco.
📌 Legenda: ✅ OK = presente em ambos | ⚠️ Só no JSON = pode ser um campo virtual | ❌ Só no banco = falta adicionar ao JSON

💡 Como Popular a Tabela

Exemplo prático usando o padrão OndeVou.

📋 Fluxo completo padrão

// 1. Buscar dados com getData
var dados_retorno = getData({
    'query': `SELECT * FROM view_estoques WHERE participante = ${globais.dados_fixo.participante}`,
    'view': 'view_estoques'
});

// 2. Definir painel e slide
var painel = globais.dados_pagina.visivel.painel;
var slide = globais.dados_pagina.visivel.slide;

// 3. Encontrar a tabela no DOM
var idTable = getIdTableFromSlide({ 'table-id': 'estoques' });

// 4. Resetar a tabela
setTableControlsReset(idTable);

// 5. Popular a tabela
setTableControlsSetValue(idTable, dados_retorno);

🏆 Propriedade Intelectual

OndeVou.com Marca Registrada

Marca Registrada

OndeVou.com®

Propriedade Intelectual Assegurada

Processo INPI:
908765967
Titular:
ONDEVOU.COM TECNOLOGIA LTDA
CNPJ:
17.058.605/0001-36
Classificação:
Classe 42 - Serviços de TI