✏️ 正在编辑: ComissionamentoGrupo.php
路径:
/srv/systems_dir/yuppiecred-bkp/application/models/ComissionamentoGrupo.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Model_ComissionamentoGrupo extends Model_Abstract_Comissionamento { private $_grupoId; public function getGrupoId() { return $this->_grupoId; } public function setGrupoId($grupoId) { $this->_grupoId = $grupoId; } /** * Retorna uma lista * @param string $where * @param string $order * @param int $count * @param int $offset * @return array */ public function listar($fields, $order = 'produto ASC') { $params = array(); $where = null; if( isset($fields['banco_id']) && !empty($fields['banco_id']) ){ $params[] = "banco_id = " . $fields['banco_id']; } if( isset($fields['grupo_id']) && !empty($fields['grupo_id']) ){ $params[] = "grupo_id = " . $fields['grupo_id']; } if( isset($fields['produto']) && !empty($fields['produto']) ){ $params[] = "produto = '" . $fields['produto'] . "'"; } if( isset($fields['tipo_produto']) && !empty($fields['tipo_produto']) ){ $params[] = "tipo_produto = '" . $fields['tipo_produto'] . "'"; } if( isset($fields['data_validade']) && !empty($fields['data_validade']) ){ $params[] = "data_validade = STR_TO_DATE('" . $fields['data_validade'] . "', '%d/%m/%Y')"; } if( isset($fields['tabela_id']) && !empty($fields['tabela_id']) ){ $params[] = "tabela_id = " . $fields['tabela_id']; } if( isset($fields['convenio_id']) && !empty($fields['convenio_id']) ){ $params[] = "convenio_id = " . $fields['convenio_id']; } if( isset($fields['prazo']) && !empty($fields['prazo']) ){ $params[] = "prazo = '{$fields['prazo']}'"; } if( isset($fields['cpf']) && !empty($fields['cpf']) ){ $grupo = new Model_GrupoComissao(); $dadosGrupo = $grupo->getByCpf($fields['cpf']); if( $dadosGrupo != null ){ $params[] = "grupo_id = " . $dadosGrupo['id']; } } if( count($params) > 0 ){ $where = implode(" AND ", $params); $dbtable = new Model_DbTable_ComissionamentoGrupo(); return $dbtable->fetchAll($where, $order); } } public function listarComPercentualValido($fields, $order = 'produto ASC') { if( count($fields) <= 0 ){ throw new Core_Exception('Atenção! Você deve informar pelo menos uma opção de busca.'); } $params = array( "comissionamento.excluido <> 1" ); $where = null; $restringirDataFinal = true; if( !empty($fields['banco_id']) ){ $params[] = "comissionamento.banco_id = " . $fields['banco_id']; } if( !empty($fields['grupo_id']) ){ $params[] = "comissionamento.grupo_id = " . $fields['grupo_id']; } if( !empty($fields['produto']) ){ $params[] = "comissionamento.produto = '" . $fields['produto'] . "'"; } if( !empty($fields['tipo_produto']) ){ $params[] = "comissionamento.tipo_produto = '" . $fields['tipo_produto'] . "'"; } if( !empty($fields['base_comissao']) ){ $params[] = "comissionamento.base_comissao = '" . $fields['base_comissao'] . "'"; } if( !empty($fields['data_validade']) ){ $params[] = "comissionamento.data_validade = STR_TO_DATE('" . $fields['data_validade'] . "', '%d/%m/%Y')"; } if( !empty($fields['tabela_id']) ){ $params[] = "comissionamento.tabela_id = " . $fields['tabela_id']; } if( !empty($fields['convenio_id']) ){ $params[] = "comissionamento.convenio_id = " . $fields['convenio_id']; } if( !empty($fields['prazo']) ){ $params[] = "comissionamento.prazo_de <= '{$fields['prazo']}'"; $params[] = "comissionamento.prazo_a >= '{$fields['prazo']}'"; } if( isset($fields['prazo_de']) && is_numeric($fields['prazo_de']) && $fields['prazo_de'] >= 0 ){ $params[] = "comissionamento.prazo_de >= '{$fields['prazo_de']}'"; } if( isset($fields['prazo_a']) && is_numeric($fields['prazo_a']) && $fields['prazo_a'] >= 0 ){ $params[] = "comissionamento.prazo_a <= '{$fields['prazo_a']}'"; } if( !empty($fields['idade_inicial']) && $fields['idade_inicial'] >= 0 ){ $params[] = "comissionamento.idade_inicial >= '{$fields['idade_inicial']}'"; } if( !empty($fields['idade_final']) && $fields['idade_final'] >= 0 ){ $params[] = "comissionamento.idade_final <= '{$fields['idade_final']}'"; } if( !empty($fields['data_atualizacao_de']) ){ $params[] = "perc.data_cadastro >= STR_TO_DATE('" . $fields['data_atualizacao_de'] . "', '%d/%m/%Y')"; } if( !empty($fields['data_atualizacao_a']) ){ $params[] = "perc.data_cadastro <= STR_TO_DATE('" . $fields['data_atualizacao_a'] . "', '%d/%m/%Y')"; } if( !empty($fields['data_final_de']) ){ $params[] = "perc.data_final >= STR_TO_DATE('" . $fields['data_final_de'] . "', '%d/%m/%Y')"; $restringirDataFinal = false; } if( !empty($fields['data_final_a']) ){ $params[] = "perc.data_final <= STR_TO_DATE('" . $fields['data_final_a'] . "', '%d/%m/%Y')"; $restringirDataFinal = false; } if( !empty($fields['cpf']) ){ $grupo = new Model_GrupoComissao(); $dadosGrupo = $grupo->getByCpf($fields['cpf']); if( $dadosGrupo != null ){ $params[] = "comissionamento.grupo_id = " . $dadosGrupo['id']; } } if( !empty($fields['comissao_ativa']) ){ if( $fields['comissao_ativa'] == 1 ){ $params[] = "perc.id is not null"; }elseif( $fields['comissao_ativa'] == 2 ){ $params[] = "perc.id is null"; } } if( count($params) > 0 ){ $where = implode(" AND ", $params); } $dbtable = new Model_DbTable_ComissionamentoGrupo(); $perc = $dbtable->getAdapter()->select() ->from(array( 'percentual' => 'tb_comissionamento_grupo_percentual' )) ->order('percentual.id DESC'); if( $restringirDataFinal ){ $perc->where("percentual.excluido <> 1 AND percentual.data_final IS NULL OR data_final = '0000-00-00'"); } $percColumns = ['perc_comissao' => 'comissao', 'adiantamento', 'diferimento', 'bonus', 'data_cadastro', 'data_inicial', 'base_comissao_valor', 'base_comissao_adiantamento', 'base_comissao_diferimento', 'base_comissao_bonus', 'perc_data_inicial' => 'data_inicial', 'perc_data_final' => 'data_final', 'perc_data_base' => 'data_base']; $select = $dbtable->getAdapter()->select() ->from(array( 'comissionamento' => 'tb_comissionamento_grupo' )) ->joinLeft(array( 'perc' => $perc ), 'perc.comissionamento_id = comissionamento.id', $percColumns) ->joinLeft(array( 'grupos' => 'tb_tipos' ), 'grupos.id = comissionamento.grupo_id', array( 'grupo_nome' => 'descricao' )) ->joinLeft(array( 'bancos' => 'tb_bancos' ), 'bancos.id = comissionamento.banco_id', array( 'banco_nome' => 'nome' )) ->joinLeft(array( 'tabelas' => 'tb_tabelas' ), 'tabelas.id = comissionamento.tabela_id', array( 'tabela_nome' => 'nome' )) ->joinLeft(array( 'convenios' => 'tb_convenios' ), 'convenios.id = comissionamento.convenio_id', array( 'convenio_nome' => 'nome' )) ->where($where)->order(array( 'produto ASC' )); return $dbtable->getAdapter()->fetchAll($select); } private function _getComissaoOuBonus($campo, $grupoId, $bancoId, $tabelaId, $convenioId, $codigoProduto, $prazo, $dataEmissao, $valorLiquido = 0, $tipoContrato = null, $baseComissao = null) { $valorComissao = 0; if( $grupoId > 0 && $bancoId > 0 && $tabelaId > 0 && $convenioId > 0 && $prazo >= 0 && $dataEmissao != null ){ //verifica se a comissão do banco está desativada $banco = new Model_Banco(); $dadosBanco = $banco->exibir($bancoId); if( $dadosBanco->desativar_comissoes == 1 ){ return 0; } $comissionamento = new Model_DbTable_ComissionamentoGrupo(); $produto = $comissionamento->getAdapter()->select()->from(array( 'produtos' => 'tb_produtos' ), array( 'tipo' )) ->where("codigo = '" . $codigoProduto . "'") ->where("banco_id = " . $bancoId) ->where("produtos.excluido <> 1"); if( $tipoContrato ){ $produto->where("tipo = '" . $tipoContrato . "'"); } $tipoProduto = $comissionamento->getAdapter()->fetchCol($produto); if( !$tipoProduto[0] ){ // throw new Core_Exception('Tipo de produto ou Banco não cadastrado para o código do produto (' . $codigoProduto . ')'); return 0; } $where = "grupo_id = " . $grupoId . " AND banco_id = " . $bancoId . " AND tabela_id = '" . $tabelaId . "'" . " AND convenio_id = " . $convenioId . " AND (prazo_de <= '" . $prazo . "' AND prazo_a >= '" . $prazo . "')" . " AND tipo_produto = '" . $tipoProduto[0] . "'" . " AND base_comissao = '" . $baseComissao . "'"; if( $dadosBanco->importacao_valor_contrato > 0 && $valorLiquido > 0 ){ $where .= " AND (((valor_de = 0 AND valor_a = 0 OR valor_de IS NULL AND valor_a IS NULL)) OR (valor_de <= " . str_replace(array( '.', ',' ), array( '', '.' ), $valorLiquido) . " AND valor_a >= " . str_replace(array( '.', ',' ), array( '', '.' ), $valorLiquido) . "))"; } $dadosComissao = $comissionamento->fetchRow($where, 'id DESC'); if( $dadosComissao != null ){ $comissaoPercentual = $dadosComissao->findDependentRowset( 'Model_DbTable_ComissionamentoGrupoPercentual', null, $dadosComissao->select()->order("data_inicial ASC")); if( count($comissaoPercentual) > 0 ){ foreach ( $comissaoPercentual as $comissao ) { if( $comissao['data_final'] != null ){ if( $dataEmissao >= $comissao['data_inicial'] && $dataEmissao <= $comissao['data_final'] ){ $valorComissao = number_format($comissao[$campo], 2, ',', '.'); break; } } elseif( $dataEmissao >= $comissao['data_inicial'] ){ $valorComissao = number_format($comissao[$campo], 2, ',', '.'); break; } } } } } return $valorComissao; } public function getComissao($grupoId, $bancoId, $tabelaId, $convenioId, $codigoProduto, $prazo, $dataEmissao, $valorLiquido = 0, $tipoContrato = null, $baseComissao = null) { return $this->_getComissaoOuBonus('comissao', $grupoId, $bancoId, $tabelaId, $convenioId, $codigoProduto, $prazo, $dataEmissao, $valorLiquido, $tipoContrato, $baseComissao); } public function getBonus($grupoId, $bancoId, $tabelaId, $convenioId, $codigoProduto, $prazo, $dataEmissao, $valorLiquido = 0, $tipoContrato = null, $baseComissao = null) { return $this->_getComissaoOuBonus('bonus', $grupoId, $bancoId, $tabelaId, $convenioId, $codigoProduto, $prazo, $dataEmissao, $valorLiquido, $tipoContrato, $baseComissao); } public function getDiferimentoCorretor($grupoId, $bancoId, $tabelaId, $convenioId, $codigoProduto, $prazo, $dataEmissao, $valorLiquido = 0) { return $this->_getComissaoOuBonus('diferimento', $grupoId, $bancoId, $tabelaId, $convenioId, $codigoProduto, $prazo, $dataEmissao, $valorLiquido); } public function existeComissao($grupoId, $bancoId, $convenioId, $tabelaId, $tipoProduto, $prazoDe, $prazoA, $baseComissao, $taxaDe, $taxaA) { $dbtable = new Model_DbTable_ComissionamentoGrupo(); $where = "tipo_produto = '" . $tipoProduto . "'" . " AND banco_id = " . $bancoId . " AND convenio_id = " . $convenioId . " AND tabela_id = " . $tabelaId . " AND base_comissao = '" . $baseComissao . "'" . " AND ((prazo_a >= '{$prazoDe}' AND prazo_de <= '{$prazoDe}') OR " . "(prazo_a >= '{$prazoA}' AND prazo_de <= '{$prazoA}'))" . " AND ((taxa_contrato_a >= '{$taxaDe}' AND taxa_contrato_de <= '{$taxaDe}') OR " . "(taxa_contrato_a >= '{$taxaA}' AND taxa_contrato_de <= '{$taxaA}'))" . " AND grupo_id = " . $grupoId; $result = $dbtable->fetchRow($where); if( $result != null ){ return $result; } return false; } }
💾 保存文件
← 返回文件管理器