🗄️ Controle de Abastecimento: Reduza Custos com OndeVou.com

Registre e acompanhe o consumo de combustível dos seus veículos em tempo real. Otimize custos e evite desperdícios na sua frota.
🔗 Tabela relacionada: veiculos

📋 31 colunas 🔗 9 relacionamentos 🎮 9 controles 👁️ view_veiculos_abastecimentos 📱 QR Code 🔑 PRIMARY KEY 🎮 1 ações externas

📋 Estrutura da Tabela

A tabela veiculos_abastecimentos possui 31 colunas.

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

Campo id

🔑 PRIMARY KEY

Campo na tabela: id

Alias na VIEW: id_abastecimento

Readonly: ✅ Gerado automaticamente pelo sistema

Grava em auditoria: ✅ Sim

Launch: ✅ Abre documento relacionado

Formsearch: ✅ Permite busca avançada

📱 qrcode: Gerar QR Code Documento
📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou id
  • Alias OndeVou id_abastecimento
  • Tabela OndeVou veiculos_abastecimentos,auditor_veiculos_abaste...
🚀 Launch
  • {
      "menu": {
        "data-id": "557"
      },
      "formsearch": {
        "id": "id_abastecimento"
      }
    }
🔍 Formsearch
  • {
      "required": ""
    }
🎮 Controls Acao
  • {
      "qrcode": {
        "acao": "getQRcode",
        "messagem": "Gerar QR Code"
      }
    }
  • Alias: id_abastecimento
  • Tabelas: veiculos_abastecimentos, auditor_veiculos_abastecimentos ✅
  • Launch: ✓
  • ControlsAcao: ✓
  • FormSearch: ✓
  • 🔑 PRIMARY KEY
  • VIEW: id_abastecimento
  • 📋 Auditoria
  • 🚀 Launch
  • 📋 FormSearch
📋 qrcode
🔒 Somente leitura📋 Somente view📱 QRCode: veiaba
Campo Tabela qrcode
Campo VIEW / Exibido qrcode ⚠️ (somente view)
Tipo canvas (QR Code: veiaba)
Data Table qrcode
Descrição

Campo qrcode

📱 QR Code

Tipo: veiaba (veiaba)

Texto: Campos

Formato: ondevou_veiaba_{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: veiaba
📋 Participante
✅ Obrigatório🔒 Somente leitura👁️ Oculto💾 Grava
Campo Tabela participante
Campo VIEW / Exibido participante
Tipo text
Data Table veiculos_abastecimentos,auditor_veiculos_abastecimentos
Descrição

Campo participante

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados text
Validacao
  • Obrigatório ✅ Sim
  • Somente leitura 🔒 Sim
⚙️ Comportamento
  • Valor padrão 1
📊 Dados
  • Campo OndeVou participante
  • Tabela OndeVou veiculos_abastecimentos,auditor_veiculos_abaste...
  • Tabelas: veiculos_abastecimentos, auditor_veiculos_abastecimentos ✅
  • Hidden: ✓ (dados ocultos)
  • Value: 1
📋 Data abastecimento
✅ Obrigatório💾 Grava
Campo Tabela data_abastecimento
Campo VIEW / Exibido data_hora_abastecimento
Tipo date
Data Table veiculos_abastecimentos
Descrição

Campo data abastecimento

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados date
Validacao
  • Obrigatório ✅ Sim
📊 Dados
  • Campo OndeVou data_abastecimento
  • Alias OndeVou data_hora_abastecimento
  • Tabela OndeVou veiculos_abastecimentos
  • Alias: data_hora_abastecimento
  • Tabelas: veiculos_abastecimentos ✅
📋 Placa
✅ Obrigatório🔒 Somente leitura📋 Somente view
Campo Tabela placa_veiculo
Campo VIEW / Exibido placa_veiculo ⚠️ (somente view)
Tipo text
Data Table view_veiculos_abastecimentos
Descrição

Campo placa

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados text
Validacao
  • Obrigatório ✅ Sim
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou placa_veiculo
  • Tabela OndeVou view_veiculos_abastecimentos
  • Tabelas: view_veiculos_abastecimentos (só view)
📋 Veículo
✅ Obrigatório💾 Grava🔗 getdata
Campo Tabela id_veiculo
Campo VIEW / Exibido descricao_veiculo (ID: id_veiculo)
Tipo number (getdata)
Data Table veiculos_abastecimentos,auditor_veiculos_abastecimentos
Descrição

Campo veículo

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
Validacao
  • Obrigatório ✅ Sim
📊 Dados
  • Campo OndeVou descricao_veiculo
  • ID OndeVou id_veiculo
  • Tabela OndeVou veiculos_abastecimentos,auditor_veiculos_abaste...
🔗 Getdata
  • {
      "view": "view_veiculos",
      "data": "view_veiculos",
      "text-empty-search": "sim",
      "campo-data-id": "id_veiculo",
      "campo-data-value-input": "id_veiculo,placa_veiculo,descricao_veiculo",
      "campo-data-input-select-view": "id_veiculo,placa_veiculo,descricao_veiculo,renavam",
      "query": {
        "select": "* from view_veiculos",
        "where": {
          "and": {
            "texto_digitado": {
              "left": "(unaccent(LOWER(concat(id_veiculo,` `,placa_veiculo,` `,descricao_veiculo,` `,renavam))) ilike `%",
              "right": "%`) and (participante=`1`)"
            }
          }
        }
      }
    }
🔍 Formsearch
  • {
      "required": ""
    }
  • ID: id_veiculo
  • Tabelas: veiculos_abastecimentos, auditor_veiculos_abastecimentos ✅
  • FormSearch: ✓
📋 Prop/Ter
📋 Somente view🔗 getdata
Campo Tabela id_propriedade
Campo VIEW / Exibido descricao_propriedade ⚠️ (somente view)
Tipo number (getdata)
Data Table veiculos
Descrição

Campo prop/ter

Getdata🔗 veiculos_propriedade
📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
📊 Dados
  • Campo OndeVou descricao_propriedade
  • ID OndeVou id_propriedade
  • Tabela OndeVou veiculos
🔗 Getdata
  • {
      "view": "view_veiculos_propriedade",
      "data": "view_veiculos_propriedade",
      "text-empty-search": "sim",
      "campo-data-id": "id_propriedade",
      "campo-data-value-input": "descricao_propriedade",
      "campo-data-input-select-view": "descricao_propriedade",
      "query": {
        "select": "* from view_veiculos_propriedade",
        "where": {
          "and": {
            "texto_digitado": {
              "left": "(unaccent(LOWER(concat(id_propriedade,` `,descricao_propriedade))) ilike `%",
              "right": "%`)"
            }
          }
        }
      }
    }
🔍 Formsearch
  • {
      "required": ""
    }
  • ID: id_propriedade
  • Tabelas: veiculos (só view)
  • FormSearch: ✓
📋 Motorista
✅ Obrigatório💾 Grava🔗 getdata
Campo Tabela id_motorista
Campo VIEW / Exibido nome_motorista (ID: id_motorista)
Tipo number (getdata)
Data Table veiculos_abastecimentos,auditor_veiculos_abastecimentos
Descrição

Campo motorista

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
Validacao
  • Obrigatório ✅ Sim
📊 Dados
  • Campo OndeVou nome_motorista
  • ID OndeVou id_motorista
  • Tabela OndeVou veiculos_abastecimentos,auditor_veiculos_abaste...
🔗 Getdata
  • {
      "view": "view_motoristas",
      "data": "view_motoristas",
      "text-empty-search": "sim",
      "campo-data-id": "id_motorista",
      "campo-data-value-input": "nome_motorista,cpf_motorista",
      "campo-data-input-select-view": "nome_motorista,cpf_motorista",
      "query": {
        "select": "* from view_motoristas",
        "where": {
          "and": {
            "texto_digitado": {
              "left": "(unaccent(LOWER(concat(id_motorista,` `,nome_motorista,` `,cpf_motorista))) ilike `%",
              "right": "%`) and (participante=`1`)"
            }
          }
        }
      }
    }
🔍 Formsearch
  • {
      "required": ""
    }
  • ID: id_motorista
  • Tabelas: veiculos_abastecimentos, auditor_veiculos_abastecimentos ✅
  • FormSearch: ✓
📋 Nome/Razão Social
✅ Obrigatório💾 Grava🔗 getdata
Campo Tabela id_participante
Campo VIEW / Exibido razao_social (ID: id_participante)
Tipo number (getdata)
Data Table veiculos_abastecimentos,auditor_veiculos_abastecimentos
Descrição

Campo nome/razão social

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
Validacao
  • Obrigatório ✅ Sim
📊 Dados
  • Campo OndeVou razao_social
  • ID OndeVou id_participante
  • Tabela OndeVou veiculos_abastecimentos,auditor_veiculos_abaste...
🔗 Getdata
  • {
      "view": "view_participantes_privado",
      "data": "view_participantes_privado",
      "campo-data-id": "id_participante",
      "campo-data-value-input": "id_participante,razao_social",
      "campo-data-input-select-view": "id_participante,codigo_erplinux_cliente,codigo_erplinux_fornecedor,razao_social,nome_fantasia,cnpj,cpf,cep,cep_erplinux,nome_bairro,nome_cidade,sigla_uf",
      "query": {
        "select": "* from view_participantes_privado",
        "where": {
          "and": {
            "texto_digitado": {
              "left": "(unaccent(LOWER(concat(id_participante,` `,codigo_erplinux_cliente,` `,codigo_erplinux_fornecedor,` `,razao_social,` `,nome_fantasia,` `,cnpj,` `,cpf,` `,cep,` `,cep_erplinux,` `,nome_bairro,` `,nome_cidade,` `,sigla_uf))) ilike `%",
              "right": "%`) and (participante=`1`)"
            }
          }
        }
      }
    }
🔍 Formsearch
  • {
      "required": ""
    }
  • ID: id_participante
  • Tabelas: veiculos_abastecimentos, auditor_veiculos_abastecimentos ✅
  • FormSearch: ✓
📋 Cidade
🔒 Somente leitura💾 Grava🔗 getdata
Campo Tabela id_cidade
Campo VIEW / Exibido nome_cidade (ID: id_cidade)
Tipo number (getdata)
Data Table veiculos_abastecimentos
Descrição

Campo cidade

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou nome_cidade
  • ID OndeVou id_cidade
  • Tabela OndeVou veiculos_abastecimentos
🔗 Getdata
  • {
      "view": "view_cidades",
      "data": "view_cidades",
      "campo-data-id": "id_cidade",
      "campo-data-value-input": "nome_cidade",
      "campo-data-input-select-view": "nome_cidade,sigla_uf",
      "query": {
        "select": "* from view_cidades",
        "where": {
          "and": {
            "texto_digitado": {
              "left": "(unaccent(LOWER(concat(nome_cidade,` `,sigla_uf))) ilike `%",
              "right": "%`)"
            }
          }
        }
      }
    }
🔍 Formsearch
  • {
      "required": ""
    }
  • ID: id_cidade
  • Tabelas: veiculos_abastecimentos ✅
  • FormSearch: ✓
📋 UF
🔒 Somente leitura💾 Grava🔗 getdata
Campo Tabela id_uf
Campo VIEW / Exibido sigla_uf (ID: id_uf)
Tipo number (getdata)
Data Table veiculos_abastecimentos
Descrição

Campo uf

Getdata🔗 uf
📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou sigla_uf
  • ID OndeVou id_uf
  • Tabela OndeVou veiculos_abastecimentos
🔗 Getdata
  • {
      "view": "view_uf",
      "data": "view_uf",
      "text-empty-search": "sim",
      "campo-data-id": "id_uf",
      "campo-data-value-input": "sigla_uf",
      "campo-data-input-select-view": "nome_uf,sigla_uf",
      "query": {
        "select": "* from view_uf",
        "where": {
          "and": {
            "texto_digitado": {
              "left": "(unaccent(LOWER(concat(nome_uf,` `,sigla_uf))) ilike `%",
              "right": "%`)"
            }
          }
        }
      }
    }
🔍 Formsearch
  • {
      "required": ""
    }
  • ID: id_uf
  • Tabelas: veiculos_abastecimentos ✅
  • FormSearch: ✓
📋 Tipo Combustível
👁️ Oculto📋 Somente view🔗 getdata
Campo Tabela id_tipo_combustivel
Campo VIEW / Exibido nome_tipo_combustivel ⚠️ (somente view)
Tipo number (getdata)
Data Table view_veiculos_abastecimentos
Descrição

Campo tipo combustível

Getdata🔗 combustiveis_tipo
📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
📊 Dados
  • Campo OndeVou nome_tipo_combustivel
  • ID OndeVou id_tipo_combustivel
  • Tabela OndeVou view_veiculos_abastecimentos
🔗 Getdata
  • {
      "view": "view_combustiveis_tipo",
      "data": "view_combustiveis_tipo",
      "text-empty-search": "sim",
      "campo-data-id": "id_tipo_combustivel",
      "campo-data-value-input": "id_tipo_combustivel,nome_tipo_combustivel",
      "campo-data-input-select-view": "id_tipo_combustivel,nome_tipo_combustivel",
      "query": {
        "select": "* from view_combustiveis_tipo",
        "where": {
          "and": {
            "texto_digitado": {
              "left": "(unaccent(LOWER(concat(id_tipo_combustivel,` `,nome_tipo_combustivel))) ilike `%",
              "right": "%`)"
            }
          }
        },
        "order": "id_tipo_combustivel asc"
      }
    }
🔍 Formsearch
  • {
      "required": ""
    }
  • ID: id_tipo_combustivel
  • Tabelas: view_veiculos_abastecimentos (só view)
  • Hidden: ✓ (dados ocultos)
  • FormSearch: ✓
📋 Combustível
✅ Obrigatório💾 Grava🔗 getdata
Campo Tabela id_combustivel
Campo VIEW / Exibido nome_combustivel (ID: id_combustivel)
Tipo number (getdata)
Data Table veiculos_abastecimentos,auditor_veiculos_abastecimentos
Descrição

Campo combustível

Getdata🔗 combustiveis
📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
Validacao
  • Obrigatório ✅ Sim
📊 Dados
  • Campo OndeVou nome_combustivel
  • ID OndeVou id_combustivel
  • Tabela OndeVou veiculos_abastecimentos,auditor_veiculos_abaste...
🔗 Getdata
  • {
      "view": "view_combustiveis",
      "data": "view_combustiveis",
      "text-empty-search": "sim",
      "campo-data-id": "id_combustivel",
      "campo-data-value-input": "id_combustivel,nome_combustivel",
      "campo-data-input-select-view": "id_combustivel,nome_combustivel",
      "query": {
        "select": "* from view_combustiveis",
        "where": {
          "and": {
            "texto_digitado": {
              "left": "(unaccent(LOWER(concat(id_combustivel,` `,nome_combustivel))) ilike `%",
              "right": "%`)"
            }
          }
        },
        "order": "id_combustivel asc"
      }
    }
🔍 Formsearch
  • {
      "required": ""
    }
  • ID: id_combustivel
  • Tabelas: veiculos_abastecimentos, auditor_veiculos_abastecimentos ✅
  • FormSearch: ✓
📋 Und
🔒 Somente leitura📋 Somente view
Campo Tabela id_unidade
Campo VIEW / Exibido nome_unidade_combustivel ⚠️ (somente view)
Tipo number
Data Table view_veiculos_abastecimentos
Descrição

Campo und

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou nome_unidade_combustivel
  • ID OndeVou id_unidade
  • ID Alias OndeVou id_unidade_combustivel
  • Tabela OndeVou view_veiculos_abastecimentos
  • ID: id_unidade
  • ID VIEW: id_unidade_combustivel
  • Tabelas: view_veiculos_abastecimentos (só view)
📋 QTD
✅ Obrigatório💾 Grava
Campo Tabela quantidade
Campo VIEW / Exibido qtd_abastecida
Tipo number
Data Table veiculos_abastecimentos
Descrição

Campo qtd

📋 Todos os Atributos
Eventos
  • Tecla solta setInputFormatNumber(this,`3`) 📌 setInputFormatNumber
🎨 Formatacao
  • Tipo de dados number
Validacao
  • Obrigatório ✅ Sim
⚙️ Comportamento
  • Render rendersTableVeiculosAbastecimentos 🎨 RENDER
📊 Dados
  • Campo OndeVou quantidade
  • Alias OndeVou qtd_abastecida
  • Tabela OndeVou veiculos_abastecimentos
  • Alias: qtd_abastecida
  • Tabelas: veiculos_abastecimentos ✅
  • Eventos: keyup
  • Render: ✓
📋 Preço
✅ Obrigatório💾 Grava
Campo Tabela preco_unitario
Campo VIEW / Exibido preco_unitario
Tipo number
Data Table veiculos_abastecimentos
Descrição

Campo preço

📋 Todos os Atributos
Eventos
  • Tecla solta setInputFormatNumber(this,`3`) 📌 setInputFormatNumber
🎨 Formatacao
  • Tipo de dados number
Validacao
  • Obrigatório ✅ Sim
⚙️ Comportamento
  • Render rendersTableVeiculosAbastecimentos 🎨 RENDER
📊 Dados
  • Campo OndeVou preco_unitario
  • Tabela OndeVou veiculos_abastecimentos
  • Tabelas: veiculos_abastecimentos ✅
  • Eventos: keyup
  • Render: ✓
📋 Valor
✅ Obrigatório💾 Grava
Campo Tabela valor_abastecimento
Campo VIEW / Exibido valor_abastecimento
Tipo number
Data Table veiculos_abastecimentos
Descrição

Campo valor

📋 Todos os Atributos
Eventos
  • Tecla solta setInputFormatNumber(this,`2`) 📌 setInputFormatNumber
🎨 Formatacao
  • Tipo de dados number
Validacao
  • Obrigatório ✅ Sim
⚙️ Comportamento
  • Render rendersTableVeiculosAbastecimentos 🎨 RENDER
📊 Dados
  • Campo OndeVou valor_abastecimento
  • Tabela OndeVou veiculos_abastecimentos
  • Tabelas: veiculos_abastecimentos ✅
  • Eventos: keyup
  • Render: ✓
📋 N.Docto
💾 Grava
Campo Tabela numero_documento
Campo VIEW / Exibido numero_documento
Tipo text
Data Table veiculos_abastecimentos
Descrição

Campo n.docto

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados text
📊 Dados
  • Campo OndeVou numero_documento
  • Tabela OndeVou veiculos_abastecimentos
  • Tabelas: veiculos_abastecimentos ✅
📋 Observação
💾 Grava
Campo Tabela observacao
Campo VIEW / Exibido observacao
Tipo text
Data Table veiculos_abastecimentos
Descrição

Campo observação

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados text
📊 Dados
  • Campo OndeVou observacao
  • Tabela OndeVou veiculos_abastecimentos
🔍 Formsearch
  • {
      "required": ""
    }
  • Tabelas: veiculos_abastecimentos ✅
  • FormSearch: ✓
📋 Trajeto
📋 Somente view
Campo Tabela trajeto_texto
Campo VIEW / Exibido trajeto_texto ⚠️ (somente view)
Tipo text
Data Table view_veiculos_abastecimentos
Descrição

Campo trajeto

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados text
📊 Dados
  • Campo OndeVou trajeto_texto
  • Tabela OndeVou view_veiculos_abastecimentos
🔍 Formsearch
  • {
      "required": ""
    }
  • Tabelas: view_veiculos_abastecimentos (só view)
  • FormSearch: ✓
📋 KM anterior
🔒 Somente leitura📋 Somente view
Campo Tabela km_anterior
Campo VIEW / Exibido km_anterior ⚠️ (somente view)
Tipo number
Data Table view_veiculos_abastecimentos
Descrição

Campo km anterior

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou km_anterior
  • Tabela OndeVou view_veiculos_abastecimentos
  • Tabelas: view_veiculos_abastecimentos (só view)
📋 KM atual
💾 Grava
Campo Tabela km
Campo VIEW / Exibido km
Tipo number
Data Table veiculos_abastecimentos
Descrição

Campo km atual

📋 Todos os Atributos
Eventos
  • Tecla solta setInputFormatApenasNumeros(this) 📌 setInputFormatApenasNumeros
  • Tecla pressionada/solta return SomenteNumero(event) 📌 return
🎨 Formatacao
  • Tipo de dados number
📊 Dados
  • Campo OndeVou km
  • Tabela OndeVou veiculos_abastecimentos
  • Tabelas: veiculos_abastecimentos ✅
  • Eventos: keyup
📋 KM rodado
🔒 Somente leitura📋 Somente view
Campo Tabela km_rodado
Campo VIEW / Exibido km_rodado ⚠️ (somente view)
Tipo number
Data Table view_veiculos_abastecimentos
Descrição

Campo km rodado

📋 Todos os Atributos
Eventos
  • Tecla solta setInputFormatNumber(this,`0`) 📌 setInputFormatNumber
🎨 Formatacao
  • Tipo de dados number
Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou km_rodado
  • Tabela OndeVou view_veiculos_abastecimentos
  • Tabelas: view_veiculos_abastecimentos (só view)
  • Eventos: keyup
📋 Qtd consumo
🔒 Somente leitura📋 Somente view
Campo Tabela qtd_consumida
Campo VIEW / Exibido qtd_consumida ⚠️ (somente view)
Tipo number
Data Table view_veiculos_abastecimentos
Descrição

Campo qtd consumo

📋 Todos os Atributos
Eventos
  • Tecla solta setInputFormatNumber(this,`2`) 📌 setInputFormatNumber
🎨 Formatacao
  • Tipo de dados number
Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou qtd_consumida
  • Tabela OndeVou view_veiculos_abastecimentos
  • Tabelas: view_veiculos_abastecimentos (só view)
  • Eventos: keyup
📋 Valor consumo
🔒 Somente leitura📋 Somente view
Campo Tabela valor_consumo
Campo VIEW / Exibido valor_consumo ⚠️ (somente view)
Tipo number
Data Table view_veiculos_abastecimentos
Descrição

Campo valor consumo

📋 Todos os Atributos
Eventos
  • Tecla solta setInputFormatNumber(this,`2`) 📌 setInputFormatNumber
🎨 Formatacao
  • Tipo de dados number
Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou valor_consumo
  • Tabela OndeVou view_veiculos_abastecimentos
  • Tabelas: view_veiculos_abastecimentos (só view)
  • Eventos: keyup
📋 KM por litro
🔒 Somente leitura📋 Somente view
Campo Tabela km_por_litro
Campo VIEW / Exibido km_por_litro ⚠️ (somente view)
Tipo number
Data Table view_veiculos_abastecimentos
Descrição

Campo km por litro

📋 Todos os Atributos
Eventos
  • Tecla solta setInputFormatNumber(this,`3`) 📌 setInputFormatNumber
🎨 Formatacao
  • Tipo de dados number
Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou km_por_litro
  • Tabela OndeVou view_veiculos_abastecimentos
  • Tabelas: view_veiculos_abastecimentos (só view)
  • Eventos: keyup
📋 Membro
🔒 Somente leitura📋 Somente view🔗 getdata
Campo Tabela id_membro
Campo VIEW / Exibido nome_membro ⚠️ (somente view)
Tipo number (getdata)
Data Table auditor_veiculos_abastecimentos
Descrição

Campo membro

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou nome_membro
  • ID OndeVou id_membro
  • Tabela OndeVou auditor_veiculos_abastecimentos
🔗 Getdata
  • {
      "view": "view_membros",
      "data": "view_membros",
      "campo-data-id": "id_membro",
      "campo-data-value-input": "nome_membro",
      "campo-data-input-select-view": "nome_membro,email_membro",
      "query": {
        "select": "* from view_membros",
        "where": {
          "and": {
            "texto_digitado": {
              "left": "(unaccent(LOWER(concat(id_membro,` `,nome_membro,` `,email_membro))) ilike `%",
              "right": "%`)"
            }
          }
        }
      }
    }
🔍 Formsearch
  • {
      "required": ""
    }
  • ID: id_membro
  • Tabelas: auditor_veiculos_abastecimentos (só view)
  • FormSearch: ✓
📋 Latitude
🔒 Somente leitura👁️ Oculto📋 Somente view
Campo Tabela latitude
Campo VIEW / Exibido latitude ⚠️ (somente view)
Tipo number
Data Table auditor_veiculos_abastecimentos
Descrição

Campo latitude

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou latitude
  • Tabela OndeVou auditor_veiculos_abastecimentos
  • Tabelas: auditor_veiculos_abastecimentos (só view)
  • Hidden: ✓ (dados ocultos)
📋 Longitude
🔒 Somente leitura👁️ Oculto📋 Somente view
Campo Tabela longitude
Campo VIEW / Exibido longitude ⚠️ (somente view)
Tipo number
Data Table auditor_veiculos_abastecimentos
Descrição

Campo longitude

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou longitude
  • Tabela OndeVou auditor_veiculos_abastecimentos
  • Tabelas: auditor_veiculos_abastecimentos (só view)
  • Hidden: ✓ (dados ocultos)
📋 Ip
🔒 Somente leitura👁️ Oculto📋 Somente view
Campo Tabela ip
Campo VIEW / Exibido ip ⚠️ (somente view)
Tipo text
Data Table auditor_veiculos_abastecimentos
Descrição

Campo ip

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados text
Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou ip
  • Tabela OndeVou auditor_veiculos_abastecimentos
  • Tabelas: auditor_veiculos_abastecimentos (só view)
  • Hidden: ✓ (dados ocultos)
📋 Data inclusão
🔒 Somente leitura👁️ Oculto📋 Somente view
Campo Tabela data_inclusao_abastecimento
Campo VIEW / Exibido data_inclusao_abastecimento ⚠️ (somente view)
Tipo date
Data Table auditor_veiculos_abastecimentos
Descrição

Campo data inclusão

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados date
Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou data_inclusao_abastecimento
  • Tabela OndeVou auditor_veiculos_abastecimentos
  • Tabelas: auditor_veiculos_abastecimentos (só view)
  • 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.

veiculos · Principal: Veículo 📄
veiculos_propriedade · Auxiliar: Prop/Ter 📚
motoristas · Principal: Motorista 📄
participantes_privado · Auxiliar: Nome/Razão Social 📄
cidades · Principal: Cidade 📄
uf · Principal: UF 📄
combustiveis_tipo · Auxiliar: Tipo Combustível 📚
combustiveis · Principal: Combustível 📚
membros · Principal: Membro 📄

🔍 Filtros (formsearch)

Campos disponíveis para filtragem na busca.

Apenas veículos ativos checkbox
Apenas veículos inativos checkbox
Apenas veículos disponíveis checkbox
Apenas veículos indisponíveis checkbox
Data e Hora Inicial datetime-local
Data e Hora Final datetime-local

🎮 Controles Disponíveis

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

📂 Controle
🔘 Add add 🔘 Copy copy 🔘 Edit edit 💾 Salvar save 🔘 Delete delete 🔘 Remove remove 🔘 Marker marker
📂 Documento
📱 Gerar QR Code qrcode Linha do tempo timeline

👁️ View Associada

Nome: view_veiculos_abastecimentos

📱 QR Code

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

Configuração

'qrcode': {
    'input': {
        'readonly': 'readonly',
        'type': 'canvas',
        'qrcode-type': 'veiaba',
        '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_veiaba_{participante}_{id}
  • Uso: Identificação física do registro

🔑 PRIMARY KEY - Campo Id

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

Configuração

'Id': {
    'input': {
        'readonly': 'readonly',
        'data-type-ondevou': 'number',
        'data-field-ondevou': 'id',
        "data-field-alias-ondevou": "id_abastecimento",
        'data-table-ondevou': 'veiculos_abastecimentos,auditor_veiculos_abastecimentos'
    }
}

Comportamento

  • 🔒 Readonly: Campo não editável
  • 📊 Tipo: number
  • 🔹 Alias na VIEW: id_abastecimento
  • 📋 Auditoria: Grava em veiculos_abastecimentos,auditor_veiculos_abastecimentos
  • 🚀 Launch: Abre documento relacionado

🎮 Controls-Ação

📂 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 95 KB
{
  "table-id": "veiculos_abastecimentos",
  "data-table-ondevou": "veiculos_abastecimentos",
  "data-table-auditor": "auditor_veiculos_abastecimentos",
  "data-field-auditor": "id_abastecimento",
  "table-sum-top": "nao",
  "table-class": "highlight",
  "controls": [
    "add",
    "copy",
    "edit",
    "save",
    "delete",
    "remove",
    "qrcode",
    "marker",
    "timeline"
  ],
  "html": {
    "div": {
      "before": "",
      "after": ""
    }
  },
  "entidade": {
    "page": "veiculo/abastecimento",
    "title": "Abastecimento de Veículo",
    "table": "veiculos_abastecimentos",
    "campo_id": "id_abastecimento",
    "view": "view_veiculos_abastecimentos",
    "where_post": "",
    "function": "getVeiculoAbastecimentoQrCode",
    "ogTitle": "Controle de Abastecimento: Reduza Custos com OndeVou.com",
    "ogDescription": "Registre e acompanhe o consumo de combustível dos seus veículos em tempo real. Otimize custos e evite desperdícios na sua frota.",
    "ogImage": "",
    "ogUrl": "https://ondevou.com/veiculo/abastecimento",
    "ogKeywords": "abastecimento de veículos, controle de combustível, gestão de frota, eficiência logística, redução de custos, ondevou, onde, onde ir, software",
    "sobre": {},
    "posts": {
      "1": {
        "id_post": "1",
        "nome_rotina": "Sobre OndeVou Veículos",
        "descricao": "O OndeVou Veículos é a solução ideal para empresas que precisam gerenciar frotas de forma eficiente. Com rastreamento em tempo real, controle de manutenção, abastecimento e relatórios detalhados, reduzimos custos operacionais e aumentamos a eficiência.",
        "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": 1786541101621,
        "link_post": {
          "title": "Saiba mais sobre o OndeVou Veículos",
          "url": "plataforma/produto/veiculos",
          "onclick": "navClose();startMenu(this);return false;",
          "menu": "506"
        }
      }
    }
  },
  "routines": {
    "add": "572",
    "edit": "573",
    "remove": "574"
  },
  "pdf": {
    "orientation": "landscape",
    "format": "a3",
    "sum-group-by": [
      "Placa"
    ],
    "columns": [
      "Id",
      "Data abastecimento",
      "Placa",
      "Veículo",
      "Motorista",
      "Nome/Razão Social",
      "Cidade",
      "UF",
      "Combustível",
      "Und",
      "QTD",
      "Preço",
      "Valor",
      "N.Docto",
      "Observação",
      "Trajeto",
      "KM anterior",
      "KM atual",
      "KM rodado",
      "Qtd consumo",
      "Valor consumo",
      "KM por litro",
      "Membro"
    ]
  },
  "search": {
    "id_search_abastecimento": {
      "data-type-ondevou": "number",
      "texto_label": "Abastecimento",
      "title": "Digite parte do descrição ou placa do véiculo",
      "data-field-ondevou": "id_search_abastecimento",
      "data-table-ondevou": "view_veiculos_abastecimentos",
      "getdata": "{\"view\":\"view_veiculos_abastecimentos\",\"data\":\"view_veiculos_abastecimentos\",\"text-empty-search\":\"sim\",\"campo-data-id\":\"id_abastecimento\",\"campo-data-value-input\":\"id_abastecimento,placa_veiculo,descricao_veiculo,data_hora_abastecimento_formatada\",\"campo-data-input-select-view\":\"id_abastecimento,placa_veiculo,descricao_veiculo,data_hora_abastecimento_formatada\",\"query\":{\"select\":\"* from view_veiculos_abastecimentos\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(concat(id_abastecimento,` `,placa_veiculo,` `,descricao_veiculo,` `,data_hora_abastecimento_formatada))) ilike `%\",\"right\":\"%`) and (participante=`1`)\"}}},\"order\":\"id_abastecimento desc\"}}"
    }
  },
  "headers": {
    "Id": {
      "width": "7%"
    },
    "qrcode": {
      "width": "100px",
      "align": "left",
      "class": "qrcode"
    },
    "Participante": {
      "width": "10%",
      "type": "hidden"
    },
    "Data abastecimento": {
      "type": "datetime-local",
      "width": "13%",
      "align": "center",
      "count": "ocorrencias"
    },
    "Placa": {
      "width": "10%"
    },
    "Veículo": {
      "width": "15%"
    },
    "Prop/Ter": {
      "width": "10%"
    },
    "Motorista": {
      "width": "10%"
    },
    "Nome/Razão Social": {
      "width": "20%"
    },
    "Cidade": {
      "width": "10%"
    },
    "UF": {
      "width": "5%"
    },
    "Tipo Combustível": {
      "type": "hidden"
    },
    "Combustível": {
      "width": "12%"
    },
    "Und": {
      "width": "5%"
    },
    "QTD": {
      "width": "10%",
      "sum": "sum"
    },
    "Preço": {
      "width": "8%",
      "calc": "sum(valor_abastecimento)/sum(qtd_abastecida)"
    },
    "Valor": {
      "width": "10%",
      "sum": "valor_abastecimento"
    },
    "N.Docto": {
      "width": "8%"
    },
    "Observação": {
      "width": "13%"
    },
    "Trajeto": {
      "width": "30%"
    },
    "KM anterior": {
      "width": "8%",
      "align": "left"
    },
    "KM atual": {
      "width": "8%",
      "align": "left"
    },
    "KM rodado": {
      "width": "8%",
      "align": "left",
      "sum": "sum"
    },
    "Qtd consumo": {
      "width": "10%",
      "align": "left",
      "sum": "sum"
    },
    "Valor consumo": {
      "width": "10%",
      "align": "left",
      "sum": "sum"
    },
    "KM por litro": {
      "width": "8%",
      "align": "left",
      "calc": "t_km_rodado/t_qtd_consumida"
    },
    "Membro": {
      "width": "10%"
    },
    "Latitude": {
      "type": "hidden"
    },
    "Longitude": {
      "type": "hidden"
    },
    "Ip": {
      "type": "hidden"
    },
    "Data inclusão": {
      "type": "hidden"
    }
  },
  "columns": {
    "Id": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "clear-not-participante": "sim",
        "data-field-ondevou": "id",
        "data-field-alias-ondevou": "id_abastecimento",
        "data-table-ondevou": "veiculos_abastecimentos,auditor_veiculos_abastecimentos",
        "controls-acao": {
          "qrcode": {
            "acao": "getQRcode",
            "messagem": "Gerar QR Code"
          }
        },
        "formsearch": {
          "required": ""
        },
        "launch": {
          "menu": {
            "data-id": "557"
          },
          "formsearch": {
            "id": "id_abastecimento"
          }
        }
      }
    },
    "qrcode": {
      "input": {
        "readonly": "readonly",
        "type": "canvas",
        "qrcode-type": "veiaba",
        "data-type-ondevou": "text",
        "data-field-ondevou": "qrcode",
        "data-table-ondevou": "qrcode"
      }
    },
    "Participante": {
      "input": {
        "readonly": "readonly",
        "required": "required",
        "data-type-ondevou": "text",
        "value": "1",
        "data-field-ondevou": "participante",
        "data-table-ondevou": "veiculos_abastecimentos,auditor_veiculos_abastecimentos"
      }
    },
    "Data abastecimento": {
      "input": {
        "required": "required",
        "data-type-ondevou": "date",
        "data-field-ondevou": "data_abastecimento",
        "data-field-alias-ondevou": "data_hora_abastecimento",
        "data-table-ondevou": "veiculos_abastecimentos"
      }
    },
    "Placa": {
      "input": {
        "readonly": "readonly",
        "required": "required",
        "data-type-ondevou": "text",
        "data-field-ondevou": "placa_veiculo",
        "data-table-ondevou": "view_veiculos_abastecimentos"
      }
    },
    "Veículo": {
      "input": {
        "required": "required",
        "data-type-ondevou": "number",
        "data-id-field-ondevou": "id_veiculo",
        "data-field-ondevou": "descricao_veiculo",
        "data-table-ondevou": "veiculos_abastecimentos,auditor_veiculos_abastecimentos",
        "getdata": "{\"view\":\"view_veiculos\",\"data\":\"view_veiculos\",\"text-empty-search\":\"sim\",\"campo-data-id\":\"id_veiculo\",\"campo-data-value-input\":\"id_veiculo,placa_veiculo,descricao_veiculo\",\"campo-data-input-select-view\":\"id_veiculo,placa_veiculo,descricao_veiculo,renavam\",\"query\":{\"select\":\"* from view_veiculos\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(concat(id_veiculo,` `,placa_veiculo,` `,descricao_veiculo,` `,renavam))) ilike `%\",\"right\":\"%`) and (participante=`1`)\"}}}}}",
        "formsearch": {
          "required": ""
        }
      }
    },
    "Prop/Ter": {
      "input": {
        "data-type-ondevou": "number",
        "data-id-field-ondevou": "id_propriedade",
        "data-field-ondevou": "descricao_propriedade",
        "data-table-ondevou": "veiculos",
        "getdata": "{\"view\":\"view_veiculos_propriedade\",\"data\":\"view_veiculos_propriedade\",\"text-empty-search\":\"sim\",\"campo-data-id\":\"id_propriedade\",\"campo-data-value-input\":\"descricao_propriedade\",\"campo-data-input-select-view\":\"descricao_propriedade\",\"query\":{\"select\":\"* from view_veiculos_propriedade\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(concat(id_propriedade,` `,descricao_propriedade))) ilike `%\",\"right\":\"%`)\"}}}}}",
        "formsearch": {
          "required": ""
        }
      }
    },
    "Motorista": {
      "input": {
        "required": "required",
        "data-type-ondevou": "number",
        "data-id-field-ondevou": "id_motorista",
        "data-field-ondevou": "nome_motorista",
        "data-table-ondevou": "veiculos_abastecimentos,auditor_veiculos_abastecimentos",
        "getdata": "{\"view\":\"view_motoristas\",\"data\":\"view_motoristas\",\"text-empty-search\":\"sim\",\"campo-data-id\":\"id_motorista\",\"campo-data-value-input\":\"nome_motorista,cpf_motorista\",\"campo-data-input-select-view\":\"nome_motorista,cpf_motorista\",\"query\":{\"select\":\"* from view_motoristas\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(concat(id_motorista,` `,nome_motorista,` `,cpf_motorista))) ilike `%\",\"right\":\"%`) and (participante=`1`)\"}}}}}",
        "formsearch": {
          "required": ""
        }
      }
    },
    "Nome/Razão Social": {
      "input": {
        "required": "required",
        "data-type-ondevou": "number",
        "data-id-field-ondevou": "id_participante",
        "data-field-ondevou": "razao_social",
        "data-table-ondevou": "veiculos_abastecimentos,auditor_veiculos_abastecimentos",
        "getdata": "{\"view\":\"view_participantes_privado\",\"data\":\"view_participantes_privado\",\"campo-data-id\":\"id_participante\",\"campo-data-value-input\":\"id_participante,razao_social\",\"campo-data-input-select-view\":\"id_participante,codigo_erplinux_cliente,codigo_erplinux_fornecedor,razao_social,nome_fantasia,cnpj,cpf,cep,cep_erplinux,nome_bairro,nome_cidade,sigla_uf\",\"query\":{\"select\":\"* from view_participantes_privado\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(concat(id_participante,` `,codigo_erplinux_cliente,` `,codigo_erplinux_fornecedor,` `,razao_social,` `,nome_fantasia,` `,cnpj,` `,cpf,` `,cep,` `,cep_erplinux,` `,nome_bairro,` `,nome_cidade,` `,sigla_uf))) ilike `%\",\"right\":\"%`) and (participante=`1`)\"}}}}}",
        "formsearch": {
          "required": ""
        }
      }
    },
    "Cidade": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-id-field-ondevou": "id_cidade",
        "data-field-ondevou": "nome_cidade",
        "data-table-ondevou": "veiculos_abastecimentos",
        "getdata": "{\"view\":\"view_cidades\",\"data\":\"view_cidades\",\"campo-data-id\":\"id_cidade\",\"campo-data-value-input\":\"nome_cidade\",\"campo-data-input-select-view\":\"nome_cidade,sigla_uf\",\"query\":{\"select\":\"* from view_cidades\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(concat(nome_cidade,` `,sigla_uf))) ilike `%\",\"right\":\"%`)\"}}}}}",
        "formsearch": {
          "required": ""
        }
      }
    },
    "UF": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-id-field-ondevou": "id_uf",
        "data-field-ondevou": "sigla_uf",
        "data-table-ondevou": "veiculos_abastecimentos",
        "getdata": "{\"view\":\"view_uf\",\"data\":\"view_uf\",\"text-empty-search\":\"sim\",\"campo-data-id\":\"id_uf\",\"campo-data-value-input\":\"sigla_uf\",\"campo-data-input-select-view\":\"nome_uf,sigla_uf\",\"query\":{\"select\":\"* from view_uf\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(concat(nome_uf,` `,sigla_uf))) ilike `%\",\"right\":\"%`)\"}}}}}",
        "formsearch": {
          "required": ""
        }
      }
    },
    "Tipo Combustível": {
      "input": {
        "data-type-ondevou": "number",
        "data-id-field-ondevou": "id_tipo_combustivel",
        "data-field-ondevou": "nome_tipo_combustivel",
        "data-table-ondevou": "view_veiculos_abastecimentos",
        "getdata": "{\"view\":\"view_combustiveis_tipo\",\"data\":\"view_combustiveis_tipo\",\"text-empty-search\":\"sim\",\"campo-data-id\":\"id_tipo_combustivel\",\"campo-data-value-input\":\"id_tipo_combustivel,nome_tipo_combustivel\",\"campo-data-input-select-view\":\"id_tipo_combustivel,nome_tipo_combustivel\",\"query\":{\"select\":\"* from view_combustiveis_tipo\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(concat(id_tipo_combustivel,` `,nome_tipo_combustivel))) ilike `%\",\"right\":\"%`)\"}}},\"order\":\"id_tipo_combustivel asc\"}}",
        "formsearch": {
          "required": ""
        }
      }
    },
    "Combustível": {
      "input": {
        "required": "required",
        "data-type-ondevou": "number",
        "data-id-field-ondevou": "id_combustivel",
        "data-field-ondevou": "nome_combustivel",
        "data-table-ondevou": "veiculos_abastecimentos,auditor_veiculos_abastecimentos",
        "getdata": "{\"view\":\"view_combustiveis\",\"data\":\"view_combustiveis\",\"text-empty-search\":\"sim\",\"campo-data-id\":\"id_combustivel\",\"campo-data-value-input\":\"id_combustivel,nome_combustivel\",\"campo-data-input-select-view\":\"id_combustivel,nome_combustivel\",\"query\":{\"select\":\"* from view_combustiveis\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(concat(id_combustivel,` `,nome_combustivel))) ilike `%\",\"right\":\"%`)\"}}},\"order\":\"id_combustivel asc\"}}",
        "formsearch": {
          "required": ""
        }
      }
    },
    "Und": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-id-field-ondevou": "id_unidade",
        "data-id-field-alias-ondevou": "id_unidade_combustivel",
        "data-field-ondevou": "nome_unidade_combustivel",
        "data-table-ondevou": "view_veiculos_abastecimentos"
      }
    },
    "QTD": {
      "input": {
        "required": "required",
        "renders": "rendersTableVeiculosAbastecimentos",
        "onkeyup": "setInputFormatNumber(this,`3`)",
        "data-type-ondevou": "number",
        "data-field-ondevou": "quantidade",
        "data-field-alias-ondevou": "qtd_abastecida",
        "data-table-ondevou": "veiculos_abastecimentos"
      },
      "sum": {
        "type": "parseFloat",
        "toFixed": "0"
      }
    },
    "Preço": {
      "input": {
        "required": "required",
        "renders": "rendersTableVeiculosAbastecimentos",
        "onkeyup": "setInputFormatNumber(this,`3`)",
        "data-type-ondevou": "number",
        "data-field-ondevou": "preco_unitario",
        "data-table-ondevou": "veiculos_abastecimentos"
      }
    },
    "Valor": {
      "input": {
        "required": "required",
        "renders": "rendersTableVeiculosAbastecimentos",
        "data-type-ondevou": "number",
        "data-field-ondevou": "valor_abastecimento",
        "data-table-ondevou": "veiculos_abastecimentos",
        "onkeyup": "setInputFormatNumber(this,`2`)"
      },
      "sum": {
        "type": "parseFloat",
        "toFixed": "2"
      }
    },
    "N.Docto": {
      "input": {
        "data-type-ondevou": "text",
        "data-field-ondevou": "numero_documento",
        "data-table-ondevou": "veiculos_abastecimentos"
      }
    },
    "Observação": {
      "input": {
        "data-type-ondevou": "text",
        "data-field-ondevou": "observacao",
        "data-table-ondevou": "veiculos_abastecimentos",
        "formsearch": {
          "required": ""
        }
      }
    },
    "Trajeto": {
      "input": {
        "data-type-ondevou": "text",
        "data-field-ondevou": "trajeto_texto",
        "data-table-ondevou": "view_veiculos_abastecimentos",
        "formsearch": {
          "required": ""
        }
      }
    },
    "KM anterior": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-field-ondevou": "km_anterior",
        "data-table-ondevou": "view_veiculos_abastecimentos"
      }
    },
    "KM atual": {
      "input": {
        "onkeypress": "return SomenteNumero(event)",
        "onkeyup": "setInputFormatApenasNumeros(this)",
        "data-type-ondevou": "number",
        "data-field-ondevou": "km",
        "data-table-ondevou": "veiculos_abastecimentos"
      }
    },
    "KM rodado": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-field-ondevou": "km_rodado",
        "data-table-ondevou": "view_veiculos_abastecimentos",
        "onkeyup": "setInputFormatNumber(this,`0`)"
      }
    },
    "Qtd consumo": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-field-ondevou": "qtd_consumida",
        "data-table-ondevou": "view_veiculos_abastecimentos",
        "onkeyup": "setInputFormatNumber(this,`2`)"
      },
      "sum": {
        "type": "parseFloat",
        "toFixed": "0"
      }
    },
    "Valor consumo": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-field-ondevou": "valor_consumo",
        "data-table-ondevou": "view_veiculos_abastecimentos",
        "onkeyup": "setInputFormatNumber(this,`2`)"
      },
      "sum": {
        "type": "parseFloat",
        "toFixed": "2"
      }
    },
    "KM por litro": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-field-ondevou": "km_por_litro",
        "data-table-ondevou": "view_veiculos_abastecimentos",
        "onkeyup": "setInputFormatNumber(this,`3`)"
      }
    },
    "Membro": {
      "input": {
        "data-type-ondevou": "number",
        "readonly": "readonly",
        "data-id-field-ondevou": "id_membro",
        "data-field-ondevou": "nome_membro",
        "data-table-ondevou": "auditor_veiculos_abastecimentos",
        "getdata": "{\"view\":\"view_membros\",\"data\":\"view_membros\",\"campo-data-id\":\"id_membro\",\"campo-data-value-input\":\"nome_membro\",\"campo-data-input-select-view\":\"nome_membro,email_membro\",\"query\":{\"select\":\"* from view_membros\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(concat(id_membro,` `,nome_membro,` `,email_membro))) ilike `%\",\"right\":\"%`)\"}}}}}",
        "formsearch": {
          "required": ""
        }
      }
    },
    "Latitude": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-field-ondevou": "latitude",
        "data-table-ondevou": "auditor_veiculos_abastecimentos"
      }
    },
    "Longitude": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-field-ondevou": "longitude",
        "data-table-ondevou": "auditor_veiculos_abastecimentos"
      }
    },
    "Ip": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "text",
        "data-field-ondevou": "ip",
        "data-table-ondevou": "auditor_veiculos_abastecimentos"
      }
    },
    "Data inclusão": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "date",
        "data-field-ondevou": "data_inclusao_abastecimento",
        "data-table-ondevou": "auditor_veiculos_abastecimentos"
      }
    }
  },
  "formsearch": {
    "data-table-ondevou": "view_veiculos_abastecimentos",
    "data-where-order": "order by ordem asc",
    "data-where-fixed": "participante in (`1`)",
    "input": {
      "apenas_veiculos_ativos": {
        "data-field-ondevou": "apenas_veiculos_ativos",
        "data-type-ondevou": "text",
        "type": "checkbox",
        "divClass": "col s12 m1",
        "texto_label": "Apenas veículos ativos",
        "data-where-true": "ativo=`S`"
      },
      "apenas_veiculos_inativos": {
        "data-field-ondevou": "apenas_veiculos_inativos",
        "data-type-ondevou": "text",
        "type": "checkbox",
        "divClass": "col s12 m1",
        "texto_label": "Apenas veículos inativos",
        "data-where-true": "ativo!=`S`"
      },
      "apenas_veiculos_disponiveis": {
        "data-field-ondevou": "apenas_veiculos_disponiveis",
        "data-type-ondevou": "text",
        "type": "checkbox",
        "divClass": "col s12 m1",
        "texto_label": "Apenas veículos disponíveis",
        "data-where-true": "disponivel=`S`"
      },
      "apenas_veiculos_indisponiveis": {
        "data-field-ondevou": "apenas_veiculos_indisponiveis",
        "data-type-ondevou": "text",
        "type": "checkbox",
        "divClass": "col s12 m1",
        "texto_label": "Apenas veículos indisponíveis",
        "data-where-true": "disponivel!=`S`"
      },
      "data_inicial": {
        "data-field-ondevou": "data_inicial",
        "data-type-ondevou": "date",
        "type": "datetime-local",
        "class": "datetimepicker",
        "texto_label": "Data e Hora Inicial",
        "data-field-where": "data"
      },
      "data_final": {
        "data-field-ondevou": "data_final",
        "data-type-ondevou": "date",
        "type": "datetime-local",
        "class": "datetimepicker",
        "texto_label": "Data e Hora 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": "GESTÃO DE COMBUSTÍVEL - FROTA",
      "subtitle": "Controle inteligente de abastecimentos, consumo e análise de trajetos",
      "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_resumos": {
        "type": "summary_cards_full",
        "title": "📊 RESUMOS PRINCIPAIS - ABASTECIMENTO",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "cards-resumos-principais",
          "size": "full",
          "cards": [
            {
              "title": "TOTAL ABASTECIMENTOS",
              "value": "COUNT:id_abastecimento",
              "format": "numero",
              "decimals": 0,
              "suffix": " registros",
              "icon": "📊",
              "color": "#2c3e50"
            },
            {
              "title": "VALOR ABASTECIDO",
              "value": "SUM:valor_abastecimento",
              "format": "moeda",
              "decimals": 2,
              "icon": "💰",
              "color": "#e74c3c"
            },
            {
              "title": "LITROS ABASTECIDOS",
              "value": "SUM:qtd_abastecida",
              "format": "numero",
              "decimals": 0,
              "suffix": " L",
              "icon": "⛽",
              "color": "#3498db"
            },
            {
              "title": "CUSTO DO CONSUMO",
              "value": "SUM:valor_consumo",
              "filters": "valor_consumo > 0",
              "format": "moeda",
              "decimals": 2,
              "icon": "💸",
              "color": "#d35400"
            },
            {
              "title": "LITROS CONSUMIDOS",
              "value": "SUM:qtd_consumida",
              "filters": "qtd_consumida > 0",
              "format": "numero",
              "decimals": 0,
              "suffix": " L",
              "icon": "🛢️",
              "color": "#2ecc71"
            },
            {
              "title": "KM TOTAL RODADO",
              "value": "SUM:km_rodado",
              "filters": "km_rodado > 0",
              "format": "numero",
              "decimals": 0,
              "suffix": " km",
              "icon": "🛣️",
              "color": "#9b59b6"
            },
            {
              "title": "EFICIÊNCIA MÉDIA",
              "value": "CALC:sum(km_rodado)/sum(qtd_consumida)",
              "filters": "km_rodado > 0 AND qtd_consumida > 0",
              "format": "numero",
              "decimals": 2,
              "suffix": " km/L",
              "icon": "📈",
              "color": "#f39c12"
            }
          ]
        }
      },
      "bloco2_cards_trajetos": {
        "type": "summary_cards_full",
        "title": "🗺️ RESUMOS PRINCIPAIS - TRAJETO",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "cards-resumo-trajetos",
          "size": "full",
          "cards": [
            {
              "title": "TRAJETOS INFORMADOS",
              "value": "COUNT:id_abastecimento",
              "filters": "tem_trajeto = \"SIM\"",
              "format": "numero",
              "decimals": 0,
              "suffix": " registros",
              "icon": "✅",
              "color": "#27ae60"
            },
            {
              "title": "SEM TRAJETO",
              "value": "COUNT:id_abastecimento",
              "filters": "tem_trajeto = \"NÃO\"",
              "format": "numero",
              "decimals": 0,
              "suffix": " registros",
              "icon": "⚠️",
              "color": "#e67e22"
            },
            {
              "title": "TOTAL DE DESTINOS",
              "value": "SUM:trajeto_qtd_destinos",
              "filters": "tem_trajeto = \"SIM\" AND trajeto_qtd_destinos > 0",
              "format": "numero",
              "decimals": 0,
              "suffix": " destinos",
              "icon": "📍",
              "color": "#9b59b6"
            },
            {
              "title": "DESTINOS POR TRAJETO",
              "value": "AVG:trajeto_qtd_destinos",
              "filters": "tem_trajeto = \"SIM\" AND trajeto_qtd_destinos > 0",
              "format": "numero",
              "decimals": 1,
              "suffix": " destinos",
              "icon": "🗺️",
              "color": "#3498db"
            },
            {
              "title": "DISTÂNCIA TOTAL",
              "value": "SUM:trajeto_distancia_km",
              "filters": "tem_trajeto = \"SIM\" AND trajeto_distancia_km > 0",
              "format": "numero",
              "decimals": 0,
              "suffix": " km",
              "icon": "🛣️",
              "color": "#2ecc71"
            },
            {
              "title": "DISTÂNCIA MÉDIA",
              "value": "AVG:trajeto_distancia_km",
              "filters": "tem_trajeto = \"SIM\" AND trajeto_distancia_km > 0",
              "format": "numero",
              "decimals": 0,
              "suffix": " km",
              "icon": "📏",
              "color": "#16a085"
            },
            {
              "title": "VALOR CONSUMO",
              "value": "SUM:trajeto_valor_consumo",
              "filters": "tem_trajeto = \"SIM\" AND trajeto_valor_consumo > 0",
              "format": "moeda",
              "decimals": 2,
              "icon": "💰",
              "color": "#e74c3c"
            },
            {
              "title": "LITROS CONSUMIDOS",
              "value": "SUM:trajeto_qtd_consumida",
              "filters": "tem_trajeto = \"SIM\" AND trajeto_qtd_consumida > 0",
              "format": "numero",
              "decimals": 1,
              "suffix": " L",
              "icon": "🛢️",
              "color": "#2980b9"
            },
            {
              "title": "EFICIÊNCIA MÉDIA",
              "value": "CALC:sum(trajeto_distancia_km)/sum(trajeto_qtd_consumida)",
              "filters": "tem_trajeto = \"SIM\" AND trajeto_distancia_km > 0 AND trajeto_qtd_consumida > 0",
              "format": "numero",
              "decimals": 2,
              "suffix": " km/L",
              "icon": "⚡",
              "color": "#1abc9c"
            },
            {
              "title": "CUSTO POR KM",
              "value": "CALC:sum(trajeto_valor_consumo)/sum(trajeto_distancia_km)",
              "filters": "tem_trajeto = \"SIM\" AND trajeto_valor_consumo > 0 AND trajeto_distancia_km > 0",
              "format": "moeda",
              "decimals": 2,
              "suffix": "/km",
              "icon": "💸",
              "color": "#d35400"
            },
            {
              "title": "PREÇO MÉDIO",
              "value": "CALC:sum(trajeto_valor_consumo)/sum(trajeto_qtd_consumida)",
              "filters": "tem_trajeto = \"SIM\" AND trajeto_valor_consumo > 0 AND trajeto_qtd_consumida > 0",
              "format": "moeda",
              "decimals": 3,
              "suffix": "/L",
              "icon": "🏷️",
              "color": "#8e44ad"
            }
          ]
        }
      },
      "bloco3_metricas_abastecimentos": {
        "type": "summary_cards_grid",
        "title": "📈 MÉTRICAS DETALHADAS - ABASTECIMENTO",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "cards-metricas-abastecimentos",
          "size": "full",
          "sections": [
            {
              "title": "🏁 EFICIÊNCIA",
              "cards": [
                {
                  "title": "MELHOR CONSUMO",
                  "value": "MAX:km_por_litro",
                  "filters": "km_por_litro > 0 AND km_por_litro < 50",
                  "format": "numero",
                  "decimals": 2,
                  "suffix": " km/L",
                  "icon": "🚀",
                  "color": "#27ae60"
                },
                {
                  "title": "MAIOR CONSUMO",
                  "value": "MIN:km_por_litro",
                  "filters": "km_por_litro > 0 AND km_por_litro < 50",
                  "format": "numero",
                  "decimals": 2,
                  "suffix": " km/L",
                  "icon": "🐢",
                  "color": "#c0392b"
                },
                {
                  "title": "PREÇO MÉDIO/L",
                  "value": "CALC:sum(valor_abastecimento)/sum(qtd_abastecida)",
                  "filters": "valor_abastecimento > 0 AND qtd_abastecida > 0",
                  "format": "moeda",
                  "decimals": 3,
                  "suffix": "/L",
                  "icon": "⚖️",
                  "color": "#3498db"
                }
              ]
            },
            {
              "title": "💰 CUSTOS",
              "cards": [
                {
                  "title": "MAIOR PREÇO/L",
                  "value": "MAX:preco_unitario",
                  "filters": "preco_unitario > 0 AND preco_unitario < 10",
                  "format": "moeda",
                  "decimals": 3,
                  "suffix": "/L",
                  "icon": "📈",
                  "color": "#e74c3c"
                },
                {
                  "title": "MENOR PREÇO/L",
                  "value": "MIN:preco_unitario",
                  "filters": "preco_unitario > 0",
                  "format": "moeda",
                  "decimals": 3,
                  "suffix": "/L",
                  "icon": "📉",
                  "color": "#2ecc71"
                },
                {
                  "title": "MAIOR VALOR ABAST.",
                  "value": "MAX:valor_abastecimento",
                  "filters": "valor_abastecimento > 0",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "💰",
                  "color": "#f39c12"
                }
              ]
            },
            {
              "title": "🚗 COMPOSIÇÃO",
              "cards": [
                {
                  "title": "VEÍCULOS ATIVOS",
                  "value": "COUNT_DISTINCT:placa_veiculo",
                  "format": "numero",
                  "decimals": 0,
                  "icon": "🚗",
                  "color": "#3498db"
                },
                {
                  "title": "MOTORISTAS",
                  "value": "COUNT_DISTINCT:nome_motorista",
                  "format": "numero",
                  "decimals": 0,
                  "icon": "👨‍💼",
                  "color": "#2ecc71"
                },
                {
                  "title": "POSTOS",
                  "value": "COUNT_DISTINCT:razao_social",
                  "format": "numero",
                  "decimals": 0,
                  "icon": "🏪",
                  "color": "#27ae60"
                }
              ]
            }
          ]
        }
      },
      "bloco4_metricas_trajetos": {
        "type": "summary_cards_grid",
        "title": "📊 MÉTRICAS DETALHADAS - TRAJETO",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "cards-metricas-trajetos",
          "size": "full",
          "sections": [
            {
              "title": "📊 ESTATÍSTICAS",
              "cards": [
                {
                  "title": "MÉDIA CIDADES/TRAJETO",
                  "value": "AVG:trajeto_qtd_cidades",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_qtd_cidades > 0",
                  "format": "numero",
                  "decimals": 1,
                  "suffix": " cidades",
                  "icon": "📍",
                  "color": "#9b59b6"
                },
                {
                  "title": "MÉDIA ESTADOS/TRAJETO",
                  "value": "AVG:trajeto_qtd_ufs",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_qtd_ufs > 0",
                  "format": "numero",
                  "decimals": 1,
                  "suffix": " estados",
                  "icon": "🗺️",
                  "color": "#27ae60"
                },
                {
                  "title": "VELOCIDADE MÉDIA",
                  "value": "AVG:trajeto_velocidade_media",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_velocidade_media > 0",
                  "format": "numero",
                  "decimals": 1,
                  "suffix": " km/h",
                  "icon": "📊",
                  "color": "#16a085"
                }
              ]
            },
            {
              "title": "💰 VALORES DOS TRAJETOS",
              "cards": [
                {
                  "title": "VALOR TOTAL TRAJETOS",
                  "value": "SUM:trajeto_valor_consumo",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_valor_consumo > 0",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "💰",
                  "color": "#e74c3c"
                },
                {
                  "title": "VALOR MÉDIO/TRAJETO",
                  "value": "AVG:trajeto_valor_consumo",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_valor_consumo > 0",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "📊",
                  "color": "#f39c12"
                },
                {
                  "title": "CUSTO MÉDIO/KM",
                  "value": "AVG:trajeto_custo_por_km_real",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_custo_por_km_real > 0",
                  "format": "moeda",
                  "decimals": 2,
                  "suffix": "/km",
                  "icon": "📏",
                  "color": "#d35400"
                }
              ]
            },
            {
              "title": "🏆 PERFORMANCE",
              "cards": [
                {
                  "title": "MAIOR DISTÂNCIA",
                  "value": "MAX:trajeto_distancia_km",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_distancia_km > 0",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " km",
                  "icon": "🏆",
                  "color": "#f39c12"
                },
                {
                  "title": "MAIS DESTINOS",
                  "value": "MAX:trajeto_qtd_destinos",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_qtd_destinos > 0",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " destinos",
                  "icon": "📍",
                  "color": "#9b59b6"
                },
                {
                  "title": "MAIOR VELOCIDADE",
                  "value": "MAX:trajeto_velocidade_media",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_velocidade_media > 0",
                  "format": "numero",
                  "decimals": 1,
                  "suffix": " km/h",
                  "icon": "🚀",
                  "color": "#e74c3c"
                }
              ]
            },
            {
              "title": "⚡ EFICIÊNCIA FINANCEIRA",
              "cards": [
                {
                  "title": "MENOR CUSTO/KM",
                  "value": "MIN:trajeto_custo_por_km_real",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_custo_por_km_real > 0",
                  "format": "moeda",
                  "decimals": 2,
                  "suffix": "/km",
                  "icon": "📉",
                  "color": "#2ecc71"
                },
                {
                  "title": "MAIOR CUSTO/KM",
                  "value": "MAX:trajeto_custo_por_km_real",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_custo_por_km_real > 0",
                  "format": "moeda",
                  "decimals": 2,
                  "suffix": "/km",
                  "icon": "📈",
                  "color": "#e74c3c"
                },
                {
                  "title": "PREÇO MÉDIO/L",
                  "value": "AVG:trajeto_preco_medio_litro",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_preco_medio_litro > 0",
                  "format": "moeda",
                  "decimals": 3,
                  "suffix": "/L",
                  "icon": "🏷️",
                  "color": "#8e44ad"
                }
              ]
            },
            {
              "title": "🗺️ GEOGRAFIA",
              "cards": [
                {
                  "title": "CIDADES ÚNICAS",
                  "value": "AVG:trajeto_total_cidades_unicas",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " cidades",
                  "icon": "🏙️",
                  "color": "#3498db"
                },
                {
                  "title": "ESTADOS ÚNICOS",
                  "value": "AVG:trajeto_total_ufs_unicas",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " estados",
                  "icon": "🗺️",
                  "color": "#2ecc71"
                },
                {
                  "title": "CONTRATOS ÚNICOS",
                  "value": "AVG:trajeto_total_contratos_unicos",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " contratos",
                  "icon": "📝",
                  "color": "#9b59b6"
                }
              ]
            }
          ]
        }
      },
      "bloco5_resumo_performance_top5": {
        "type": "summary_cards_grid",
        "title": "🏆 RESUMO DE PERFORMANCE - TOP 5",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "resumo-performance-top5",
          "size": "full",
          "sections": [
            {
              "title": "🚗 VEÍCULOS MAIS EFICIENTES",
              "cards": [
                {
                  "title": "1º LUGAR - EFICIÊNCIA",
                  "value": "MAX:km_por_litro",
                  "filters": "km_por_litro > 0 AND km_por_litro < 50",
                  "format": "numero",
                  "decimals": 2,
                  "suffix": " km/L",
                  "icon": "🥇",
                  "color": "#f1c40f"
                },
                {
                  "title": "1º LUGAR - CUSTO/KM",
                  "value": "MIN:trajeto_custo_por_km_real",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_custo_por_km_real > 0",
                  "format": "moeda",
                  "decimals": 2,
                  "suffix": "/km",
                  "icon": "🥇",
                  "color": "#27ae60"
                }
              ]
            },
            {
              "title": "👨‍💼 MOTORISTAS MAIS EFICIENTES",
              "cards": [
                {
                  "title": "1º LUGAR - EFICIÊNCIA",
                  "value": "CALC:max(sum(km_rodado)/sum(qtd_consumida))",
                  "filters": "km_rodado > 0 AND qtd_consumida > 0",
                  "format": "numero",
                  "decimals": 2,
                  "suffix": " km/L",
                  "icon": "🥇",
                  "color": "#2ecc71"
                },
                {
                  "title": "1º LUGAR - KM RODADO",
                  "value": "MAX:km_rodado",
                  "filters": "km_rodado > 0",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " km",
                  "icon": "🥇",
                  "color": "#9b59b6"
                }
              ]
            },
            {
              "title": "🗺️ ROTAS MAIS FREQUENTES",
              "cards": [
                {
                  "title": "ROTA MAIS UTILIZADA",
                  "value": "MAX:COUNT(id_abastecimento)",
                  "filters": "tem_trajeto = \"SIM\"",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " trajetos",
                  "icon": "🥇",
                  "color": "#3498db"
                },
                {
                  "title": "ROTA MAIOR DISTÂNCIA",
                  "value": "MAX:trajeto_distancia_km",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_distancia_km > 0",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " km",
                  "icon": "🥇",
                  "color": "#e67e22"
                }
              ]
            }
          ]
        }
      },
      "bloco6_evolucao_temporal_abastecimento": {
        "type": "charts_grid_section",
        "title": "📅 EVOLUÇÃO TEMPORAL - ABASTECIMENTO",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "evolucao-abastecimento-grid",
          "charts": [
            {
              "type": "chart_bar_aggregated_evolution",
              "config": {
                "container_id": "evolucao-valor-diario",
                "data_config": {
                  "campo_data": "data_abastecimento",
                  "operation": "SUM:valor_abastecimento",
                  "granularidade": "diario"
                },
                "display_config": {
                  "title": "💰 EVOLUÇÃO DIÁRIA DO VALOR ABASTECIDO",
                  "layout": "vertical",
                  "format": "moeda",
                  "decimals": 2,
                  "sort_order": "ASC",
                  "limit": "all",
                  "height": "400px",
                  "color": "#e74c3c"
                }
              }
            },
            {
              "type": "chart_bar_aggregated_evolution",
              "config": {
                "container_id": "evolucao-consumo-diario",
                "data_config": {
                  "campo_data": "data_abastecimento",
                  "operation": "SUM:qtd_consumida",
                  "granularidade": "diario"
                },
                "display_config": {
                  "title": "🔥 EVOLUÇÃO DIÁRIA DO CONSUMO",
                  "layout": "vertical",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " L",
                  "sort_order": "ASC",
                  "limit": "all",
                  "height": "400px",
                  "color": "#3498db"
                }
              }
            }
          ]
        }
      },
      "bloco7_evolucao_temporal_trajeto": {
        "type": "charts_grid_section",
        "title": "📈 EVOLUÇÃO TEMPORAL - TRAJETO",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "evolucao-trajeto-grid",
          "charts": [
            {
              "type": "chart_bar_aggregated_evolution",
              "config": {
                "container_id": "evolucao-trajetos-diario",
                "data_config": {
                  "campo_data": "data_abastecimento",
                  "operation": "COUNT:id_abastecimento",
                  "filters": "tem_trajeto = \"SIM\"",
                  "granularidade": "diario"
                },
                "display_config": {
                  "title": "📅 EVOLUÇÃO DIÁRIA DE TRAJETOS",
                  "layout": "vertical",
                  "format": "numero",
                  "format_legend": "data_curta",
                  "decimals": 0,
                  "suffix": " trajetos",
                  "sort_order": "ASC",
                  "limit": "all",
                  "height": "400px",
                  "color": "#2ecc71"
                }
              }
            },
            {
              "type": "chart_bar_aggregated_evolution",
              "config": {
                "container_id": "evolucao-distancia-diaria",
                "data_config": {
                  "campo_data": "data_abastecimento",
                  "operation": "SUM:trajeto_distancia_km",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_distancia_km > 0",
                  "granularidade": "diario"
                },
                "display_config": {
                  "title": "🛣️ EVOLUÇÃO DA DISTÂNCIA DIÁRIA",
                  "layout": "vertical",
                  "format": "numero",
                  "format_legend": "data_curta",
                  "decimals": 0,
                  "suffix": " km",
                  "sort_order": "ASC",
                  "limit": "all",
                  "height": "400px",
                  "color": "#3498db"
                }
              }
            }
          ]
        }
      },
      "bloco8_evolucao_eficiencia": {
        "type": "charts_grid_section",
        "title": "⚡ EVOLUÇÃO DA EFICIÊNCIA",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "evolucao-eficiencia-grid",
          "charts": [
            {
              "type": "chart_bar_aggregated_evolution",
              "config": {
                "container_id": "evolucao-eficiencia-diaria",
                "data_config": {
                  "campo_data": "data_abastecimento",
                  "operation": "CALC:sum(km_rodado)/sum(qtd_consumida)",
                  "filters": "km_rodado > 0 AND qtd_consumida > 0",
                  "granularidade": "diario"
                },
                "display_config": {
                  "title": "📈 EVOLUÇÃO DIÁRIA DA EFICIÊNCIA (km/L)",
                  "layout": "vertical",
                  "format": "numero",
                  "decimals": 2,
                  "suffix": " km/L",
                  "sort_order": "ASC",
                  "limit": "all",
                  "height": "400px",
                  "color": "#2ecc71"
                }
              }
            },
            {
              "type": "chart_bar_aggregated_evolution",
              "config": {
                "container_id": "evolucao-custo-km-diario",
                "data_config": {
                  "campo_data": "data_abastecimento",
                  "operation": "CALC:sum(trajeto_valor_consumo)/sum(trajeto_distancia_km)",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_valor_consumo > 0 AND trajeto_distancia_km > 0",
                  "granularidade": "diario"
                },
                "display_config": {
                  "title": "📈 EVOLUÇÃO DIÁRIA DO CUSTO POR KM",
                  "layout": "vertical",
                  "format": "moeda",
                  "decimals": 2,
                  "suffix": "/km",
                  "sort_order": "ASC",
                  "limit": "all",
                  "height": "400px",
                  "color": "#d35400"
                }
              }
            }
          ]
        }
      },
      "bloco9_evolucao_preco_combustivel_gasolina_diesel_etanol": {
        "type": "charts_grid_section",
        "title": "📈 EVOLUÇÃO TEMPORAL - PREÇO DO COMBUSTÍVEL",
        "class": "dashboard-section dashboard-section-full-width",
        "layout": "grid-3",
        "config": {
          "container_id": "evolucao-preco-combustivel-grid-1",
          "charts": [
            {
              "type": "chart_bar_aggregated_evolution",
              "config": {
                "container_id": "evolucao-preco-medio-diario-gasolina",
                "data_config": {
                  "campo_data": "data_abastecimento",
                  "operation": "AVG:preco_unitario",
                  "filters": "preco_unitario > 0 AND id_tipo_combustivel = 1",
                  "granularidade": "diario"
                },
                "display_config": {
                  "title": "🏷️ EVOLUÇÃO DIÁRIA DO PREÇO MÉDIO POR LITRO GASOLINA",
                  "layout": "vertical",
                  "format": "moeda",
                  "decimals": 3,
                  "suffix": "/L",
                  "sort_order": "ASC",
                  "limit": "all",
                  "height": "400px",
                  "color": "#8e44ad"
                }
              }
            },
            {
              "type": "chart_bar_aggregated_evolution",
              "config": {
                "container_id": "evolucao-preco-medio-diario-diesel",
                "data_config": {
                  "campo_data": "data_abastecimento",
                  "operation": "AVG:preco_unitario",
                  "filters": "preco_unitario > 0 AND id_tipo_combustivel = 2",
                  "granularidade": "diario"
                },
                "display_config": {
                  "title": "🏷️ EVOLUÇÃO DIÁRIA DO PREÇO MÉDIO POR LITRO DIESEL",
                  "layout": "vertical",
                  "format": "moeda",
                  "decimals": 3,
                  "suffix": "/L",
                  "sort_order": "ASC",
                  "limit": "all",
                  "height": "400px",
                  "color": "#8e44ad"
                }
              }
            },
            {
              "type": "chart_bar_aggregated_evolution",
              "config": {
                "container_id": "evolucao-preco-medio-diario-etanol",
                "data_config": {
                  "campo_data": "data_abastecimento",
                  "operation": "AVG:preco_unitario",
                  "filters": "preco_unitario > 0 AND id_tipo_combustivel = 3",
                  "granularidade": "diario"
                },
                "display_config": {
                  "title": "🏷️ EVOLUÇÃO DIÁRIA DO PREÇO MÉDIO POR LITRO ETANOL",
                  "layout": "vertical",
                  "format": "moeda",
                  "decimals": 3,
                  "suffix": "/L",
                  "sort_order": "ASC",
                  "limit": "all",
                  "height": "400px",
                  "color": "#8e44ad"
                }
              }
            }
          ]
        }
      },
      "bloco10_evolucao_preco_combustivel_gas_eletrico_biodisel": {
        "type": "charts_grid_section",
        "title": "📈 EVOLUÇÃO TEMPORAL - PREÇO DO COMBUSTÍVEL",
        "class": "dashboard-section dashboard-section-full-width",
        "layout": "grid-3",
        "config": {
          "container_id": "evolucao-preco-combustivel-grid-2",
          "charts": [
            {
              "type": "chart_bar_aggregated_evolution",
              "config": {
                "container_id": "evolucao-preco-medio-diario-gas",
                "data_config": {
                  "campo_data": "data_abastecimento",
                  "operation": "AVG:preco_unitario",
                  "filters": "preco_unitario > 0 AND id_tipo_combustivel = 4",
                  "granularidade": "diario"
                },
                "display_config": {
                  "title": "🏷️ EVOLUÇÃO DIÁRIA DO PREÇO MÉDIO POR LITRO GAS NATURAL",
                  "layout": "vertical",
                  "format": "moeda",
                  "decimals": 3,
                  "suffix": "/L",
                  "sort_order": "ASC",
                  "limit": "all",
                  "height": "400px",
                  "color": "#8e44ad"
                }
              }
            },
            {
              "type": "chart_bar_aggregated_evolution",
              "config": {
                "container_id": "evolucao-preco-medio-diario-eletrico",
                "data_config": {
                  "campo_data": "data_abastecimento",
                  "operation": "AVG:preco_unitario",
                  "filters": "preco_unitario > 0 AND id_tipo_combustivel = 5",
                  "granularidade": "diario"
                },
                "display_config": {
                  "title": "🏷️ EVOLUÇÃO DIÁRIA DO PREÇO MÉDIO POR LITRO ELÉTRICO",
                  "layout": "vertical",
                  "format": "moeda",
                  "decimals": 3,
                  "suffix": "/L",
                  "sort_order": "ASC",
                  "limit": "all",
                  "height": "400px",
                  "color": "#8e44ad"
                }
              }
            },
            {
              "type": "chart_bar_aggregated_evolution",
              "config": {
                "container_id": "evolucao-preco-medio-diario-biodisel",
                "data_config": {
                  "campo_data": "data_abastecimento",
                  "operation": "AVG:preco_unitario",
                  "filters": "preco_unitario > 0 AND id_tipo_combustivel = 6",
                  "granularidade": "diario"
                },
                "display_config": {
                  "title": "🏷️ EVOLUÇÃO DIÁRIA DO PREÇO MÉDIO POR LITRO BIODISEL",
                  "layout": "vertical",
                  "format": "moeda",
                  "decimals": 3,
                  "suffix": "/L",
                  "sort_order": "ASC",
                  "limit": "all",
                  "height": "400px",
                  "color": "#8e44ad"
                }
              }
            }
          ]
        }
      },
      "bloco11_analise_veiculos_abastecimento": {
        "type": "charts_grid_section",
        "title": "🚗 ANÁLISE POR VEÍCULO - ABASTECIMENTO",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "analise-veiculos-abastecimento-grid",
          "charts": [
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "veiculos-valor-abastecimento",
                "data_config": {
                  "group_by": "placa_veiculo",
                  "operation": "SUM:valor_abastecimento",
                  "filters": "valor_abastecimento > 0",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "💰 VALOR TOTAL POR VEÍCULO",
                  "layout": "vertical",
                  "format": "moeda",
                  "format_legend": "maiusculo",
                  "decimals": 2,
                  "sort_order": "DESC",
                  "limit": 15,
                  "height": "500px",
                  "color": "#e74c3c"
                }
              }
            },
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "veiculos-quantidade-abastecimentos",
                "data_config": {
                  "group_by": "placa_veiculo",
                  "operation": "COUNT:id_abastecimento",
                  "filters": "valor_abastecimento > 0",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "📊 QUANTIDADE DE ABASTECIMENTOS POR VEÍCULO",
                  "layout": "vertical",
                  "format": "numero",
                  "format_legend": "maiusculo",
                  "decimals": 0,
                  "suffix": " abastecimentos",
                  "sort_order": "DESC",
                  "limit": 15,
                  "height": "500px",
                  "color": "#3498db"
                }
              }
            }
          ]
        }
      },
      "bloco12_analise_veiculos_trajeto": {
        "type": "charts_grid_section",
        "title": "🚗 ANÁLISE POR VEÍCULO - TRAJETO E EFICIÊNCIA",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "analise-veiculos-trajeto-grid",
          "charts": [
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "veiculos-eficiencia-media",
                "data_config": {
                  "group_by": "placa_veiculo",
                  "operation": "CALC:sum(km_rodado)/sum(qtd_consumida)",
                  "filters": "km_rodado > 0 AND qtd_consumida > 0",
                  "filters_aggregation": "value BETWEEN 1 AND 50"
                },
                "display_config": {
                  "title": "⚡ EFICIÊNCIA MÉDIA POR VEÍCULO",
                  "layout": "vertical",
                  "format": "numero",
                  "format_legend": "maiusculo",
                  "decimals": 2,
                  "suffix": " km/L",
                  "sort_order": "DESC",
                  "limit": 15,
                  "height": "500px",
                  "color": "#2ecc71"
                }
              }
            },
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "veiculos-custo-km-trajetos",
                "data_config": {
                  "group_by": "placa_veiculo",
                  "operation": "AVG:trajeto_custo_por_km_real",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_custo_por_km_real > 0",
                  "filters_aggregation": "value BETWEEN 0.1 AND 5"
                },
                "display_config": {
                  "title": "💸 CUSTO POR KM POR VEÍCULO (TRAJETOS)",
                  "layout": "vertical",
                  "format": "moeda",
                  "format_legend": "maiusculo",
                  "decimals": 2,
                  "suffix": "/km",
                  "sort_order": "ASC",
                  "limit": 15,
                  "height": "500px",
                  "color": "#d35400"
                }
              }
            }
          ]
        }
      },
      "bloco13_eficiencia_veiculos_detalhada": {
        "type": "charts_grid_section",
        "title": "🚗 ANÁLISE DE EFICIÊNCIA POR VEÍCULO - DETALHADA",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "eficiencia-veiculos-detalhada-grid",
          "charts": [
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "veiculos-km-total",
                "data_config": {
                  "group_by": "placa_veiculo",
                  "operation": "SUM:km_rodado",
                  "filters": "km_rodado > 0",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "🛣️ KM TOTAL RODADO POR VEÍCULO",
                  "layout": "vertical",
                  "format": "numero",
                  "format_legend": "maiusculo",
                  "decimals": 0,
                  "suffix": " km",
                  "sort_order": "DESC",
                  "limit": 15,
                  "height": "500px",
                  "color": "#9b59b6"
                }
              }
            },
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "veiculos-litros-consumidos",
                "data_config": {
                  "group_by": "placa_veiculo",
                  "operation": "SUM:qtd_consumida",
                  "filters": "qtd_consumida > 0",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "🛢️ LITROS CONSUMIDOS POR VEÍCULO",
                  "layout": "vertical",
                  "format": "numero",
                  "format_legend": "maiusculo",
                  "decimals": 0,
                  "suffix": " L",
                  "sort_order": "DESC",
                  "limit": 15,
                  "height": "500px",
                  "color": "#3498db"
                }
              }
            }
          ]
        }
      },
      "bloco14_analise_combustivel": {
        "type": "charts_grid_section",
        "title": "🛢️ ANÁLISE POR COMBUSTÍVEL",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "analise-combustivel-grid",
          "charts": [
            {
              "type": "chart_pie",
              "config": {
                "container_id": "combustivel-distribuicao-valor",
                "data_config": {
                  "group_by": "nome_combustivel",
                  "operation": "SUM:valor_abastecimento"
                },
                "display_config": {
                  "title": "💰 DISTRIBUIÇÃO POR VALOR",
                  "colors": [
                    "#3498db",
                    "#2ecc71",
                    "#e74c3c",
                    "#9b59b6",
                    "#f39c12"
                  ],
                  "format": "moeda",
                  "format_legend": "capitalizado",
                  "decimals": 0,
                  "limit": 10,
                  "show_legend": true,
                  "show_values": true,
                  "show_percentages": true,
                  "donut": true,
                  "legend_position": "right",
                  "height": "450px"
                }
              }
            },
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "combustivel-preco-medio",
                "data_config": {
                  "group_by": "nome_combustivel",
                  "operation": "AVG:preco_unitario",
                  "filters": "preco_unitario > 0"
                },
                "display_config": {
                  "title": "🏷️ PREÇO MÉDIO POR COMBUSTÍVEL",
                  "layout": "vertical",
                  "format": "moeda",
                  "format_legend": "capitalizado",
                  "decimals": 3,
                  "suffix": "/L",
                  "sort_order": "DESC",
                  "limit": 10,
                  "height": "450px",
                  "color": "#8e44ad"
                }
              }
            }
          ]
        }
      },
      "bloco15_analise_combustivel_consumo": {
        "type": "charts_grid_section",
        "title": "🛢️ ANÁLISE DE COMBUSTÍVEL - CONSUMO E VALOR",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "analise-combustivel-consumo-grid",
          "charts": [
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "combustivel-litros-total",
                "data_config": {
                  "group_by": "nome_combustivel",
                  "operation": "SUM:qtd_consumida",
                  "filters": "qtd_consumida > 0",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "🔥 LITROS CONSUMIDOS POR COMBUSTÍVEL",
                  "layout": "vertical",
                  "format": "numero",
                  "format_legend": "capitalizado",
                  "decimals": 0,
                  "suffix": " L",
                  "sort_order": "DESC",
                  "limit": 10,
                  "height": "450px",
                  "color": "#e74c3c"
                }
              }
            },
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "combustivel-km-total",
                "data_config": {
                  "group_by": "nome_combustivel",
                  "operation": "SUM:km_rodado",
                  "filters": "km_rodado > 0",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "🛣️ KM RODADO POR COMBUSTÍVEL",
                  "layout": "vertical",
                  "format": "numero",
                  "format_legend": "capitalizado",
                  "decimals": 0,
                  "suffix": " km",
                  "sort_order": "DESC",
                  "limit": 10,
                  "height": "450px",
                  "color": "#3498db"
                }
              }
            }
          ]
        }
      },
      "bloco16_analise_postos": {
        "type": "charts_grid_section",
        "title": "🏪 ANÁLISE POR POSTO DE ABASTECIMENTO",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "analise-postos-grid",
          "charts": [
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "postos-valor-total",
                "data_config": {
                  "group_by": "razao_social",
                  "operation": "SUM:valor_abastecimento",
                  "filters": "valor_abastecimento > 0",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "💰 VALOR TOTAL POR POSTO",
                  "layout": "ranking",
                  "format": "moeda",
                  "format_legend": "capitalizado",
                  "decimals": 2,
                  "sort_order": "DESC",
                  "limit": 15,
                  "height": "500px",
                  "color": "#e74c3c"
                }
              }
            },
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "postos-quantidade-abastecimentos",
                "data_config": {
                  "group_by": "razao_social",
                  "operation": "COUNT:id_abastecimento",
                  "filters": "valor_abastecimento > 0",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "📊 QUANTIDADE DE ABASTECIMENTOS POR POSTO",
                  "layout": "ranking",
                  "format": "numero",
                  "format_legend": "capitalizado",
                  "decimals": 0,
                  "suffix": " abastecimentos",
                  "sort_order": "DESC",
                  "limit": 15,
                  "height": "500px",
                  "color": "#3498db"
                }
              }
            }
          ]
        }
      },
      "bloco17_analise_precos_postos": {
        "type": "charts_grid_section",
        "title": "🏪 ANÁLISE DE PREÇOS POR POSTO",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "analise-precos-postos-grid",
          "charts": [
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "postos-preco-medio",
                "data_config": {
                  "group_by": "razao_social",
                  "operation": "AVG:preco_unitario",
                  "filters": "preco_unitario > 0 AND preco_unitario < 10",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "🏷️ PREÇO MÉDIO POR LITRO POR POSTO",
                  "layout": "ranking",
                  "format": "moeda",
                  "format_legend": "capitalizado",
                  "decimals": 3,
                  "suffix": "/L",
                  "sort_order": "DESC",
                  "limit": 15,
                  "height": "500px",
                  "color": "#8e44ad"
                }
              }
            },
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "postos-valor-medio-abastecimento",
                "data_config": {
                  "group_by": "razao_social",
                  "operation": "AVG:valor_abastecimento",
                  "filters": "valor_abastecimento > 0",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "💰 VALOR MÉDIO POR ABASTECIMENTO POR POSTO",
                  "layout": "ranking",
                  "format": "moeda",
                  "format_legend": "capitalizado",
                  "decimals": 2,
                  "sort_order": "DESC",
                  "limit": 15,
                  "height": "500px",
                  "color": "#f39c12"
                }
              }
            }
          ]
        }
      },
      "bloco18_analise_motoristas": {
        "type": "charts_grid_section",
        "title": "👨‍💼 ANÁLISE POR MOTORISTA",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "analise-motoristas-grid",
          "charts": [
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "motoristas-valor-total",
                "data_config": {
                  "group_by": "nome_motorista",
                  "operation": "SUM:valor_abastecimento",
                  "filters": "valor_abastecimento > 0",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "💰 VALOR TOTAL POR MOTORISTA",
                  "layout": "vertical",
                  "format": "moeda",
                  "format_legend": "capitalizado",
                  "decimals": 2,
                  "sort_order": "DESC",
                  "limit": 15,
                  "height": "500px",
                  "color": "#9b59b6"
                }
              }
            },
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "motoristas-valor-medio",
                "data_config": {
                  "group_by": "nome_motorista",
                  "operation": "AVG:valor_abastecimento",
                  "filters": "valor_abastecimento > 0",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "📊 VALOR MÉDIO POR ABASTECIMENTO",
                  "layout": "vertical",
                  "format": "moeda",
                  "format_legend": "capitalizado",
                  "decimals": 2,
                  "sort_order": "DESC",
                  "limit": 15,
                  "height": "500px",
                  "color": "#8e44ad"
                }
              }
            }
          ]
        }
      },
      "bloco19_analise_motoristas_eficiencia": {
        "type": "charts_grid_section",
        "title": "👨‍💼 ANÁLISE DE MOTORISTAS - EFICIÊNCIA",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "analise-motoristas-eficiencia-grid",
          "charts": [
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "motoristas-eficiencia-media",
                "data_config": {
                  "group_by": "nome_motorista",
                  "operation": "CALC:sum(km_rodado)/sum(qtd_consumida)",
                  "filters": "km_rodado > 0 AND qtd_consumida > 0",
                  "filters_aggregation": "value BETWEEN 1 AND 50"
                },
                "display_config": {
                  "title": "⚡ EFICIÊNCIA MÉDIA POR MOTORISTA",
                  "layout": "vertical",
                  "format": "numero",
                  "format_legend": "capitalizado",
                  "decimals": 2,
                  "suffix": " km/L",
                  "sort_order": "DESC",
                  "limit": 15,
                  "height": "500px",
                  "color": "#2ecc71"
                }
              }
            },
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "motoristas-km-total",
                "data_config": {
                  "group_by": "nome_motorista",
                  "operation": "SUM:km_rodado",
                  "filters": "km_rodado > 0",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "🛣️ KM TOTAL POR MOTORISTA",
                  "layout": "vertical",
                  "format": "numero",
                  "format_legend": "capitalizado",
                  "decimals": 0,
                  "suffix": " km",
                  "sort_order": "DESC",
                  "limit": 15,
                  "height": "500px",
                  "color": "#9b59b6"
                }
              }
            }
          ]
        }
      },
      "bloco20_analise_rotas_frequencia": {
        "type": "charts_grid_section",
        "title": "🗺️ ANÁLISE DE ROTAS/TRAJETOS - FREQUÊNCIA E CONSUMO",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "analise-rotas-frequencia-grid",
          "charts": [
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "rotas-mais-frequentes",
                "data_config": {
                  "group_by": "trajeto_cidades",
                  "operation": "COUNT:id_abastecimento",
                  "filters": "tem_trajeto = \"SIM\"",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "🏙️ ROTAS MAIS FREQUENTES",
                  "layout": "ranking",
                  "format": "numero",
                  "format_legend": "capitalizado",
                  "decimals": 0,
                  "suffix": " trajetos",
                  "sort_order": "DESC",
                  "limit": 15,
                  "height": "500px",
                  "color": "#3498db"
                }
              }
            },
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "rotas-litros-consumidos",
                "data_config": {
                  "group_by": "trajeto_cidades",
                  "operation": "SUM:trajeto_qtd_consumida",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_qtd_consumida > 0",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "🔥 LITROS CONSUMIDOS POR ROTA",
                  "layout": "ranking",
                  "format": "numero",
                  "format_legend": "capitalizado",
                  "decimals": 0,
                  "suffix": " L",
                  "sort_order": "DESC",
                  "limit": 15,
                  "height": "500px",
                  "color": "#e74c3c"
                }
              }
            }
          ]
        }
      },
      "bloco21_analise_rotas_valores": {
        "type": "charts_grid_section",
        "title": "🗺️ ANÁLISE DE ROTAS/TRAJETOS - VALORES",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "analise-rotas-valores-grid",
          "charts": [
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "rotas-maior-custo",
                "data_config": {
                  "group_by": "trajeto_cidades",
                  "operation": "SUM:trajeto_valor_consumo",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_valor_consumo > 0",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "💸 ROTAS COM MAIOR CUSTO DE COMBUSTÍVEL",
                  "layout": "ranking",
                  "format": "moeda",
                  "format_legend": "capitalizado",
                  "decimals": 2,
                  "sort_order": "DESC",
                  "limit": 15,
                  "height": "500px",
                  "color": "#d35400"
                }
              }
            },
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "rotas-custo-medio-km",
                "data_config": {
                  "group_by": "trajeto_cidades",
                  "operation": "AVG:trajeto_custo_por_km_real",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_custo_por_km_real > 0",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "💰 CUSTO MÉDIO POR KM POR ROTA",
                  "layout": "ranking",
                  "format": "moeda",
                  "format_legend": "capitalizado",
                  "decimals": 2,
                  "suffix": "/km",
                  "sort_order": "ASC",
                  "limit": 15,
                  "height": "500px",
                  "color": "#1abc9c"
                }
              }
            }
          ]
        }
      },
      "bloco22_analise_rotas_distancia_tempo": {
        "type": "charts_grid_section",
        "title": "🗺️ ANÁLISE DE ROTAS - DISTÂNCIA E EFICIÊNCIA",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "analise-rotas-distancia-tempo-grid",
          "charts": [
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "rotas-maior-distancia",
                "data_config": {
                  "group_by": "trajeto_cidades",
                  "operation": "AVG:trajeto_distancia_km",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_distancia_km > 0",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "🛣️ ROTAS COM MAIOR DISTÂNCIA MÉDIA",
                  "layout": "ranking",
                  "format": "numero",
                  "format_legend": "capitalizado",
                  "decimals": 0,
                  "suffix": " km",
                  "sort_order": "DESC",
                  "limit": 15,
                  "height": "500px",
                  "color": "#3498db"
                }
              }
            },
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "rotas-eficiencia-media",
                "data_config": {
                  "group_by": "trajeto_cidades",
                  "operation": "AVG:trajeto_eficiencia_real",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_eficiencia_real > 0",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "⚡ EFICIÊNCIA MÉDIA POR ROTA",
                  "layout": "ranking",
                  "format": "numero",
                  "format_legend": "capitalizado",
                  "decimals": 2,
                  "suffix": " km/L",
                  "sort_order": "DESC",
                  "limit": 15,
                  "height": "500px",
                  "color": "#2ecc71"
                }
              }
            }
          ]
        }
      },
      "bloco23_analise_contratos_frequencia": {
        "type": "charts_grid_section",
        "title": "📋 ANÁLISE DE CONTRATOS - FREQUÊNCIA E CONSUMO",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "analise-contratos-frequencia-grid",
          "charts": [
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "contratos-mais-frequentes",
                "data_config": {
                  "group_by": "trajeto_contrato_descricao",
                  "operation": "COUNT:id_abastecimento",
                  "filters": "tem_trajeto = \"SIM\"",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "📝 CONTRATOS MAIS FREQUENTES",
                  "layout": "ranking",
                  "format": "numero",
                  "format_legend": "capitalizado",
                  "decimals": 0,
                  "suffix": " trajetos",
                  "sort_order": "DESC",
                  "limit": 15,
                  "height": "500px",
                  "color": "#9b59b6"
                }
              }
            },
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "contratos-litros-consumidos",
                "data_config": {
                  "group_by": "trajeto_contrato_descricao",
                  "operation": "SUM:trajeto_qtd_consumida",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_qtd_consumida > 0",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "🔥 LITROS CONSUMIDOS POR CONTRATO",
                  "layout": "ranking",
                  "format": "numero",
                  "format_legend": "capitalizado",
                  "decimals": 0,
                  "suffix": " L",
                  "sort_order": "DESC",
                  "limit": 15,
                  "height": "500px",
                  "color": "#e74c3c"
                }
              }
            }
          ]
        }
      },
      "bloco24_analise_contratos_valores": {
        "type": "charts_grid_section",
        "title": "📋 ANÁLISE DE CONTRATOS - VALORES",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "analise-contratos-valores-grid",
          "charts": [
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "contratos-maior-custo",
                "data_config": {
                  "group_by": "trajeto_contrato_descricao",
                  "operation": "SUM:trajeto_valor_consumo",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_valor_consumo > 0",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "💸 CONTRATOS COM MAIOR CUSTO DE COMBUSTÍVEL",
                  "layout": "ranking",
                  "format": "moeda",
                  "format_legend": "capitalizado",
                  "decimals": 2,
                  "sort_order": "DESC",
                  "limit": 15,
                  "height": "500px",
                  "color": "#16a085"
                }
              }
            },
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "contratos-custo-medio-km",
                "data_config": {
                  "group_by": "trajeto_contrato_descricao",
                  "operation": "AVG:trajeto_custo_por_km_real",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_custo_por_km_real > 0",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "💰 CUSTO MÉDIO POR KM POR CONTRATO",
                  "layout": "ranking",
                  "format": "moeda",
                  "format_legend": "capitalizado",
                  "decimals": 2,
                  "suffix": "/km",
                  "sort_order": "ASC",
                  "limit": 15,
                  "height": "500px",
                  "color": "#1abc9c"
                }
              }
            }
          ]
        }
      },
      "bloco25_analise_contratos_distancia_valor": {
        "type": "charts_grid_section",
        "title": "📋 ANÁLISE DE CONTRATOS - DISTÂNCIA E VALOR",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "analise-contratos-distancia-valor-grid",
          "charts": [
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "contratos-maior-distancia",
                "data_config": {
                  "group_by": "trajeto_contrato_descricao",
                  "operation": "SUM:trajeto_distancia_km",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_distancia_km > 0",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "🛣️ CONTRATOS COM MAIOR DISTÂNCIA TOTAL",
                  "layout": "ranking",
                  "format": "numero",
                  "format_legend": "capitalizado",
                  "decimals": 0,
                  "suffix": " km",
                  "sort_order": "DESC",
                  "limit": 15,
                  "height": "500px",
                  "color": "#16a085"
                }
              }
            },
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "contratos-valor-por-km",
                "data_config": {
                  "group_by": "trajeto_contrato_descricao",
                  "operation": "CALC:sum(trajeto_valor_consumo)/sum(trajeto_distancia_km)",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_valor_consumo > 0 AND trajeto_distancia_km > 0",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "💰 VALOR POR KM POR CONTRATO",
                  "layout": "ranking",
                  "format": "moeda",
                  "format_legend": "capitalizado",
                  "decimals": 2,
                  "suffix": "/km",
                  "sort_order": "DESC",
                  "limit": 15,
                  "height": "500px",
                  "color": "#1abc9c"
                }
              }
            }
          ]
        }
      },
      "bloco26_analise_motivos": {
        "type": "charts_grid_section",
        "title": "🎯 ANÁLISE DE MOTIVOS - FREQUÊNCIA E VALORES",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "analise-motivos-grid",
          "charts": [
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "motivos-frequencia",
                "data_config": {
                  "group_by": "trajeto_motivo_principal",
                  "operation": "COUNT:id_abastecimento",
                  "filters": "tem_trajeto = \"SIM\"",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "📊 FREQUÊNCIA DE MOTIVOS",
                  "layout": "ranking",
                  "format": "numero",
                  "format_legend": "capitalizado",
                  "decimals": 0,
                  "suffix": " trajetos",
                  "sort_order": "DESC",
                  "limit": 10,
                  "height": "450px",
                  "color": "#e74c3c"
                }
              }
            },
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "motivos-valor-total",
                "data_config": {
                  "group_by": "trajeto_motivo_principal",
                  "operation": "SUM:trajeto_valor_consumo",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_valor_consumo > 0",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "💰 VALOR TOTAL POR MOTIVO",
                  "layout": "ranking",
                  "format": "moeda",
                  "format_legend": "capitalizado",
                  "decimals": 2,
                  "sort_order": "DESC",
                  "limit": 10,
                  "height": "450px",
                  "color": "#f39c12"
                }
              }
            }
          ]
        }
      },
      "bloco27_analise_motivos_distancia_eficiencia": {
        "type": "charts_grid_section",
        "title": "🎯 ANÁLISE DE MOTIVOS - DISTÂNCIA E EFICIÊNCIA",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "analise-motivos-distancia-eficiencia-grid",
          "charts": [
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "motivos-distancia-total",
                "data_config": {
                  "group_by": "trajeto_motivo_principal",
                  "operation": "SUM:trajeto_distancia_km",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_distancia_km > 0",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "🛣️ DISTÂNCIA TOTAL POR MOTIVO",
                  "layout": "ranking",
                  "format": "numero",
                  "format_legend": "capitalizado",
                  "decimals": 0,
                  "suffix": " km",
                  "sort_order": "DESC",
                  "limit": 10,
                  "height": "450px",
                  "color": "#3498db"
                }
              }
            },
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "motivos-eficiencia-media",
                "data_config": {
                  "group_by": "trajeto_motivo_principal",
                  "operation": "AVG:trajeto_eficiencia_real",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_eficiencia_real > 0",
                  "filters_aggregation": "value BETWEEN 1 AND 50"
                },
                "display_config": {
                  "title": "⚡ EFICIÊNCIA MÉDIA POR MOTIVO",
                  "layout": "ranking",
                  "format": "numero",
                  "format_legend": "capitalizado",
                  "decimals": 2,
                  "suffix": " km/L",
                  "sort_order": "DESC",
                  "limit": 10,
                  "height": "450px",
                  "color": "#2ecc71"
                }
              }
            }
          ]
        }
      },
      "bloco28_analise_estados": {
        "type": "charts_grid_section",
        "title": "🗺️ ANÁLISE DE ESTADOS - FREQUÊNCIA E VALORES",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "analise-estados-grid",
          "charts": [
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "estados-frequencia",
                "data_config": {
                  "group_by": "trajeto_ufs",
                  "operation": "COUNT:id_abastecimento",
                  "filters": "tem_trajeto = \"SIM\"",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "📊 FREQUÊNCIA DE ESTADOS",
                  "layout": "vertical",
                  "format": "numero",
                  "format_legend": "maiusculo",
                  "decimals": 0,
                  "suffix": " trajetos",
                  "sort_order": "DESC",
                  "limit": 10,
                  "height": "450px",
                  "color": "#2ecc71"
                }
              }
            },
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "estados-valor-total",
                "data_config": {
                  "group_by": "trajeto_ufs",
                  "operation": "SUM:trajeto_valor_consumo",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_valor_consumo > 0",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "💰 VALOR TOTAL POR ESTADO",
                  "layout": "vertical",
                  "format": "moeda",
                  "format_legend": "maiusculo",
                  "decimals": 2,
                  "sort_order": "DESC",
                  "limit": 10,
                  "height": "450px",
                  "color": "#27ae60"
                }
              }
            }
          ]
        }
      },
      "bloco29_analise_estados_distancia_custo": {
        "type": "charts_grid_section",
        "title": "🗺️ ANÁLISE DE ESTADOS - DISTÂNCIA E CUSTO",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "analise-estados-distancia-custo-grid",
          "columns": 2,
          "charts": [
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "estados-distancia-total",
                "data_config": {
                  "group_by": "trajeto_ufs",
                  "operation": "SUM:trajeto_distancia_km",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_distancia_km > 0",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "🛣️ DISTÂNCIA TOTAL POR ESTADO",
                  "layout": "vertical",
                  "format": "numero",
                  "format_legend": "maiusculo",
                  "decimals": 0,
                  "suffix": " km",
                  "sort_order": "DESC",
                  "limit": 10,
                  "height": "450px",
                  "color": "#2ecc71"
                }
              }
            },
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "estados-custo-medio-km",
                "data_config": {
                  "group_by": "trajeto_ufs",
                  "operation": "AVG:trajeto_custo_por_km_real",
                  "filters": "tem_trajeto = \"SIM\" AND trajeto_custo_por_km_real > 0",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "💰 CUSTO MÉDIO POR KM POR ESTADO",
                  "layout": "vertical",
                  "format": "moeda",
                  "format_legend": "maiusculo",
                  "decimals": 2,
                  "suffix": "/km",
                  "sort_order": "DESC",
                  "limit": 10,
                  "height": "450px",
                  "color": "#d35400"
                }
              }
            }
          ]
        }
      }
    }
  },
  "url_documentacao": "/docs/ondevou-db-veiculos_abastecimentos.html",
  "nome_tabela": "veiculos_abastecimentos"
}

📝 SQL CREATE TABLE - Estrutura Completa

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

🏗️ Estrutura Completa

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

CREATE TABLE public.veiculos_abastecimentos (
    id integer NOT NULL DEFAULT nextval('veiculos_abastecimentos_id_seq'::regclass),
    participante integer,
    id_veiculo integer,
    id_participante integer,
    id_combustivel integer,
    id_motorista integer,
    numero_documento varchar(255),
    km integer,
    horimetro integer,
    quantidade numeric(25, 6),
    preco_unitario numeric(25, 10),
    data_abastecimento timestamp DEFAULT now(),
    data timestamp DEFAULT now(),
    observacao varchar(255),
    CONSTRAINT veiculos_abastecimentos_pkey PRIMARY KEY (id),
    CONSTRAINT 2200_222257_1_not_null CHECK (id IS NOT NULL)
);

-- ============================================================
-- ÍNDICES
-- ============================================================
CREATE INDEX idx_veiculos_abastecimentos_id_combustivel ON public.veiculos_abastecimentos USING btree (id_combustivel);
CREATE INDEX idx_veiculos_abastecimentos_id_motorista ON public.veiculos_abastecimentos USING btree (id_motorista);
CREATE INDEX idx_veiculos_abastecimentos_id_participante ON public.veiculos_abastecimentos USING btree (id_participante);
CREATE INDEX idx_veiculos_abastecimentos_id_veiculo ON public.veiculos_abastecimentos USING btree (id_veiculo);
CREATE INDEX idx_veiculos_abastecimentos_p_data ON public.veiculos_abastecimentos USING btree (participante, data DESC);
CREATE INDEX idx_veiculos_abastecimentos_p_id ON public.veiculos_abastecimentos USING btree (participante, id DESC);
CREATE INDEX idx_veiculos_abastecimentos_p_id_participante ON public.veiculos_abastecimentos USING btree (participante, id_participante);
CREATE INDEX idx_veiculos_abastecimentos_p_id_veiculo ON public.veiculos_abastecimentos USING btree (participante, id_veiculo DESC);
CREATE INDEX idx_veiculos_abastecimentos_participante ON public.veiculos_abastecimentos USING btree (participante);
CREATE UNIQUE INDEX veiculos_abastecimentos_pk_id ON public.veiculos_abastecimentos USING btree (id);

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
data - timestamp without time zone ❌ Só no banco
data_abastecimento date timestamp without time zone ✅ OK
data_inclusao_abastecimento date - ⚠️ Só no JSON
descricao_propriedade number - ⚠️ Só no JSON
descricao_veiculo number - ⚠️ Só no JSON
horimetro - integer ❌ Só no banco
id number integer ✅ OK
id_combustivel - integer ❌ Só no banco
id_motorista - integer ❌ Só no banco
id_participante - integer ❌ Só no banco
id_veiculo - integer ❌ Só no banco
ip text - ⚠️ Só no JSON
km number integer ✅ OK
km_anterior number - ⚠️ Só no JSON
km_por_litro number - ⚠️ Só no JSON
km_rodado number - ⚠️ Só no JSON
latitude number - ⚠️ Só no JSON
longitude number - ⚠️ Só no JSON
nome_cidade number - ⚠️ Só no JSON
nome_combustivel number - ⚠️ Só no JSON
nome_membro number - ⚠️ Só no JSON
nome_motorista number - ⚠️ Só no JSON
nome_tipo_combustivel number - ⚠️ Só no JSON
nome_unidade_combustivel number - ⚠️ Só no JSON
numero_documento text character varying ✅ OK
observacao text character varying ✅ OK
participante text integer ✅ OK
placa_veiculo text - ⚠️ Só no JSON
preco_unitario number numeric ✅ OK
qrcode text - ⚠️ Só no JSON
qtd_consumida number - ⚠️ Só no JSON
quantidade number numeric ✅ OK
razao_social number - ⚠️ Só no JSON
sigla_uf number - ⚠️ Só no JSON
trajeto_texto text - ⚠️ Só no JSON
valor_abastecimento number - ⚠️ Só no JSON
valor_consumo number - ⚠️ Só no JSON

💡 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_veiculos_abastecimentos WHERE participante = ${globais.dados_fixo.participante}`,
    'view': 'view_veiculos_abastecimentos'
});

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

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