✏️ 正在编辑: TabelaFator.php
路径:
/srv/systems_dir/yuppiecred-bkp/application/models/TabelaFator.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Model_TabelaFator { private $_id; private $_bancoId; private $_tabelaId; private $_convenioId; private $_tipo; private $_prazo; private $_fator; private $_dia; private $_dbTable; private $_limiteSaque; public function getId() { return $this->_id; } public function setId($id) { $this->_id = $id; } public function getBancoId() { return $this->_bancoId; } public function setBancoId($bancoId) { $this->_bancoId = $bancoId; } public function getTabelaId() { return $this->_tabelaId; } public function setTabelaId($tabelaId) { $this->_tabelaId = $tabelaId; } public function getConvenioId() { return $this->_convenioId; } public function setConvenioId($convenioId) { $this->_convenioId = $convenioId; } public function getPrazo() { return $this->_prazo; } public function setPrazo($prazo) { $this->_prazo = $prazo; } public function getFator() { return $this->_fator; } public function setFator($fator) { $this->_fator = str_replace(',', '.', $fator); } public function getDia() { return $this->_dia; } public function setDia($dia=null) { $this->_dia = $dia ? $dia : null; } public function getTipo() { return $this->_tipo; } public function setTipo($tipo) { $this->_tipo = $tipo; } public function getLimiteSaque() { return $this->_limiteSaque; } public function setLimiteSaque($limiteSaque) { $this->_limiteSaque = $limiteSaque; } public function __construct($options = null) { $this->_dbTable = new Model_DbTable_TabelaFator(); if (is_array($options)) { $this->setOptions($options); } } public function setOptions(array $options) { $methods = get_class_methods($this); foreach ($options as $key => $value) { $explode = explode('_', $key); $methodName = ''; foreach ($explode as $v) { $methodName .= ucfirst($v); } $key = $methodName != '' ? $methodName : $key; $method = 'set' . ucfirst($key); if (in_array($method, $methods)) { $this->$method($value); } } return $this; } public function _toArray() { $info = $this->_dbTable->info(); $methods = get_class_methods($this); $data = array(); foreach ($info['cols'] as $key) { $col = $key; $explode = explode('_', $key); $methodName = ''; foreach ($explode as $v) { $methodName .= ucfirst($v); } $key = $methodName != '' ? $methodName : $key; $method = 'get' . ucfirst($key); if (in_array($method, $methods)) { $data[$col] = $this->$method(); } } return $data; } /** * Insere ou altera o registro passado por parâmetro * @param Model_TabelaFator $tabela */ public function salvar(Model_TabelaFator $tabela) { if ($tabela->getId() > 0) { $this->_dbTable->update($tabela->_toArray(), 'id = ' . $tabela->getId()); return $tabela->getId(); } else { return $this->_dbTable->insert($tabela->_toArray()); } } /** * Exclui o registro passado por parâmetro * @param int $id * @return int The number of rows deleted */ public function excluir($id) { if ($id > 0) { return $this->_dbTable->delete('id = ' . $id); } return null; } /** * Retorna uma lista * @param string $where * @param string $order * @param int $count * @param int $offset * @return array */ public function listar($fields, $order = null, $count = null, $page = null) { $select = $this->_dbTable->select(); if (!empty($fields['banco'])) { $select->where("banco_id = {$fields['banco']}"); } if (!empty($fields['tabela'])) { $select->where("tabela_id = {$fields['tabela']}"); } if (!empty($fields['tipo'])) { $select->where("tipo = {$fields['tipo']}"); } if (!empty($fields['convenio'])) { $select->where("convenio_id = {$fields['convenio']}"); } if (!empty($fields['prazo'])) { $select->where("prazo = {$fields['prazo']}"); } if (!empty($fields['dia'])) { $select->where("dia = {$fields['dia']}"); } if (!empty($fields['limite_saque'])) { $select->where("limite_saque = {$fields['limite_saque']}"); } if ($order) { $select->order($order); } if ($page) { $paginator = Zend_Paginator::factory($select); $paginator->setCurrentPageNumber($page); $paginator->setItemCountPerPage($count ?? 100); return $paginator; } return $this->_dbTable->fetchAll($select); } /** * Retorna um fetchRow do item passado por parâmetro * @param int $id * @return Zend_Db_Table_Row_Abstract | null */ public function exibir($id) { return $this->_dbTable->fetchRow('id = ' . $id); } public function getFatores($bancoId = null, $convenioId = null, $prazo = null) { $where = array(); $hoje = date('d', time()); $where["dia = ? OR dia = '' OR dia IS NULL"] = $hoje; if (!empty($bancoId) && !empty($convenioId)) { $where["fatores.banco_id = ?"] = $bancoId; $where["fatores.convenio_id = ?"] = $convenioId; } if (!empty($prazo)) { $where["fatores.prazo = ?"] = $prazo; } $fatores = $this->_dbTable->getFatores($where); if(!empty($fatores)){ $urlSistema = Yuppie_Auth::getSiteKey(); $data = date('dmY', time()); $filePath = "/var/log/sistemayuppie/zf_log_{$urlSistema}_" . $data . ".txt"; $log = new Zend_Log( new Zend_Log_Writer_Stream($filePath) ); $banco = new Model_Banco(); $comissaoDb = new Model_DbTable_Contrato(); if(count($fatores) > 0){ $fatoresNovo = []; $fatoresRefin = []; $fatoresCartao = []; foreach( $fatores as $fator ){ $dadosBanco = $banco->exibir($fator['banco_id']); $dadosBanco->importacao_valor_contrato = 0; $dados = [ 'banco_id' => $fator['banco_id'], 'corretor_id' => Yuppie_Auth::getIdentity()->corretor_id, 'tabela_id' => $fator['tabela_id'], 'convenio_id' => $fator['convenio_id'], 'tipo' => $fator['tipo'], 'prazo' => $fator['prazo'], 'data_emissao' => Zend_Date::now()->get("yyyy-MM-dd"), ]; // $comissao = $comissaoDb->getComissaoCorretor($dados, $dadosBanco, $log, true); $fator['comissao'] = $comissao ? $comissao['percentual']['comissao'] : null; $fator['base_comissao_valor'] = $comissao ? $comissao['percentual']['base_comissao_valor'] : null; $fator['bonus'] = $comissao ? $comissao['percentual']['bonus'] : null; $fator['base_comissao_bonus'] = $comissao ? $comissao['percentual']['base_comissao_bonus']: null; if( in_array($fator['tipo'], ['AGREGACAO DE MARGEM', 'AUMENTO SALARIAL', 'NOVO']) ){ $fatoresNovo[] = $fator; } if( in_array($fator['tipo'], ['REFINANCIAMENTO', 'PORTABILIDADE', 'REFIN DA PORTABILIDADE'])){ $fatoresRefin[] = $fator; } if( in_array($fator['tipo'], ['PLASTICO', 'ATIVACAO', 'SAQUE', 'SAQUE COM SEGURO', 'COMPLEMENTAR', 'COMPLEMENTAR COM SEGURO'])){ $fatoresCartao[] = $fator; } } } return [ 'fatoresNovo' => $fatoresNovo, 'fatoresRefin' => $fatoresRefin, 'fatoresCartao' => $fatoresCartao ]; } return [ 'fatoresNovo' => [], 'fatoresRefin' => [], 'fatoresCartao' => [] ]; } public function getFatoresSimulador($fields) { $hoje = date('d', time()); $select = $this->_dbTable->select() ->where("dia = $hoje OR dia = '' OR dia IS NULL") ->where("excluido <> 1"); if( isset($fields['fator_id']) && !empty($fields['fator_id']) ){ $select->where("id = {$fields['fator_id']}"); } $result = $this->_dbTable->fetchRow($select); return $result->toArray(); } public function getDadosFator($id) { if( empty($id) ){ return; } $select = $this->_dbTable->select() ->where('id = ?', $id) ->where("excluido <> 1"); $result = $this->_dbTable->fetchRow($select); return $result->toArray(); } public function importarCoeficientesCetelem() { $count = 0; $coeficientes = Core_CoeficientesCetelem::importar(); $bancoId = Model_Banco::bancoPorNome('Cetelem'); foreach ($coeficientes as $key => $dia){ $convenio = (new Model_DbTable_Convenio())->fetchRow(['nome = ?' => $dia['convenio']]); foreach ($dia['fator'] as $v){ if($v['taxa'] == 'TAXA') continue; $nomeTabela = "PZ{$v['prazo']}-TX".str_replace(array( '.' ), array( ',' ), $v['taxa']."-".$dia['tipo']); $tabelaId = (new Model_Tabela())->getOrCreateTabelaByNome(null, $nomeTabela, $convenio->id, $bancoId); $existe = (new Model_DbTable_TabelaFator())->fetchRow([ 'banco_id = ?' => $bancoId, 'tabela_id = ?' => $tabelaId, 'convenio_id = ?' => $convenio->id, 'prazo = ?' => $v['prazo'], 'tipo = ?' => $dia['tipo'], 'dia = ?' => $dia['dia'], ]); if(!$existe){ $dadosInsert = [ 'banco_id' => (int) $bancoId, 'convenio_id' => (int) $convenio->id, 'tabela_id' => (int) $tabelaId, 'tipo' => $dia['tipo'], 'prazo' => $v['prazo'], 'dia' => $dia['dia'], 'fator' => $v['coeficiente'] ]; $fator = new Model_TabelaFator($dadosInsert); $result = $fator->salvar($fator); }else{ $existe->fator = $v['coeficiente']; $result = $existe->save(); } if( $result != null ){ $count++; } } } return $count; } /** * @param $simulacao * @return array */ public function getFatoresSimulacaoAberta($simulacao, int $limit = 3, $order = ['prazo_maximo DESC', 'fator DESC']) { $fatoresBancos = []; $fatoresCalcular = $this->_dbTable->getFatoresSimulacaoAberta( (int)$simulacao->convenio_id, $simulacao->tipo_simulacao, $limit, $order ); if (empty($fatoresCalcular) || count($fatoresCalcular) <= 0) { return []; } $valor = number_format($simulacao->valor,2,',', '.'); $formSimulador = new Form_SimuladorTabelaFator(); foreach ( $fatoresCalcular as $key => $fator ) { $fator['fator'] = number_format($fator['fator'],5,',', '.'); $dados = [ 'valor_emprestimo' => $simulacao->tipo_valor == 'CREDITO' ? $valor : 0, 'parcela' => $simulacao->tipo_valor == 'PARCELA' ? $valor : 0, 'prazo' => $fator['prazo_maximo'], 'fator' => $fator['fator'] ]; $fatoresBancos[$key] = $formSimulador->calculaAvulso($dados); $fatoresBancos[$key]['banco_id'] = $fator['banco_id']; $fatoresBancos[$key]['banco_nome'] = $fator['banco']; } return $fatoresBancos; } }
💾 保存文件
← 返回文件管理器