✏️ 正在编辑: ComissionamentoCorretor.php
路径:
/srv/systems_dir/yuppiecred/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', $apenasVigentes = true, $group = 'comissionamento.id') { 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( !empty($fields['data_final_de']) ){ $params[] = "perc.data_final >= STR_TO_DATE('" . $fields['data_final_de'] . "', '%d/%m/%Y')"; $apenasVigentes = false; } if( !empty($fields['data_final_a']) ){ $params[] = "perc.data_final <= STR_TO_DATE('" . $fields['data_final_a'] . "', '%d/%m/%Y')"; $apenasVigentes = false; } 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"; $params[] = "comissionamento.desativado<>1"; $params[] = "perc.data_final is null OR perc.data_final = '0000-00-00'"; } elseif ($fields['comissao_ativa'] == 2) { $params[] = "(perc.id is null OR comissionamento.desativado=1)"; } } 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") ->order('percentual.id DESC'); if ($apenasVigentes) { $perc->where("percentual.data_final IS NULL OR data_final = '0000-00-00'"); } $percColunms = [ 'perc_comissao' => 'comissao', 'bonus', 'diferimento', 'data_cadastro', 'usuario_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) ->group($group); 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); } } public function exportarComissoes($comissoes) { $dadosCsv = array(); $dadosCsv[] = implode(";", array( 'Convênio', 'Tabela', 'Código Tabela', 'Código Produto', 'Descrição Produto', 'Tipo', 'Base Comissão Valor', 'Base Comissão Bônus', 'Base Comissão Adiantamento', 'Base Comissão Diferimento', 'Prazo De', 'Prazo A', 'Valor Fixo', 'Valor De', 'Valor A', 'Validar faixa por', 'Comissão (%)', 'Bônus (%)', 'Adiantamento (%)', 'Diferimento (%)', 'Data Inicial', 'Data Base (E/L)', 'Banco', 'Corretor', 'Grupo Comissão', 'Taxa Contrato Inicial (%)', 'Taxa Contrato Final (%)', 'Idade Inicial', 'Idade Final', 'Incidir sobre', 'Espécie', 'Data Final', 'ID Comissão', 'Nome Corretor', )); foreach( $comissoes as $comissao ){ $dadosCsv[] = implode(";", [ $comissao['convenio_nome'], $comissao['tabela_nome'], $comissao['codigo_tabela'], '', '', $comissao['tipo_produto'], $comissao['base_comissao_valor'], $comissao['base_comissao_bonus'], $comissao['base_comissao_adiantamento'], $comissao['base_comissao_diferimento'], $comissao['prazo_de'], $comissao['prazo_a'], number_format($comissao['valor_fixo'], 2, ',', '.'), number_format($comissao['valor_de'], 2, ',', '.'), number_format($comissao['valor_a'], 2, ',', '.'), $comissao['validar_faixa'], number_format($comissao['perc_comissao'], 2, ',', '.'), number_format($comissao['perc_comissao_bonus'], 2, ',', '.'), number_format($comissao['perc_comissao_adiantamento'], 2, ',', '.'), number_format($comissao['perc_comissao_diferimento'], 2, ',', '.'), $comissao['perc_data_inicial'], $comissao['perc_data_base'], $comissao['banco_nome'], $comissao['corretor_id'] ?? '', $comissao['grupo_nome'] ?? '', number_format($comissao['taxa_contrato_de'], 2, ',', '.'), number_format($comissao['taxa_contrato_a'], 2, ',', '.'), $comissao['idade_inicial'], $comissao['idade_final'], !empty($comissao['incidir_sobre']) ? 'Empresa' : 'Contrato', !empty($comissao['especie']) ? $comissao['especie'] : '', $comissao['perc_data_final'], $comissao['id'], $comissao['corretor'] ?? '', ]); } $exportCsv = mb_convert_encoding(implode("\n", $dadosCsv), 'ISO-8859-1', 'UTF-8'); $name = "YUPPIE_COMISSAO_PREVISTA_CORRETOR_" . time() . ".csv"; $fileName = getcwd() . "/downloads/" . $name; $fp = fopen($fileName, "w+"); fwrite($fp, $exportCsv); fclose($fp); return $name; } }
💾 保存文件
← 返回文件管理器