🗄️ Cadastre seus produtos em segundos com XML e rastreie com QR Code

Agilize o cadastro de seus produtos com a importação de dados em formato XML e acompanhe todas as movimentações através da leitura de QR Code. Nossa solução oferece uma gestão completa e eficiente, garantindo a rastreabilidade de seus produtos em toda a cadeia de suprimentos.

📋 36 colunas 🔗 8 relacionamentos 🎮 10 controles 👁️ view_produtos 📝 5 com putdata 📱 QR Code 🔑 PRIMARY KEY 🎮 2 ações externas 📱 GetCollector

📋 Estrutura da Tabela

A tabela produtos possui 36 colunas.

🔑 Id PRIMARY KEY
🔑 PRIMARY KEY🔒 Somente leitura💾 Grava📋 Auditoria
Campo Tabela id
Campo VIEW / Exibido id_produto 🔹 Alias na VIEW: id_produto
Tipo number (readonly - PRIMARY KEY)
Data Table produtos,auditor_produtos 📋 Grava em auditoria
Descrição

Campo id

🔑 PRIMARY KEY

Campo na tabela: id

Alias na VIEW: id_produto

Readonly: ✅ Gerado automaticamente pelo sistema

Grava em auditoria: ✅ Sim

Formsearch: ✅ Permite busca avançada

🧪 formulas: Fórmulas do produto Estoque
📱 qrcode: Gerar QR Code Documento
📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
✅ Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou id
  • Alias OndeVou id_produto
  • Tabela OndeVou produtos,auditor_produtos
🔍 Formsearch
  • {
      "required": ""
    }
🎮 Controls Acao
  • {
      "formulas": {
        "acao": "setFormulasFromTableProdutos",
        "messagem": "Formulas do produto"
      },
      "qrcode": {
        "acao": "getQRcode",
        "messagem": "Gerar QR Code"
      }
    }
  • Alias: id_produto
  • Tabelas: produtos, auditor_produtos ✅
  • Getpage: ✓
  • ControlsAcao: ✓
  • FormSearch: ✓
  • 🔑 PRIMARY KEY
  • VIEW: id_produto
  • 📋 Auditoria
  • 📋 FormSearch
📋 qrcode
🔒 Somente leitura📋 Somente view📱 QRCode: Produto
Campo Tabela qrcode
Campo VIEW / Exibido qrcode ⚠️ (somente view)
Tipo canvas (QR Code: Produto)
Data Table qrcode
Descrição

Campo qrcode

📱 QR Code

Tipo: Produto (pr)

Texto: Campos —

Formato: ondevou_pr_{participante}_{id}

Uso: Identificação física do registro. Clique para imprimir.

Geração: Automática ao salvar o registro. Biblioteca QRious.

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados text
  • Tipo de input canvas
✅ Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou qrcode
  • Tabela OndeVou qrcode
  • Tabelas: qrcode (só view)
  • QRCode: Produto
📋 Find
📋 Somente view🔗 getdata
Campo Tabela find
Campo VIEW / Exibido find ⚠️ (somente view)
Tipo text
Data Table view_produtos
Descrição

Campo find

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados text
  • Classe CSS table-input-find
📊 Dados
  • Campo OndeVou find
  • Tabela OndeVou view_produtos
🔗 Getdata
  • {
      "view": "view_produtos",
      "data": "view_produtos",
      "text-empty-search": "sim",
      "trigger": "setTableGetFind()",
      "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"
      }
    }
  • Tabelas: view_produtos (só view)
📋 Seq
🔒 Somente leitura📋 Somente view🔢 AutoInc
Campo Tabela contagem_linha
Campo VIEW / Exibido contagem_linha ⚠️ (somente view)
Tipo text
Data Table view_produtos
Descrição

Campo seq

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados text
✅ Validacao
  • Somente leitura 🔒 Sim
⚙️ Comportamento
  • Auto incremento ✅ Sim
📊 Dados
  • Campo OndeVou contagem_linha
  • Tabela OndeVou view_produtos
  • Tabelas: view_produtos (só view)
  • AutoInc: ✓
📋 Participante
✅ Obrigatório🔒 Somente leitura💾 Grava
Campo Tabela participante
Campo VIEW / Exibido participante
Tipo number
Data Table produtos
Descrição

Campo participante

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

Campo código erplinux

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados text
📊 Dados
  • Campo OndeVou codigo_erplinux
  • Alias OndeVou codigo_erplinux_produto
  • Campo ErpLinux codigo
  • Tabela OndeVou produtos
🔍 Formsearch
  • {
      "required": ""
    }
  • Alias: codigo_erplinux_produto
  • Tabelas: produtos ✅
  • FormSearch: ✓
📋 Descrição
✅ Obrigatório💾 Grava
Campo Tabela descricao
Campo VIEW / Exibido descricao_produto
Tipo text
Data Table produtos
Descrição

Campo descrição

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados text
✅ Validacao
  • Obrigatório ✅ Sim
📊 Dados
  • Campo OndeVou descricao
  • Alias OndeVou descricao_produto
  • Campo ErpLinux descri
  • Tabela OndeVou produtos
🔍 Formsearch
  • {
      "required": ""
    }
  • Alias: descricao_produto
  • Tabelas: produtos ✅
  • FormSearch: ✓
📋 Família
💾 Grava🔗 getdata📝 putdata
Campo Tabela id_familia
Campo VIEW / Exibido nome_familia (ID: id_familia)
Tipo number (getdata)
Data Table produtos
Descrição

Campo família

Putdata
{
  "tabela": "produtos_familias",
  "unique": "participante,nome",
  "fields": {
    "participante": "participante",
    "nome": "nome_familia"
  }
}
📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
📊 Dados
  • Campo OndeVou nome_familia
  • ID OndeVou id_familia
  • Tabela OndeVou produtos
🔗 Getdata
  • {
      "view": "view_produtos_familias",
      "data": "view_produtos_familias",
      "text-empty-search": "sim",
      "campo-data-id": "id_familia",
      "campo-data-value-input": "nome_familia",
      "campo-data-input-select-view": "nome_familia",
      "query": {
        "select": "* from view_produtos_familias",
        "where": {
          "and": {
            "texto_digitado": {
              "left": "(unaccent(LOWER(concat(id_familia,` `,nome_familia))) ilike `%",
              "right": "%`) and (participante=`1`)"
            }
          }
        },
        "order": "id_familia desc"
      }
    }
📝 Putdata
  • {
      "tabela": "produtos_familias",
      "unique": "participante,nome",
      "fields": {
        "participante": "participante",
        "nome": "nome_familia"
      }
    }
🔍 Formsearch
  • {
      "required": ""
    }
  • ID: id_familia
  • Tabelas: produtos ✅
  • FormSearch: ✓
📋 Tipo
✅ Obrigatório💾 Grava🔗 getdata📝 putdata
Campo Tabela id_tipo
Campo VIEW / Exibido nome_tipo (ID: id_tipo)
Tipo number (getdata)
Data Table produtos
Descrição

Campo tipo

Putdata
{
  "tabela": "produtos_tipos",
  "unique": "participante,nome",
  "fields": {
    "participante": "participante",
    "nome": "nome_tipo"
  }
}
📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
✅ Validacao
  • Obrigatório ✅ Sim
📊 Dados
  • Campo OndeVou nome_tipo
  • Campo ErpLinux tipo
  • ID OndeVou id_tipo
  • ID ErpLinux codigo_erplinux_tipo
  • Tabela OndeVou produtos
🔗 Getdata
  • {
      "view": "view_produtos_tipos",
      "data": "view_produtos_tipos",
      "text-empty-search": "sim",
      "campo-data-id": "id_tipo",
      "campo-data-value-input": "nome_tipo",
      "campo-data-input-select-view": "nome_tipo",
      "query": {
        "select": "* from view_produtos_tipos",
        "where": {
          "and": {
            "texto_digitado": {
              "left": "(unaccent(LOWER(concat(id_tipo,` `,codigo_erplinux_tipo,` `,nome_tipo))) ilike `%",
              "right": "%`) and (participante=`1`)"
            }
          }
        },
        "order": "id_tipo desc"
      }
    }
📝 Putdata
  • {
      "tabela": "produtos_tipos",
      "unique": "participante,nome",
      "fields": {
        "participante": "participante",
        "nome": "nome_tipo"
      }
    }
🔍 Formsearch
  • {
      "required": ""
    }
  • ID: id_tipo
  • Tabelas: produtos ✅
  • FormSearch: ✓
📋 Marca
💾 Grava🔗 getdata📝 putdata
Campo Tabela id_marca
Campo VIEW / Exibido nome_marca (ID: id_marca)
Tipo number (getdata)
Data Table produtos
Descrição

Campo marca

Putdata
{
  "tabela": "produtos_marcas",
  "unique": "participante,nome",
  "fields": {
    "participante": "participante",
    "nome": "nome_marca"
  }
}
📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
📊 Dados
  • Campo OndeVou nome_marca
  • Campo ErpLinux marca
  • ID OndeVou id_marca
  • Tabela OndeVou produtos
🔗 Getdata
  • {
      "view": "view_produtos_marcas",
      "data": "view_produtos_marcas",
      "text-empty-search": "sim",
      "campo-data-id": "id_marca",
      "campo-data-value-input": "nome_marca",
      "campo-data-input-select-view": "nome_marca",
      "query": {
        "select": "* from view_produtos_marcas",
        "where": {
          "and": {
            "texto_digitado": {
              "left": "(unaccent(LOWER(concat(id_marca,` `,nome_marca))) ilike `%",
              "right": "%`) and (participante=`1`)"
            }
          }
        }
      }
    }
📝 Putdata
  • {
      "tabela": "produtos_marcas",
      "unique": "participante,nome",
      "fields": {
        "participante": "participante",
        "nome": "nome_marca"
      }
    }
🔍 Formsearch
  • {
      "required": ""
    }
  • ID: id_marca
  • Tabelas: produtos ✅
  • FormSearch: ✓
📋 Cor
💾 Grava🔗 getdata📝 putdata
Campo Tabela id_cor
Campo VIEW / Exibido nome_cor (ID: id_cor)
Tipo number (getdata)
Data Table produtos
Descrição

Campo cor

Getdata🔗 produtos_cores
Putdata
{
  "tabela": "produtos_cores",
  "unique": "nome",
  "fields": {
    "nome": "nome_cor"
  }
}
📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
📊 Dados
  • Campo OndeVou nome_cor
  • Campo ErpLinux cor
  • ID OndeVou id_cor
  • Tabela OndeVou produtos
🔗 Getdata
  • {
      "view": "view_produtos_cores",
      "data": "view_produtos_cores",
      "text-empty-search": "sim",
      "campo-data-id": "id_cor",
      "campo-data-value-input": "nome_cor",
      "campo-data-input-select-view": "nome_cor",
      "query": {
        "select": "* from view_produtos_cores",
        "where": {
          "and": {
            "texto_digitado": {
              "left": "(unaccent(LOWER(concat(id_cor,` `,nome_cor))) ilike `%",
              "right": "%`)"
            }
          }
        }
      }
    }
📝 Putdata
  • {
      "tabela": "produtos_cores",
      "unique": "nome",
      "fields": {
        "nome": "nome_cor"
      }
    }
🔍 Formsearch
  • {
      "required": ""
    }
  • ID: id_cor
  • Tabelas: produtos ✅
  • FormSearch: ✓
📋 Tamanho
💾 Grava🔗 getdata📝 putdata
Campo Tabela id_tamanho
Campo VIEW / Exibido nome_tamanho (ID: id_tamanho)
Tipo number (getdata)
Data Table produtos
Descrição

Campo tamanho

Getdata🔗 produtos_tamanhos
Putdata
{
  "tabela": "produtos_tamanhos",
  "unique": "nome",
  "fields": {
    "nome": "nome_tamanho"
  }
}
📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
📊 Dados
  • Campo OndeVou nome_tamanho
  • Campo ErpLinux tamanho
  • ID OndeVou id_tamanho
  • Tabela OndeVou produtos
🔗 Getdata
  • {
      "view": "view_produtos_tamanhos",
      "data": "view_produtos_tamanhos",
      "text-empty-search": "sim",
      "campo-data-id": "id_tamanho",
      "campo-data-value-input": "nome_tamanho",
      "campo-data-input-select-view": "nome_tamanho",
      "query": {
        "select": "* from view_produtos_tamanhos",
        "where": {
          "and": {
            "texto_digitado": {
              "left": "(unaccent(LOWER(concat(id_tamanho,` `,nome_tamanho))) ilike `%",
              "right": "%`)"
            }
          }
        }
      }
    }
📝 Putdata
  • {
      "tabela": "produtos_tamanhos",
      "unique": "nome",
      "fields": {
        "nome": "nome_tamanho"
      }
    }
🔍 Formsearch
  • {
      "required": ""
    }
  • ID: id_tamanho
  • Tabelas: produtos ✅
  • FormSearch: ✓
📋 Un compra
✅ Obrigatório💾 Grava🔗 getdata
Campo Tabela id_unidade_compra
Campo VIEW / Exibido nome_unidade_compra (ID: id_unidade_compra)
Tipo text
Data Table produtos
Descrição

Campo un compra

Getdata🔗 produtos_unidade_compra
📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados text
✅ Validacao
  • Obrigatório ✅ Sim
📊 Dados
  • Campo OndeVou nome_unidade_compra
  • Campo ErpLinux unid
  • ID OndeVou id_unidade_compra
  • Tabela OndeVou produtos
🔗 Getdata
  • {
      "view": "view_produtos_unidade_compra",
      "data": "view_produtos_unidade_compra",
      "text-empty-search": "sim",
      "campo-data-id": "id_unidade_compra",
      "campo-data-value-input": "nome_unidade_compra",
      "campo-data-input-select-view": "nome_unidade_compra",
      "query": {
        "select": "* from view_produtos_unidade_compra",
        "where": {
          "and": {
            "texto_digitado": {
              "left": "(unaccent(LOWER(concat(id_unidade_compra,` `,nome_unidade_compra,` `,descricao_unidade_compra))) ilike `%",
              "right": "%`)"
            }
          }
        }
      }
    }
  • ID: id_unidade_compra
  • Tabelas: produtos ✅
📋 Un venda
✅ Obrigatório💾 Grava🔗 getdata
Campo Tabela id_unidade_venda
Campo VIEW / Exibido nome_unidade_venda (ID: id_unidade_venda)
Tipo text
Data Table produtos
Descrição

Campo un venda

Getdata🔗 produtos_unidade_venda
📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados text
✅ Validacao
  • Obrigatório ✅ Sim
📊 Dados
  • Campo OndeVou nome_unidade_venda
  • Campo ErpLinux unid
  • ID OndeVou id_unidade_venda
  • Tabela OndeVou produtos
🔗 Getdata
  • {
      "view": "view_produtos_unidade_venda",
      "data": "view_produtos_unidade_venda",
      "text-empty-search": "sim",
      "campo-data-id": "id_unidade_venda",
      "campo-data-value-input": "nome_unidade_venda",
      "campo-data-input-select-view": "nome_unidade_venda",
      "query": {
        "select": "* from view_produtos_unidade_venda",
        "where": {
          "and": {
            "texto_digitado": {
              "left": "(unaccent(LOWER(concat(id_unidade_venda,` `,nome_unidade_venda,` `,descricao_unidade_venda))) ilike `%",
              "right": "%`)"
            }
          }
        }
      }
    }
  • ID: id_unidade_venda
  • Tabelas: produtos ✅
📋 Código NCM
✅ Obrigatório💾 Grava
Campo Tabela codigo_ncm
Campo VIEW / Exibido codigo_ncm
Tipo text
Data Table produtos
Descrição

Campo código ncm

📋 Todos os Atributos
⚡ Eventos
  • Tecla pressionada/solta return SomenteNumero(event) 📌 return
🎨 Formatacao
  • Tipo de dados text
  • Máximo de caracteres 8
  • Mínimo de caracteres 8
✅ Validacao
  • Obrigatório ✅ Sim
📊 Dados
  • Campo OndeVou codigo_ncm
  • Campo ErpLinux inciso
  • Tabela OndeVou produtos
🔍 Formsearch
  • {
      "required": ""
    }
  • Tabelas: produtos ✅
  • FormSearch: ✓
📋 Código CEST
💾 Grava
Campo Tabela codigo_cest
Campo VIEW / Exibido codigo_cest
Tipo text
Data Table produtos
Descrição

Campo código cest

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados text
📊 Dados
  • Campo OndeVou codigo_cest
  • Tabela OndeVou produtos
  • Tabelas: produtos ✅
📋 Peso líquido
✅ Obrigatório💾 Grava
Campo Tabela peso_liquido
Campo VIEW / Exibido peso_liquido
Tipo number
Data Table produtos
Descrição

Campo peso líquido

📋 Todos os Atributos
⚡ Eventos
  • Tecla solta setInputFormatNumber(this,`3`) 📌 setInputFormatNumber
🎨 Formatacao
  • Tipo de dados number
✅ Validacao
  • Obrigatório ✅ Sim
📊 Dados
  • Campo OndeVou peso_liquido
  • Campo ErpLinux pesol
  • Tabela OndeVou produtos
  • Tabelas: produtos ✅
  • Eventos: keyup
📋 Peso bruto
✅ Obrigatório💾 Grava
Campo Tabela peso_bruto
Campo VIEW / Exibido peso_bruto
Tipo number
Data Table produtos
Descrição

Campo peso bruto

📋 Todos os Atributos
⚡ Eventos
  • Tecla solta setInputFormatNumber(this,`3`) 📌 setInputFormatNumber
🎨 Formatacao
  • Tipo de dados number
✅ Validacao
  • Obrigatório ✅ Sim
📊 Dados
  • Campo OndeVou peso_bruto
  • Campo ErpLinux pesob
  • Tabela OndeVou produtos
  • Tabelas: produtos ✅
  • Eventos: keyup
📋 Volume m3
💾 Grava
Campo Tabela volume_metro_cubico
Campo VIEW / Exibido volume_metro_cubico
Tipo number
Data Table produtos
Descrição

Campo volume m3

📋 Todos os Atributos
⚡ Eventos
  • Tecla solta setInputFormatNumber(this,`3`) 📌 setInputFormatNumber
🎨 Formatacao
  • Tipo de dados number
📊 Dados
  • Campo OndeVou volume_metro_cubico
  • Tabela OndeVou produtos
  • Tabelas: produtos ✅
  • Eventos: keyup
📋 Código barras
💾 Grava
Campo Tabela gtin_ean
Campo VIEW / Exibido gtin_ean_produto
Tipo text
Data Table produtos
Descrição

Campo código barras

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados text
📊 Dados
  • Campo OndeVou gtin_ean
  • Alias OndeVou gtin_ean_produto
  • Campo ErpLinux codbarra
  • Tabela OndeVou produtos
🔍 Formsearch
  • {
      "required": ""
    }
  • Alias: gtin_ean_produto
  • Tabelas: produtos ✅
  • FormSearch: ✓
📋 Código produto fabricante
💾 Grava
Campo Tabela codigo_produto_fabricante
Campo VIEW / Exibido codigo_produto_fabricante
Tipo text
Data Table produtos
Descrição

Campo código produto fabricante

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados text
📊 Dados
  • Campo OndeVou codigo_produto_fabricante
  • Campo ErpLinux codfab
  • Tabela OndeVou produtos
  • Tabelas: produtos ✅
📋 Produção própria
💾 Grava
Campo Tabela producao_propria
Campo VIEW / Exibido producao_propria
Tipo text
Data Table produtos
Descrição

Campo produção própria

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados text
  • Tipo de input checkbox
  • Checkbox options {"Sim":["S","N"]}
📊 Dados
  • Campo OndeVou producao_propria
  • Campo ErpLinux nospro
  • Tabela OndeVou produtos
  • Tabelas: produtos ✅
  • Checkbox: configurado
📋 Qtd inicial
🔒 Somente leitura👁️ Oculto📋 Somente view
Campo Tabela quantidade_inicial
Campo VIEW / Exibido quantidade_inicial ⚠️ (somente view)
Tipo number
Data Table view_produtos
Descrição

Campo qtd inicial

📋 Todos os Atributos
⚡ Eventos
  • Tecla solta setInputFormatNumber(this,`2`) 📌 setInputFormatNumber
🎨 Formatacao
  • Tipo de dados number
✅ Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou quantidade_inicial
  • Tabela OndeVou view_produtos
  • Tabelas: view_produtos (só view)
  • Hidden: ✓ (dados ocultos)
  • Eventos: keyup
📋 Qtd entrada nf
🔒 Somente leitura👁️ Oculto📋 Somente view
Campo Tabela quantidade_entrada_nf
Campo VIEW / Exibido quantidade_entrada_nf ⚠️ (somente view)
Tipo number
Data Table view_produtos
Descrição

Campo qtd entrada nf

📋 Todos os Atributos
⚡ Eventos
  • Tecla solta setInputFormatNumber(this,`2`) 📌 setInputFormatNumber
🎨 Formatacao
  • Tipo de dados number
✅ Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou quantidade_entrada_nf
  • Tabela OndeVou view_produtos
  • Tabelas: view_produtos (só view)
  • Hidden: ✓ (dados ocultos)
  • Eventos: keyup
📋 Qtd entrada produção
🔒 Somente leitura👁️ Oculto📋 Somente view
Campo Tabela quantidade_entrada_producao
Campo VIEW / Exibido quantidade_entrada_producao ⚠️ (somente view)
Tipo number
Data Table view_produtos
Descrição

Campo qtd entrada produção

📋 Todos os Atributos
⚡ Eventos
  • Tecla solta setInputFormatNumber(this,`2`) 📌 setInputFormatNumber
🎨 Formatacao
  • Tipo de dados number
✅ Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou quantidade_entrada_producao
  • Tabela OndeVou view_produtos
  • Tabelas: view_produtos (só view)
  • Hidden: ✓ (dados ocultos)
  • Eventos: keyup
📋 Qtd saida nf
🔒 Somente leitura👁️ Oculto📋 Somente view
Campo Tabela quantidade_saida_nf
Campo VIEW / Exibido quantidade_saida_nf ⚠️ (somente view)
Tipo number
Data Table view_produtos
Descrição

Campo qtd saida nf

📋 Todos os Atributos
⚡ Eventos
  • Tecla solta setInputFormatNumber(this,`2`) 📌 setInputFormatNumber
🎨 Formatacao
  • Tipo de dados number
✅ Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou quantidade_saida_nf
  • Tabela OndeVou view_produtos
  • Tabelas: view_produtos (só view)
  • Hidden: ✓ (dados ocultos)
  • Eventos: keyup
📋 Qtd consumo produção
🔒 Somente leitura👁️ Oculto📋 Somente view
Campo Tabela quantidade_consumo_producao
Campo VIEW / Exibido quantidade_consumo_producao ⚠️ (somente view)
Tipo number
Data Table view_produtos
Descrição

Campo qtd consumo produção

📋 Todos os Atributos
⚡ Eventos
  • Tecla solta setInputFormatNumber(this,`2`) 📌 setInputFormatNumber
🎨 Formatacao
  • Tipo de dados number
✅ Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou quantidade_consumo_producao
  • Tabela OndeVou view_produtos
  • Tabelas: view_produtos (só view)
  • Hidden: ✓ (dados ocultos)
  • Eventos: keyup
📋 Qtd final
🔒 Somente leitura👁️ Oculto📋 Somente view
Campo Tabela quantidade_final
Campo VIEW / Exibido quantidade_final ⚠️ (somente view)
Tipo number
Data Table view_produtos
Descrição

Campo qtd final

📋 Todos os Atributos
⚡ Eventos
  • Tecla solta setInputFormatNumber(this,`2`) 📌 setInputFormatNumber
🎨 Formatacao
  • Tipo de dados number
✅ Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou quantidade_final
  • Tabela OndeVou view_produtos
  • Tabelas: view_produtos (só view)
  • Hidden: ✓ (dados ocultos)
  • Eventos: keyup
📋 Valor total inicial
🔒 Somente leitura👁️ Oculto📋 Somente view
Campo Tabela valor_total_inicial
Campo VIEW / Exibido valor_total_inicial ⚠️ (somente view)
Tipo number
Data Table view_produtos
Descrição

Campo valor total inicial

📋 Todos os Atributos
⚡ Eventos
  • Tecla solta setInputFormatNumber(this,`2`) 📌 setInputFormatNumber
🎨 Formatacao
  • Tipo de dados number
✅ Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou valor_total_inicial
  • Tabela OndeVou view_produtos
  • Tabelas: view_produtos (só view)
  • Hidden: ✓ (dados ocultos)
  • Eventos: keyup
📋 Valor total entrada nf
🔒 Somente leitura👁️ Oculto📋 Somente view
Campo Tabela valor_total_entrada_nf
Campo VIEW / Exibido valor_total_entrada_nf ⚠️ (somente view)
Tipo number
Data Table view_produtos
Descrição

Campo valor total entrada nf

📋 Todos os Atributos
⚡ Eventos
  • Tecla solta setInputFormatNumber(this,`2`) 📌 setInputFormatNumber
🎨 Formatacao
  • Tipo de dados number
✅ Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou valor_total_entrada_nf
  • Tabela OndeVou view_produtos
  • Tabelas: view_produtos (só view)
  • Hidden: ✓ (dados ocultos)
  • Eventos: keyup
📋 Valor total entrada produção
🔒 Somente leitura👁️ Oculto📋 Somente view
Campo Tabela valor_total_entrada_producao
Campo VIEW / Exibido valor_total_entrada_producao ⚠️ (somente view)
Tipo number
Data Table view_produtos
Descrição

Campo valor total entrada produção

📋 Todos os Atributos
⚡ Eventos
  • Tecla solta setInputFormatNumber(this,`2`) 📌 setInputFormatNumber
🎨 Formatacao
  • Tipo de dados number
✅ Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou valor_total_entrada_producao
  • Tabela OndeVou view_produtos
  • Tabelas: view_produtos (só view)
  • Hidden: ✓ (dados ocultos)
  • Eventos: keyup
📋 Valor total saida nf
🔒 Somente leitura👁️ Oculto📋 Somente view
Campo Tabela valor_total_saida_nf
Campo VIEW / Exibido valor_total_saida_nf ⚠️ (somente view)
Tipo number
Data Table view_produtos
Descrição

Campo valor total saida nf

📋 Todos os Atributos
⚡ Eventos
  • Tecla solta setInputFormatNumber(this,`2`) 📌 setInputFormatNumber
🎨 Formatacao
  • Tipo de dados number
✅ Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou valor_total_saida_nf
  • Tabela OndeVou view_produtos
  • Tabelas: view_produtos (só view)
  • Hidden: ✓ (dados ocultos)
  • Eventos: keyup
📋 Valor total consumo produção
🔒 Somente leitura👁️ Oculto📋 Somente view
Campo Tabela valor_total_consumo_producao
Campo VIEW / Exibido valor_total_consumo_producao ⚠️ (somente view)
Tipo number
Data Table view_produtos
Descrição

Campo valor total consumo produção

📋 Todos os Atributos
⚡ Eventos
  • Tecla solta setInputFormatNumber(this,`2`) 📌 setInputFormatNumber
🎨 Formatacao
  • Tipo de dados number
✅ Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou valor_total_consumo_producao
  • Tabela OndeVou view_produtos
  • Tabelas: view_produtos (só view)
  • Hidden: ✓ (dados ocultos)
  • Eventos: keyup
📋 Valor total final
🔒 Somente leitura👁️ Oculto📋 Somente view
Campo Tabela valor_total_final
Campo VIEW / Exibido valor_total_final ⚠️ (somente view)
Tipo number
Data Table view_produtos
Descrição

Campo valor total final

📋 Todos os Atributos
⚡ Eventos
  • Tecla solta setInputFormatNumber(this,`2`) 📌 setInputFormatNumber
🎨 Formatacao
  • Tipo de dados number
✅ Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou valor_total_final
  • Tabela OndeVou view_produtos
  • Tabelas: view_produtos (só view)
  • Hidden: ✓ (dados ocultos)
  • Eventos: keyup
📋 Id produto todos
🔒 Somente leitura👁️ Oculto💾 Grava
Campo Tabela id_produto_todos
Campo VIEW / Exibido id_produto_todos
Tipo number
Data Table produtos,produtos_vinculos
Descrição

Campo id produto todos

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
✅ Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou id_produto_todos
  • Tabela OndeVou produtos,produtos_vinculos
  • Tabelas: produtos, produtos_vinculos ✅
  • Hidden: ✓ (dados ocultos)
📋 Id vínculo
🔒 Somente leitura👁️ Oculto💾 Grava
Campo Tabela id_produto_vinculo
Campo VIEW / Exibido id_produto_vinculo
Tipo number
Data Table produtos,produtos_vinculos
Descrição

Campo id vínculo

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
✅ Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou id_produto_vinculo
  • Tabela OndeVou produtos,produtos_vinculos
  • Tabelas: produtos, produtos_vinculos ✅
  • Hidden: ✓ (dados ocultos)
📌 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: Find 📄
produtos_familias · Auxiliar: Família 📄
produtos_tipos · Auxiliar: Tipo 📄
produtos_marcas · Auxiliar: Marca 📄
produtos_cores · Auxiliar: Cor 📚
produtos_tamanhos · Auxiliar: Tamanho 📚
produtos_unidade_compra · Auxiliar: Un compra 📚
produtos_unidade_venda · Auxiliar: Un venda 📚

🔍 Filtros (formsearch)

Campos disponíveis para filtragem na busca.

Apenas produtos de produção própria checkbox —
Apenas produtos com nfe de entrada ou saída checkbox —
Processar informações do estoque checkbox —
Incluir notas fiscais de retorno de industrialização checkbox —
Incluir produção checkbox —
Incluir consumo de produção checkbox —
Apenas produtos com informações de estoque checkbox —
Data Inicial date —
Data Final date —

🎮 Controles Disponíveis

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

📂 Controle
🔘 Add add 🔘 Edit edit 🔘 Formulas formulas 🔘 Info info 🔘 Find find 🔘 Copy copy 💾 Salvar save 🔘 Delete delete 🔘 Remove remove
📂 Documento
📱 Gerar QR Code qrcode

👁️ View Associada

Nome: view_produtos

📱 GetCollector - Coleta de Dados

A tabela produtos possui suporte a coleta de dados via QR Code através do sistema GetCollector.

Configuração (JSON expandido)

{
  "qrcode": {
    "qrcode-type": [
      "pr"
    ]
  },
  "table-setups": {
    "search": "nao",
    "html": "nao",
    "controls": [
      "info",
      "remove"
    ]
  }
}

Tipos de QR Code

  • pr: Produto

Detalhes

  • Table Add: addTableColetar_dados_leituras

📱 QR Code

A tabela produtos possui geração automática de QR Code.

Configuração

'qrcode': {
    'input': {
        'readonly': 'readonly',
        'type': 'canvas',
        'qrcode-type': 'pr',
        'qrcode-text-fields': '—',
        'data-type-ondevou': 'text',
        'data-field-ondevou': 'qrcode',
        'data-table-ondevou': 'qrcode'
    }
}

Como funciona

  • Geração automática: Ao salvar o registro
  • Formato: ondevou_pr_{participante}_{id}
  • Uso: Identificação física do registro

🔑 PRIMARY KEY - Campo Id

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

Configuração

'Id': {
    'input': {
        'readonly': 'readonly',
        'data-type-ondevou': 'number',
        'data-field-ondevou': 'id',
        "data-field-alias-ondevou": "id_produto",
        'data-table-ondevou': 'produtos,auditor_produtos'
    }
}

Comportamento

  • 🔒 Readonly: Campo não editável
  • 📊 Tipo: number
  • 🔹 Alias na VIEW: id_produto
  • 📋 Auditoria: Grava em produtos,auditor_produtos

🎮 Controls-Ação

📂 Estoque
formulas: Fórmulas do produto setFormulasFromTableProdutos
📂 Documento
qrcode: Gerar QR Code getQRcode

💾 JSON da Tabela

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

code Clique para ver o JSON completo 44 KB
{
  "table-id": "produtos",
  "data-table-ondevou": "produtos",
  "data-table-auditor": "auditor_produtos",
  "data-field-auditor": "id_produto",
  "data-table-erplinux": "sceitem",
  "data-index-erplinux": "sceitem1",
  "data-index-field-erplinux": "codigo",
  "table-class": "highlight",
  "readonly": "nao",
  "controls": [
    "add",
    "edit",
    "formulas",
    "info",
    "find",
    "copy",
    "save",
    "qrcode",
    "delete",
    "remove"
  ],
  "html": {
    "div": {
      "before": "",
      "after": ""
    }
  },
  "entidade": {
    "page": "produto",
    "title": "Produto",
    "table": "produtos",
    "campo_id": "id_produto",
    "view": "view_produtos",
    "where_post": "",
    "function": "getProdutoQrCode",
    "ogTitle": "Cadastre seus produtos em segundos com XML e rastreie com QR Code",
    "ogDescription": "Agilize o cadastro de seus produtos com a importação de dados em formato XML e acompanhe todas as movimentações através da leitura de QR Code. Nossa solução oferece uma gestão completa e eficiente, garantindo a rastreabilidade de seus produtos em toda a cadeia de suprimentos.",
    "ogImage": "",
    "ogUrl": "https://ondevou.com/produto",
    "ogKeywords": "produto, cadastro de produtos, importação XML, rastreamento, QR Code, gestão de produtos, cadeia de suprimentos, ondevou, onde, onde ir, software",
    "sobre": {},
    "posts": {
      "1": {
        "id_post": "1",
        "nome_rotina": "Sobre OndeVou Produtos",
        "descricao": "O Ondevou Produtos é uma solução completa para a gestão, exibição e comercialização de produtos em diversas categorias. Ele oferece ferramentas intuitivas para cadastro, rastreamento e análise detalhada dos produtos. O sistema facilita a integração com marketplaces e plataformas de vendas, ampliando a visibilidade e a eficiência operacional, com controle de estoque em tempo real e relatórios avançados para decisões estratégicas. Ideal para empresas que buscam otimizar seus processos logísticos e aumentar suas vendas online.",
        "id_rotina": "",
        "id_membro": "",
        "nome_membro": "Firmino Moreira Gusmão",
        "razao_social": "ONDEVOU.COM TECNOLOGIA LTDA",
        "cnpj": "17.058.605/0001-36",
        "razao_social_cliente": "",
        "nome_fantasia_cliente": "",
        "tabela_origem": "",
        "id_origem": "",
        "data_criacao": 1786541081321,
        "link_post": {
          "title": "Saiba mais sobre o OndeVou Produtos",
          "url": "plataforma/produto/produtos",
          "onclick": "navClose();startMenu(this);return false;",
          "menu": "492"
        }
      }
    }
  },
  "routines": {
    "view": "132",
    "add": "42",
    "edit": "43"
  },
  "pdf": {
    "format": "a3",
    "orientation": "landscape",
    "columns": [
      "Id",
      "Código erplinux",
      "Descrição",
      "Família",
      "Tipo",
      "Marca",
      "Cor",
      "Tamanho",
      "Un compra",
      "Un venda",
      "Código NCM",
      "Código CEST",
      "Peso líquido",
      "Peso bruto",
      "Produção própria"
    ]
  },
  "search": {
    "id_search_produto": {
      "data-type-ondevou": "number",
      "texto_label": "Produto",
      "data-field-ondevou": "id_search_produto",
      "data-table-ondevou": "view_produtos",
      "getcollector": "{\"qrcode\":\"{\\\"qrcode-type\\\":[\\\"pr\\\"]}\",\"table-setups\":\"{\\\"search\\\":\\\"nao\\\",\\\"html\\\":\\\"nao\\\",\\\"controls\\\":[\\\"info\\\",\\\"remove\\\"]}\"}",
      "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\"}}"
    }
  },
  "headers": {
    "Id": {
      "width": "7%"
    },
    "qrcode": {
      "width": "100px",
      "align": "left",
      "class": "qrcode"
    },
    "Find": {
      "width": "5%"
    },
    "Seq": {
      "width": "5%"
    },
    "Participante": {
      "width": "11%"
    },
    "Código erplinux": {
      "width": "10%"
    },
    "Descrição": {
      "width": "25%"
    },
    "Família": {
      "width": "15%"
    },
    "Tipo": {
      "width": "15%"
    },
    "Marca": {
      "width": "15%"
    },
    "Cor": {
      "width": "7%"
    },
    "Tamanho": {
      "width": "7%"
    },
    "Un compra": {
      "width": "7%"
    },
    "Un venda": {
      "width": "7%"
    },
    "Código NCM": {
      "width": "10%"
    },
    "Código CEST": {
      "width": "7%"
    },
    "Peso líquido": {
      "width": "7%"
    },
    "Peso bruto": {
      "width": "7%"
    },
    "Volume m3": {
      "width": "7%"
    },
    "Produção própria": {
      "width": "10%"
    },
    "Código barras": {
      "width": "15%"
    },
    "Código produto fabricante": {
      "width": "10%"
    },
    "Qtd inicial": {
      "type": "hidden",
      "width": "10%",
      "align": "right"
    },
    "Qtd entrada nf": {
      "type": "hidden",
      "width": "10%",
      "align": "right"
    },
    "Qtd entrada produção": {
      "type": "hidden",
      "width": "10%",
      "align": "right"
    },
    "Qtd saida nf": {
      "type": "hidden",
      "width": "10%",
      "align": "right"
    },
    "Qtd consumo produção": {
      "type": "hidden",
      "width": "10%",
      "align": "right"
    },
    "Qtd final": {
      "type": "hidden",
      "width": "10%",
      "align": "right"
    },
    "Valor total inicial": {
      "type": "hidden",
      "width": "10%",
      "align": "right"
    },
    "Valor total entrada nf": {
      "type": "hidden",
      "width": "10%",
      "align": "right"
    },
    "Valor total entrada produção": {
      "type": "hidden",
      "width": "10%",
      "align": "right"
    },
    "Valor total saida nf": {
      "type": "hidden",
      "width": "10%",
      "align": "right"
    },
    "Valor total consumo produção": {
      "type": "hidden",
      "width": "10%",
      "align": "right"
    },
    "Valor total final": {
      "type": "hidden",
      "width": "10%",
      "align": "right"
    },
    "Id produto todos": {
      "type": "hidden",
      "width": "10%"
    },
    "Id vínculo": {
      "type": "hidden",
      "width": "10%"
    }
  },
  "columns": {
    "Id": {
      "input": {
        "readonly": "readonly",
        "clear-not-participante": "sim",
        "data-type-ondevou": "number",
        "data-field-ondevou": "id",
        "data-field-alias-ondevou": "id_produto",
        "data-table-ondevou": "produtos,auditor_produtos",
        "getpage": "{\"page\":\"produto\",\"campo\":\"id\"}",
        "controls-acao": {
          "formulas": {
            "acao": "setFormulasFromTableProdutos",
            "messagem": "Formulas do produto"
          },
          "qrcode": {
            "acao": "getQRcode",
            "messagem": "Gerar QR Code"
          }
        },
        "formsearch": {
          "required": ""
        }
      }
    },
    "qrcode": {
      "input": {
        "readonly": "readonly",
        "type": "canvas",
        "qrcode-type": "pr",
        "data-type-ondevou": "text",
        "data-field-ondevou": "qrcode",
        "data-table-ondevou": "qrcode"
      }
    },
    "Find": {
      "input": {
        "class": "table-input-find",
        "data-type-ondevou": "text",
        "data-field-ondevou": "find",
        "data-table-ondevou": "view_produtos",
        "getdata": "{\"view\":\"view_produtos\",\"data\":\"view_produtos\",\"text-empty-search\":\"sim\",\"trigger\":\"setTableGetFind()\",\"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\"}}"
      }
    },
    "Seq": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "text",
        "autoincremento": "true",
        "data-field-ondevou": "contagem_linha",
        "data-table-ondevou": "view_produtos"
      }
    },
    "Participante": {
      "input": {
        "readonly": "readonly",
        "required": "required",
        "value": "1",
        "data-type-ondevou": "number",
        "data-field-ondevou": "participante",
        "data-table-ondevou": "produtos"
      }
    },
    "Código erplinux": {
      "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",
        "formsearch": {
          "required": ""
        }
      }
    },
    "Descrição": {
      "input": {
        "required": "required",
        "data-type-ondevou": "text",
        "data-field-ondevou": "descricao",
        "data-field-erplinux": "descri",
        "data-field-alias-ondevou": "descricao_produto",
        "data-table-ondevou": "produtos",
        "formsearch": {
          "required": ""
        }
      }
    },
    "Família": {
      "input": {
        "data-type-ondevou": "number",
        "data-id-field-ondevou": "id_familia",
        "data-field-ondevou": "nome_familia",
        "data-table-ondevou": "produtos",
        "getdata": "{\"view\":\"view_produtos_familias\",\"data\":\"view_produtos_familias\",\"text-empty-search\":\"sim\",\"campo-data-id\":\"id_familia\",\"campo-data-value-input\":\"nome_familia\",\"campo-data-input-select-view\":\"nome_familia\",\"query\":{\"select\":\"* from view_produtos_familias\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(concat(id_familia,` `,nome_familia))) ilike `%\",\"right\":\"%`) and (participante=`1`)\"}}},\"order\":\"id_familia desc\"}}",
        "putdata": "{\"tabela\":\"produtos_familias\",\"unique\":\"participante,nome\",\"fields\":{\"participante\":\"participante\",\"nome\":\"nome_familia\"}}",
        "formsearch": {
          "required": ""
        }
      }
    },
    "Tipo": {
      "input": {
        "required": "required",
        "data-type-ondevou": "number",
        "data-id-field-ondevou": "id_tipo",
        "data-field-ondevou": "nome_tipo",
        "data-field-erplinux": "tipo",
        "data-id-field-erplinux": "codigo_erplinux_tipo",
        "data-table-ondevou": "produtos",
        "getdata": "{\"view\":\"view_produtos_tipos\",\"data\":\"view_produtos_tipos\",\"text-empty-search\":\"sim\",\"campo-data-id\":\"id_tipo\",\"campo-data-value-input\":\"nome_tipo\",\"campo-data-input-select-view\":\"nome_tipo\",\"query\":{\"select\":\"* from view_produtos_tipos\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(concat(id_tipo,` `,codigo_erplinux_tipo,` `,nome_tipo))) ilike `%\",\"right\":\"%`) and (participante=`1`)\"}}},\"order\":\"id_tipo desc\"}}",
        "putdata": "{\"tabela\":\"produtos_tipos\",\"unique\":\"participante,nome\",\"fields\":{\"participante\":\"participante\",\"nome\":\"nome_tipo\"}}",
        "formsearch": {
          "required": ""
        }
      }
    },
    "Marca": {
      "input": {
        "data-type-ondevou": "number",
        "data-id-field-ondevou": "id_marca",
        "data-field-ondevou": "nome_marca",
        "data-field-erplinux": "marca",
        "data-table-ondevou": "produtos",
        "putdata": "{\"tabela\":\"produtos_marcas\",\"unique\":\"participante,nome\",\"fields\":{\"participante\":\"participante\",\"nome\":\"nome_marca\"}}",
        "getdata": "{\"view\":\"view_produtos_marcas\",\"data\":\"view_produtos_marcas\",\"text-empty-search\":\"sim\",\"campo-data-id\":\"id_marca\",\"campo-data-value-input\":\"nome_marca\",\"campo-data-input-select-view\":\"nome_marca\",\"query\":{\"select\":\"* from view_produtos_marcas\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(concat(id_marca,` `,nome_marca))) ilike `%\",\"right\":\"%`) and (participante=`1`)\"}}}}}",
        "formsearch": {
          "required": ""
        }
      }
    },
    "Cor": {
      "input": {
        "data-type-ondevou": "number",
        "data-id-field-ondevou": "id_cor",
        "data-field-ondevou": "nome_cor",
        "data-field-erplinux": "cor",
        "data-table-ondevou": "produtos",
        "putdata": "{\"tabela\":\"produtos_cores\",\"unique\":\"nome\",\"fields\":{\"nome\":\"nome_cor\"}}",
        "getdata": "{\"view\":\"view_produtos_cores\",\"data\":\"view_produtos_cores\",\"text-empty-search\":\"sim\",\"campo-data-id\":\"id_cor\",\"campo-data-value-input\":\"nome_cor\",\"campo-data-input-select-view\":\"nome_cor\",\"query\":{\"select\":\"* from view_produtos_cores\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(concat(id_cor,` `,nome_cor))) ilike `%\",\"right\":\"%`)\"}}}}}",
        "formsearch": {
          "required": ""
        }
      }
    },
    "Tamanho": {
      "input": {
        "data-type-ondevou": "number",
        "data-id-field-ondevou": "id_tamanho",
        "data-field-ondevou": "nome_tamanho",
        "data-field-erplinux": "tamanho",
        "data-table-ondevou": "produtos",
        "putdata": "{\"tabela\":\"produtos_tamanhos\",\"unique\":\"nome\",\"fields\":{\"nome\":\"nome_tamanho\"}}",
        "getdata": "{\"view\":\"view_produtos_tamanhos\",\"data\":\"view_produtos_tamanhos\",\"text-empty-search\":\"sim\",\"campo-data-id\":\"id_tamanho\",\"campo-data-value-input\":\"nome_tamanho\",\"campo-data-input-select-view\":\"nome_tamanho\",\"query\":{\"select\":\"* from view_produtos_tamanhos\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(concat(id_tamanho,` `,nome_tamanho))) ilike `%\",\"right\":\"%`)\"}}}}}",
        "formsearch": {
          "required": ""
        }
      }
    },
    "Un compra": {
      "input": {
        "required": "required",
        "data-type-ondevou": "text",
        "data-id-field-ondevou": "id_unidade_compra",
        "data-field-ondevou": "nome_unidade_compra",
        "data-field-erplinux": "unid",
        "data-table-ondevou": "produtos",
        "getdata": "{\"view\":\"view_produtos_unidade_compra\",\"data\":\"view_produtos_unidade_compra\",\"text-empty-search\":\"sim\",\"campo-data-id\":\"id_unidade_compra\",\"campo-data-value-input\":\"nome_unidade_compra\",\"campo-data-input-select-view\":\"nome_unidade_compra\",\"query\":{\"select\":\"* from view_produtos_unidade_compra\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(concat(id_unidade_compra,` `,nome_unidade_compra,` `,descricao_unidade_compra))) ilike `%\",\"right\":\"%`)\"}}}}}"
      }
    },
    "Un venda": {
      "input": {
        "required": "required",
        "data-type-ondevou": "text",
        "data-id-field-ondevou": "id_unidade_venda",
        "data-field-ondevou": "nome_unidade_venda",
        "data-field-erplinux": "unid",
        "data-table-ondevou": "produtos",
        "getdata": "{\"view\":\"view_produtos_unidade_venda\",\"data\":\"view_produtos_unidade_venda\",\"text-empty-search\":\"sim\",\"campo-data-id\":\"id_unidade_venda\",\"campo-data-value-input\":\"nome_unidade_venda\",\"campo-data-input-select-view\":\"nome_unidade_venda\",\"query\":{\"select\":\"* from view_produtos_unidade_venda\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(concat(id_unidade_venda,` `,nome_unidade_venda,` `,descricao_unidade_venda))) ilike `%\",\"right\":\"%`)\"}}}}}"
      }
    },
    "Código NCM": {
      "input": {
        "required": "required",
        "data-type-ondevou": "text",
        "maxlength": "8",
        "minlength": "8",
        "data-field-ondevou": "codigo_ncm",
        "data-field-erplinux": "inciso",
        "onkeypress": "return SomenteNumero(event)",
        "data-table-ondevou": "produtos",
        "formsearch": {
          "required": ""
        }
      }
    },
    "Código CEST": {
      "input": {
        "data-type-ondevou": "text",
        "data-field-ondevou": "codigo_cest",
        "data-table-ondevou": "produtos"
      }
    },
    "Peso líquido": {
      "input": {
        "required": "required",
        "data-type-ondevou": "number",
        "data-field-ondevou": "peso_liquido",
        "data-field-erplinux": "pesol",
        "onkeyup": "setInputFormatNumber(this,`3`)",
        "data-table-ondevou": "produtos"
      }
    },
    "Peso bruto": {
      "input": {
        "required": "required",
        "data-type-ondevou": "number",
        "data-field-ondevou": "peso_bruto",
        "data-field-erplinux": "pesob",
        "onkeyup": "setInputFormatNumber(this,`3`)",
        "data-table-ondevou": "produtos"
      }
    },
    "Volume m3": {
      "input": {
        "data-type-ondevou": "number",
        "data-field-ondevou": "volume_metro_cubico",
        "onkeyup": "setInputFormatNumber(this,`3`)",
        "data-table-ondevou": "produtos"
      }
    },
    "Código barras": {
      "input": {
        "data-type-ondevou": "text",
        "data-field-ondevou": "gtin_ean",
        "data-field-alias-ondevou": "gtin_ean_produto",
        "data-field-erplinux": "codbarra",
        "data-table-ondevou": "produtos",
        "formsearch": {
          "required": ""
        }
      }
    },
    "Código produto fabricante": {
      "input": {
        "data-type-ondevou": "text",
        "data-field-ondevou": "codigo_produto_fabricante",
        "data-field-erplinux": "codfab",
        "data-table-ondevou": "produtos"
      }
    },
    "Produção própria": {
      "input": {
        "data-type-ondevou": "text",
        "type": "checkbox",
        "checkbox-options": "{\"Sim\":[\"S\",\"N\"]}",
        "data-field-ondevou": "producao_propria",
        "data-field-erplinux": "nospro",
        "data-table-ondevou": "produtos"
      }
    },
    "Qtd inicial": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-field-ondevou": "quantidade_inicial",
        "onkeyup": "setInputFormatNumber(this,`2`)",
        "data-table-ondevou": "view_produtos"
      }
    },
    "Qtd entrada nf": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-field-ondevou": "quantidade_entrada_nf",
        "onkeyup": "setInputFormatNumber(this,`2`)",
        "data-table-ondevou": "view_produtos"
      }
    },
    "Qtd entrada produção": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-field-ondevou": "quantidade_entrada_producao",
        "onkeyup": "setInputFormatNumber(this,`2`)",
        "data-table-ondevou": "view_produtos"
      }
    },
    "Qtd saida nf": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-field-ondevou": "quantidade_saida_nf",
        "onkeyup": "setInputFormatNumber(this,`2`)",
        "data-table-ondevou": "view_produtos"
      }
    },
    "Qtd consumo produção": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-field-ondevou": "quantidade_consumo_producao",
        "onkeyup": "setInputFormatNumber(this,`2`)",
        "data-table-ondevou": "view_produtos"
      }
    },
    "Qtd final": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-field-ondevou": "quantidade_final",
        "onkeyup": "setInputFormatNumber(this,`2`)",
        "data-table-ondevou": "view_produtos"
      }
    },
    "Valor total inicial": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-field-ondevou": "valor_total_inicial",
        "onkeyup": "setInputFormatNumber(this,`2`)",
        "data-table-ondevou": "view_produtos"
      }
    },
    "Valor total entrada nf": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-field-ondevou": "valor_total_entrada_nf",
        "onkeyup": "setInputFormatNumber(this,`2`)",
        "data-table-ondevou": "view_produtos"
      }
    },
    "Valor total entrada produção": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-field-ondevou": "valor_total_entrada_producao",
        "onkeyup": "setInputFormatNumber(this,`2`)",
        "data-table-ondevou": "view_produtos"
      }
    },
    "Valor total saida nf": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-field-ondevou": "valor_total_saida_nf",
        "onkeyup": "setInputFormatNumber(this,`2`)",
        "data-table-ondevou": "view_produtos"
      }
    },
    "Valor total consumo produção": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-field-ondevou": "valor_total_consumo_producao",
        "onkeyup": "setInputFormatNumber(this,`2`)",
        "data-table-ondevou": "view_produtos"
      }
    },
    "Valor total final": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-field-ondevou": "valor_total_final",
        "onkeyup": "setInputFormatNumber(this,`2`)",
        "data-table-ondevou": "view_produtos"
      }
    },
    "Id produto todos": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-field-ondevou": "id_produto_todos",
        "data-table-ondevou": "produtos,produtos_vinculos"
      }
    },
    "Id vínculo": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-field-ondevou": "id_produto_vinculo",
        "data-table-ondevou": "produtos,produtos_vinculos"
      }
    }
  },
  "formsearch": {
    "data-table-ondevou": "view_produtos",
    "data-view-ondevou": "view_produtos",
    "data-where-limit": "S",
    "data-where-order": "order by id_produto desc",
    "data-where-fixed": "participante in (`1`)",
    "input": {
      "producao_propria_sim": {
        "data-field-ondevou": "producao_propria",
        "data-field-erplinux": "nospro",
        "data-type-ondevou": "text",
        "type": "checkbox",
        "divClass": "col s12 m1",
        "texto_label": "Apenas produtos de produção própria",
        "data-where-true": "producao_propria=`S`"
      },
      "apenas_ids_produtos_tabela_vendas": {
        "data-field-ondevou": "apenas_ids_produtos_tabela_vendas",
        "data-type-ondevou": "number",
        "type": "checkbox",
        "texto_label": "Apenas produtos com nfe de entrada ou saída",
        "data-where-ids": "select id_produto as id from view_vendas_produtos where participante=`1` group by id_produto order by id asc",
        "data-where-true": "(id_produto in (`ids`))"
      },
      "processar_informacoes_de_estoque": {
        "data-field-ondevou": "processar_informacoes_de_estoque",
        "data-type-ondevou": "number",
        "view-in-routine": "171",
        "type": "checkbox",
        "texto_label": "Processar informações do estoque",
        "data-where-true": "{\"0\":{\"function\": \"setViewProdutosFromMovimentacaoEstoque(`processar_informacoes_de_estoque`)\",\"trigger\": \"after\",\"order\": \"1\"}}"
      },
      "incluir_notas_fiscais_retorno_industrializacao": {
        "data-field-ondevou": "incluir_notas_fiscais_retorno_industrializacao",
        "data-type-ondevou": "number",
        "view-in-routine": "171",
        "data-table-ondevou": "processar_informacoes_de_estoque",
        "type": "checkbox",
        "texto_label": "Incluir notas fiscais de retorno de industrialização",
        "data-where-false": "id_natureza_operacao not in (46,48)"
      },
      "incluir_producao": {
        "data-field-ondevou": "incluir_producao",
        "data-type-ondevou": "number",
        "view-in-routine": "171",
        "data-table-ondevou": "processar_informacoes_de_estoque",
        "type": "checkbox",
        "texto_label": "Incluir produção"
      },
      "incluir_consumo_producao": {
        "data-field-ondevou": "incluir_consumo_producao",
        "data-type-ondevou": "number",
        "view-in-routine": "171",
        "data-table-ondevou": "processar_informacoes_de_estoque",
        "type": "checkbox",
        "texto_label": "Incluir consumo de produção"
      },
      "apenas_produtos_com_informacoes_de_estoque": {
        "data-field-ondevou": "apenas_produtos_com_informacoes_de_estoque",
        "data-type-ondevou": "number",
        "view-in-routine": "171",
        "type": "checkbox",
        "texto_label": "Apenas produtos com informações de estoque",
        "data-where-true": "{\"0\":{\"function\":\"setViewProdutosFromMovimentacaoEstoqueApenasComInformacoes()\",\"trigger\":\"after\",\"order\":\"2\"}}"
      },
      "data_inicial": {
        "data-field-ondevou": "data_inicial",
        "data-type-ondevou": "date",
        "type": "date",
        "class": "datepicker",
        "texto_label": "Data Inicial",
        "data-field-where": "data"
      },
      "data_final": {
        "data-field-ondevou": "data_final",
        "data-type-ondevou": "date",
        "type": "date",
        "class": "datepicker",
        "texto_label": "Data Final",
        "data-field-where": "data"
      }
    }
  },
  "dashboard": {
    "enabled": true,
    "theme": "modern",
    "layout": "free",
    "auto_refresh": false,
    "header": {
      "logo": {
        "src": "img/ondevou_plataforma.png",
        "alt": "OndeVou Plataforma",
        "class": "dashboard-logo-img"
      },
      "title": "PRODUTOS",
      "subtitle": "Catálogo de Produtos",
      "filters_area": {
        "container_id": "dashboard-filters-area",
        "empty_message": "Sem filtros"
      },
      "actions": [
        {
          "type": "button",
          "container_id": "dashboard-atualizar-dados",
          "class": "dashboard-btn dashboard-btn-sm dashboard-btn-primary",
          "icon": "fas fa-sync-alt",
          "text": "Atualizar",
          "action": "dashboard_refreshData",
          "title": "Atualizar Dados"
        },
        {
          "type": "button",
          "container_id": "dashboard-voltar-dados",
          "class": "dashboard-btn dashboard-btn-sm dashboard-btn-outline",
          "icon": "fas fa-table",
          "text": "Voltar para dados",
          "action": "voltarParaDadosFromDashboard",
          "title": "Voltar para dados"
        },
        {
          "type": "button",
          "container_id": "dashboard-auto-refresh",
          "class": "dashboard-btn dashboard-btn-sm dashboard-btn-info",
          "icon": "fas fa-clock",
          "text": "Auto-Refresh",
          "action": "dashboard_toggleAutoRefresh",
          "title": "Alternar escuta automática de dados"
        }
      ]
    },
    "sections": {
      "bloco1_resumo_executivo": {
        "type": "summary_cards_full",
        "title": "RESUMO EXECUTIVO - PRODUTOS",
        "class": "dashboard-section dashboard-section-full-width",
        "icon": "📦",
        "config": {
          "container_id": "cards-resumo-executivo",
          "size": "full",
          "cards": [
            {
              "title": "TOTAL DE PRODUTOS",
              "value": "COUNT:id_produto",
              "format": "numero",
              "decimals": 0,
              "suffix": " produtos",
              "icon": "📦",
              "color": "#2c3e50"
            },
            {
              "title": "PRODUÇÃO PRÓPRIA",
              "value": "COUNT:id_produto",
              "filters": "producao_propria = \"S\"",
              "format": "numero",
              "decimals": 0,
              "suffix": " produtos",
              "icon": "🏭",
              "color": "#27ae60"
            },
            {
              "title": "TERCEIRIZADOS",
              "value": "COUNT:id_produto",
              "filters": "producao_propria != \"S\" OR producao_propria IS NULL",
              "format": "numero",
              "decimals": 0,
              "suffix": " produtos",
              "icon": "🤝",
              "color": "#f39c12"
            },
            {
              "title": "TAXA DE PRODUÇÃO PRÓPRIA",
              "value": "CALC:(COUNT(id_produto where producao_propria = \"S\")/COUNT(id_produto))*100",
              "format": "numero",
              "decimals": 1,
              "suffix": "%",
              "icon": "📊",
              "color": "#27ae60"
            },
            {
              "title": "COM FABRICANTE",
              "value": "COUNT:id_produto",
              "filters": "id_fabricante IS NOT NULL AND id_fabricante != \"\"",
              "format": "numero",
              "decimals": 0,
              "suffix": " produtos",
              "icon": "🏢",
              "color": "#3498db"
            },
            {
              "title": "TAXA DE FABRICANTE",
              "value": "CALC:(COUNT(id_produto where id_fabricante IS NOT NULL AND id_fabricante != \"\")/COUNT(id_produto))*100",
              "format": "numero",
              "decimals": 1,
              "suffix": "%",
              "icon": "📊",
              "color": "#3498db"
            },
            {
              "title": "COM MARCA",
              "value": "COUNT:id_produto",
              "filters": "id_marca IS NOT NULL AND id_marca != \"\"",
              "format": "numero",
              "decimals": 0,
              "suffix": " produtos",
              "icon": "🏷️",
              "color": "#8e44ad"
            },
            {
              "title": "TAXA DE MARCA",
              "value": "CALC:(COUNT(id_produto where id_marca IS NOT NULL AND id_marca != \"\")/COUNT(id_produto))*100",
              "format": "numero",
              "decimals": 1,
              "suffix": "%",
              "icon": "📊",
              "color": "#8e44ad"
            },
            {
              "title": "COM NCM",
              "value": "COUNT:id_produto",
              "filters": "codigo_ncm IS NOT NULL AND codigo_ncm != \"\"",
              "format": "numero",
              "decimals": 0,
              "suffix": " produtos",
              "icon": "🔢",
              "color": "#1abc9c"
            },
            {
              "title": "TAXA DE NCM",
              "value": "CALC:(COUNT(id_produto where codigo_ncm IS NOT NULL AND codigo_ncm != \"\")/COUNT(id_produto))*100",
              "format": "numero",
              "decimals": 1,
              "suffix": "%",
              "icon": "📊",
              "color": "#1abc9c"
            }
          ]
        }
      },
      "bloco2_metricas_detalhadas": {
        "type": "summary_cards_grid",
        "title": "MÉTRICAS DETALHADAS",
        "class": "dashboard-section dashboard-section-full-width",
        "icon": "🔢",
        "config": {
          "container_id": "cards-metricas-detalhadas",
          "size": "full",
          "sections": [
            {
              "title": "📂 CLASSIFICAÇÃO",
              "cards": [
                {
                  "title": "FAMÍLIAS",
                  "value": "COUNT_DISTINCT:nome_familia",
                  "filters": "nome_familia IS NOT NULL AND nome_familia != \"\"",
                  "format": "numero",
                  "decimals": 0,
                  "icon": "📂",
                  "color": "#3498db"
                },
                {
                  "title": "TIPOS",
                  "value": "COUNT_DISTINCT:nome_tipo",
                  "filters": "nome_tipo IS NOT NULL AND nome_tipo != \"\"",
                  "format": "numero",
                  "decimals": 0,
                  "icon": "🏷️",
                  "color": "#27ae60"
                },
                {
                  "title": "MARCAS",
                  "value": "COUNT_DISTINCT:nome_marca",
                  "filters": "nome_marca IS NOT NULL AND nome_marca != \"\"",
                  "format": "numero",
                  "decimals": 0,
                  "icon": "🏷️",
                  "color": "#8e44ad"
                },
                {
                  "title": "FABRICANTES",
                  "value": "COUNT_DISTINCT:nome_fabricante",
                  "filters": "nome_fabricante IS NOT NULL AND nome_fabricante != \"\"",
                  "format": "numero",
                  "decimals": 0,
                  "icon": "🏢",
                  "color": "#f39c12"
                },
                {
                  "title": "CORES",
                  "value": "COUNT_DISTINCT:nome_cor",
                  "filters": "nome_cor IS NOT NULL AND nome_cor != \"\"",
                  "format": "numero",
                  "decimals": 0,
                  "icon": "🎨",
                  "color": "#9b59b6"
                },
                {
                  "title": "TAMANHOS",
                  "value": "COUNT_DISTINCT:nome_tamanho",
                  "filters": "nome_tamanho IS NOT NULL AND nome_tamanho != \"\"",
                  "format": "numero",
                  "decimals": 0,
                  "icon": "📏",
                  "color": "#1abc9c"
                }
              ]
            },
            {
              "title": "⚖️ ANÁLISE DE PESO",
              "cards": [
                {
                  "title": "PESO LÍQUIDO MÉDIO",
                  "value": "AVG:peso_liquido",
                  "format": "numero",
                  "decimals": 2,
                  "suffix": " kg",
                  "icon": "📊",
                  "color": "#3498db"
                },
                {
                  "title": "PESO LÍQUIDO MÍNIMO",
                  "value": "MIN:peso_liquido",
                  "format": "numero",
                  "decimals": 2,
                  "suffix": " kg",
                  "icon": "⬇️",
                  "color": "#27ae60"
                },
                {
                  "title": "PESO LÍQUIDO MÁXIMO",
                  "value": "MAX:peso_liquido",
                  "format": "numero",
                  "decimals": 2,
                  "suffix": " kg",
                  "icon": "⬆️",
                  "color": "#e74c3c"
                },
                {
                  "title": "PESO BRUTO MÉDIO",
                  "value": "AVG:peso_bruto",
                  "format": "numero",
                  "decimals": 2,
                  "suffix": " kg",
                  "icon": "📊",
                  "color": "#9b59b6"
                }
              ]
            },
            {
              "title": "📊 QUALIDADE DO CADASTRO",
              "cards": [
                {
                  "title": "TAXA DE FAMÍLIA",
                  "value": "CALC:(COUNT(id_produto where nome_familia IS NOT NULL AND nome_familia != \"\")/COUNT(id_produto))*100",
                  "format": "numero",
                  "decimals": 1,
                  "suffix": "%",
                  "icon": "📂",
                  "color": "#3498db"
                },
                {
                  "title": "TAXA DE TIPO",
                  "value": "CALC:(COUNT(id_produto where nome_tipo IS NOT NULL AND nome_tipo != \"\")/COUNT(id_produto))*100",
                  "format": "numero",
                  "decimals": 1,
                  "suffix": "%",
                  "icon": "🏷️",
                  "color": "#27ae60"
                },
                {
                  "title": "TAXA DE COR",
                  "value": "CALC:(COUNT(id_produto where nome_cor IS NOT NULL AND nome_cor != \"\")/COUNT(id_produto))*100",
                  "format": "numero",
                  "decimals": 1,
                  "suffix": "%",
                  "icon": "🎨",
                  "color": "#9b59b6"
                },
                {
                  "title": "TAXA DE GTIN/EAN",
                  "value": "CALC:(COUNT(id_produto where gtin_ean_produto IS NOT NULL AND gtin_ean_produto != \"\")/COUNT(id_produto))*100",
                  "format": "numero",
                  "decimals": 1,
                  "suffix": "%",
                  "icon": "📱",
                  "color": "#e67e22"
                }
              ]
            }
          ]
        }
      },
      "bloco3_distribuicao_familia": {
        "type": "charts_grid_section",
        "title": "DISTRIBUIÇÃO POR FAMÍLIA",
        "class": "dashboard-section dashboard-section-full-width",
        "grid_class": "dashboard-section-grid-2",
        "icon": "📂",
        "config": {
          "container_id": "distribuicao-familia",
          "charts": [
            {
              "type": "chart_pie",
              "config": {
                "container_id": "graf-familia-pizza",
                "data_config": {
                  "group_by": "nome_familia",
                  "operation": "COUNT:id_produto",
                  "filters": "nome_familia IS NOT NULL AND nome_familia != \"\""
                },
                "display_config": {
                  "title": "PRODUTOS POR FAMÍLIA",
                  "donut": true,
                  "show_percentages": true,
                  "show_values": true,
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " produtos",
                  "height": "350px"
                }
              }
            },
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "graf-familia-ranking",
                "data_config": {
                  "group_by": "nome_familia",
                  "operation": "COUNT:id_produto",
                  "filters": "nome_familia IS NOT NULL AND nome_familia != \"\""
                },
                "display_config": {
                  "title": "RANKING POR FAMÍLIA",
                  "layout": "ranking",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " produtos",
                  "height": "350px",
                  "sort_by": "value",
                  "sort_order": "DESC"
                }
              }
            }
          ]
        }
      },
      "bloco4_distribuicao_tipo": {
        "type": "charts_grid_section",
        "title": "DISTRIBUIÇÃO POR TIPO",
        "class": "dashboard-section dashboard-section-full-width",
        "grid_class": "dashboard-section-grid-2",
        "icon": "🏷️",
        "config": {
          "container_id": "distribuicao-tipo",
          "charts": [
            {
              "type": "chart_pie",
              "config": {
                "container_id": "graf-tipo-pizza",
                "data_config": {
                  "group_by": "nome_tipo",
                  "operation": "COUNT:id_produto",
                  "filters": "nome_tipo IS NOT NULL AND nome_tipo != \"\""
                },
                "display_config": {
                  "title": "PRODUTOS POR TIPO",
                  "donut": true,
                  "show_percentages": true,
                  "show_values": true,
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " produtos",
                  "height": "350px"
                }
              }
            },
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "graf-tipo-ranking",
                "data_config": {
                  "group_by": "nome_tipo",
                  "operation": "COUNT:id_produto",
                  "filters": "nome_tipo IS NOT NULL AND nome_tipo != \"\""
                },
                "display_config": {
                  "title": "RANKING POR TIPO",
                  "layout": "ranking",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " produtos",
                  "height": "350px",
                  "sort_by": "value",
                  "sort_order": "DESC"
                }
              }
            }
          ]
        }
      },
      "bloco5_distribuicao_marca": {
        "type": "charts_grid_section",
        "title": "DISTRIBUIÇÃO POR MARCA",
        "class": "dashboard-section dashboard-section-full-width",
        "grid_class": "dashboard-section-grid-2",
        "icon": "🏷️",
        "config": {
          "container_id": "distribuicao-marca",
          "charts": [
            {
              "type": "chart_pie",
              "config": {
                "container_id": "graf-marca-pizza",
                "data_config": {
                  "group_by": "nome_marca",
                  "operation": "COUNT:id_produto",
                  "filters": "nome_marca IS NOT NULL AND nome_marca != \"\""
                },
                "display_config": {
                  "title": "PRODUTOS POR MARCA",
                  "donut": true,
                  "show_percentages": true,
                  "show_values": true,
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " produtos",
                  "height": "350px"
                }
              }
            },
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "graf-marca-ranking",
                "data_config": {
                  "group_by": "nome_marca",
                  "operation": "COUNT:id_produto",
                  "filters": "nome_marca IS NOT NULL AND nome_marca != \"\""
                },
                "display_config": {
                  "title": "RANKING POR MARCA",
                  "layout": "ranking",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " produtos",
                  "height": "350px",
                  "sort_by": "value",
                  "sort_order": "DESC"
                }
              }
            }
          ]
        }
      },
      "bloco6_ranking_fabricante": {
        "type": "charts_grid_section",
        "title": "RANKING POR FABRICANTE",
        "class": "dashboard-section dashboard-section-full-width",
        "grid_class": "dashboard-section-grid-1",
        "icon": "🏢",
        "config": {
          "container_id": "ranking-fabricante",
          "charts": [
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "graf-fabricante",
                "data_config": {
                  "group_by": "nome_fabricante",
                  "operation": "COUNT:id_produto",
                  "filters": "nome_fabricante IS NOT NULL AND nome_fabricante != \"\""
                },
                "display_config": {
                  "title": "PRODUTOS POR FABRICANTE",
                  "layout": "ranking",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " produtos",
                  "height": "400px",
                  "sort_by": "value",
                  "sort_order": "DESC"
                }
              }
            }
          ]
        }
      },
      "bloco7_distribuicao_cor": {
        "type": "charts_grid_section",
        "title": "DISTRIBUIÇÃO POR COR",
        "class": "dashboard-section dashboard-section-full-width",
        "grid_class": "dashboard-section-grid-2",
        "icon": "🎨",
        "config": {
          "container_id": "distribuicao-cor",
          "charts": [
            {
              "type": "chart_pie",
              "config": {
                "container_id": "graf-cor-pizza",
                "data_config": {
                  "group_by": "nome_cor",
                  "operation": "COUNT:id_produto",
                  "filters": "nome_cor IS NOT NULL AND nome_cor != \"\""
                },
                "display_config": {
                  "title": "PRODUTOS POR COR",
                  "donut": true,
                  "show_percentages": true,
                  "show_values": true,
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " produtos",
                  "height": "350px"
                }
              }
            },
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "graf-cor-ranking",
                "data_config": {
                  "group_by": "nome_cor",
                  "operation": "COUNT:id_produto",
                  "filters": "nome_cor IS NOT NULL AND nome_cor != \"\""
                },
                "display_config": {
                  "title": "RANKING POR COR",
                  "layout": "ranking",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " produtos",
                  "height": "350px",
                  "sort_by": "value",
                  "sort_order": "DESC"
                }
              }
            }
          ]
        }
      }
    }
  },
  "url_documentacao": "/docs/ondevou-db-produtos.html",
  "nome_tabela": "produtos"
}

📝 SQL CREATE TABLE - Estrutura Completa

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

🏗️ Estrutura Completa

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

CREATE TABLE public.produtos (
    id integer NOT NULL DEFAULT nextval('produtos_id_seq'::regclass),
    participante integer,
    descricao varchar(255),
    gtin_ean varchar(255),
    codigo_produto_fornecedor varchar(255),
    codigo_produto_fabricante varchar(255),
    foto_capa varchar(255),
    foto_perfil varchar(255),
    id_propriedade integer,
    id_tipo integer,
    id_unidade_venda integer,
    id_participante integer,
    id_fabricante integer,
    id_situacao integer,
    id_localizacao integer,
    id_prateleira integer,
    peso_liquido numeric(25, 3),
    peso_bruto numeric(25, 3),
    chave_vinculacao varchar(255),
    codigo_ncm varchar(8),
    codigo_erplinux varchar(255),
    id_unidade_compra integer,
    codigo_cest varchar(8),
    compoe_rotina_62 varchar(1),
    producao_propria varchar(1),
    volume_metro_cubico numeric(25, 3),
    id_marca integer,
    id_familia integer,
    id_cor integer,
    id_tamanho integer,
    CONSTRAINT produtos_pkey PRIMARY KEY (id),
    CONSTRAINT produtos_unique_participante_cf_cf_ean UNIQUE (codigo_produto_fabricante),
    CONSTRAINT produtos_unique_participante_cf_cf_ean UNIQUE (codigo_produto_fabricante),
    CONSTRAINT produtos_unique_participante_cf_cf_ean UNIQUE (codigo_produto_fabricante),
    CONSTRAINT produtos_unique_participante_cf_cf_ean UNIQUE (codigo_produto_fabricante),
    CONSTRAINT produtos_unique_participante_cf_cf_ean UNIQUE (codigo_produto_fornecedor),
    CONSTRAINT produtos_unique_participante_cf_cf_ean UNIQUE (codigo_produto_fornecedor),
    CONSTRAINT produtos_unique_participante_cf_cf_ean UNIQUE (codigo_produto_fornecedor),
    CONSTRAINT produtos_unique_participante_cf_cf_ean UNIQUE (codigo_produto_fornecedor),
    CONSTRAINT produtos_unique_participante_cf_cf_ean UNIQUE (gtin_ean),
    CONSTRAINT produtos_unique_participante_cf_cf_ean UNIQUE (gtin_ean),
    CONSTRAINT produtos_unique_participante_cf_cf_ean UNIQUE (gtin_ean),
    CONSTRAINT produtos_unique_participante_cf_cf_ean UNIQUE (gtin_ean),
    CONSTRAINT produtos_unique_participante_cf_cf_ean UNIQUE (participante),
    CONSTRAINT produtos_unique_participante_cf_cf_ean UNIQUE (participante),
    CONSTRAINT produtos_unique_participante_cf_cf_ean UNIQUE (participante),
    CONSTRAINT produtos_unique_participante_cf_cf_ean UNIQUE (participante),
    CONSTRAINT 2200_221875_1_not_null CHECK (id IS NOT NULL)
);

-- ============================================================
-- ÍNDICES
-- ============================================================
CREATE INDEX idx_produtos_id_cor ON public.produtos USING btree (id_cor);
CREATE INDEX idx_produtos_id_fabricante ON public.produtos USING btree (id_fabricante);
CREATE INDEX idx_produtos_id_familia ON public.produtos USING btree (id_familia);
CREATE INDEX idx_produtos_id_localizacao ON public.produtos USING btree (id_localizacao);
CREATE INDEX idx_produtos_id_marca ON public.produtos USING btree (id_marca);
CREATE INDEX idx_produtos_id_participante ON public.produtos USING btree (id_participante);
CREATE INDEX idx_produtos_id_prateleira ON public.produtos USING btree (id_prateleira);
CREATE INDEX idx_produtos_id_propriedade ON public.produtos USING btree (id_propriedade);
CREATE INDEX idx_produtos_id_situacao ON public.produtos USING btree (id_situacao);
CREATE INDEX idx_produtos_id_tamanho ON public.produtos USING btree (id_tamanho);
CREATE INDEX idx_produtos_id_tipo ON public.produtos USING btree (id_tipo);
CREATE INDEX idx_produtos_id_unidade_compra ON public.produtos USING btree (id_unidade_compra);
CREATE INDEX idx_produtos_id_unidade_venda ON public.produtos USING btree (id_unidade_venda);
CREATE INDEX idx_produtos_p_id ON public.produtos USING btree (participante, id DESC);
CREATE INDEX idx_produtos_p_id_participante ON public.produtos USING btree (participante, id_participante);
CREATE INDEX idx_produtos_participante ON public.produtos USING btree (participante);
CREATE UNIQUE INDEX produtos_pk_id ON public.produtos USING btree (id);
CREATE UNIQUE INDEX produtos_unique_participante_cf_cf_ean ON public.produtos USING btree (participante, codigo_produto_fabricante, codigo_produto_fornecedor, gtin_ean);

✅ 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
chave_vinculacao - character varying ❌ Só no banco
codigo_cest text character varying ✅ OK
codigo_erplinux text character varying ✅ OK
codigo_ncm text character varying ✅ OK
codigo_produto_fabricante text character varying ✅ OK
codigo_produto_fornecedor - character varying ❌ Só no banco
compoe_rotina_62 - character varying ❌ Só no banco
contagem_linha text - ⚠️ Só no JSON
descricao text character varying ✅ OK
find text - ⚠️ Só no JSON
foto_capa - character varying ❌ Só no banco
foto_perfil - character varying ❌ Só no banco
gtin_ean text character varying ✅ OK
id number integer ✅ OK
id_cor - integer ❌ Só no banco
id_fabricante - integer ❌ Só no banco
id_familia - integer ❌ Só no banco
id_localizacao - integer ❌ Só no banco
id_marca - integer ❌ Só no banco
id_participante - integer ❌ Só no banco
id_prateleira - integer ❌ Só no banco
id_produto_todos number - ⚠️ Só no JSON
id_produto_vinculo number - ⚠️ Só no JSON
id_propriedade - integer ❌ Só no banco
id_situacao - integer ❌ Só no banco
id_tamanho - integer ❌ Só no banco
id_tipo - integer ❌ Só no banco
id_unidade_compra - integer ❌ Só no banco
id_unidade_venda - integer ❌ Só no banco
nome_cor number - ⚠️ Só no JSON
nome_familia number - ⚠️ Só no JSON
nome_marca number - ⚠️ Só no JSON
nome_tamanho number - ⚠️ Só no JSON
nome_tipo number - ⚠️ Só no JSON
nome_unidade_compra text - ⚠️ Só no JSON
nome_unidade_venda text - ⚠️ Só no JSON
participante number integer ✅ OK
peso_bruto number numeric ✅ OK
peso_liquido number numeric ✅ OK
producao_propria text character varying ✅ OK
qrcode text - ⚠️ Só no JSON
quantidade_consumo_producao number - ⚠️ Só no JSON
quantidade_entrada_nf number - ⚠️ Só no JSON
quantidade_entrada_producao number - ⚠️ Só no JSON
quantidade_final number - ⚠️ Só no JSON
quantidade_inicial number - ⚠️ Só no JSON
quantidade_saida_nf number - ⚠️ Só no JSON
valor_total_consumo_producao number - ⚠️ Só no JSON
valor_total_entrada_nf number - ⚠️ Só no JSON
valor_total_entrada_producao number - ⚠️ Só no JSON
valor_total_final number - ⚠️ Só no JSON
valor_total_inicial number - ⚠️ Só no JSON
valor_total_saida_nf number - ⚠️ Só no JSON
volume_metro_cubico 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_produtos WHERE participante = ${globais.dados_fixo.participante}`,
    'view': 'view_produtos'
});

// 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': 'produtos' });

// 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