My controller has the following verification:
$this->loadModel('User');
$this->loadModel('Conta');
$this->loadModel('Unidade');
$this->loadModel('Periodicidade');
$this->loadModel('AgendamentoFinanceiro');
$this->loadModel('Entidade');
$this->loadModel('EntidadesEndereco');
$arrayConditions = array();
$arrayContas = array();
$total_a_receber = 0;
$arrayConditions['AND']['AgendamentoFinanceiroParcela.situacao'] = 'A'; // apenas os agendados
$arrayConditions['AND']['AgendamentoFinanceiroParcela.tipo <>'] = 'S'; // diferente de saídas
//se foi passado um parametro informando a agenda financeira
if (!empty($agendamento_financeiro_id) && $agendamento_financeiro_id > 0) {
//gera as proximas parcelas do agendamento informado:
$this->AgendamentoFinanceiro->gerar_parcelas($agendamento_financeiro_id);
//adiciona esta condição no filtro
$arrayConditions['AND']['AgendamentoFinanceiroParcela.agendafinanceira_id'] = $agendamento_financeiro_id;
}
if(isset($this->params['named']['todos'])) {
$this->data = array();
$this->Session->delete('AgendamentoFinanceiroParcelasReceber');
}
if (!empty($this->data)) {
if (!empty($this->data['Filtro']['unidade_id'])) {
$arrayConditions['OR']['ContaOrigem.unidade_id'] = $this->data['Filtro']['unidade_id'];
$arrayConditions['OR']['ContaDestino.unidade_id'] = $this->data['Filtro']['unidade_id'];
$arrayContas = $this->Conta->find(
'list', array(
'conditions' => array(
'unidade_id' => $this->data['Filtro']['unidade_id']
),
'fields' => array('id', 'nome'),
'recursive' => -1
));
}
if(isset($this->data['Filtro']['conta_id']) && !empty($this->data['Filtro']['conta_id'])){
$arrayConditions['OR']['AgendamentoFinanceiro.conta_origem_id'] = $this->data['Filtro']['conta_id'];
$arrayConditions['OR']['AgendamentoFinanceiro.conta_destino_id'] = $this->data['Filtro']['conta_id'];
unset($arrayConditions['OR']['ContaOrigem.unidade_id']);
unset($arrayConditions['OR']['ContaDestino.unidade_id']);
}
if (isset($this->data['Filtro']['entidade_id']) && !empty($this->data['Filtro']['entidade_id'])){
$arrayConditions['AND']['AgendamentoFinanceiro.entidade_id'] = $this->data['Filtro']['entidade_id'];
}
if (isset($this->data['Filtro']['uf']) && !empty($this->data['Filtro']['uf'])){
$arrayConditions['AND']['EntidadesEndereco.uf'] = $this->data['Filtro']['uf'];
}
if(isset($this->data['Filtro']['situacao']) && !empty($this->data['Filtro']['situacao'])){
$arrayConditions['AND']['AgendamentoFinanceiroParcela.situacao'] = $this->data['Filtro']['situacao'];
if($this->data['Filtro']['situacao'] == 'V'){ // se foi escolhido 'vencido':
$arrayConditions['AND']['AgendamentoFinanceiroParcela.situacao'] = 'A';
$arrayConditions['AND']['AgendamentoFinanceiroParcela.data_vencimento <'] = date('Y-m-d');
}
}
if (isset($this->data['Filtro']['data_inicial']) && !empty($this->data['Filtro']['data_inicial'])){
$arrayConditions['AND']['AgendamentoFinanceiroParcela.data_vencimento >='] = $this->Mswi->formatarData($this->data['Filtro']['data_inicial']);
}
if (isset($this->data['Filtro']['data_final']) && !empty($this->data['Filtro']['data_final'])){
$arrayConditions['AND']['AgendamentoFinanceiroParcela.data_vencimento <='] = $this->Mswi->formatarData($this->data['Filtro']['data_final']);
}
}
$params = $this->Mswi->autoPaginate($this->params, 'AgendamentoFinanceiroParcela.data_vencimento', 'ASC', $arrayConditions);
$this->AgendamentoFinanceiroParcela->bindModel(array(
'hasMany' => array(
'Anexo' => array(
'className' => 'Anexo',
'foreignKey' => 'agendamento_parcela_id'
)
)
));
I have the conditions and debugging the code it passes the indexes correctly to me even returns the states of each record everything right
if ((isset($this->params['ext']) && $this->params['ext'] == 'pdf') || isset($this->params['named']['excel'])) {
$AgendamentoFinanceiroParcelasReceber = $this->AgendamentoFinanceiroParcela->find('all',
array(
'conditions' => $params['conditions'],
'order' => array($params['sort'] => $params['direction']),
'contain' => array(
'AgendamentoFinanceiro' => array(
'CentroDeCusto' => array(
'fields' => array('id', 'numero', 'nome', 'situacao')
),
'fields' => array('id', 'tipo', 'situacao', 'numero_parcelas', 'periodicidade_id'),
),
'Entidade' => array(
'fields' => array('id', 'nome_principal', 'nome_secundario', 'situacao')
),
'ContaDestino' => array(
'fields' => array('id', 'nome', 'contatipo_id', 'situacao')
),
'ContaOrigem' => array(
'fields' => array('id', 'nome', 'contatipo_id', 'situacao')
),
'PlanoDeConta' => array(
'fields' => array('id', 'numero', 'nome', 'situacao')
),
'LancamentoFinanceiro' => array(
'fields' => array('id', 'agendamento_parcela_id', 'valor', 'tipo', 'situacao', 'observacoes'),
'CentroDeCusto' => array(
'fields' => array('id', 'numero', 'nome', 'situacao')
),
'Entidade' => array(
'fields' => array('id', 'nome_principal', 'nome_secundario', 'situacao')
),
'ContaDestino' => array(
'fields' => array('id', 'nome', 'contatipo_id', 'situacao')
),
'ContaOrigem' => array(
'fields' => array('id', 'nome', 'contatipo_id', 'situacao')
),
'PlanoDeConta' => array(
'fields' => array('id', 'numero', 'nome', 'situacao')
)
),
'AgendamentoFinanceiroParcelaFatura' => array(
'Fatura' => array(
'Boleto' => array(
'fields' => array('id')
),
'fields' => array('id', 'formadepagamento_id')
),
'fields' => array('id', 'agendamento_financeiro_parcela_id', 'fatura_id')
),
'Anexo' => array(
'fields' => array(
'id'
)
)
),
'fields' => array(
'id',
'data_vencimento',
'valor',
'descricao',
'situacao',
'tipo',
'parcela',
'entidade_id',
'conta_origem_id',
'conta_destino_id',
'planodeconta_id',
'numero',
'observacoes',
'email_enviado',
'lancamentofinanceiro_id'
)
)
);
} else {
$this->paginate = array(
'conditions' => $params['conditions'],
'order' => array($params['sort'] => $params['direction']),
'page' => $params['page'],
'joins' => array(
array(
'table' => 'agendamentos_financeiros_parcelas_faturas',
'alias' => 'AgendamentoFinanceiroParcelaFatura',
'type' => 'LEFT',
'conditions' => array(
'AgendamentoFinanceiroParcelaFatura.agendamento_financeiro_parcela_id = AgendamentoFinanceiroParcela.id',
)
),
array(
'table' => 'agendamentos_financeiros',
'alias' => 'AgendamentoFinanceiro',
'type' => 'LEFT',
'conditions' => array(
'AgendamentoFinanceiroParcela.agendafinanceira_id = AgendamentoFinanceiro.id',
)
),
array(
'table' => 'lancamentos_financeiros',
'alias' => 'LancamentoFinanceiro',
'type' => 'LEFT',
'conditions' => array(
'AgendamentoFinanceiroParcela.lancamentofinanceiro_id = LancamentoFinanceiro.id',
)
),
array(
'table' => 'plano_de_contas',
'alias' => 'PlanoDeConta',
'type' => 'LEFT',
'conditions' => array(
'AgendamentoFinanceiroParcela.planodeconta_id = PlanoDeConta.id',
)
),
array(
'table' => 'entidades',
'alias' => 'Entidade',
'type' => 'LEFT',
'conditions' => array(
'AgendamentoFinanceiroParcela.entidade_id = Entidade.id',
)
),
array(
'table' => 'entidades_enderecos',
'alias' => 'EntidadesEndereco',
'type' => 'LEFT',
'conditions' => array(
'EntidadesEndereco.entidade_id = Entidade.id' ,
)
),
array(
'table' => 'contas',
'alias' => 'ContaOrigem',
'type' => 'LEFT',
'conditions' => array(
'AgendamentoFinanceiroParcela.conta_origem_id = ContaOrigem.id',
)
),
array(
'table' => 'contas',
'alias' => 'ContaDestino',
'type' => 'LEFT',
'conditions' => array(
'AgendamentoFinanceiroParcela.conta_destino_id = ContaDestino.id',
)
),
array(
'table' => 'anexos',
'alias' => 'Anexo',
'type' => 'LEFT',
'conditions' => array(
'AgendamentoFinanceiroParcela.id = Anexo.agendamento_parcela_id',
)
),
),
'fields' => array(
'AgendamentoFinanceiroParcela.id',
'AgendamentoFinanceiroParcela.data_vencimento',
'AgendamentoFinanceiroParcela.valor',
'AgendamentoFinanceiroParcela.descricao',
'AgendamentoFinanceiroParcela.situacao',
'AgendamentoFinanceiroParcela.tipo',
'AgendamentoFinanceiroParcela.parcela',
'AgendamentoFinanceiroParcela.entidade_id',
'AgendamentoFinanceiroParcela.conta_origem_id',
'AgendamentoFinanceiroParcela.conta_destino_id',
'AgendamentoFinanceiroParcela.planodeconta_id',
'AgendamentoFinanceiroParcela.numero',
'AgendamentoFinanceiroParcela.observacoes',
'AgendamentoFinanceiroParcela.email_enviado',
'AgendamentoFinanceiroParcela.lancamentofinanceiro_id',
'AgendamentoFinanceiroParcela.modified_by',
'AgendamentoFinanceiroParcela.modified',
'AgendamentoFinanceiroParcelaFatura.id',
'AgendamentoFinanceiroParcelaFatura.agendamento_financeiro_parcela_id',
'AgendamentoFinanceiroParcelaFatura.fatura_id',
'AgendamentoFinanceiro.id',
'AgendamentoFinanceiro.tipo',
'AgendamentoFinanceiro.situacao',
'AgendamentoFinanceiro.numero_parcelas',
'AgendamentoFinanceiro.periodicidade_id',
'LancamentoFinanceiro.id',
'LancamentoFinanceiro.agendamento_parcela_id',
'LancamentoFinanceiro.valor',
'LancamentoFinanceiro.tipo',
'LancamentoFinanceiro.situacao',
'PlanoDeConta.id',
'PlanoDeConta.numero',
'PlanoDeConta.nome',
'PlanoDeConta.situacao',
'Entidade.id',
'Entidade.nome_principal',
'Entidade.nome_secundario',
'Entidade.situacao',
'EntidadesEndereco.id',
'EntidadesEndereco.cidade',
'EntidadesEndereco.estado',
'EntidadesEndereco.uf',
'ContaOrigem.id',
'ContaOrigem.nome',
'ContaOrigem.contatipo_id',
'ContaOrigem.situacao',
'ContaDestino.id',
'ContaDestino.nome',
'ContaDestino.contatipo_id',
'ContaDestino.situacao',
'Anexo.id'
),
'limit' => 29,
'recursive' => -1
);
try {
$AgendamentoFinanceiroParcelasReceber = $this->paginate('AgendamentoFinanceiroParcela');
} catch(NotFoundException $e) {
$AgendamentoFinanceiroParcelasReceber = array();
$this->set('agendamentos_financeiros_parcelas', $AgendamentoFinanceiroParcelasReceber);
$this->render('contas_receber_auto_paginate', 'ajax');
exit();
}
}
Step through an array all states
$uf = array(
'AC' => 'AC',
'AL' => 'AL',
'AM' => 'AM',
'AP' => 'AP',
'BA' => 'BA',
'CE' => 'CE',
'DF' => 'DF',
'ES' => 'ES',
'GO' => 'GO',
'MA' => 'MA',
'MG' => 'MG',
'MS' => 'MS',
'MT' => 'MT',
'PA' => 'PA',
'PB' => 'PB',
'PE' => 'PE',
'PI' => 'PI',
'PR' => 'PR',
'RJ' => 'RJ',
'RN' => 'RN',
'RO' => 'RO',
'RR' => 'RR',
'RS' => 'RS',
'SC' => 'SC',
'SE' => 'SE',
'SP' => 'SP',
'TO' => 'TO',
'recursive' => -1
);
View command
$this->set('uf', $uf);
And in the view I have the search filter
<td style="float: left;">
<div id="Grupo_ano" class="control-group">
<label class="control-label">UF</label>
<div class="controls">
<div class="input-prepend input-append">
<?php
echo $this->Form->select(
'Filtro.uf',
$uf,
array(
'class' => 'chzn-select-deselect',
'data-placeholder' => 'Selecione',
'label' => false,
'div'=> false,
'style' => 'width: 110px;',
)
);
?>
</div>
</div>
</div>
</td>
When I query in the filter I get this error and only with this filter
Error: SQLSTATE [42S22]: Column not found: 1054 Unknown column 'EntitiesEndereco.uf' in 'where clause'
Does anyone know what can be wrong, they are all at the same index level