✏️ 正在编辑: ComissionamentoCorretor.php
路径:
/srv/systems_dir/yuppiecred-lidernegocios/application/models/ComissionamentoCorretor.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Model_ComissionamentoCorretor extends Model_Abstract_Comissionamento { private $_corretorId; public function getCorretorId() { return $this->_corretorId; } public function setCorretorId($corretorId) { $this->_corretorId = $corretorId; return $this; } /** * Retorna uma lista * @param string $where * @param string $order * @param int $count * @param int $offset * @return array */ public function listar($fields, $order = 'tipo_produto ASC') { $params = array(); $where = null; if( isset($fields['banco_id']) && !empty($fields['banco_id']) ){ $params[] = "banco_id = " . $fields['banco_id']; } if( isset($fields['corretor_id']) && !empty($fields['corretor_id']) ){ $params[] = "corretor_id = " . $fields['corretor_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']) ){ $corretor = new Model_Corretor(); $dadosCorretor = $corretor->getByCpf($fields['cpf']); if( $dadosCorretor != null ){ $params[] = "corretor_id = " . $dadosCorretor['id']; } } if( count($params) > 0 ){ $where = implode(" AND ", $params); $dbtable = new Model_DbTable_ComissionamentoCorretor(); return $dbtable->fetchAll($where, $order); } } public function listarPercValido($fields, $order = 'tipo_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; if( isset($fields['banco_id']) && !empty($fields['banco_id']) ){ $params[] = "comissionamento.banco_id = " . $fields['banco_id']; } if( isset($fields['corretor_id']) && !empty($fields['corretor_id']) ){ $params[] = "corretor_id = " . $fields['corretor_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['base_comissao']) && !empty($fields['base_comissao']) ){ $params[] = "base_comissao = '" . $fields['base_comissao'] . "'"; } 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[] = "convenios.id = " . $fields['convenio_id']; } if( isset($fields['prazo']) && !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( isset($fields['supervisor_id']) && !empty($fields['supervisor_id']) ){ $params[] = ("gerentes.id = '{$fields['supervisor_id']}'"); } if( isset($fields['cpf']) && !empty($fields['cpf']) ){ $corretor = new Model_Corretor(); $dadosCorretor = $corretor->getByCpf($fields['cpf']); if( $dadosCorretor != null ){ $params[] = "corretor_id = " . $dadosCorretor['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_ComissionamentoCorretor(); $perc = $dbtable->getAdapter()->select() ->from(array( 'percentual' => 'tb_comissionamento_corretor_percentual' )) ->where("percentual.excluido <> 1 AND percentual.data_final IS NULL OR data_final = '0000-00-00'") ->order('percentual.id DESC'); $percColunms = [ 'perc_comissao' => 'comissao', 'bonus', 'diferimento', 'data_cadastro', 'data_inicial', 'base_comissao_valor', 'base_comissao_bonus', 'base_comissao_diferimento', 'perc_data_inicial' => 'data_inicial', 'perc_data_final' => 'data_final', 'perc_data_base' => 'data_base']; $select = $dbtable->getAdapter()->select() ->from(array( 'comissionamento' => 'tb_comissionamento_corretor' )) ->joinLeft(array( 'perc' => $perc ), 'perc.comissionamento_id = comissionamento.id', $percColunms) ->joinLeft(array( 'corretores' => 'tb_corretores' ), 'corretores.id = comissionamento.corretor_id', array( 'corretor' => 'corretores.nome' )) ->joinLeft(array( "rotas" => "tb_rotas" ), "corretores.rota_id = rotas.id", array()) ->joinLeft(array( "gerentes" => "tb_gerente_rota" ), "rotas.gerente_id = gerentes.id", array( 'supervisor' => 'gerentes.nome' )) ->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($order); if( Yuppie_Auth::getIdentity()->grupo == 'Supervisor' ){ if( !array_key_exists('rotas', $select->getPart(Zend_Db_Select::FROM)) ){ $select->joinLeft(array( 'rotas' => 'tb_rotas' ), 'corretores.rota_id = rotas.id', array()); } $select->where('rotas.gerente_id = ' . Yuppie_Auth::getIdentity()->id); } return $dbtable->getAdapter()->fetchAll($select); } } public function getComissao($tipoProduto, $corretorId, $bancoId, $prazo, $dataEmissao) { if( !empty($tipoProduto) && !empty($empresaId) && !empty($grupoComissao) && !empty($dataEmissao) && !empty($prazo) ){ $dbtable = new Model_DbTable_ComissionamentoCorretor(); $where = "tipo_produto = " . $tipoProduto . " AND corretor_id = " . $corretorId . " AND banco_id = " . $bancoId . " AND prazo = '" . $prazo . "'" . " AND (data_validade >= STR_TO_DATE('" . $dataEmissao . "', '%d/%m/%Y') OR data_validade IS NULL) " ." AND desativado <> 1"; return $dbtable->fetchRow($where, "id DESC"); } return null; } /** * Verifica se a comissão existe * @param int $corretorId * @param int $bancoId * @param int $produtoId * @param int $prazo * @return boolean */ public function existeComissao($corretorId, $bancoId, $tabelaId, $convenioId, $tipoProduto, $prazoDe, $prazoA, $baseComissao, $valorDe, $valorA) { $dbtable = new Model_DbTable_ComissionamentoCorretor(); $params = array( "excluido <> 1" ); if( $tipoProduto ){ $params[] = "tipo_produto = '{$tipoProduto}'"; } if( $corretorId > 0 ){ $params[] = "corretor_id = '{$corretorId}'"; } if( $bancoId > 0 ){ $params[] = "banco_id = '{$bancoId}'"; } if( $tabelaId > 0 ){ $params[] = "tabela_id = '{$tabelaId}'"; } if( $convenioId > 0 ){ $params[] = "convenio_id = '{$convenioId}'"; } if( $prazoDe >= 0 ){ $params[] = "prazo_de <= '{$prazoDe}'"; } if( $prazoA >= 0 ){ $params[] = "prazo_a >= '{$prazoA}'"; } if( $valorDe >= 0 ){ $params[] = "valor_de <= '{$valorDe}'"; } if( $valorA >= 0 ){ $params[] = "valor_a >= '{$valorA}'"; } if( $baseComissao ){ $params[] = "base_comissao = '{$baseComissao}'"; } $where = implode(" AND ", $params); $result = $dbtable->fetchRow($where); if( $result != null ){ return $result; } return false; } public function insereSeNaoExistir(array $dados) { $dbtable = new Model_DbTable_ComissionamentoCorretor(); return $dbtable->insert($dados); } /** * * @param array $corretores para quem será exportado * @param array $comissoes quais comissões serão exportadas * @return int */ public function exportarComissaoCorretor(array $corretores, array $comissoes) { $cont = 0; $percentual = new Model_ComissionamentoCorretorPercentual(); foreach ( $comissoes as $c ) { $dadosPercentual = $percentual->exibir($c); $dadosComissionamento = $dadosPercentual->findParentRow('Model_DbTable_ComissionamentoCorretor'); foreach ( $corretores as $e ) { if( ($result = $this->existeComissao($e, $dadosComissionamento['banco_id'], $dadosComissionamento['tabela_id'], $dadosComissionamento['convenio_id'], $dadosComissionamento['tipo_produto'], $dadosComissionamento['prazo_de'], $dadosComissionamento['prazo_a'], $dadosComissionamento['base_comissao'], $dadosComissionamento['valor_de'], $dadosComissionamento['valor_a'])) != false ){ $comissionamentoId = $result['id']; } else { $this->setCorretorId($e); $this->setPrazoDe($dadosComissionamento['prazo_de']); $this->setValorDe($dadosComissionamento['valor_de']); $this->setValorA($dadosComissionamento['valor_a']); $this->setPrazoA($dadosComissionamento['prazo_a']); $this->setTipoProduto($dadosComissionamento['tipo_produto']); $this->setBaseComissao($dadosComissionamento['base_comissao']); $this->setBancoId($dadosComissionamento['banco_id']); $this->setConvenioId($dadosComissionamento['convenio_id']); $this->setTabelaId($dadosComissionamento['tabela_id']); $this->setValorFixo(number_format($dadosComissionamento['valor_fixo']), 2, ',', '.'); $comissionamentoId = $this->salvar($this); } if( $comissionamentoId > 0 ){ $result = $this->_dataFinalComissaoCorretor($e, $dadosComissionamento['prazo_de'], $dadosComissionamento['prazo_a'], $dadosComissionamento['tipo_produto'], $dadosComissionamento['banco_id'], $dadosComissionamento['convenio_id'], $dadosComissionamento['tabela_id'], $dadosPercentual['data_inicial'], $dadosComissionamento['base_comissao'], $dadosComissionamento['valor_de'], $dadosComissionamento['valor_a']); $percentual->setComissao($dadosPercentual['comissao']) ->setComissionamentoId($comissionamentoId) ->setDataInicial($dadosPercentual['data_inicial']) ->setDataFinal($dadosPercentual['data_final']); if( $percentual->salvar($percentual) > 0 ){ $cont++; } } } } return $cont; } public function _dataFinalComissaoCorretor($corretorId, $prazoDe, $prazoA, $tipoProduto, $bancoId, $convenioId, $tabelaId, $dataInicial, $baseComissao, $valorDe, $valorA) { $model = new Model_ComissionamentoCorretorPercentual(); $dadosPercentual = array( 'corretor_id' => $corretorId, 'prazo_de' => $prazoDe, 'prazo_a' => $prazoA, 'tipo_produto' => $tipoProduto, 'banco_id' => $bancoId, 'convenio_id' => $convenioId, 'tabela_id' => $tabelaId, 'base_comissao' => $baseComissao, 'valor_de' => $valorDe, 'valor_a' => $valorA ); $result = $model->listar($dadosPercentual); if( count($result) > 0 ){ $currentPercentual = new Model_ComissionamentoCorretorPercentual($result[0]); $date = new Zend_Date($dataInicial); $dataFinal = clone $date; $dataFinal->subDay(1); $currentPercentual->setDataFinal($dataFinal); $model->salvar($currentPercentual); } } }
💾 保存文件
← 返回文件管理器