🗄️ 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