🗄️ Duplicatas de Venda

Tabela auxiliar que armazena duplicatas dos vendas.
🔗 Tabela relacionada: vendas

📋 26 colunas 🔗 11 relacionamentos 🎮 8 controles 👁️ view_vendas_duplicatas 📝 2 com putdata 🔑 PRIMARY KEY 🎮 1 ações externas

📋 Estrutura da Tabela

A tabela vendas_duplicatas possui 26 colunas.

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

Campo id

🔑 PRIMARY KEY

Campo na tabela: id

Alias na VIEW: id_venda_duplicata

Readonly: ✅ Gerado automaticamente pelo sistema

💰 paid: Liquidar duplicatas Estoque
📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
  • Tipo de input text
✅ Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou id
  • Alias OndeVou id_venda_duplicata
  • Tabela OndeVou vendas_duplicatas
🎮 Controls Acao
  • {
      "paid": {
        "acao": "setVendasDuplicatasLiquidacaoFromTableVendasDuplicatas",
        "messagem": "Liquidações"
      }
    }
  • Alias: id_venda_duplicata
  • Tabelas: vendas_duplicatas ✅
  • ControlsAcao: ✓
  • 🔑 PRIMARY KEY
  • VIEW: id_venda_duplicata
📋 Find
📋 Somente view🔗 getdata
Campo Tabela find
Campo VIEW / Exibido find ⚠️ (somente view)
Tipo text
Data Table view_vendas_duplicatas
Descrição

Campo find

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados text
  • Classe CSS table-input-find
📊 Dados
  • Campo OndeVou find
  • Tabela OndeVou view_vendas_duplicatas
🔗 Getdata
  • {
      "view": "view_vendas_duplicatas",
      "data": "view_vendas_duplicatas",
      "data-update-full-fields": "sim",
      "text-empty-search": "sim",
      "campo-data-id": "id_venda",
      "campo-data-value-input": "id_venda",
      "campo-data-input-select-view": "id_venda,id_venda_duplicata,saldo_aberto,data_emissao,data_vencimento,razao_social_participante,cnpj_participante,cpf_participante,numero_documento",
      "query": {
        "select": "* from view_vendas_duplicatas",
        "where": {
          "and": {
            "texto_digitado": {
              "left": "(unaccent(LOWER(concat(id,` `,id_venda,` `,numero_documento,` `,cnpj_participante,` `,cpf_participante,` `,razao_social_participante))) ilike `%",
              "right": "%`) and (participante=`1`)"
            }
          }
        },
        "order": "id desc"
      }
    }
  • Tabelas: view_vendas_duplicatas (só view)
📋 Id Venda
🔒 Somente leitura💾 Grava🔗 getdata
Campo Tabela id_venda
Campo VIEW / Exibido id_venda
Tipo number (getdata)
Data Table vendas_duplicatas
Descrição

Campo id venda

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
✅ Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou id_venda
  • Tabela OndeVou vendas_duplicatas
🔗 Getdata
  • {
      "view": "view_vendas",
      "data": "view_vendas",
      "campo-data-id": "id_venda",
      "campo-data-value-input": "id_venda",
      "text-empty-search": "nao",
      "campo-data-input-select-view": "id_venda,numero_documento,id_nfe,id_nfce,razao_social_cliente,cnpj,cpf,nome_cidade_cliente,sigla_uf_cliente",
      "query": {
        "select": "* from view_vendas",
        "where": {
          "and": {
            "texto_digitado": {
              "left": "(unaccent(LOWER(concat(id_venda,` `,id_nfe,` `,id_nfce,` `,cnpj_participante,` `,cpf_participante,` `,razao_social_cliente))) ilike `%",
              "right": "%`) and (participante=`1`)"
            }
          }
        },
        "order": "id_venda desc"
      }
    }
  • Tabelas: vendas_duplicatas ✅
📋 Participante
🔒 Somente leitura👁️ Oculto💾 Grava
Campo Tabela participante
Campo VIEW / Exibido participante
Tipo number
Data Table vendas_duplicatas
Descrição

Campo participante

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
✅ Validacao
  • Somente leitura 🔒 Sim
⚙️ Comportamento
  • Valor padrão 1
📊 Dados
  • Campo OndeVou participante
  • Tabela OndeVou vendas_duplicatas
  • Tabelas: vendas_duplicatas ✅
  • Hidden: ✓ (dados ocultos)
  • Value: 1
📋 Id Participante
✅ Obrigatório🔒 Somente leitura👁️ Oculto💾 Grava
Campo Tabela id_participante
Campo VIEW / Exibido id_participante
Tipo number
Data Table vendas_duplicatas
Descrição

Campo id participante

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
✅ Validacao
  • Obrigatório ✅ Sim
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou id_participante
  • Tabela OndeVou vendas_duplicatas
  • Tabelas: vendas_duplicatas ✅
  • Hidden: ✓ (dados ocultos)
📋 Nome/Razão Social
✅ Obrigatório💾 Grava🔗 getdata
Campo Tabela id_participante
Campo VIEW / Exibido razao_social_participante (ID: id_participante)
Tipo number (getdata)
Data Table vendas_duplicatas
Descrição

Campo nome/razão social

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
✅ Validacao
  • Obrigatório ✅ Sim
📊 Dados
  • Campo OndeVou razao_social_participante
  • ID OndeVou id_participante
  • Tabela OndeVou vendas_duplicatas
🔗 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: vendas_duplicatas ✅
  • FormSearch: ✓
📋 Movimento
✅ Obrigatório💾 Grava🔗 getdata
Campo Tabela id_financeiro_movimento
Campo VIEW / Exibido descricao_financeiro_movimento (ID: id_financeiro_movimento)
Tipo number (getdata)
Data Table vendas_duplicatas
Descrição

Campo movimento

Getdata🔗 financeiro_movimento
📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
✅ Validacao
  • Obrigatório ✅ Sim
📊 Dados
  • Campo OndeVou descricao_financeiro_movimento
  • ID OndeVou id_financeiro_movimento
  • Tabela OndeVou vendas_duplicatas
🔗 Getdata
  • {
      "view": "view_financeiro_movimento",
      "data": "view_financeiro_movimento",
      "text-empty-search": "sim",
      "campo-data-id": "id_financeiro_movimento",
      "campo-data-value-input": "descricao_financeiro_movimento",
      "campo-data-input-select-view": "descricao_financeiro_movimento",
      "query": {
        "select": "* from view_financeiro_movimento",
        "where": {
          "and": {
            "texto_digitado": {
              "left": "(unaccent(LOWER(descricao_financeiro_movimento)) ilike `%",
              "right": "%`)"
            }
          }
        }
      }
    }
🔍 Formsearch
  • {
      "required": ""
    }
  • ID: id_financeiro_movimento
  • Tabelas: vendas_duplicatas ✅
  • FormSearch: ✓
📋 Situação
✅ Obrigatório🔒 Somente leitura💾 Grava🔗 getdata
Campo Tabela id_financeiro_situacao
Campo VIEW / Exibido descricao_financeiro_situacao (ID: id_financeiro_situacao)
Tipo number (getdata)
Data Table vendas_duplicatas
Descrição

Campo situação

Getdata🔗 financeiro_situacao
📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
✅ Validacao
  • Obrigatório ✅ Sim
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou descricao_financeiro_situacao
  • ID OndeVou id_financeiro_situacao
  • ID Default OndeVou 1
  • Tabela OndeVou vendas_duplicatas
🔗 Getdata
  • {
      "view": "view_financeiro_situacao",
      "data": "view_financeiro_situacao",
      "text-empty-search": "sim",
      "campo-data-id": "id_financeiro_situacao",
      "campo-data-value-input": "descricao_financeiro_situacao",
      "campo-data-input-select-view": "descricao_financeiro_situacao",
      "query": {
        "select": "* from view_financeiro_situacao",
        "where": {
          "and": {
            "texto_digitado": {
              "left": "(unaccent(LOWER(descricao_financeiro_situacao)) ilike `%",
              "right": "%`)"
            }
          }
        }
      }
    }
🔍 Formsearch
  • {
      "required": ""
    }
  • ID: id_financeiro_situacao
  • Tabelas: vendas_duplicatas ✅
  • Default: 1
  • FormSearch: ✓
📋 Fatura
🔒 Somente leitura📋 Somente view
Campo Tabela id_fatura
Campo VIEW / Exibido id_fatura ⚠️ (somente view)
Tipo number
Data Table view_vendas_duplicatas
Descrição

Campo fatura

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
✅ Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou id_fatura
  • Tabela OndeVou view_vendas_duplicatas
  • Tabelas: view_vendas_duplicatas (só view)
📋 NFe
🔒 Somente leitura📋 Somente view
Campo Tabela id_nfe
Campo VIEW / Exibido id_nfe ⚠️ (somente view)
Tipo number
Data Table view_vendas_duplicatas
Descrição

Campo nfe

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
✅ Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou id_nfe
  • Tabela OndeVou view_vendas_duplicatas
  • Tabelas: view_vendas_duplicatas (só view)
📋 Documento
✅ Obrigatório💾 Grava🔗 getdata
Campo Tabela id_financeiro_documento
Campo VIEW / Exibido descricao_financeiro_documento (ID: id_financeiro_documento)
Tipo number (getdata)
Data Table vendas_duplicatas
Descrição

Campo documento

Getdata🔗 financeiro_documento
📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
✅ Validacao
  • Obrigatório ✅ Sim
📊 Dados
  • Campo OndeVou descricao_financeiro_documento
  • ID OndeVou id_financeiro_documento
  • Tabela OndeVou vendas_duplicatas
🔗 Getdata
  • {
      "view": "view_financeiro_documento",
      "data": "view_financeiro_documento",
      "text-empty-search": "sim",
      "campo-data-id": "id_financeiro_documento",
      "campo-data-value-input": "descricao_financeiro_documento",
      "campo-data-input-select-view": "descricao_financeiro_documento",
      "query": {
        "select": "* from view_financeiro_documento",
        "where": {
          "and": {
            "texto_digitado": {
              "left": "(unaccent(LOWER(descricao_financeiro_documento)) ilike `%",
              "right": "%`)"
            }
          }
        }
      }
    }
🔍 Formsearch
  • {
      "required": ""
    }
  • ID: id_financeiro_documento
  • Tabelas: vendas_duplicatas ✅
  • FormSearch: ✓
📋 N.Docto
💾 Grava
Campo Tabela numero_documento
Campo VIEW / Exibido numero_documento
Tipo text
Data Table vendas_duplicatas
Descrição

Campo n.docto

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados text
  • Tipo de input text
📊 Dados
  • Campo OndeVou numero_documento
  • Tabela OndeVou vendas_duplicatas
  • Tabelas: vendas_duplicatas ✅
📋 Seq
👁️ Oculto💾 Grava
Campo Tabela numero_duplicata
Campo VIEW / Exibido numero_duplicata
Tipo number
Data Table vendas_duplicatas
Descrição

Campo seq

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
  • Tipo de input text
📊 Dados
  • Campo OndeVou numero_duplicata
  • Tabela OndeVou vendas_duplicatas
  • Tabelas: vendas_duplicatas ✅
  • Hidden: ✓ (dados ocultos)
📋 Número
👁️ Oculto💾 Grava
Campo Tabela numero
Campo VIEW / Exibido numero
Tipo text
Data Table vendas_duplicatas
Descrição

Campo número

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados text
  • Tipo de input text
📊 Dados
  • Campo OndeVou numero
  • Tabela OndeVou vendas_duplicatas
  • Tabelas: vendas_duplicatas ✅
  • Hidden: ✓ (dados ocultos)
📋 Emissão
✅ Obrigatório💾 Grava
Campo Tabela data_emissao
Campo VIEW / Exibido nfe_data_emissao
Tipo date
Data Table vendas_duplicatas
Descrição

Campo emissão

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados date
  • Tipo de input date
  • Máximo de caracteres 10
✅ Validacao
  • Obrigatório ✅ Sim
📊 Dados
  • Campo OndeVou data_emissao
  • Alias OndeVou nfe_data_emissao
  • Tabela OndeVou vendas_duplicatas
  • Alias: nfe_data_emissao
  • Tabelas: vendas_duplicatas ✅
📋 Vencimento
✅ Obrigatório💾 Grava
Campo Tabela data_vencimento
Campo VIEW / Exibido nfe_data_vencimento
Tipo date
Data Table vendas_duplicatas
Descrição

Campo vencimento

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados date
  • Tipo de input date
  • Máximo de caracteres 10
✅ Validacao
  • Obrigatório ✅ Sim
📊 Dados
  • Campo OndeVou data_vencimento
  • Alias OndeVou nfe_data_vencimento
  • Tabela OndeVou vendas_duplicatas
  • Alias: nfe_data_vencimento
  • Tabelas: vendas_duplicatas ✅
📋 Cobrança
✅ Obrigatório💾 Grava🔗 getdata
Campo Tabela id_financeiro_cobranca
Campo VIEW / Exibido descricao_financeiro_cobranca (ID: id_financeiro_cobranca)
Tipo number (getdata)
Data Table vendas_duplicatas
Descrição

Campo cobrança

Getdata🔗 financeiro_cobranca
📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
✅ Validacao
  • Obrigatório ✅ Sim
📊 Dados
  • Campo OndeVou descricao_financeiro_cobranca
  • ID OndeVou id_financeiro_cobranca
  • Tabela OndeVou vendas_duplicatas
🔗 Getdata
  • {
      "view": "view_financeiro_cobranca",
      "data": "view_financeiro_cobranca",
      "text-empty-search": "sim",
      "campo-data-id": "id_financeiro_cobranca",
      "campo-data-value-input": "descricao_financeiro_cobranca",
      "campo-data-input-select-view": "descricao_financeiro_cobranca",
      "query": {
        "select": "* from view_financeiro_cobranca",
        "where": {
          "and": {
            "texto_digitado": {
              "left": "(unaccent(LOWER(descricao_financeiro_cobranca)) ilike `%",
              "right": "%`)"
            }
          }
        }
      }
    }
🔍 Formsearch
  • {
      "required": ""
    }
  • ID: id_financeiro_cobranca
  • Tabelas: vendas_duplicatas ✅
  • FormSearch: ✓
📋 Portador
💾 Grava🔗 getdata📝 putdata
Campo Tabela id_financeiro_portador
Campo VIEW / Exibido descricao_financeiro_portador (ID: id_financeiro_portador)
Tipo number (getdata)
Data Table vendas_duplicatas
Descrição

Campo portador

Putdata
{
  "tabela": "financeiro_portador",
  "fields": {
    "participante": "participante",
    "descricao": "descricao_financeiro_portador"
  }
}
📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
📊 Dados
  • Campo OndeVou descricao_financeiro_portador
  • ID OndeVou id_financeiro_portador
  • Tabela OndeVou vendas_duplicatas
🔗 Getdata
  • {
      "view": "view_financeiro_portador",
      "data": "view_financeiro_portador",
      "text-empty-search": "sim",
      "campo-data-id": "id_financeiro_portador",
      "campo-data-value-input": "descricao_financeiro_portador",
      "campo-data-input-select-view": "descricao_financeiro_portador",
      "query": {
        "select": "* from view_financeiro_portador",
        "where": {
          "and": {
            "texto_digitado": {
              "left": "(unaccent(LOWER(descricao_financeiro_portador)) ilike `%",
              "right": "%`) and (participante=`1`)"
            }
          }
        }
      }
    }
📝 Putdata
  • {
      "tabela": "financeiro_portador",
      "fields": {
        "participante": "participante",
        "descricao": "descricao_financeiro_portador"
      }
    }
🔍 Formsearch
  • {
      "required": ""
    }
  • ID: id_financeiro_portador
  • Tabelas: vendas_duplicatas ✅
  • FormSearch: ✓
📋 Categoria
💾 Grava🔗 getdata📝 putdata
Campo Tabela id_financeiro_categoria
Campo VIEW / Exibido descricao_financeiro_categoria (ID: id_financeiro_categoria)
Tipo number (getdata)
Data Table vendas_duplicatas
Descrição

Campo categoria

Putdata
{
  "tabela": "financeiro_categoria",
  "fields": {
    "participante": "participante",
    "descricao": "descricao_financeiro_categoria"
  }
}
📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
📊 Dados
  • Campo OndeVou descricao_financeiro_categoria
  • ID OndeVou id_financeiro_categoria
  • Tabela OndeVou vendas_duplicatas
🔗 Getdata
  • {
      "view": "view_financeiro_categoria",
      "data": "view_financeiro_categoria",
      "text-empty-search": "sim",
      "campo-data-id": "id_financeiro_categoria",
      "campo-data-value-input": "descricao_financeiro_categoria",
      "campo-data-input-select-view": "descricao_financeiro_categoria",
      "query": {
        "select": "* from view_financeiro_categoria",
        "where": {
          "and": {
            "texto_digitado": {
              "left": "(unaccent(LOWER(descricao_financeiro_categoria)) ilike `%",
              "right": "%`) and (participante=`1`)"
            }
          }
        }
      }
    }
📝 Putdata
  • {
      "tabela": "financeiro_categoria",
      "fields": {
        "participante": "participante",
        "descricao": "descricao_financeiro_categoria"
      }
    }
🔍 Formsearch
  • {
      "required": ""
    }
  • ID: id_financeiro_categoria
  • Tabelas: vendas_duplicatas ✅
  • FormSearch: ✓
📋 Id Romaneio
🔒 Somente leitura👁️ Oculto💾 Grava
Campo Tabela id_romaneio
Campo VIEW / Exibido id_romaneio
Tipo number
Data Table vendas_duplicatas
Descrição

Campo id romaneio

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
✅ Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou id_romaneio
  • Tabela OndeVou vendas_duplicatas
🚀 Launch
  • {
      "menu": {
        "data-id": "50"
      },
      "formsearch": {
        "descricao_romaneio": "id_romaneio"
      }
    }
  • Tabelas: vendas_duplicatas ✅
  • Hidden: ✓ (dados ocultos)
  • Launch: ✓
📋 Romaneio
💾 Grava🔗 getdata
Campo Tabela id_romaneio
Campo VIEW / Exibido descricao_romaneio (ID: id_romaneio)
Tipo number (getdata)
Data Table vendas_duplicatas
Descrição

Campo romaneio

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
📊 Dados
  • Campo OndeVou descricao_romaneio
  • ID OndeVou id_romaneio
  • Tabela OndeVou vendas_duplicatas
🔗 Getdata
  • {
      "view": "view_romaneios",
      "data": "view_romaneios",
      "text-empty-search": "sim",
      "campo-data-id": "id_romaneio",
      "campo-data-value-input": "id_romaneio,descricao_romaneio,romaneio_erplinux",
      "campo-data-input-select-view": "id_romaneio,descricao_romaneio,romaneio_erplinux,nome_situacao",
      "query": {
        "select": "* from view_romaneios",
        "where": {
          "and": {
            "texto_digitado": {
              "left": "(unaccent(LOWER(concat(id_romaneio,` `,romaneio_erplinux,` `,descricao_romaneio))) ilike `%",
              "right": "%`) and (participante=`1`)"
            }
          }
        },
        "order": "id_romaneio desc"
      }
    }
🔍 Formsearch
  • {
      "required": ""
    }
  • ID: id_romaneio
  • Tabelas: vendas_duplicatas ✅
  • FormSearch: ✓
📋 Rota
🔒 Somente leitura📋 Somente view🔗 getdata
Campo Tabela id_rota
Campo VIEW / Exibido nome_rota ⚠️ (somente view)
Tipo number (getdata)
Data Table view_vendas_duplicatas
Descrição

Campo rota

Getdata🔗 rotas
📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados number
✅ Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou nome_rota
  • ID OndeVou id_rota
  • Tabela OndeVou view_vendas_duplicatas
🔗 Getdata
  • {
      "view": "view_rotas",
      "data": "view_rotas",
      "text-empty-search": "sim",
      "campo-data-id": "id_rota",
      "campo-data-value-input": "nome_rota",
      "campo-data-input-select-view": "codigo_erplinux_rota,nome_rota",
      "query": {
        "select": "* from view_rotas",
        "where": {
          "and": {
            "texto_digitado": {
              "left": "(unaccent(LOWER(concat(id_rota,` `,codigo_erplinux_rota,` `,nome_rota))) ilike `%",
              "right": "%`) and (participante=`1`)"
            }
          }
        }
      }
    }
🔍 Formsearch
  • {
      "required": ""
    }
  • ID: id_rota
  • Tabelas: view_vendas_duplicatas (só view)
  • FormSearch: ✓
📋 Descrição
💾 Grava
Campo Tabela descricao
Campo VIEW / Exibido descricao_duplicata
Tipo text
Data Table vendas_duplicatas
Descrição

Campo descrição

📋 Todos os Atributos
🎨 Formatacao
  • Tipo de dados text
📊 Dados
  • Campo OndeVou descricao
  • Alias OndeVou descricao_duplicata
  • Tabela OndeVou vendas_duplicatas
  • Alias: descricao_duplicata
  • Tabelas: vendas_duplicatas ✅
📋 Valor
✅ Obrigatório💾 Grava
Campo Tabela valor
Campo VIEW / Exibido valor
Tipo number
Data Table vendas_duplicatas
Descrição

Campo valor

📋 Todos os Atributos
⚡ Eventos
  • Tecla solta setInputFormatNumber(this,"2") 📌 setInputFormatNumber
  • Tecla pressionada/solta return SomenteNumero(event) 📌 return
🎨 Formatacao
  • Tipo de dados number
  • Tipo de input text
  • Alinhamento center
✅ Validacao
  • Obrigatório ✅ Sim
⚙️ Comportamento
  • Render rendersTableVendasDuplicatas 🎨 RENDER
📊 Dados
  • Campo OndeVou valor
  • Tabela OndeVou vendas_duplicatas
  • Tabelas: vendas_duplicatas ✅
  • Eventos: keyup
  • Render: ✓
📋 Liquidações
🔒 Somente leitura📋 Somente view
Campo Tabela valor_liquidacoes
Campo VIEW / Exibido valor_liquidacoes ⚠️ (somente view)
Tipo number
Data Table view_vendas_duplicatas
Descrição

Campo liquidações

📋 Todos os Atributos
⚡ Eventos
  • Tecla solta setInputFormatNumber(this,"2") 📌 setInputFormatNumber
  • Tecla pressionada/solta return SomenteNumero(event) 📌 return
🎨 Formatacao
  • Tipo de dados number
  • Tipo de input text
  • Alinhamento center
✅ Validacao
  • Somente leitura 🔒 Sim
⚙️ Comportamento
  • Render rendersTableVendasDuplicatas 🎨 RENDER
📊 Dados
  • Campo OndeVou valor_liquidacoes
  • Tabela OndeVou view_vendas_duplicatas
  • Tabelas: view_vendas_duplicatas (só view)
  • Eventos: keyup
  • Render: ✓
📋 Saldo em aberto
🔒 Somente leitura📋 Somente view
Campo Tabela saldo_aberto
Campo VIEW / Exibido saldo_aberto ⚠️ (somente view)
Tipo number
Data Table view_vendas_duplicatas
Descrição

Campo saldo em aberto

📋 Todos os Atributos
⚡ Eventos
  • Tecla solta setInputFormatNumber(this,"2") 📌 setInputFormatNumber
  • Tecla pressionada/solta return SomenteNumero(event) 📌 return
🎨 Formatacao
  • Tipo de dados number
  • Tipo de input text
  • Alinhamento center
✅ Validacao
  • Somente leitura 🔒 Sim
📊 Dados
  • Campo OndeVou saldo_aberto
  • Tabela OndeVou view_vendas_duplicatas
  • Tabelas: view_vendas_duplicatas (só view)
  • Eventos: keyup
📌 Legenda: 🔑 PRIMARY KEY ✅ Obrigatório 🔒 Somente leitura 👁️ Oculto 💾 Grava 📋 Somente view 🔗 getdata 📝 putdata 🔢 AutoInc 📱 QR Code 📋 Auditoria 📱 GetCollector

🔗 Relacionamentos

Tabelas relacionadas via getdata.

vendas_duplicatas · Auxiliar: Find 📄
vendas · Principal: Id Venda 📄
participantes_privado · Auxiliar: Nome/Razão Social 📄
financeiro_movimento · Auxiliar: Movimento 📚
financeiro_situacao · Auxiliar: Situação 📚
financeiro_documento · Auxiliar: Documento 📚
financeiro_cobranca · Auxiliar: Cobrança 📚
financeiro_portador · Auxiliar: Portador 📄
financeiro_categoria · Auxiliar: Categoria 📄
romaneios · Principal: Romaneio 📄
rotas · Principal: Rota 📄

🔍 Filtros (formsearch)

Campos disponíveis para filtragem na busca.

Apenas receber checkbox —
Apenas titulos abertos checkbox —
Apenas pagar checkbox —
Apenas titulos pagos checkbox —
Data emissão inicial date —
Data emissão final date —
Data vencimento inicial date —
Data vencimento final date —
Venda text 🔗 Sim

🎮 Controles Disponíveis

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

📂 Controle
🔘 Add add 🔘 Find find 🔘 Copy copy 🔘 Edit edit 💾 Salvar save 🔘 Paid paid 🔘 Delete delete 🔘 Remove remove

👁️ View Associada

Nome: view_vendas_duplicatas

🔑 PRIMARY KEY - Campo Id

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

Configuração

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

Comportamento

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

🎮 Controls-Ação

📂 Estoque
paid: Liquidar duplicatas setVendasDuplicatasLiquidacaoFromTableVendasDuplicatas

💾 JSON da Tabela

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

code Clique para ver o JSON completo 91 KB
{
  "table-id": "vendas_duplicatas",
  "data-table-ondevou": "vendas_duplicatas",
  "table-class": "striped",
  "table-launch-filter": "nao",
  "controls": [
    "add",
    "find",
    "copy",
    "edit",
    "save",
    "paid",
    "delete",
    "remove"
  ],
  "html": {
    "div": {
      "before": "<h1>Duplicatas</h1>",
      "after": "<br>"
    }
  },
  "pdf": {
    "format": "a3",
    "orientation": "landscape",
    "columns-remove": [
      "qrcode",
      "Participante",
      "Id Participante",
      "Seq",
      "Número",
      "Id Romaneio"
    ]
  },
  "routines": {
    "summary": "getResumoVendas_duplicatas"
  },
  "search": {
    "id_search_duplicata": {
      "data-type-ondevou": "number",
      "texto_label": "ID documento de referência",
      "title": "Digite algo da razão social do cliente, id documento, nfe, nfce, nfse",
      "data-where-order": "order by id_venda_duplicata desc",
      "data-field-ondevou": "id_search_duplicata",
      "data-table-ondevou": "view_vendas_duplicatas",
      "getdata": "{\"view\":\"view_vendas_duplicatas\",\"data\":\"view_vendas_duplicatas\",\"data-update-full-fields\":\"sim\",\"text-empty-search\":\"sim\",\"campo-data-id\":\"id_venda\",\"campo-data-value-input\":\"id_venda\",\"campo-data-input-select-view\":\"id_venda,id_venda_duplicata,saldo_aberto,data_emissao,data_vencimento,razao_social_participante,cnpj_participante,cpf_participante,numero_documento\",\"query\":{\"select\":\"* from view_vendas_duplicatas\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(concat(id,` `,id_venda,` `,numero_documento,` `,cnpj_participante,` `,cpf_participante,` `,razao_social_participante))) ilike `%\",\"right\":\"%`) and (participante=`1`)\"}}},\"order\":\"id desc\"}}"
    }
  },
  "headers": {
    "Id": {
      "width": "7%"
    },
    "Find": {
      "width": "5%"
    },
    "Id Venda": {
      "width": "7%"
    },
    "Participante": {
      "width": "8%",
      "type": "hidden"
    },
    "Id Participante": {
      "width": "8%",
      "type": "hidden"
    },
    "Nome/Razão Social": {
      "width": "25%"
    },
    "Movimento": {
      "width": "11%"
    },
    "Situação": {
      "width": "9%"
    },
    "Fatura": {
      "width": "7%"
    },
    "NFe": {
      "width": "7%"
    },
    "Documento": {
      "width": "11%"
    },
    "N.Docto": {
      "width": "10%"
    },
    "Seq": {
      "width": "5%",
      "type": "hidden"
    },
    "Número": {
      "width": "5%",
      "type": "hidden"
    },
    "Emissão": {
      "width": "10%",
      "align": "center"
    },
    "Vencimento": {
      "width": "12%",
      "align": "center"
    },
    "Cobrança": {
      "width": "10%"
    },
    "Portador": {
      "width": "10%"
    },
    "Categoria": {
      "width": "10%"
    },
    "Id Romaneio": {
      "width": "7%",
      "type": "hidden"
    },
    "Romaneio": {
      "width": "20%"
    },
    "Rota": {
      "width": "15%"
    },
    "Descrição": {
      "width": "20%"
    },
    "Valor": {
      "align": "center",
      "width": "10%",
      "sum": "sum"
    },
    "Liquidações": {
      "align": "center",
      "width": "12%",
      "sum": "sum"
    },
    "Saldo em aberto": {
      "align": "center",
      "width": "10%",
      "sum": "sum"
    }
  },
  "columns": {
    "Id": {
      "input": {
        "type": "text",
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-field-ondevou": "id",
        "data-field-alias-ondevou": "id_venda_duplicata",
        "data-table-ondevou": "vendas_duplicatas",
        "controls-acao": {
          "paid": {
            "acao": "setVendasDuplicatasLiquidacaoFromTableVendasDuplicatas",
            "messagem": "Liquidações"
          }
        }
      }
    },
    "Find": {
      "input": {
        "class": "table-input-find",
        "data-type-ondevou": "text",
        "data-field-ondevou": "find",
        "data-table-ondevou": "view_vendas_duplicatas",
        "getdata": "{\"view\":\"view_vendas_duplicatas\",\"data\":\"view_vendas_duplicatas\",\"data-update-full-fields\":\"sim\",\"text-empty-search\":\"sim\",\"campo-data-id\":\"id_venda\",\"campo-data-value-input\":\"id_venda\",\"campo-data-input-select-view\":\"id_venda,id_venda_duplicata,saldo_aberto,data_emissao,data_vencimento,razao_social_participante,cnpj_participante,cpf_participante,numero_documento\",\"query\":{\"select\":\"* from view_vendas_duplicatas\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(concat(id,` `,id_venda,` `,numero_documento,` `,cnpj_participante,` `,cpf_participante,` `,razao_social_participante))) ilike `%\",\"right\":\"%`) and (participante=`1`)\"}}},\"order\":\"id desc\"}}"
      }
    },
    "Id Venda": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-field-ondevou": "id_venda",
        "data-table-ondevou": "vendas_duplicatas",
        "getdata": "{\"view\":\"view_vendas\",\"data\":\"view_vendas\",\"campo-data-id\":\"id_venda\",\"campo-data-value-input\":\"id_venda\",\"text-empty-search\":\"nao\",\"campo-data-input-select-view\":\"id_venda,numero_documento,id_nfe,id_nfce,razao_social_cliente,cnpj,cpf,nome_cidade_cliente,sigla_uf_cliente\",\"query\":{\"select\":\"* from view_vendas\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(concat(id_venda,` `,id_nfe,` `,id_nfce,` `,cnpj_participante,` `,cpf_participante,` `,razao_social_cliente))) ilike `%\",\"right\":\"%`) and (participante=`1`)\"}}},\"order\":\"id_venda desc\"}}"
      }
    },
    "Participante": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "value": "1",
        "data-field-ondevou": "participante",
        "data-table-ondevou": "vendas_duplicatas"
      }
    },
    "Id Participante": {
      "input": {
        "readonly": "readonly",
        "required": "required",
        "data-type-ondevou": "number",
        "data-field-ondevou": "id_participante",
        "data-table-ondevou": "vendas_duplicatas"
      }
    },
    "Nome/Razão Social": {
      "input": {
        "data-type-ondevou": "number",
        "required": "required",
        "data-id-field-ondevou": "id_participante",
        "data-field-ondevou": "razao_social_participante",
        "data-table-ondevou": "vendas_duplicatas",
        "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": ""
        }
      }
    },
    "Movimento": {
      "input": {
        "required": "required",
        "data-type-ondevou": "number",
        "data-id-field-ondevou": "id_financeiro_movimento",
        "data-id-field-ondevou-default": "",
        "data-field-ondevou": "descricao_financeiro_movimento",
        "data-table-ondevou": "vendas_duplicatas",
        "getdata": "{\"view\":\"view_financeiro_movimento\",\"data\":\"view_financeiro_movimento\",\"text-empty-search\":\"sim\",\"campo-data-id\":\"id_financeiro_movimento\",\"campo-data-value-input\":\"descricao_financeiro_movimento\",\"campo-data-input-select-view\":\"descricao_financeiro_movimento\",\"query\":{\"select\":\"* from view_financeiro_movimento\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(descricao_financeiro_movimento)) ilike `%\",\"right\":\"%`)\"}}}}}",
        "formsearch": {
          "required": ""
        }
      }
    },
    "Situação": {
      "input": {
        "required": "required",
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-id-field-ondevou": "id_financeiro_situacao",
        "data-id-field-ondevou-default": "1",
        "data-field-ondevou": "descricao_financeiro_situacao",
        "data-table-ondevou": "vendas_duplicatas",
        "getdata": "{\"view\":\"view_financeiro_situacao\",\"data\":\"view_financeiro_situacao\",\"text-empty-search\":\"sim\",\"campo-data-id\":\"id_financeiro_situacao\",\"campo-data-value-input\":\"descricao_financeiro_situacao\",\"campo-data-input-select-view\":\"descricao_financeiro_situacao\",\"query\":{\"select\":\"* from view_financeiro_situacao\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(descricao_financeiro_situacao)) ilike `%\",\"right\":\"%`)\"}}}}}",
        "formsearch": {
          "required": ""
        }
      }
    },
    "Fatura": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-field-ondevou": "id_fatura",
        "data-table-ondevou": "view_vendas_duplicatas"
      }
    },
    "NFe": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-field-ondevou": "id_nfe",
        "data-table-ondevou": "view_vendas_duplicatas"
      }
    },
    "Documento": {
      "input": {
        "required": "required",
        "data-type-ondevou": "number",
        "data-id-field-ondevou": "id_financeiro_documento",
        "data-field-ondevou": "descricao_financeiro_documento",
        "data-table-ondevou": "vendas_duplicatas",
        "getdata": "{\"view\":\"view_financeiro_documento\",\"data\":\"view_financeiro_documento\",\"text-empty-search\":\"sim\",\"campo-data-id\":\"id_financeiro_documento\",\"campo-data-value-input\":\"descricao_financeiro_documento\",\"campo-data-input-select-view\":\"descricao_financeiro_documento\",\"query\":{\"select\":\"* from view_financeiro_documento\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(descricao_financeiro_documento)) ilike `%\",\"right\":\"%`)\"}}}}}",
        "formsearch": {
          "required": ""
        }
      }
    },
    "N.Docto": {
      "input": {
        "type": "text",
        "data-field-ondevou": "numero_documento",
        "data-type-ondevou": "text",
        "data-table-ondevou": "vendas_duplicatas"
      }
    },
    "Seq": {
      "input": {
        "type": "text",
        "data-type-ondevou": "number",
        "data-field-ondevou": "numero_duplicata",
        "data-table-ondevou": "vendas_duplicatas"
      }
    },
    "Número": {
      "input": {
        "type": "text",
        "data-field-ondevou": "numero",
        "data-type-ondevou": "text",
        "data-table-ondevou": "vendas_duplicatas"
      }
    },
    "Emissão": {
      "input": {
        "type": "date",
        "required": "required",
        "maxlength": "10",
        "data-field-ondevou": "data_emissao",
        "data-field-alias-ondevou": "nfe_data_emissao",
        "data-type-ondevou": "date",
        "data-table-ondevou": "vendas_duplicatas"
      }
    },
    "Vencimento": {
      "input": {
        "type": "date",
        "required": "required",
        "maxlength": "10",
        "data-field-ondevou": "data_vencimento",
        "data-field-alias-ondevou": "nfe_data_vencimento",
        "data-type-ondevou": "date",
        "data-table-ondevou": "vendas_duplicatas"
      }
    },
    "Cobrança": {
      "input": {
        "required": "required",
        "data-type-ondevou": "number",
        "data-id-field-ondevou": "id_financeiro_cobranca",
        "data-field-ondevou": "descricao_financeiro_cobranca",
        "data-table-ondevou": "vendas_duplicatas",
        "getdata": "{\"view\":\"view_financeiro_cobranca\",\"data\":\"view_financeiro_cobranca\",\"text-empty-search\":\"sim\",\"campo-data-id\":\"id_financeiro_cobranca\",\"campo-data-value-input\":\"descricao_financeiro_cobranca\",\"campo-data-input-select-view\":\"descricao_financeiro_cobranca\",\"query\":{\"select\":\"* from view_financeiro_cobranca\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(descricao_financeiro_cobranca)) ilike `%\",\"right\":\"%`)\"}}}}}",
        "formsearch": {
          "required": ""
        }
      }
    },
    "Portador": {
      "input": {
        "data-type-ondevou": "number",
        "data-id-field-ondevou": "id_financeiro_portador",
        "data-field-ondevou": "descricao_financeiro_portador",
        "data-table-ondevou": "vendas_duplicatas",
        "putdata": "{\"tabela\":\"financeiro_portador\",\"fields\":{\"participante\":\"participante\",\"descricao\":\"descricao_financeiro_portador\"}}",
        "getdata": "{\"view\":\"view_financeiro_portador\",\"data\":\"view_financeiro_portador\",\"text-empty-search\":\"sim\",\"campo-data-id\":\"id_financeiro_portador\",\"campo-data-value-input\":\"descricao_financeiro_portador\",\"campo-data-input-select-view\":\"descricao_financeiro_portador\",\"query\":{\"select\":\"* from view_financeiro_portador\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(descricao_financeiro_portador)) ilike `%\",\"right\":\"%`) and (participante=`1`)\"}}}}}",
        "formsearch": {
          "required": ""
        }
      }
    },
    "Categoria": {
      "input": {
        "data-type-ondevou": "number",
        "data-id-field-ondevou": "id_financeiro_categoria",
        "data-field-ondevou": "descricao_financeiro_categoria",
        "data-table-ondevou": "vendas_duplicatas",
        "putdata": "{\"tabela\":\"financeiro_categoria\",\"fields\":{\"participante\":\"participante\",\"descricao\":\"descricao_financeiro_categoria\"}}",
        "getdata": "{\"view\":\"view_financeiro_categoria\",\"data\":\"view_financeiro_categoria\",\"text-empty-search\":\"sim\",\"campo-data-id\":\"id_financeiro_categoria\",\"campo-data-value-input\":\"descricao_financeiro_categoria\",\"campo-data-input-select-view\":\"descricao_financeiro_categoria\",\"query\":{\"select\":\"* from view_financeiro_categoria\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(descricao_financeiro_categoria)) ilike `%\",\"right\":\"%`) and (participante=`1`)\"}}}}}",
        "formsearch": {
          "required": ""
        }
      }
    },
    "Id Romaneio": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-field-ondevou": "id_romaneio",
        "data-table-ondevou": "vendas_duplicatas",
        "launch": {
          "menu": {
            "data-id": "50"
          },
          "formsearch": {
            "descricao_romaneio": "id_romaneio"
          }
        }
      }
    },
    "Romaneio": {
      "input": {
        "data-type-ondevou": "number",
        "data-id-field-ondevou": "id_romaneio",
        "data-field-ondevou": "descricao_romaneio",
        "data-table-ondevou": "vendas_duplicatas",
        "getdata": "{\"view\":\"view_romaneios\",\"data\":\"view_romaneios\",\"text-empty-search\":\"sim\",\"campo-data-id\":\"id_romaneio\",\"campo-data-value-input\":\"id_romaneio,descricao_romaneio,romaneio_erplinux\",\"campo-data-input-select-view\":\"id_romaneio,descricao_romaneio,romaneio_erplinux,nome_situacao\",\"query\":{\"select\":\"* from view_romaneios\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(concat(id_romaneio,` `,romaneio_erplinux,` `,descricao_romaneio))) ilike `%\",\"right\":\"%`) and (participante=`1`)\"}}},\"order\":\"id_romaneio desc\"}}",
        "formsearch": {
          "required": ""
        }
      }
    },
    "Rota": {
      "input": {
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-id-field-ondevou": "id_rota",
        "data-field-ondevou": "nome_rota",
        "data-table-ondevou": "view_vendas_duplicatas",
        "getdata": "{\"view\":\"view_rotas\",\"data\":\"view_rotas\",\"text-empty-search\":\"sim\",\"campo-data-id\":\"id_rota\",\"campo-data-value-input\":\"nome_rota\",\"campo-data-input-select-view\":\"codigo_erplinux_rota,nome_rota\",\"query\":{\"select\":\"* from view_rotas\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(concat(id_rota,` `,codigo_erplinux_rota,` `,nome_rota))) ilike `%\",\"right\":\"%`) and (participante=`1`)\"}}}}}",
        "formsearch": {
          "required": ""
        }
      }
    },
    "Descrição": {
      "input": {
        "data-type-ondevou": "text",
        "data-field-ondevou": "descricao",
        "data-field-alias-ondevou": "descricao_duplicata",
        "data-table-ondevou": "vendas_duplicatas"
      }
    },
    "Valor": {
      "input": {
        "type": "text",
        "align": "center",
        "required": "required",
        "data-type-ondevou": "number",
        "data-field-ondevou": "valor",
        "data-table-ondevou": "vendas_duplicatas",
        "renders": "rendersTableVendasDuplicatas",
        "onkeypress": "return SomenteNumero(event)",
        "onkeyup": "setInputFormatNumber(this,\"2\")"
      },
      "sum": {
        "type": "parseFloat",
        "toFixed": "2"
      }
    },
    "Liquidações": {
      "input": {
        "type": "text",
        "align": "center",
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-field-ondevou": "valor_liquidacoes",
        "data-table-ondevou": "view_vendas_duplicatas",
        "renders": "rendersTableVendasDuplicatas",
        "onkeypress": "return SomenteNumero(event)",
        "onkeyup": "setInputFormatNumber(this,\"2\")"
      },
      "sum": {
        "type": "parseFloat",
        "toFixed": "2"
      }
    },
    "Saldo em aberto": {
      "input": {
        "type": "text",
        "align": "center",
        "readonly": "readonly",
        "data-type-ondevou": "number",
        "data-field-ondevou": "saldo_aberto",
        "data-table-ondevou": "view_vendas_duplicatas",
        "onkeypress": "return SomenteNumero(event)",
        "onkeyup": "setInputFormatNumber(this,\"2\")"
      },
      "sum": {
        "type": "parseFloat",
        "toFixed": "2"
      }
    }
  },
  "formsearch": {
    "data-table-ondevou": "view_vendas_duplicatas",
    "data-where-fixed": "participante=`1`",
    "data-where-order": "order by id desc",
    "input": {
      "apenas_receber": {
        "data-field-ondevou": "apenas_receber",
        "type": "checkbox",
        "texto_label": "Apenas receber",
        "data-where-ids": "select financeiro_configuracoes.id_natureza_operacao as id from financeiro_configuracoes where financeiro_configuracoes.participante=`1` and financeiro_configuracoes.id_participante is null and financeiro_configuracoes.compor_faturamento=`S`",
        "data-where-true": "(id_natureza_operacao in (`ids`) and id_financeiro_movimento = `2`)"
      },
      "apenas_situacao_aberto": {
        "data-field-ondevou": "apenas_situacao_aberto",
        "type": "checkbox",
        "texto_label": "Apenas titulos abertos",
        "data-where-true": "id_financeiro_situacao = `1`"
      },
      "apenas_pagar": {
        "data-field-ondevou": "apenas_pagar",
        "type": "checkbox",
        "texto_label": "Apenas pagar",
        "data-where-true": "id_financeiro_movimento = `1`"
      },
      "apenas_situacao_pago": {
        "data-field-ondevou": "apenas_situacao_pago",
        "type": "checkbox",
        "texto_label": "Apenas titulos pagos",
        "data-where-true": "id_financeiro_situacao = `2`"
      },
      "data_emissao_inicial": {
        "data-field-ondevou": "data_emissao_inicial",
        "data-type-ondevou": "date",
        "type": "date",
        "divClass": "col s12 m1",
        "class": "datepicker",
        "texto_label": "Data emissão inicial",
        "data-field-where": "nfe_data_emissao"
      },
      "data_emissao_final": {
        "data-field-ondevou": "data_emissao_final",
        "data-type-ondevou": "date",
        "type": "date",
        "divClass": "col s12 m1",
        "class": "datepicker",
        "texto_label": "Data emissão final",
        "data-field-where": "nfe_data_emissao"
      },
      "data_vencimento_inicial": {
        "data-field-ondevou": "data_vencimento_inicial",
        "data-type-ondevou": "date",
        "type": "date",
        "divClass": "col s12 m1",
        "class": "datepicker",
        "texto_label": "Data vencimento inicial",
        "data-field-where": "nfe_data_vencimento"
      },
      "data_vencimento_final": {
        "data-field-ondevou": "data_vencimento_final",
        "data-type-ondevou": "date",
        "type": "date",
        "divClass": "col s12 m1",
        "class": "datepicker",
        "texto_label": "Data vencimento final",
        "data-field-where": "nfe_data_vencimento"
      },
      "id_venda": {
        "data-field-ondevou": "id_venda",
        "data-type-ondevou": "number",
        "type": "text",
        "divClass": "col s12 m1",
        "texto_label": "Venda",
        "data-field-where": "id_venda",
        "getdata": "{\"view\":\"view_vendas\",\"data\":\"view_vendas\",\"campo-data-id\":\"id_venda\",\"campo-data-value-input\":\"id_venda\",\"text-empty-search\":\"nao\",\"campo-data-input-select-view\":\"id_venda,numero_documento,id_nfe,id_nfce,razao_social_cliente,cnpj,cpf,nome_cidade_cliente,sigla_uf_cliente\",\"query\":{\"select\":\"* from view_vendas\",\"where\":{\"and\":{\"texto_digitado\":{\"left\":\"(unaccent(LOWER(concat(id_venda,` `,id_nfe,` `,id_nfce,` `,cnpj_participante,` `,cpf_participante,` `,razao_social_cliente))) ilike `%\",\"right\":\"%`) and (participante=`1`)\"}}},\"order\":\"id_venda desc\"}}"
      }
    }
  },
  "graficos": {
    "1": {
      "data": {
        "Valor total": {
          "type": "bar",
          "name": "Valor total",
          "x": "data_vencimento",
          "y": "valor"
        }
      },
      "layout": {
        "title": {
          "text": "Duplicatas"
        }
      }
    }
  },
  "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": "DUPLICATAS - CARTEIRA FINANCEIRA",
      "subtitle": "Análise completa de contas a receber e a pagar - Faixas, valores, liquidações e evolução",
      "filters_area": {
        "container_id": "dashboard-filters-area",
        "empty_message": "Sem filtros"
      },
      "actions": [
        {
          "type": "button",
          "container_id": "dashboard-atualizar-dados",
          "class": "dashboard-btn dashboard-btn-sm dashboard-btn-primary",
          "icon": "fas fa-sync-alt",
          "text": "Atualizar",
          "action": "dashboard_refreshData",
          "title": "Atualizar Dados"
        },
        {
          "type": "button",
          "container_id": "dashboard-voltar-dados",
          "class": "dashboard-btn dashboard-btn-sm dashboard-btn-outline",
          "icon": "fas fa-table",
          "text": "Voltar para dados",
          "action": "voltarParaDadosFromDashboard",
          "title": "Voltar para dados"
        },
        {
          "type": "button",
          "container_id": "dashboard-auto-refresh",
          "class": "dashboard-btn dashboard-btn-sm dashboard-btn-info",
          "icon": "fas fa-clock",
          "text": "Auto-Refresh",
          "action": "dashboard_toggleAutoRefresh",
          "title": "Alternar escuta automática de dados"
        }
      ]
    },
    "sections": {
      "bloco1_resumo_geral": {
        "type": "summary_cards_full",
        "title": "📊 RESUMO GERAL - CARTEIRA",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "cards-resumo-geral",
          "size": "full",
          "cards": [
            {
              "title": "TÍTULOS",
              "value": "COUNT:id",
              "format": "numero",
              "decimals": 0,
              "suffix": " títulos",
              "icon": "📋",
              "color": "#2c3e50"
            },
            {
              "title": "VALOR TOTAL",
              "value": "SUM:valor",
              "format": "moeda",
              "decimals": 2,
              "icon": "💰",
              "color": "#8e44ad"
            },
            {
              "title": "LIQUIDAÇÕES",
              "value": "SUM:valor_liquidacoes",
              "format": "moeda",
              "decimals": 2,
              "icon": "💵",
              "color": "#27ae60"
            },
            {
              "title": "SALDO EM ABERTO",
              "value": "SUM:saldo_aberto",
              "format": "moeda",
              "decimals": 2,
              "icon": "📊",
              "color": "#e67e22"
            },
            {
              "title": "TICKET MÉDIO",
              "value": "AVG:valor",
              "format": "moeda",
              "decimals": 2,
              "icon": "📈",
              "color": "#3498db"
            },
            {
              "title": "MAIOR TÍTULO",
              "value": "MAX:valor",
              "format": "moeda",
              "decimals": 2,
              "icon": "🔝",
              "color": "#e74c3c"
            },
            {
              "title": "PARTICIPANTES",
              "value": "COUNT_DISTINCT:id_participante",
              "format": "numero",
              "decimals": 0,
              "suffix": " únicos",
              "icon": "👥",
              "color": "#9b59b6"
            },
            {
              "title": "VENDAS ÚNICAS",
              "value": "COUNT_DISTINCT:id_venda",
              "format": "numero",
              "decimals": 0,
              "suffix": " vendas",
              "icon": "🛒",
              "color": "#16a085"
            }
          ]
        }
      },
      "bloco2_faixas_pagar": {
        "type": "summary_cards_grid",
        "title": "📤 FAIXAS DE VENCIMENTO - A PAGAR",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "cards-faixas-pagar",
          "size": "full",
          "sections": [
            {
              "title": "💀 VENCIDOS (PAGAR)",
              "cards": [
                {
                  "title": "30+ DIAS",
                  "value": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 1 AND faixa_vencimento = \"30+ dias\"",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "🚫",
                  "color": "#7f1d1d"
                },
                {
                  "title": "16-30 DIAS",
                  "value": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 1 AND faixa_vencimento = \"16-30 dias\"",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "⛔",
                  "color": "#991b1b"
                },
                {
                  "title": "8-15 DIAS",
                  "value": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 1 AND faixa_vencimento = \"8-15 dias\"",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "🟡",
                  "color": "#ca8a04"
                },
                {
                  "title": "4-7 DIAS",
                  "value": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 1 AND faixa_vencimento = \"4-7 dias\"",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "🟡",
                  "color": "#d97706"
                },
                {
                  "title": "1-3 DIAS",
                  "value": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 1 AND faixa_vencimento = \"1-3 dias\"",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "🟠",
                  "color": "#ea580c"
                }
              ]
            },
            {
              "title": "🔴 VENCE HOJE (PAGAR)",
              "cards": [
                {
                  "title": "VENCE HOJE",
                  "value": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 1 AND faixa_vencimento = \"Vence Hoje\"",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "🔴",
                  "color": "#dc2626"
                },
                {
                  "title": "TÍTULOS HOJE",
                  "value": "COUNT:id",
                  "filters": "id_financeiro_movimento = 1 AND faixa_vencimento = \"Vence Hoje\"",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " títulos",
                  "icon": "📋",
                  "color": "#dc2626"
                }
              ]
            },
            {
              "title": "✅ A VENCER (PAGAR)",
              "cards": [
                {
                  "title": "1-3 DIAS",
                  "value": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 1 AND faixa_vencimento = \"A vencer 1-3\"",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "🟠",
                  "color": "#ea580c"
                },
                {
                  "title": "4-7 DIAS",
                  "value": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 1 AND faixa_vencimento = \"A vencer 4-7\"",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "🟡",
                  "color": "#d97706"
                },
                {
                  "title": "8-15 DIAS",
                  "value": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 1 AND faixa_vencimento = \"A vencer 8-15\"",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "🟢",
                  "color": "#16a34a"
                },
                {
                  "title": "16-30 DIAS",
                  "value": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 1 AND faixa_vencimento = \"A vencer 16-30\"",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "🔵",
                  "color": "#2563eb"
                },
                {
                  "title": "30+ DIAS",
                  "value": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 1 AND faixa_vencimento = \"A vencer 30+\"",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "🟣",
                  "color": "#7c3aed"
                }
              ]
            }
          ]
        }
      },
      "bloco3_faixas_receber": {
        "type": "summary_cards_grid",
        "title": "📥 FAIXAS DE VENCIMENTO - A RECEBER",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "cards-faixas-receber",
          "size": "full",
          "sections": [
            {
              "title": "💀 VENCIDOS (RECEBER)",
              "cards": [
                {
                  "title": "30+ DIAS",
                  "value": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 2 AND faixa_vencimento = \"30+ dias\"",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "🚫",
                  "color": "#7f1d1d"
                },
                {
                  "title": "16-30 DIAS",
                  "value": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 2 AND faixa_vencimento = \"16-30 dias\"",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "⛔",
                  "color": "#991b1b"
                },
                {
                  "title": "8-15 DIAS",
                  "value": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 2 AND faixa_vencimento = \"8-15 dias\"",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "🟡",
                  "color": "#ca8a04"
                },
                {
                  "title": "4-7 DIAS",
                  "value": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 2 AND faixa_vencimento = \"4-7 dias\"",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "🟡",
                  "color": "#d97706"
                },
                {
                  "title": "1-3 DIAS",
                  "value": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 2 AND faixa_vencimento = \"1-3 dias\"",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "🟠",
                  "color": "#ea580c"
                }
              ]
            },
            {
              "title": "🔴 VENCE HOJE (RECEBER)",
              "cards": [
                {
                  "title": "VENCE HOJE",
                  "value": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 2 AND faixa_vencimento = \"Vence Hoje\"",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "🔴",
                  "color": "#dc2626"
                },
                {
                  "title": "TÍTULOS HOJE",
                  "value": "COUNT:id",
                  "filters": "id_financeiro_movimento = 2 AND faixa_vencimento = \"Vence Hoje\"",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " títulos",
                  "icon": "📋",
                  "color": "#dc2626"
                }
              ]
            },
            {
              "title": "✅ A VENCER (RECEBER)",
              "cards": [
                {
                  "title": "1-3 DIAS",
                  "value": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 2 AND faixa_vencimento = \"A vencer 1-3\"",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "🟠",
                  "color": "#ea580c"
                },
                {
                  "title": "4-7 DIAS",
                  "value": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 2 AND faixa_vencimento = \"A vencer 4-7\"",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "🟡",
                  "color": "#d97706"
                },
                {
                  "title": "8-15 DIAS",
                  "value": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 2 AND faixa_vencimento = \"A vencer 8-15\"",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "🟢",
                  "color": "#16a34a"
                },
                {
                  "title": "16-30 DIAS",
                  "value": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 2 AND faixa_vencimento = \"A vencer 16-30\"",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "🔵",
                  "color": "#2563eb"
                },
                {
                  "title": "30+ DIAS",
                  "value": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 2 AND faixa_vencimento = \"A vencer 30+\"",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "🟣",
                  "color": "#7c3aed"
                }
              ]
            }
          ]
        }
      },
      "bloco4_grafico_faixas": {
        "type": "charts_grid_section",
        "title": "📅 FAIXAS DE VENCIMENTO - VISUALIZAÇÃO",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "grafico-faixas-grid",
          "charts": [
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "faixas-pagar-graf",
                "data_config": {
                  "group_by": "faixa_vencimento",
                  "operation": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 1",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "📤 FAIXAS A PAGAR",
                  "layout": "vertical",
                  "format": "moeda",
                  "decimals": 2,
                  "sort_by": "legend",
                  "sort_order": "ASC",
                  "limit": "all",
                  "height": "450px",
                  "color": "#e74c3c"
                }
              }
            },
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "faixas-receber-graf",
                "data_config": {
                  "group_by": "faixa_vencimento",
                  "operation": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 2",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "📥 FAIXAS A RECEBER",
                  "layout": "vertical",
                  "format": "moeda",
                  "decimals": 2,
                  "sort_by": "legend",
                  "sort_order": "ASC",
                  "limit": "all",
                  "height": "450px",
                  "color": "#27ae60"
                }
              }
            }
          ]
        }
      },
      "bloco5_status_vencimento": {
        "type": "summary_cards_grid",
        "title": "⚖️ STATUS GERAL DE VENCIMENTO",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "cards-status-geral",
          "size": "full",
          "sections": [
            {
              "title": "💀 VENCIDO (RECEBER vs PAGAR)",
              "cards": [
                {
                  "title": "VENCIDO RECEBER",
                  "value": "SUM:saldo_aberto",
                  "filters": "status_vencimento = \"VENCIDO\" AND id_financeiro_movimento = 2",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "📥",
                  "color": "#991b1b"
                },
                {
                  "title": "VENCIDO PAGAR",
                  "value": "SUM:saldo_aberto",
                  "filters": "status_vencimento = \"VENCIDO\" AND id_financeiro_movimento = 1",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "📤",
                  "color": "#7f1d1d"
                },
                {
                  "title": "SALDO VENCIDO",
                  "value": "CALC:sum(saldo_aberto where status_vencimento = \"VENCIDO\" and id_financeiro_movimento = 2) - sum(saldo_aberto where status_vencimento = \"VENCIDO\" and id_financeiro_movimento = 1)",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "⚖️",
                  "color": "#dc2626"
                }
              ]
            },
            {
              "title": "🔴 VENCE HOJE (RECEBER vs PAGAR)",
              "cards": [
                {
                  "title": "HOJE RECEBER",
                  "value": "SUM:saldo_aberto",
                  "filters": "status_vencimento = \"HOJE\" AND id_financeiro_movimento = 2",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "📥",
                  "color": "#dc2626"
                },
                {
                  "title": "HOJE PAGAR",
                  "value": "SUM:saldo_aberto",
                  "filters": "status_vencimento = \"HOJE\" AND id_financeiro_movimento = 1",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "📤",
                  "color": "#b91c1c"
                }
              ]
            },
            {
              "title": "✅ A VENCER (RECEBER vs PAGAR)",
              "cards": [
                {
                  "title": "A VENCER RECEBER",
                  "value": "SUM:saldo_aberto",
                  "filters": "status_vencimento = \"A VENCER\" AND id_financeiro_movimento = 2",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "📥",
                  "color": "#27ae60"
                },
                {
                  "title": "A VENCER PAGAR",
                  "value": "SUM:saldo_aberto",
                  "filters": "status_vencimento = \"A VENCER\" AND id_financeiro_movimento = 1",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "📤",
                  "color": "#166534"
                }
              ]
            },
            {
              "title": "⚖️ SALDO LÍQUIDO",
              "cards": [
                {
                  "title": "SALDO LÍQUIDO",
                  "value": "CALC:sum(saldo_aberto where id_financeiro_movimento = 2) - sum(saldo_aberto where id_financeiro_movimento = 1)",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "⚖️",
                  "color": "#8e44ad"
                }
              ]
            },
            {
              "title": "📊 PERCENTUAIS",
              "cards": [
                {
                  "title": "% VENCIDO RECEBER",
                  "value": "CALC:sum(saldo_aberto where status_vencimento = \"VENCIDO\" and id_financeiro_movimento = 2) / sum(saldo_aberto where id_financeiro_movimento = 2) * 100",
                  "format": "numero",
                  "decimals": 1,
                  "suffix": "%",
                  "icon": "📥",
                  "color": "#991b1b"
                },
                {
                  "title": "% VENCIDO PAGAR",
                  "value": "CALC:sum(saldo_aberto where status_vencimento = \"VENCIDO\" and id_financeiro_movimento = 1) / sum(saldo_aberto where id_financeiro_movimento = 1) * 100",
                  "format": "numero",
                  "decimals": 1,
                  "suffix": "%",
                  "icon": "📤",
                  "color": "#7f1d1d"
                },
                {
                  "title": "% A VENCER RECEBER",
                  "value": "CALC:sum(saldo_aberto where status_vencimento = \"A VENCER\" and id_financeiro_movimento = 2) / sum(saldo_aberto where id_financeiro_movimento = 2) * 100",
                  "format": "numero",
                  "decimals": 1,
                  "suffix": "%",
                  "icon": "📥",
                  "color": "#27ae60"
                },
                {
                  "title": "% A VENCER PAGAR",
                  "value": "CALC:sum(saldo_aberto where status_vencimento = \"A VENCER\" and id_financeiro_movimento = 1) / sum(saldo_aberto where id_financeiro_movimento = 1) * 100",
                  "format": "numero",
                  "decimals": 1,
                  "suffix": "%",
                  "icon": "📤",
                  "color": "#166534"
                }
              ]
            }
          ]
        }
      },
      "bloco6_metricas_detalhadas": {
        "type": "summary_cards_grid",
        "title": "📈 MÉTRICAS DETALHADAS",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "cards-metricas-detalhadas",
          "size": "full",
          "sections": [
            {
              "title": "📋 POR SITUAÇÃO (RECEBER)",
              "cards": [
                {
                  "title": "ABERTOS",
                  "value": "COUNT:id",
                  "filters": "id_financeiro_situacao = 1 AND id_financeiro_movimento = 2",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " títulos",
                  "icon": "🔓",
                  "color": "#3498db"
                },
                {
                  "title": "PAGOS",
                  "value": "COUNT:id",
                  "filters": "id_financeiro_situacao = 2 AND id_financeiro_movimento = 2",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " títulos",
                  "icon": "✅",
                  "color": "#27ae60"
                },
                {
                  "title": "CANCELADOS",
                  "value": "COUNT:id",
                  "filters": "id_financeiro_situacao = 3 AND id_financeiro_movimento = 2",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " títulos",
                  "icon": "❌",
                  "color": "#e74c3c"
                },
                {
                  "title": "NEGOCIADOS",
                  "value": "COUNT:id",
                  "filters": "id_financeiro_situacao = 4 AND id_financeiro_movimento = 2",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " títulos",
                  "icon": "🤝",
                  "color": "#9b59b6"
                }
              ]
            },
            {
              "title": "📋 POR SITUAÇÃO (PAGAR)",
              "cards": [
                {
                  "title": "ABERTOS",
                  "value": "COUNT:id",
                  "filters": "id_financeiro_situacao = 1 AND id_financeiro_movimento = 1",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " títulos",
                  "icon": "🔓",
                  "color": "#3498db"
                },
                {
                  "title": "PAGOS",
                  "value": "COUNT:id",
                  "filters": "id_financeiro_situacao = 2 AND id_financeiro_movimento = 1",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " títulos",
                  "icon": "✅",
                  "color": "#27ae60"
                },
                {
                  "title": "CANCELADOS",
                  "value": "COUNT:id",
                  "filters": "id_financeiro_situacao = 3 AND id_financeiro_movimento = 1",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " títulos",
                  "icon": "❌",
                  "color": "#e74c3c"
                },
                {
                  "title": "NEGOCIADOS",
                  "value": "COUNT:id",
                  "filters": "id_financeiro_situacao = 4 AND id_financeiro_movimento = 1",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " títulos",
                  "icon": "🤝",
                  "color": "#9b59b6"
                }
              ]
            },
            {
              "title": "📄 POR DOCUMENTO (RECEBER)",
              "cards": [
                {
                  "title": "DUPLICATAS",
                  "value": "COUNT:id",
                  "filters": "id_financeiro_documento = 1 AND id_financeiro_movimento = 2",
                  "format": "numero",
                  "decimals": 0,
                  "icon": "📄",
                  "color": "#3498db"
                },
                {
                  "title": "BOLETOS",
                  "value": "COUNT:id",
                  "filters": "id_financeiro_documento = 5 AND id_financeiro_movimento = 2",
                  "format": "numero",
                  "decimals": 0,
                  "icon": "🧾",
                  "color": "#e67e22"
                },
                {
                  "title": "CAIXA",
                  "value": "COUNT:id",
                  "filters": "id_financeiro_documento = 6 AND id_financeiro_movimento = 2",
                  "format": "numero",
                  "decimals": 0,
                  "icon": "💵",
                  "color": "#27ae60"
                },
                {
                  "title": "PIX",
                  "value": "COUNT:id",
                  "filters": "id_financeiro_documento = 7 AND id_financeiro_movimento = 2",
                  "format": "numero",
                  "decimals": 0,
                  "icon": "⚡",
                  "color": "#16a085"
                }
              ]
            },
            {
              "title": "📄 POR DOCUMENTO (PAGAR)",
              "cards": [
                {
                  "title": "DUPLICATAS",
                  "value": "COUNT:id",
                  "filters": "id_financeiro_documento = 1 AND id_financeiro_movimento = 1",
                  "format": "numero",
                  "decimals": 0,
                  "icon": "📄",
                  "color": "#3498db"
                },
                {
                  "title": "BOLETOS",
                  "value": "COUNT:id",
                  "filters": "id_financeiro_documento = 5 AND id_financeiro_movimento = 1",
                  "format": "numero",
                  "decimals": 0,
                  "icon": "🧾",
                  "color": "#e67e22"
                },
                {
                  "title": "CAIXA",
                  "value": "COUNT:id",
                  "filters": "id_financeiro_documento = 6 AND id_financeiro_movimento = 1",
                  "format": "numero",
                  "decimals": 0,
                  "icon": "💵",
                  "color": "#27ae60"
                },
                {
                  "title": "PIX",
                  "value": "COUNT:id",
                  "filters": "id_financeiro_documento = 7 AND id_financeiro_movimento = 1",
                  "format": "numero",
                  "decimals": 0,
                  "icon": "⚡",
                  "color": "#16a085"
                }
              ]
            },
            {
              "title": "💳 POR COBRANÇA (RECEBER)",
              "cards": [
                {
                  "title": "CARTEIRA",
                  "value": "COUNT:id",
                  "filters": "id_financeiro_cobranca = 1 AND id_financeiro_movimento = 2",
                  "format": "numero",
                  "decimals": 0,
                  "icon": "📁",
                  "color": "#3498db"
                },
                {
                  "title": "BANCÁRIA",
                  "value": "COUNT:id",
                  "filters": "id_financeiro_cobranca = 2 AND id_financeiro_movimento = 2",
                  "format": "numero",
                  "decimals": 0,
                  "icon": "🏦",
                  "color": "#27ae60"
                },
                {
                  "title": "DESCONTADO",
                  "value": "COUNT:id",
                  "filters": "id_financeiro_cobranca = 3 AND id_financeiro_movimento = 2",
                  "format": "numero",
                  "decimals": 0,
                  "icon": "💸",
                  "color": "#e67e22"
                },
                {
                  "title": "CARTÃO CRÉDITO",
                  "value": "COUNT:id",
                  "filters": "id_financeiro_cobranca = 5 AND id_financeiro_movimento = 2",
                  "format": "numero",
                  "decimals": 0,
                  "icon": "💳",
                  "color": "#9b59b6"
                }
              ]
            },
            {
              "title": "💳 POR COBRANÇA (PAGAR)",
              "cards": [
                {
                  "title": "CARTEIRA",
                  "value": "COUNT:id",
                  "filters": "id_financeiro_cobranca = 1 AND id_financeiro_movimento = 1",
                  "format": "numero",
                  "decimals": 0,
                  "icon": "📁",
                  "color": "#3498db"
                },
                {
                  "title": "BANCÁRIA",
                  "value": "COUNT:id",
                  "filters": "id_financeiro_cobranca = 2 AND id_financeiro_movimento = 1",
                  "format": "numero",
                  "decimals": 0,
                  "icon": "🏦",
                  "color": "#27ae60"
                },
                {
                  "title": "DESCONTADO",
                  "value": "COUNT:id",
                  "filters": "id_financeiro_cobranca = 3 AND id_financeiro_movimento = 1",
                  "format": "numero",
                  "decimals": 0,
                  "icon": "💸",
                  "color": "#e67e22"
                },
                {
                  "title": "CARTÃO CRÉDITO",
                  "value": "COUNT:id",
                  "filters": "id_financeiro_cobranca = 5 AND id_financeiro_movimento = 1",
                  "format": "numero",
                  "decimals": 0,
                  "icon": "💳",
                  "color": "#9b59b6"
                }
              ]
            },
            {
              "title": "💰 ANÁLISE DE VALORES",
              "cards": [
                {
                  "title": "MÉDIA LIQUIDAÇÕES RECEBER",
                  "value": "AVG:valor_liquidacoes",
                  "filters": "valor_liquidacoes > 0 AND id_financeiro_movimento = 2",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "📥",
                  "color": "#27ae60"
                },
                {
                  "title": "MÉDIA LIQUIDAÇÕES PAGAR",
                  "value": "AVG:valor_liquidacoes",
                  "filters": "valor_liquidacoes > 0 AND id_financeiro_movimento = 1",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "📤",
                  "color": "#e74c3c"
                },
                {
                  "title": "PRAZO MÉDIO RECEBER",
                  "value": "AVG:dias_prazo",
                  "filters": "dias_prazo > 0 AND id_financeiro_movimento = 2",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " dias",
                  "icon": "📥",
                  "color": "#3498db"
                },
                {
                  "title": "PRAZO MÉDIO PAGAR",
                  "value": "AVG:dias_prazo",
                  "filters": "dias_prazo > 0 AND id_financeiro_movimento = 1",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " dias",
                  "icon": "📤",
                  "color": "#9b59b6"
                }
              ]
            }
          ]
        }
      },
      "bloco7_taxas_percentuais": {
        "type": "summary_cards_grid",
        "title": "📊 TAXAS E PERCENTUAIS",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "cards-taxas-percentuais",
          "size": "full",
          "sections": [
            {
              "title": "📈 TAXA DE LIQUIDAÇÃO",
              "cards": [
                {
                  "title": "% LIQUIDADO RECEBER",
                  "value": "CALC:sum(valor_liquidacoes where id_financeiro_movimento = 2) / sum(valor where id_financeiro_movimento = 2) * 100",
                  "format": "numero",
                  "decimals": 1,
                  "suffix": "%",
                  "icon": "📥",
                  "color": "#27ae60"
                },
                {
                  "title": "% LIQUIDADO PAGAR",
                  "value": "CALC:sum(valor_liquidacoes where id_financeiro_movimento = 1) / sum(valor where id_financeiro_movimento = 1) * 100",
                  "format": "numero",
                  "decimals": 1,
                  "suffix": "%",
                  "icon": "📤",
                  "color": "#e74c3c"
                },
                {
                  "title": "% EM ABERTO RECEBER",
                  "value": "CALC:sum(saldo_aberto where id_financeiro_movimento = 2) / sum(valor where id_financeiro_movimento = 2) * 100",
                  "format": "numero",
                  "decimals": 1,
                  "suffix": "%",
                  "icon": "📥",
                  "color": "#3498db"
                },
                {
                  "title": "% EM ABERTO PAGAR",
                  "value": "CALC:sum(saldo_aberto where id_financeiro_movimento = 1) / sum(valor where id_financeiro_movimento = 1) * 100",
                  "format": "numero",
                  "decimals": 1,
                  "suffix": "%",
                  "icon": "📤",
                  "color": "#e67e22"
                }
              ]
            },
            {
              "title": "🎯 TAXA DE CONVERSÃO",
              "cards": [
                {
                  "title": "TÍTULOS/VENDA RECEBER",
                  "value": "CALC:count(id where id_financeiro_movimento = 2) / count_distinct(id_venda where id_financeiro_movimento = 2)",
                  "format": "numero",
                  "decimals": 1,
                  "suffix": " títulos/venda",
                  "icon": "📥",
                  "color": "#3498db"
                },
                {
                  "title": "TÍTULOS/VENDA PAGAR",
                  "value": "CALC:count(id where id_financeiro_movimento = 1) / count_distinct(id_venda where id_financeiro_movimento = 1)",
                  "format": "numero",
                  "decimals": 1,
                  "suffix": " títulos/venda",
                  "icon": "📤",
                  "color": "#9b59b6"
                },
                {
                  "title": "VALOR/VENDA RECEBER",
                  "value": "CALC:sum(valor where id_financeiro_movimento = 2) / count_distinct(id_venda where id_financeiro_movimento = 2)",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "📥",
                  "color": "#27ae60"
                },
                {
                  "title": "VALOR/VENDA PAGAR",
                  "value": "CALC:sum(valor where id_financeiro_movimento = 1) / count_distinct(id_venda where id_financeiro_movimento = 1)",
                  "format": "moeda",
                  "decimals": 2,
                  "icon": "📤",
                  "color": "#e74c3c"
                }
              ]
            },
            {
              "title": "💀 INADIMPLÊNCIA",
              "cards": [
                {
                  "title": "TAXA INADIMPLÊNCIA RECEBER",
                  "value": "CALC:sum(saldo_aberto where status_vencimento = \"VENCIDO\" and id_financeiro_movimento = 2) / sum(valor where id_financeiro_movimento = 2) * 100",
                  "format": "numero",
                  "decimals": 2,
                  "suffix": "%",
                  "icon": "📥",
                  "color": "#e74c3c"
                },
                {
                  "title": "TAXA INADIMPLÊNCIA PAGAR",
                  "value": "CALC:sum(saldo_aberto where status_vencimento = \"VENCIDO\" and id_financeiro_movimento = 1) / sum(valor where id_financeiro_movimento = 1) * 100",
                  "format": "numero",
                  "decimals": 2,
                  "suffix": "%",
                  "icon": "📤",
                  "color": "#7f1d1d"
                },
                {
                  "title": "TÍTULOS VENCIDOS RECEBER",
                  "value": "COUNT:id",
                  "filters": "status_vencimento = \"VENCIDO\" AND id_financeiro_movimento = 2",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " títulos",
                  "icon": "📥",
                  "color": "#991b1b"
                },
                {
                  "title": "TÍTULOS VENCIDOS PAGAR",
                  "value": "COUNT:id",
                  "filters": "status_vencimento = \"VENCIDO\" AND id_financeiro_movimento = 1",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " títulos",
                  "icon": "📤",
                  "color": "#7f1d1d"
                }
              ]
            }
          ]
        }
      },
      "bloco8_categorias": {
        "type": "charts_grid_section",
        "title": "📂 CATEGORIAS - LISTA COMPLETA",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "analise-categoria-grid",
          "charts": [
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "categorias-receber-full",
                "data_config": {
                  "group_by": "descricao_financeiro_categoria",
                  "operation": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 2",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "📥 CATEGORIAS - A RECEBER (COMPLETO)",
                  "layout": "ranking",
                  "format": "moeda",
                  "format_legend": "capitalizado",
                  "decimals": 2,
                  "sort_order": "DESC",
                  "limit": "all",
                  "height": "600px",
                  "color": "#27ae60"
                }
              }
            },
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "categorias-pagar-full",
                "data_config": {
                  "group_by": "descricao_financeiro_categoria",
                  "operation": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 1",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "📤 CATEGORIAS - A PAGAR (COMPLETO)",
                  "layout": "ranking",
                  "format": "moeda",
                  "format_legend": "capitalizado",
                  "decimals": 2,
                  "sort_order": "DESC",
                  "limit": "all",
                  "height": "600px",
                  "color": "#e74c3c"
                }
              }
            }
          ]
        }
      },
      "bloco9_portadores": {
        "type": "charts_grid_section",
        "title": "🏦 PORTADORES - LISTA COMPLETA",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "analise-portador-grid",
          "charts": [
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "portadores-receber-full",
                "data_config": {
                  "group_by": "descricao_financeiro_portador",
                  "operation": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 2",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "📥 PORTADORES - A RECEBER (COMPLETO)",
                  "layout": "ranking",
                  "format": "moeda",
                  "format_legend": "capitalizado",
                  "decimals": 2,
                  "sort_order": "DESC",
                  "limit": "all",
                  "height": "600px",
                  "color": "#27ae60"
                }
              }
            },
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "portadores-pagar-full",
                "data_config": {
                  "group_by": "descricao_financeiro_portador",
                  "operation": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 1",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "📤 PORTADORES - A PAGAR (COMPLETO)",
                  "layout": "ranking",
                  "format": "moeda",
                  "format_legend": "capitalizado",
                  "decimals": 2,
                  "sort_order": "DESC",
                  "limit": "all",
                  "height": "600px",
                  "color": "#e74c3c"
                }
              }
            }
          ]
        }
      },
      "bloco10_rotas": {
        "type": "charts_grid_section",
        "title": "🛣️ ROTAS - LISTA COMPLETA",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "analise-rota-grid",
          "charts": [
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "rotas-receber-full",
                "data_config": {
                  "group_by": "nome_rota",
                  "operation": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 2 AND nome_rota != \"\"",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "📥 ROTAS - A RECEBER (COMPLETO)",
                  "layout": "ranking",
                  "format": "moeda",
                  "format_legend": "capitalizado",
                  "decimals": 2,
                  "sort_order": "DESC",
                  "limit": "all",
                  "height": "600px",
                  "color": "#27ae60"
                }
              }
            },
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "rotas-pagar-full",
                "data_config": {
                  "group_by": "nome_rota",
                  "operation": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 1 AND nome_rota != \"\"",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "📤 ROTAS - A PAGAR (COMPLETO)",
                  "layout": "ranking",
                  "format": "moeda",
                  "format_legend": "capitalizado",
                  "decimals": 2,
                  "sort_order": "DESC",
                  "limit": "all",
                  "height": "600px",
                  "color": "#e74c3c"
                }
              }
            }
          ]
        }
      },
      "bloco11_romaneios": {
        "type": "charts_grid_section",
        "title": "📦 ROMANEIOS - LISTA COMPLETA",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "analise-romaneio-grid",
          "charts": [
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "romaneios-receber-full",
                "data_config": {
                  "group_by": "descricao_romaneio",
                  "operation": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 2 AND descricao_romaneio != \"\"",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "📥 ROMANEIOS - A RECEBER (COMPLETO)",
                  "layout": "ranking",
                  "format": "moeda",
                  "format_legend": "capitalizado",
                  "decimals": 2,
                  "sort_order": "DESC",
                  "limit": "all",
                  "height": "600px",
                  "color": "#27ae60"
                }
              }
            },
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "romaneios-pagar-full",
                "data_config": {
                  "group_by": "descricao_romaneio",
                  "operation": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 1 AND descricao_romaneio != \"\"",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "📤 ROMANEIOS - A PAGAR (COMPLETO)",
                  "layout": "ranking",
                  "format": "moeda",
                  "format_legend": "capitalizado",
                  "decimals": 2,
                  "sort_order": "DESC",
                  "limit": "all",
                  "height": "600px",
                  "color": "#e74c3c"
                }
              }
            }
          ]
        }
      },
      "bloco12_participantes": {
        "type": "charts_grid_section",
        "title": "👥 PARTICIPANTES - LISTA COMPLETA",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "analise-participante-grid",
          "charts": [
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "clientes-receber-full",
                "data_config": {
                  "group_by": "razao_social_participante",
                  "operation": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 2",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "📥 CLIENTES - A RECEBER (COMPLETO)",
                  "layout": "ranking",
                  "format": "moeda",
                  "format_legend": "capitalizado",
                  "decimals": 2,
                  "sort_order": "DESC",
                  "limit": "all",
                  "height": "700px",
                  "color": "#27ae60"
                }
              }
            },
            {
              "type": "chart_bar_aggregated",
              "config": {
                "container_id": "fornecedores-pagar-full",
                "data_config": {
                  "group_by": "razao_social_participante",
                  "operation": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 1",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "📤 FORNECEDORES - A PAGAR (COMPLETO)",
                  "layout": "ranking",
                  "format": "moeda",
                  "format_legend": "capitalizado",
                  "decimals": 2,
                  "sort_order": "DESC",
                  "limit": "all",
                  "height": "700px",
                  "color": "#e74c3c"
                }
              }
            }
          ]
        }
      },
      "bloco13_distribuicao_mov_sit": {
        "type": "charts_grid_section",
        "title": "🥧 DISTRIBUIÇÃO - MOVIMENTO E STATUS",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "distribuicao-mov-sit-grid",
          "charts": [
            {
              "type": "chart_pie",
              "config": {
                "container_id": "pie-por-movimento",
                "data_config": {
                  "group_by": "descricao_financeiro_movimento",
                  "operation": "SUM:saldo_aberto",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "📥📤 RECEBER vs PAGAR",
                  "colors": [
                    "#27ae60",
                    "#e74c3c",
                    "#3498db",
                    "#e67e22"
                  ],
                  "format": "moeda",
                  "format_legend": "capitalizado",
                  "decimals": 2,
                  "show_legend": true,
                  "show_values": true,
                  "show_percentages": true,
                  "donut": true,
                  "legend_position": "right",
                  "height": "450px"
                }
              }
            },
            {
              "type": "chart_pie",
              "config": {
                "container_id": "pie-por-status-receber",
                "data_config": {
                  "group_by": "status_vencimento",
                  "operation": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 2",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "📥 STATUS - A RECEBER",
                  "colors": [
                    "#7f1d1d",
                    "#dc2626",
                    "#27ae60"
                  ],
                  "format": "moeda",
                  "format_legend": "capitalizado",
                  "decimals": 2,
                  "show_legend": true,
                  "show_values": true,
                  "show_percentages": true,
                  "donut": true,
                  "legend_position": "right",
                  "height": "450px"
                }
              }
            },
            {
              "type": "chart_pie",
              "config": {
                "container_id": "pie-por-status-pagar",
                "data_config": {
                  "group_by": "status_vencimento",
                  "operation": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 1",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "📤 STATUS - A PAGAR",
                  "colors": [
                    "#7f1d1d",
                    "#dc2626",
                    "#27ae60"
                  ],
                  "format": "moeda",
                  "format_legend": "capitalizado",
                  "decimals": 2,
                  "show_legend": true,
                  "show_values": true,
                  "show_percentages": true,
                  "donut": true,
                  "legend_position": "right",
                  "height": "450px"
                }
              }
            }
          ]
        }
      },
      "bloco14_distribuicao_doc_cob": {
        "type": "charts_grid_section",
        "title": "🥧 DISTRIBUIÇÃO - DOCUMENTO E COBRANÇA",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "distribuicao-doc-cob-grid",
          "charts": [
            {
              "type": "chart_pie",
              "config": {
                "container_id": "pie-documento-receber",
                "data_config": {
                  "group_by": "descricao_financeiro_documento",
                  "operation": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 2",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "📥 DOCUMENTO - A RECEBER",
                  "colors": [
                    "#3498db",
                    "#e67e22",
                    "#27ae60",
                    "#16a085",
                    "#9b59b6"
                  ],
                  "format": "moeda",
                  "format_legend": "capitalizado",
                  "decimals": 2,
                  "show_legend": true,
                  "show_values": true,
                  "show_percentages": true,
                  "donut": true,
                  "legend_position": "right",
                  "height": "450px"
                }
              }
            },
            {
              "type": "chart_pie",
              "config": {
                "container_id": "pie-documento-pagar",
                "data_config": {
                  "group_by": "descricao_financeiro_documento",
                  "operation": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 1",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "📤 DOCUMENTO - A PAGAR",
                  "colors": [
                    "#3498db",
                    "#e67e22",
                    "#27ae60",
                    "#16a085",
                    "#9b59b6"
                  ],
                  "format": "moeda",
                  "format_legend": "capitalizado",
                  "decimals": 2,
                  "show_legend": true,
                  "show_values": true,
                  "show_percentages": true,
                  "donut": true,
                  "legend_position": "right",
                  "height": "450px"
                }
              }
            },
            {
              "type": "chart_pie",
              "config": {
                "container_id": "pie-cobranca-receber",
                "data_config": {
                  "group_by": "descricao_financeiro_cobranca",
                  "operation": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 2",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "📥 COBRANÇA - A RECEBER",
                  "colors": [
                    "#3498db",
                    "#27ae60",
                    "#e67e22",
                    "#9b59b6",
                    "#e74c3c"
                  ],
                  "format": "moeda",
                  "format_legend": "capitalizado",
                  "decimals": 2,
                  "show_legend": true,
                  "show_values": true,
                  "show_percentages": true,
                  "donut": true,
                  "legend_position": "right",
                  "height": "450px"
                }
              }
            },
            {
              "type": "chart_pie",
              "config": {
                "container_id": "pie-cobranca-pagar",
                "data_config": {
                  "group_by": "descricao_financeiro_cobranca",
                  "operation": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 1",
                  "filters_aggregation": "value > 0"
                },
                "display_config": {
                  "title": "📤 COBRANÇA - A PAGAR",
                  "colors": [
                    "#3498db",
                    "#27ae60",
                    "#e67e22",
                    "#9b59b6",
                    "#e74c3c"
                  ],
                  "format": "moeda",
                  "format_legend": "capitalizado",
                  "decimals": 2,
                  "show_legend": true,
                  "show_values": true,
                  "show_percentages": true,
                  "donut": true,
                  "legend_position": "right",
                  "height": "450px"
                }
              }
            }
          ]
        }
      },
      "bloco15_evolucao_vencimento": {
        "type": "charts_grid_section",
        "title": "📅 EVOLUÇÃO TEMPORAL - VENCIMENTO",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "evolucao-vencimento-grid",
          "charts": [
            {
              "type": "chart_bar_aggregated_evolution",
              "config": {
                "container_id": "evolucao-saldo-vencimento-receber",
                "data_config": {
                  "campo_data": "nfe_data_vencimento",
                  "operation": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 2",
                  "granularidade": "mensal"
                },
                "display_config": {
                  "title": "📥 SALDO A RECEBER POR VENCIMENTO",
                  "layout": "vertical",
                  "format": "moeda",
                  "decimals": 2,
                  "sort_order": "ASC",
                  "limit": "all",
                  "height": "450px",
                  "color": "#27ae60"
                }
              }
            },
            {
              "type": "chart_bar_aggregated_evolution",
              "config": {
                "container_id": "evolucao-saldo-vencimento-pagar",
                "data_config": {
                  "campo_data": "nfe_data_vencimento",
                  "operation": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 1",
                  "granularidade": "mensal"
                },
                "display_config": {
                  "title": "📤 SALDO A PAGAR POR VENCIMENTO",
                  "layout": "vertical",
                  "format": "moeda",
                  "decimals": 2,
                  "sort_order": "ASC",
                  "limit": "all",
                  "height": "450px",
                  "color": "#e74c3c"
                }
              }
            },
            {
              "type": "chart_bar_aggregated_evolution",
              "config": {
                "container_id": "evolucao-titulos-vencimento-receber",
                "data_config": {
                  "campo_data": "nfe_data_vencimento",
                  "operation": "COUNT:id",
                  "filters": "id_financeiro_movimento = 2",
                  "granularidade": "mensal"
                },
                "display_config": {
                  "title": "📥 TÍTULOS A RECEBER POR VENCIMENTO",
                  "layout": "vertical",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " títulos",
                  "sort_order": "ASC",
                  "limit": "all",
                  "height": "450px",
                  "color": "#3498db"
                }
              }
            },
            {
              "type": "chart_bar_aggregated_evolution",
              "config": {
                "container_id": "evolucao-titulos-vencimento-pagar",
                "data_config": {
                  "campo_data": "nfe_data_vencimento",
                  "operation": "COUNT:id",
                  "filters": "id_financeiro_movimento = 1",
                  "granularidade": "mensal"
                },
                "display_config": {
                  "title": "📤 TÍTULOS A PAGAR POR VENCIMENTO",
                  "layout": "vertical",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " títulos",
                  "sort_order": "ASC",
                  "limit": "all",
                  "height": "450px",
                  "color": "#e67e22"
                }
              }
            }
          ]
        }
      },
      "bloco16_evolucao_emissao": {
        "type": "charts_grid_section",
        "title": "📅 EVOLUÇÃO TEMPORAL - EMISSÃO",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "evolucao-emissao-grid",
          "charts": [
            {
              "type": "chart_bar_aggregated_evolution",
              "config": {
                "container_id": "evolucao-valor-emissao-receber",
                "data_config": {
                  "campo_data": "nfe_data_emissao",
                  "operation": "SUM:valor",
                  "filters": "id_financeiro_movimento = 2",
                  "granularidade": "mensal"
                },
                "display_config": {
                  "title": "📥 VALOR A RECEBER POR EMISSÃO",
                  "layout": "vertical",
                  "format": "moeda",
                  "decimals": 2,
                  "sort_order": "ASC",
                  "limit": "all",
                  "height": "450px",
                  "color": "#8e44ad"
                }
              }
            },
            {
              "type": "chart_bar_aggregated_evolution",
              "config": {
                "container_id": "evolucao-valor-emissao-pagar",
                "data_config": {
                  "campo_data": "nfe_data_emissao",
                  "operation": "SUM:valor",
                  "filters": "id_financeiro_movimento = 1",
                  "granularidade": "mensal"
                },
                "display_config": {
                  "title": "📤 VALOR A PAGAR POR EMISSÃO",
                  "layout": "vertical",
                  "format": "moeda",
                  "decimals": 2,
                  "sort_order": "ASC",
                  "limit": "all",
                  "height": "450px",
                  "color": "#c0392b"
                }
              }
            },
            {
              "type": "chart_bar_aggregated_evolution",
              "config": {
                "container_id": "evolucao-titulos-emissao-receber",
                "data_config": {
                  "campo_data": "nfe_data_emissao",
                  "operation": "COUNT:id",
                  "filters": "id_financeiro_movimento = 2",
                  "granularidade": "mensal"
                },
                "display_config": {
                  "title": "📥 TÍTULOS A RECEBER POR EMISSÃO",
                  "layout": "vertical",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " títulos",
                  "sort_order": "ASC",
                  "limit": "all",
                  "height": "450px",
                  "color": "#16a085"
                }
              }
            },
            {
              "type": "chart_bar_aggregated_evolution",
              "config": {
                "container_id": "evolucao-titulos-emissao-pagar",
                "data_config": {
                  "campo_data": "nfe_data_emissao",
                  "operation": "COUNT:id",
                  "filters": "id_financeiro_movimento = 1",
                  "granularidade": "mensal"
                },
                "display_config": {
                  "title": "📤 TÍTULOS A PAGAR POR EMISSÃO",
                  "layout": "vertical",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " títulos",
                  "sort_order": "ASC",
                  "limit": "all",
                  "height": "450px",
                  "color": "#d35400"
                }
              }
            }
          ]
        }
      },
      "bloco17_evolucao_anual": {
        "type": "charts_grid_section",
        "title": "📅 EVOLUÇÃO ANUAL",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "evolucao-anual-grid",
          "charts": [
            {
              "type": "chart_bar_aggregated_evolution",
              "config": {
                "container_id": "evolucao-anual-valor-receber",
                "data_config": {
                  "campo_data": "nfe_data_emissao",
                  "operation": "SUM:valor",
                  "filters": "id_financeiro_movimento = 2",
                  "granularidade": "anual"
                },
                "display_config": {
                  "title": "📥 VALOR A RECEBER POR ANO",
                  "layout": "vertical",
                  "format": "moeda",
                  "decimals": 2,
                  "sort_order": "ASC",
                  "limit": "all",
                  "height": "400px",
                  "color": "#e67e22"
                }
              }
            },
            {
              "type": "chart_bar_aggregated_evolution",
              "config": {
                "container_id": "evolucao-anual-valor-pagar",
                "data_config": {
                  "campo_data": "nfe_data_emissao",
                  "operation": "SUM:valor",
                  "filters": "id_financeiro_movimento = 1",
                  "granularidade": "anual"
                },
                "display_config": {
                  "title": "📤 VALOR A PAGAR POR ANO",
                  "layout": "vertical",
                  "format": "moeda",
                  "decimals": 2,
                  "sort_order": "ASC",
                  "limit": "all",
                  "height": "400px",
                  "color": "#c0392b"
                }
              }
            },
            {
              "type": "chart_bar_aggregated_evolution",
              "config": {
                "container_id": "evolucao-anual-titulos-receber",
                "data_config": {
                  "campo_data": "nfe_data_emissao",
                  "operation": "COUNT:id",
                  "filters": "id_financeiro_movimento = 2",
                  "granularidade": "anual"
                },
                "display_config": {
                  "title": "📥 TÍTULOS A RECEBER POR ANO",
                  "layout": "vertical",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " títulos",
                  "sort_order": "ASC",
                  "limit": "all",
                  "height": "400px",
                  "color": "#3498db"
                }
              }
            },
            {
              "type": "chart_bar_aggregated_evolution",
              "config": {
                "container_id": "evolucao-anual-titulos-pagar",
                "data_config": {
                  "campo_data": "nfe_data_emissao",
                  "operation": "COUNT:id",
                  "filters": "id_financeiro_movimento = 1",
                  "granularidade": "anual"
                },
                "display_config": {
                  "title": "📤 TÍTULOS A PAGAR POR ANO",
                  "layout": "vertical",
                  "format": "numero",
                  "decimals": 0,
                  "suffix": " títulos",
                  "sort_order": "ASC",
                  "limit": "all",
                  "height": "400px",
                  "color": "#e67e22"
                }
              }
            }
          ]
        }
      },
      "bloco18_evolucao_tendencia": {
        "type": "charts_grid_section",
        "title": "📈 TENDÊNCIA - SALDO E LIQUIDAÇÕES",
        "class": "dashboard-section dashboard-section-full-width",
        "config": {
          "container_id": "evolucao-tendencia-grid",
          "charts": [
            {
              "type": "chart_bar_aggregated_evolution",
              "config": {
                "container_id": "tendencia-saldo-receber",
                "data_config": {
                  "campo_data": "nfe_data_vencimento",
                  "operation": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 2",
                  "granularidade": "mensal"
                },
                "display_config": {
                  "title": "📥 TENDÊNCIA - SALDO A RECEBER MENSAL",
                  "layout": "vertical",
                  "format": "moeda",
                  "decimals": 2,
                  "sort_order": "ASC",
                  "limit": "all",
                  "height": "450px",
                  "color": "#27ae60"
                }
              }
            },
            {
              "type": "chart_bar_aggregated_evolution",
              "config": {
                "container_id": "tendencia-saldo-pagar",
                "data_config": {
                  "campo_data": "nfe_data_vencimento",
                  "operation": "SUM:saldo_aberto",
                  "filters": "id_financeiro_movimento = 1",
                  "granularidade": "mensal"
                },
                "display_config": {
                  "title": "📤 TENDÊNCIA - SALDO A PAGAR MENSAL",
                  "layout": "vertical",
                  "format": "moeda",
                  "decimals": 2,
                  "sort_order": "ASC",
                  "limit": "all",
                  "height": "450px",
                  "color": "#e74c3c"
                }
              }
            },
            {
              "type": "chart_bar_aggregated_evolution",
              "config": {
                "container_id": "tendencia-liquidacoes-receber",
                "data_config": {
                  "campo_data": "nfe_data_vencimento",
                  "operation": "SUM:valor_liquidacoes",
                  "filters": "id_financeiro_movimento = 2",
                  "granularidade": "mensal"
                },
                "display_config": {
                  "title": "📥 TENDÊNCIA - LIQUIDAÇÕES A RECEBER MENSAL",
                  "layout": "vertical",
                  "format": "moeda",
                  "decimals": 2,
                  "sort_order": "ASC",
                  "limit": "all",
                  "height": "450px",
                  "color": "#3498db"
                }
              }
            },
            {
              "type": "chart_bar_aggregated_evolution",
              "config": {
                "container_id": "tendencia-liquidacoes-pagar",
                "data_config": {
                  "campo_data": "nfe_data_vencimento",
                  "operation": "SUM:valor_liquidacoes",
                  "filters": "id_financeiro_movimento = 1",
                  "granularidade": "mensal"
                },
                "display_config": {
                  "title": "📤 TENDÊNCIA - LIQUIDAÇÕES A PAGAR MENSAL",
                  "layout": "vertical",
                  "format": "moeda",
                  "decimals": 2,
                  "sort_order": "ASC",
                  "limit": "all",
                  "height": "450px",
                  "color": "#e67e22"
                }
              }
            }
          ]
        }
      }
    }
  },
  "entidade": {},
  "url_documentacao": "/docs/ondevou-db-vendas_duplicatas.html",
  "nome_tabela": "vendas_duplicatas"
}

📝 SQL CREATE TABLE - Estrutura Completa

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

🏗️ Estrutura Completa

📋 18 colunas 🔗 2 constraints 📑 15 índices ⚡ 0 triggers
code Clique para ver o SQL completo ✅ COMPLETO
-- ============================================================
-- ESTRUTURA COMPLETA DA TABELA vendas_duplicatas
-- Fonte: PostgreSQL - 07/11/2026 07:39:06
-- ============================================================

CREATE TABLE public.vendas_duplicatas (
    id integer NOT NULL DEFAULT nextval('vendas_duplicatas_id_seq1'::regclass),
    participante integer,
    id_participante integer,
    id_venda integer,
    numero_duplicata integer,
    numero varchar(255),
    valor numeric(25, 2),
    data_emissao date,
    data_vencimento date,
    numero_documento varchar(255),
    id_financeiro_movimento integer,
    id_financeiro_situacao integer,
    id_financeiro_documento integer,
    id_financeiro_cobranca integer,
    id_financeiro_categoria integer,
    id_financeiro_portador integer,
    descricao varchar(255),
    id_romaneio integer,
    CONSTRAINT vendas_duplicatas_pkey PRIMARY KEY (id),
    CONSTRAINT 2200_403246_1_not_null CHECK (id IS NOT NULL)
);

-- ============================================================
-- ÍNDICES
-- ============================================================
CREATE INDEX idx_vendas_duplicatas_id_financeiro_categoria ON public.vendas_duplicatas USING btree (id_financeiro_categoria);
CREATE INDEX idx_vendas_duplicatas_id_financeiro_cobranca ON public.vendas_duplicatas USING btree (id_financeiro_cobranca);
CREATE INDEX idx_vendas_duplicatas_id_financeiro_documento ON public.vendas_duplicatas USING btree (id_financeiro_documento);
CREATE INDEX idx_vendas_duplicatas_id_financeiro_movimento ON public.vendas_duplicatas USING btree (id_financeiro_movimento);
CREATE INDEX idx_vendas_duplicatas_id_financeiro_portador ON public.vendas_duplicatas USING btree (id_financeiro_portador);
CREATE INDEX idx_vendas_duplicatas_id_financeiro_situacao ON public.vendas_duplicatas USING btree (id_financeiro_situacao);
CREATE INDEX idx_vendas_duplicatas_id_participante ON public.vendas_duplicatas USING btree (id_participante);
CREATE INDEX idx_vendas_duplicatas_id_romaneio ON public.vendas_duplicatas USING btree (id_romaneio);
CREATE INDEX idx_vendas_duplicatas_id_venda ON public.vendas_duplicatas USING btree (id_venda);
CREATE INDEX idx_vendas_duplicatas_p_id ON public.vendas_duplicatas USING btree (participante, id DESC);
CREATE INDEX idx_vendas_duplicatas_p_id_participante ON public.vendas_duplicatas USING btree (participante, id_participante);
CREATE INDEX idx_vendas_duplicatas_p_id_romaneio ON public.vendas_duplicatas USING btree (participante, id_romaneio);
CREATE INDEX idx_vendas_duplicatas_p_id_venda ON public.vendas_duplicatas USING btree (participante, id_venda);
CREATE INDEX idx_vendas_duplicatas_participante ON public.vendas_duplicatas USING btree (participante);
CREATE UNIQUE INDEX vendas_duplicatas_pk_id ON public.vendas_duplicatas 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_emissao date date ✅ OK
data_vencimento date date ✅ OK
descricao text character varying ✅ OK
descricao_financeiro_categoria number - ⚠️ Só no JSON
descricao_financeiro_cobranca number - ⚠️ Só no JSON
descricao_financeiro_documento number - ⚠️ Só no JSON
descricao_financeiro_movimento number - ⚠️ Só no JSON
descricao_financeiro_portador number - ⚠️ Só no JSON
descricao_financeiro_situacao number - ⚠️ Só no JSON
descricao_romaneio number - ⚠️ Só no JSON
find text - ⚠️ Só no JSON
id number integer ✅ OK
id_fatura number - ⚠️ Só no JSON
id_financeiro_categoria - integer ❌ Só no banco
id_financeiro_cobranca - integer ❌ Só no banco
id_financeiro_documento - integer ❌ Só no banco
id_financeiro_movimento - integer ❌ Só no banco
id_financeiro_portador - integer ❌ Só no banco
id_financeiro_situacao - integer ❌ Só no banco
id_nfe number - ⚠️ Só no JSON
id_participante number integer ✅ OK
id_romaneio number integer ✅ OK
id_venda number integer ✅ OK
nome_rota number - ⚠️ Só no JSON
numero text character varying ✅ OK
numero_documento text character varying ✅ OK
numero_duplicata number integer ✅ OK
participante number integer ✅ OK
razao_social_participante number - ⚠️ Só no JSON
saldo_aberto number - ⚠️ Só no JSON
valor number numeric ✅ OK
valor_liquidacoes 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_vendas_duplicatas WHERE participante = ${globais.dados_fixo.participante}`,
    'view': 'view_vendas_duplicatas'
});

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

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