Busca_Escopo_Entidade_DAO
extends Busca_Escopo_DAO
in package
Base dos provedores de busca dos cadastros comerciais (cliente, organização, fornecedor, empresa).
Os quatro compartilham a forma da consulta — código, nome fantasia, razão social e CNPJ — mas
NÃO compartilham a regra de visibilidade, que é diferente em cada um. Por isso cada cadastro é
uma subclasse com o seu sql_visibilidade(), e não um UNION sobre a view entidade.
Sobre a view entidade (dao/Atualizacao_Recursos.dao.php:10242): ela é proibida aqui por dois
motivos. Primeiro, não carrega nenhuma das quatro regras por registro. Segundo — e decisivo —
ela emite NULL AS empresa_filial_id nos quatro ramos, o que torna o filtro de filial
(cliente.empresa_filial_id = :emp, dao/Cliente.dao.php:1404) inexprimível sobre ela.
Atenção ao nome das colunas: no banco o nome fantasia é nome; nome_fantasia só existe como
alias e como propriedade de model.
Table of Contents
Constants
- PARAM_PREFIXO = ':bu_'
- Prefixo de todo parâmetro nomeado montado pelo provedor.
- SEM_RESTRICAO = 'SEM_RESTRICAO_POR_REGISTRO: '
- Prefixo obrigatório de origem_visibilidade() para escopos que legitimamente não têm restrição por registro (ex: cadastro de usuários, que é só permissão de módulo).
Properties
- $_erp_empresa : mixed
- $_erp_filial : mixed
- $_erp_grupo : mixed
- $api_token : mixed
- $dir_dao : mixed
- $emp : mixed
- $idioma : mixed
- $instance_token : mixed
- $login_anonimo : mixed
- $token_job : mixed
- $viewcode : mixed
Methods
- __construct() : mixed
- api_token() : mixed
- AutoLoad() : mixed
- buscar() : array<string|int, mixed>
- campos_busca() : mixed
- Política de busca por campo: ['coluna' => 'numerico'|'prefixo'|'contains'].
- ConvertBase64() : mixed
- Delete_Token_JOB() : mixed
- DxParamsAddFilter() : mixed
- emp() : mixed
- escopo() : mixed
- Chave do escopo na resposta da API. Ex: 'chamado'.
- get_login_anonimo() : mixed
- getFormData() : mixed
- getJsonData() : mixed
- habilitado() : mixed
- Permite a um provedor se desabilitar (ex: depende de recurso não instalado).
- instance_token() : mixed
- isJsonRequest() : mixed
- LoadDAO() : mixed
- LoadHTML() : mixed
- LoadMail() : mixed
- LoadModel() : mixed
- LoadPDF() : mixed
- origem_visibilidade() : mixed
- De onde veio a regra de visibilidade deste provedor, com arquivo:linha.
- permissoes() : mixed
- Chaves de permissão que liberam o escopo. Basta UMA (OR).
- ReadBodyParams() : mixed
- ReadDxParams() : mixed
- ReadFile() : mixed
- ReadFiles() : mixed
- ReadGet() : mixed
- ReadPost() : mixed
- ReadRequest() : mixed
- set_login_anonimo() : mixed
- Start_Token_JOB() : mixed
- WhatRequest() : mixed
- alias() : mixed
- Alias usado nas expressões SQL (normalmente igual à tabela).
- consultar() : mixed
- Executa a consulta e devolve as linhas. Centralizado para facilitar instrumentação.
- eh_admin() : mixed
- limite_sql() : mixed
- Normaliza um valor que será interpolado em LIMIT/OFFSET, onde o PDO também não aceita parâmetro nomeado. Negativos viram 0, pois quebrariam a consulta.
- lista_ids_sql() : mixed
- Monta o conteúdo de um IN (...) a partir de ids já validados como inteiros.
- normalizar_ids() : array<string|int, mixed>
- Normaliza uma lista de ids para interpolação segura em um IN (...).
- param() : mixed
- Nome de parâmetro já prefixado. Use SEMPRE isto para montar $params.
- registro() : mixed
- Normaliza uma linha do banco no formato da resposta.
- restringir_por_vinculo() : mixed
- Restringe a um conjunto de ids vindo de uma tabela de vínculo (usuario_cliente, usuario_fornecedor, ...).
- rotulo() : mixed
- Rótulo do tipo, usado no subtítulo.
- sessao() : mixed
- Sessão do usuário logado, respeitando o token de JOB quando houver.
- sql_in_ids() : mixed
- Converte uma lista de ids em fragmento `IN (...)` seguro.
- sql_or() : mixed
- Monta o grupo OR do termo a partir de uma lista de expressões já prontas.
- sql_visibilidade() : mixed
- Acrescenta a regra de visibilidade do cadastro. Deve concatenar " AND ... ".
- subtitulo() : mixed
- Junta as partes não vazias de um subtítulo com o separador padrão da UI.
- tabela() : mixed
- Tabela base do cadastro.
- tem_codigo() : mixed
- empresa_filial não tem coluna `codigo`; os outros três têm.
- usuario_logado() : mixed
- Usuário logado (\Sys\Sessao::objeto(...)->dados), como os DAOs de cadastro fazem.
- where_com_and() : mixed
- Abre o WHERE para fragmentos que emitem " AND ... " (ex: permitir_acesso_chamado).
- where_sem_and() : mixed
- Abre o WHERE para fragmentos que emitem o predicado SEM "AND" inicial (ex: Solicitacao_Atividade_DAO::sql_permissao). Ver dao/Solicitacao_Atividade.dao.php:7207.
Constants
PARAM_PREFIXO
Prefixo de todo parâmetro nomeado montado pelo provedor.
public
mixed
PARAM_PREFIXO
= ':bu_'
Os fragmentos reaproveitados (permitir_acesso_chamado, sql_permissao) escrevem no MESMO array $params por referência, usando nomes genéricos como :usuario_id. Sem o prefixo, o provedor sobrescreveria silenciosamente um parâmetro da regra de permissão.
SEM_RESTRICAO
Prefixo obrigatório de origem_visibilidade() para escopos que legitimamente não têm restrição por registro (ex: cadastro de usuários, que é só permissão de módulo).
public
mixed
SEM_RESTRICAO
= 'SEM_RESTRICAO_POR_REGISTRO: '
Properties
$_erp_empresa
protected
mixed
$_erp_empresa
$_erp_filial
protected
mixed
$_erp_filial
$_erp_grupo
protected
mixed
$_erp_grupo
$api_token
protected
static mixed
$api_token
$dir_dao
protected
static mixed
$dir_dao
= NULL
$emp
protected
mixed
$emp
$idioma
protected
mixed
$idioma
$instance_token
protected
static mixed
$instance_token
$login_anonimo
protected
static mixed
$login_anonimo
= false
$token_job
protected
static mixed
$token_job
$viewcode
protected
mixed
$viewcode
Methods
__construct()
public
__construct() : mixed
api_token()
public
static api_token() : mixed
AutoLoad()
public
static AutoLoad(mixed $className) : mixed
Parameters
- $className : mixed
buscar()
public
buscar(mixed $termo, mixed $limite) : array<string|int, mixed>
Parameters
- $termo : mixed
- $limite : mixed
-
Quantos registros retornar no máximo.
Return values
array<string|int, mixed> —Lista de ['id','codigo','titulo','subtitulo','extra'].
campos_busca()
Política de busca por campo: ['coluna' => 'numerico'|'prefixo'|'contains'].
public
campos_busca() : mixed
Serve de documentação executável e de checklist de performance: 'contains' (%termo%) não usa índice e só é aceitável onde prefixo é inútil de verdade.
ConvertBase64()
public
static ConvertBase64(mixed $name, mixed &$request_params) : mixed
Parameters
- $name : mixed
- $request_params : mixed
Delete_Token_JOB()
public
static Delete_Token_JOB() : mixed
DxParamsAddFilter()
public
DxParamsAddFilter(mixed &$params, mixed $campo, mixed $condicao, mixed $valor) : mixed
Parameters
- $params : mixed
- $campo : mixed
- $condicao : mixed
- $valor : mixed
emp()
public
emp() : mixed
escopo()
Chave do escopo na resposta da API. Ex: 'chamado'.
public
abstract escopo() : mixed
get_login_anonimo()
public
static get_login_anonimo() : mixed
getFormData()
public
static getFormData([mixed $param = null ]) : mixed
Parameters
- $param : mixed = null
getJsonData()
public
static getJsonData([mixed $param = null ]) : mixed
Parameters
- $param : mixed = null
habilitado()
Permite a um provedor se desabilitar (ex: depende de recurso não instalado).
public
habilitado() : mixed
instance_token()
public
static instance_token() : mixed
isJsonRequest()
public
static isJsonRequest() : mixed
LoadDAO()
public
static LoadDAO(mixed $dao_class_required[, mixed $auto_construct = false ][, mixed $auto_load = false ]) : mixed
Parameters
- $dao_class_required : mixed
- $auto_construct : mixed = false
- $auto_load : mixed = false
LoadHTML()
public
static LoadHTML(mixed $html_class_required[, mixed $auto_construct = false ][, mixed $auto_load = false ]) : mixed
Parameters
- $html_class_required : mixed
- $auto_construct : mixed = false
- $auto_load : mixed = false
LoadMail()
public
static LoadMail(mixed $mail_class_required[, mixed $auto_construct = false ][, mixed $auto_load = false ]) : mixed
Parameters
- $mail_class_required : mixed
- $auto_construct : mixed = false
- $auto_load : mixed = false
LoadModel()
public
static LoadModel(mixed $model_class_required[, mixed $auto_construct = false ][, mixed $auto_load = false ]) : mixed
Parameters
- $model_class_required : mixed
- $auto_construct : mixed = false
- $auto_load : mixed = false
LoadPDF()
public
static LoadPDF(mixed $pdf_class_required[, mixed $auto_construct = false ][, mixed $auto_load = false ]) : mixed
Parameters
- $pdf_class_required : mixed
- $auto_construct : mixed = false
- $auto_load : mixed = false
origem_visibilidade()
De onde veio a regra de visibilidade deste provedor, com arquivo:linha.
public
abstract origem_visibilidade() : mixed
Obrigatório e verificado em tempo de execução por Busca_DAO. Não é uma prova de correção — é um obstáculo deliberado para que a ausência da regra apareça no diff e no code review.
permissoes()
Chaves de permissão que liberam o escopo. Basta UMA (OR).
public
abstract permissoes() : mixed
ReadBodyParams()
public
ReadBodyParams([mixed $param = null ]) : mixed
Parameters
- $param : mixed = null
ReadDxParams()
public
ReadDxParams() : mixed
ReadFile()
public
ReadFile(mixed $name[, mixed $default = null ][, mixed $arrAcceptedMimeTypes = [] ]) : mixed
Parameters
- $name : mixed
- $default : mixed = null
- $arrAcceptedMimeTypes : mixed = []
ReadFiles()
public
ReadFiles(mixed $name) : mixed
Parameters
- $name : mixed
ReadGet()
public
ReadGet(mixed $name[, mixed $default = null ]) : mixed
Parameters
- $name : mixed
- $default : mixed = null
ReadPost()
public
ReadPost(mixed $name[, mixed $default = null ]) : mixed
Parameters
- $name : mixed
- $default : mixed = null
ReadRequest()
public
ReadRequest(mixed $name[, mixed $default = null ]) : mixed
Parameters
- $name : mixed
- $default : mixed = null
set_login_anonimo()
public
static set_login_anonimo(mixed $value) : mixed
Parameters
- $value : mixed
Start_Token_JOB()
public
static Start_Token_JOB(mixed $new_token) : mixed
Parameters
- $new_token : mixed
WhatRequest()
public
WhatRequest(mixed $name[, mixed $default = null ]) : mixed
Parameters
- $name : mixed
- $default : mixed = null
alias()
Alias usado nas expressões SQL (normalmente igual à tabela).
protected
abstract alias() : mixed
consultar()
Executa a consulta e devolve as linhas. Centralizado para facilitar instrumentação.
protected
consultar(mixed $sql, mixed $params, mixed $limite) : mixed
Parameters
- $sql : mixed
- $params : mixed
- $limite : mixed
eh_admin()
protected
eh_admin() : mixed
limite_sql()
Normaliza um valor que será interpolado em LIMIT/OFFSET, onde o PDO também não aceita parâmetro nomeado. Negativos viram 0, pois quebrariam a consulta.
protected
limite_sql(mixed $valor[, mixed $padrao = 0 ]) : mixed
Parameters
- $valor : mixed
- $padrao : mixed = 0
lista_ids_sql()
Monta o conteúdo de um IN (...) a partir de ids já validados como inteiros.
protected
lista_ids_sql(mixed $valor) : mixed
Sem nenhum id aproveitável devolve o literal NULL, para o IN não casar com nada em vez de gerar SQL inválido.
Parameters
- $valor : mixed
normalizar_ids()
Normaliza uma lista de ids para interpolação segura em um IN (...).
protected
normalizar_ids(mixed $valor) : array<string|int, mixed>
Aceita array, string separada por vírgula ou escalar, e descarta tudo que não for numérico.
Use sempre que um valor vindo da request precisar entrar concatenado no SQL: os parâmetros nomeados do PDO não funcionam dentro de um IN (...) de tamanho variável, e é justamente aí que a concatenação crua costuma aparecer.
Parameters
- $valor : mixed
Return values
array<string|int, mixed> —Lista de inteiros reindexada; vazia quando nada é aproveitável.
param()
Nome de parâmetro já prefixado. Use SEMPRE isto para montar $params.
protected
param(mixed $nome) : mixed
Parameters
- $nome : mixed
registro()
Normaliza uma linha do banco no formato da resposta.
protected
registro(mixed $id, mixed $codigo, mixed $titulo[, mixed $subtitulo = null ][, mixed $extra = array() ]) : mixed
Parameters
- $id : mixed
- $codigo : mixed
- $titulo : mixed
- $subtitulo : mixed = null
- $extra : mixed = array()
restringir_por_vinculo()
Restringe a um conjunto de ids vindo de uma tabela de vínculo (usuario_cliente, usuario_fornecedor, ...).
protected
restringir_por_vinculo(mixed &$sql, mixed $tabela_vinculo, mixed $coluna_id) : mixed
Usa sql_in_ids() em vez do implode direto dos DAOs originais, que produz IN () — erro de
sintaxe — quando o usuário não tem nenhum vínculo (dao/Cliente.dao.php:1295-1308,
dao/Fornecedor.dao.php:854-869).
Parameters
- $sql : mixed
- $tabela_vinculo : mixed
- $coluna_id : mixed
rotulo()
Rótulo do tipo, usado no subtítulo.
protected
abstract rotulo() : mixed
sessao()
Sessão do usuário logado, respeitando o token de JOB quando houver.
protected
sessao() : mixed
sql_in_ids()
Converte uma lista de ids em fragmento `IN (...)` seguro.
protected
sql_in_ids(mixed $ids) : mixed
Existe porque o padrão espalhado pelos DAOs (implode direto numa lista possivelmente vazia)
gera IN (), que é erro de sintaxe no MySQL — ver dao/Cliente.dao.php:1295-1308 e
dao/Fornecedor.dao.php:854-869. Lista vazia vira IN (0): nenhuma linha, sem quebrar.
Parameters
- $ids : mixed
sql_or()
Monta o grupo OR do termo a partir de uma lista de expressões já prontas.
protected
sql_or(mixed $expressoes) : mixed
Devolve '' quando não há nenhuma expressão — o provedor deve então retornar [] sem consultar o banco, em vez de rodar uma query sem filtro.
Parameters
- $expressoes : mixed
sql_visibilidade()
Acrescenta a regra de visibilidade do cadastro. Deve concatenar " AND ... ".
protected
abstract sql_visibilidade(mixed &$sql, mixed &$params) : mixed
Parameters
- $sql : mixed
- $params : mixed
subtitulo()
Junta as partes não vazias de um subtítulo com o separador padrão da UI.
protected
subtitulo(mixed $partes) : mixed
Parameters
- $partes : mixed
tabela()
Tabela base do cadastro.
protected
abstract tabela() : mixed
tem_codigo()
empresa_filial não tem coluna `codigo`; os outros três têm.
protected
tem_codigo() : mixed
usuario_logado()
Usuário logado (\Sys\Sessao::objeto(...)->dados), como os DAOs de cadastro fazem.
protected
usuario_logado() : mixed
where_com_and()
Abre o WHERE para fragmentos que emitem " AND ... " (ex: permitir_acesso_chamado).
protected
where_com_and() : mixed
Ver dao/Chamado.dao.php:6853.
where_sem_and()
Abre o WHERE para fragmentos que emitem o predicado SEM "AND" inicial (ex: Solicitacao_Atividade_DAO::sql_permissao). Ver dao/Solicitacao_Atividade.dao.php:7207.
protected
where_sem_and() : mixed