✏️ 正在编辑: ComissionamentoCorretorPercentual.php
路径:
/srv/systems_dir/yuppiecred-bkp/application/models/ComissionamentoCorretorPercentual.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Model_ComissionamentoCorretorPercentual { private $_id; private $_comissionamentoId; private $_dataInicial; private $_dataFinal; private $_dataBase; private $_comissao; private $_bonus; private $_diferimento; private $_baseComissaoValor; private $_baseComissaoBonus; private $_baseComissaoDiferimento; private $_baseComissaoAdiantamento; public function getId() { return $this->_id; } public function setId($id) { $this->_id = $id; return $this; } public function getComissionamentoId() { return $this->_comissionamentoId; } public function setComissionamentoId($comissionamentoId) { $this->_comissionamentoId = $comissionamentoId; return $this; } public function getDataInicial() { return $this->_dataInicial; } public function setDataInicial($dataInicial) { if( !empty($dataInicial) ){ try { $data = new Zend_Date($dataInicial, Zend_Date::DATES, 'pt'); $dataInicial = $data->toString('yyyy-MM-dd'); } catch ( Zend_Date_Exception $e ) { echo $e->getMessage(); $dataInicial = null; } } else { $dataInicial = null; } $this->_dataInicial = $dataInicial; return $this; } public function getDataFinal() { return $this->_dataFinal; } public function setDataFinal($dataFinal) { if( !empty($dataFinal) ){ try { $data = new Zend_Date($dataFinal, Zend_Date::DATES, 'pt'); $dataFinal = $data->toString('yyyy-MM-dd'); } catch ( Zend_Date_Exception $e ) { echo $e->getMessage(); $dataFinal = null; } } else { $dataFinal = null; } $this->_dataFinal = $dataFinal; return $this; } public function getDataBase() { return $this->_dataBase; } public function setDataBase($dataBase) { $this->_dataBase = $dataBase == "L" ? "L" : "E"; } public function getComissao() { return $this->_comissao; } public function setComissao($comissao) { $this->_comissao = String_Refatorar::parseStringToFloat($comissao); return $this; } public function getBonus() { return $this->_bonus; } public function setBonus($bonus) { $this->_bonus = String_Refatorar::parseStringToFloat($bonus); } public function getDiferimento() { return $this->_diferimento; } public function setDiferimento($diferimento) { $this->_diferimento = String_Refatorar::parseStringToFloat($diferimento); } public function getBaseComissaoValor() { return $this->_baseComissaoValor; } public function setBaseComissaoValor($baseComissaoValor) { $this->_baseComissaoValor = $baseComissaoValor; } public function getBaseComissaoBonus() { return $this->_baseComissaoBonus; } public function setBaseComissaoBonus($baseComissaoBonus) { $this->_baseComissaoBonus = $baseComissaoBonus; } public function getBaseComissaoDiferimento() { return $this->_baseComissaoDiferimento; } public function setBaseComissaoDiferimento($baseComissaoDiferimento) { $this->_baseComissaoDiferimento = $baseComissaoDiferimento; } public function getBaseComissaoAdiantamento() { return $this->_baseComissaoAdiantamento; } public function setBaseComissaoAdiantamento($baseComissaoAdiantamento) { $this->_baseComissaoAdiantamento = $baseComissaoAdiantamento; } public function __construct($options = null) { 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() { $dbtable = new Model_DbTable_ComissionamentoCorretorPercentual(); $info = $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_ComissionamentoCorretorPercentual $comissao */ public function salvar(Model_ComissionamentoCorretorPercentual $comissao) { $dbtable = new Model_DbTable_ComissionamentoCorretorPercentual(); if( $comissao->getId() > 0 ){ $dbtable->update($comissao->_toArray(), "id = " . $comissao->getId()); return $comissao->getId(); } else { return $dbtable->insert($comissao->_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 ){ $dbtable = new Model_DbTable_ComissionamentoCorretorPercentual(); return $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(array $fields, $page = null, $limit = null, $order = ['banco', 'convenio', 'tipo_produto', 'comissao DESC'], $range = null) { $dbtable = new Model_DbTable_ComissionamentoCorretorPercentual(); $colunas = array( 'percentuais' => array( 'comissao', 'percentuais.id', 'data_cadastro', 'data_inicial', 'comissionamento_id', 'data_final', 'data_base', 'bonus', 'diferimento', 'base_comissao_valor', 'base_comissao_bonus', 'base_comissao_diferimento', 'base_comissao_adiantamento', ), 'comissionamentos' => array( 'produto', 'prazo', 'tipo_produto', 'valor_de', 'valor_a', 'prazo_de', 'prazo_a', 'taxa_contrato_de', 'taxa_contrato_a', 'base_comissao', 'valor_fixo', 'idade_inicial', 'idade_final', 'incidir_sobre' ), 'tabelas' => array( 'tabela' => 'nome', 'tabela_codigo' => 'codigo', 'tabela_info_adicional' => 'informacao_adicional', 'tabela_id' => 'id' ), 'convenios' => array( 'convenio' => 'nome', 'convenio_id' => 'id' ), 'bancos' => array( 'banco' => 'nome', 'banco_id' => 'id' ), 'corretores' => array( 'corretor' => 'nome' ), 'gerentes' => array( 'supervisor' => 'gerentes.nome' ), 'rotas' => array() ); $select = $dbtable->getAdapter()->select() ->from(array( 'percentuais' => 'tb_comissionamento_corretor_percentual' ), $colunas['percentuais']) ->joinInner(array( 'comissionamentos' => 'tb_comissionamento_corretor' ), 'percentuais.comissionamento_id = comissionamentos.id', $colunas['comissionamentos']) ->joinInner(array( 'tabelas' => 'tb_tabelas' ), 'comissionamentos.tabela_id = tabelas.id', $colunas['tabelas']) ->joinInner(array( 'convenios' => 'tb_convenios' ), 'comissionamentos.convenio_id = convenios.id', $colunas['convenios']) ->joinInner(array( 'bancos' => 'tb_bancos' ), 'comissionamentos.banco_id = bancos.id', $colunas['bancos']) ->joinInner(array( 'corretores' => 'tb_corretores' ), 'corretores.id = comissionamentos.corretor_id', $colunas['corretores']) ->joinInner(array( 'rotas' => 'tb_rotas' ), 'rotas.id = corretores.rota_id', $colunas['rotas']) ->joinInner(array( 'gerentes' => 'tb_gerente_rota' ), 'gerentes.id = rotas.gerente_id', $colunas['gerentes']) ->joinLeft(['comissionamento_empresa' => 'tb_comissionamento'], 'comissionamento_empresa.banco_id = comissionamentos.banco_id AND comissionamento_empresa.convenio_id = comissionamentos.convenio_id AND comissionamento_empresa.tabela_id = comissionamentos.tabela_id AND comissionamento_empresa.tipo_produto = comissionamentos.tipo_produto AND comissionamento_empresa.prazo_de = comissionamentos.prazo_de AND comissionamento_empresa.prazo_a = comissionamentos.prazo_a AND comissionamento_empresa.excluido <> 1 ', []) ->joinLeft(['comissionamento_empresa_percentual' => 'tb_comissionamento_percentual'], 'comissionamento_empresa_percentual.comissionamento_id = comissionamento_empresa.id AND comissionamento_empresa_percentual.excluido <> 1 AND (comissionamento_empresa_percentual.data_final is null OR comissionamento_empresa_percentual.data_final = 0000-00-00)', ['comissao_empresa' => 'comissionamento_empresa_percentual.comissao', 'bonus_empresa' => 'comissionamento_empresa_percentual.bonus', 'diferimento_empresa' => 'comissionamento_empresa_percentual.diferimento', 'adiantamento_empresa' => 'comissionamento_empresa_percentual.adiantamento']) ->where('comissionamentos.excluido <> 1') ->where('percentuais.excluido <> 1') ->where('tabelas.excluido <> 1 AND (tabelas.tabela_desativada <> 1 OR tabelas.tabela_desativada IS NULL)') ->where('bancos.desativar_comissoes <> 1') ->order($order); if( isset($fields['find_dt_final']) && !empty($fields['find_dt_final']) ){ $select->where("percentuais.data_final IS NOT NULL AND percentuais.data_final <> '0000-00-00'"); } else { $select->where("(percentuais.data_final is null or percentuais.data_final = '0000-00-00')"); } if( Yuppie_Auth::getIdentity()->grupo == 'Corretor' ){ $select->where('comissionamentos.corretor_id = ' . Yuppie_Auth::getIdentity()->id); $select->where("comissionamentos.tipo_produto not in ('PLASTICO', 'ATIVACAO')"); $dbCorretor = new Model_DbTable_CorretorBancosAtribuidos(); $id = Yuppie_Auth::getIdentity()->id; $bancosAtribuidos = $dbCorretor->fetchPairs('banco_id', "corretor_id = $id"); if( count($bancosAtribuidos) > 0 ) { $select->where('comissionamentos.banco_id IN (' . implode(", ", $bancosAtribuidos) . ')'); } } elseif( isset(Yuppie_Auth::getIdentity()->corretor_id) && Yuppie_Auth::getIdentity()->corretor_id > 0 ){ $select->where('comissionamentos.corretor_id = ' . Yuppie_Auth::getIdentity()->corretor_id); } elseif( !isset($fields['all_corretor']) && (!isset($fields['corretor_id']) || empty($fields['corretor_id'])) ){ //se não for o corretor que estiver visualizando as comissões e não passar o filtro corretor, //então tem que retornar nada. throw new Core_Exception('Para visualizar as comissões individuais você deve informar um corretor.'); } if( isset($fields['banco_id']) && !empty($fields['banco_id']) ){ $select->where('comissionamentos.banco_id = ?', $fields['banco_id']); } if( isset($fields['convenio_id']) && !empty($fields['convenio_id']) ){ $select->where('comissionamentos.convenio_id = ?', $fields['convenio_id']); } if( isset($fields['tabela_id']) && !empty($fields['tabela_id']) ){ $select->where('comissionamentos.tabela_id = ?', $fields['tabela_id']); } if( isset($fields['produto']) && !empty($fields['produto']) ){ $select->where('comissionamentos.produto = ?', $fields['produto']); } if( isset($fields['valor_de']) && !empty($fields['valor_de']) ){ $select->where('comissionamentos.valor_de <= ?', $fields['valor_de']); } if( isset($fields['valor_a']) && !empty($fields['valor_a']) ){ $select->where('comissionamentos.valor_a <= ?', $fields['valor_a']); } if( isset($fields['tipo_produto']) && !empty($fields['tipo_produto']) ){ $select->where('comissionamentos.tipo_produto = ?', $fields['tipo_produto']); } if( isset($fields['tipo_contrato']) && !empty($fields['tipo_contrato']) ){ if( is_array($fields['tipo_contrato']) ){ $fields['tipo_contrato'] = array_filter($fields['tipo_contrato']); $select->where("comissionamentos.tipo_produto IN ('" . implode("','", $fields['tipo_contrato']) . "')"); } else { $select->where("comissionamentos.tipo_produto = '" . $fields['tipo_contrato'] . "'"); } } if( isset($fields['prazo']) && !empty($fields['prazo']) ){ $select->where("comissionamentos.prazo_de <= '{$fields['prazo']}'"); $select->where("comissionamentos.prazo_a >= '{$fields['prazo']}'"); } if( isset($fields['prazo_de']) && is_numeric($fields['prazo_de']) && $fields['prazo_de'] >= 0 ){ $select->where('comissionamentos.prazo_de >= ?', $fields['prazo_de']); } if( isset($fields['prazo_a']) && is_numeric($fields['prazo_a']) && $fields['prazo_a'] >= 0 ){ $select->where('comissionamentos.prazo_a <= ?', $fields['prazo_a']); } if( isset($fields['grupo_comissao']) && !empty($fields['grupo_comissao']) ){ $select->where('corretores.grupo_comissao = ?', $fields['grupo_comissao']); } if( isset($fields['data_de']) && !empty($fields['data_de']) && isset($fields['data_a']) && !empty($fields['data_a']) ){ $select->where("(percentuais.data_inicial >= STR_TO_DATE(?, '%d/%m/%Y')", $fields['data_de']) ->where("percentuais.data_final <= STR_TO_DATE(?, '%d/%m/%Y'))", $fields['data_a']); } if( isset($fields['data_apartir']) && !empty($fields['data_apartir']) ){ $select->where("percentuais.data_inicial >= STR_TO_DATE(?, '%d/%m/%Y')", $fields['data_apartir']); } if( isset($fields['comissionamento_id']) && !empty($fields['comissionamento_id']) ){ $select->where('comissionamento_id = ?', $fields['comissionamento_id']); } if( isset($fields['data_final']) && $fields['data_final'] === 'null' ){ $select->where("percentuais.data_final IS NULL OR percentuais.data_final = ?", '0000-00-00'); } if( isset($fields['corretor_id']) && !empty($fields['corretor_id']) ){ $select->where('comissionamentos.corretor_id = ?', $fields['corretor_id']); } if( isset($fields['base_comissao']) && !empty($fields['base_comissao']) ){ $select->where('comissionamentos.base_comissao = ?', $fields['base_comissao']); } if( isset($fields['supervisor_id']) && !empty($fields['supervisor_id']) ){ $select->where('gerentes.id = ?', $fields['supervisor_id']); } if( $order != null ){ $select->order($order); } else { $select->order(array( 'corretores.id ASC' )); } if( $page ){ $paginator = Zend_Paginator::factory($select); $paginator->setCurrentPageNumber($page); if( $limit && is_numeric($limit) ){ $paginator->setItemCountPerPage($limit); } if( $range && is_numeric($range) ){ $paginator->setPageRange($range); } return $paginator; } return $dbtable->getAdapter()->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) { $dbtable = new Model_DbTable_ComissionamentoCorretorPercentual(); return $dbtable->fetchRow("id = " . $id); } public function atualizarDataFinal($id, $dataFinal) { if( $id > 0 && $dataFinal != '' ){ try { $data = new Zend_Date($dataFinal, Zend_Date::DATES, 'pt'); $dataFinal = $data->toString('yyyy-MM-dd'); } catch ( Zend_Date_Exception $e ) { echo $e->getMessage(); $dataFinal = null; } $dbtable = new Model_DbTable_ComissionamentoCorretorPercentual(); $dados = $dbtable->fetchRow("id = " . $id); if( $dados['data_inicial'] > $dataFinal ){ throw new Exception("Ocorreu um erro, data inválida."); } $result = $dbtable->update(array( 'data_final' => $dataFinal ), "id = " . $id); return $result; } return null; } public function listarPorComissionamento($comissionamentoId) { $dbtable = new Model_DbTable_ComissionamentoCorretorPercentual(); return $dbtable->fetchAll("comissionamento_id = " . $comissionamentoId); } public function exportarPercentual($id, $percentual, $dados) { $dbtable = new Model_DbTable_ComissionamentoCorretorPercentual(); if( $id > 0 ){ $perc = array( 'comissionamento_id' => $id, 'data_inicial' => $percentual['data_inicial'], 'data_final' => $percentual['data_final'], 'comissao' => $percentual['comissao'], 'diferimento' => $percentual['diferimento'], 'bonus' => $percentual['bonus'] ); $cond = array( 'comissionamento_id = ' . $id, "data_inicial = '" . $percentual['data_inicial'] . "'", "data_final = '" . $percentual['data_final'] . "'", "comissao = '" . $percentual['comissao'] . "'", "diferimento = '" . $percentual['diferimento'] . "'", "bonus = '" . $percentual['bonus'] . "'" ); $where = implode(" AND ", $cond); //já existe? $existe = $dbtable->fetchRow($where); if( !$existe ){ return $dbtable->insert($perc); } return 0; } } protected function _getSelectComissaoCorretor(Model_DbTable_ComissionamentoCorretorPercentual $dbtable, array $columns) { $select = $dbtable->getAdapter()->select() ->from(array( 'percentuais' => 'tb_comissionamento_corretor_percentual' )) ->columns($columns) ->joinInner(array( 'comissionamentos' => 'tb_comissionamento_corretor' ), 'percentuais.comissionamento_id = comissionamentos.id', array()) ->joinInner(array( 'tabelas' => 'tb_tabelas' ), 'comissionamentos.tabela_id = tabelas.id', array()) ->joinInner(array( 'convenios' => 'tb_convenios' ), 'comissionamentos.convenio_id = convenios.id', array()) ->joinInner(array( 'bancos' => 'tb_bancos' ), 'comissionamentos.banco_id = bancos.id', array()) ->joinInner(array( 'corretores' => 'tb_corretores' ), 'corretores.id = comissionamentos.corretor_id', array()) ->joinInner(array( 'rotas' => 'tb_rotas' ), 'rotas.id = corretores.rota_id', array()) ->joinInner(array( 'gerentes' => 'tb_gerente_rota' ), 'gerentes.id = rotas.gerente_id', array()) ->joinLeft(array( 'produtos' => 'tb_produtos' ), 'produtos.codigo = comissionamentos.produto', array()) ->where('comissionamentos.excluido <> 1') ->where('percentuais.excluido <> 1 AND tabelas.excluido<>1') ->where('corretores.excluido <> 1') ->where("percentuais.data_final IS NULL OR data_final = '0000-00-00'"); return $select; } protected function _prepareFilterSelect(array $fields, Zend_Db_Select &$select) { if( count($fields) <= 0 ){ throw new Core_Exception('Atenção! Você deve informar pelo menos uma opção de busca.'); } if( isset($fields['banco_id']) && !empty($fields['banco_id']) ){ $select->where('comissionamentos.banco_id = ?', $fields['banco_id']); } if( isset($fields['convenio_id']) && !empty($fields['convenio_id']) ){ $select->where('comissionamentos.convenio_id = ?', $fields['convenio_id']); } if( isset($fields['tabela_id']) && !empty($fields['tabela_id']) ){ $select->where('comissionamentos.tabela_id = ?', $fields['tabela_id']); } if( isset($fields['tipo_produto']) && !empty($fields['tipo_produto']) ){ $select->where('comissionamentos.tipo_produto = ?', $fields['tipo_produto']); } if( isset($fields['prazo']) && !empty($fields['prazo']) ){ $select->where('comissionamentos.prazo = ?', $fields['prazo']); } if( isset($fields['prazo_de']) && !empty($fields['prazo_de']) ){ $select->where('comissionamentos.prazo_de >= ?', $fields['prazo_de']); } if( isset($fields['prazo_a']) && !empty($fields['prazo_a']) ){ $select->where('comissionamentos.prazo_a <= ?', $fields['prazo_a']); } if( isset($fields['grupo_comissao']) && !empty($fields['grupo_comissao']) ){ $select->where('corretores.grupo_comissao = ?', $fields['grupo_comissao']); } if( isset($fields['data_de']) && !empty($fields['data_de']) && isset($fields['data_a']) && !empty($fields['data_a']) ){ $select->where("(percentuais.data_inicial >= STR_TO_DATE(?, '%d/%m/%Y')", $fields['data_de']) ->where("percentuais.data_final <= STR_TO_DATE(?, '%d/%m/%Y'))", $fields['data_a']); } if( isset($fields['comissionamento_id']) && !empty($fields['comissionamento_id']) ){ $select->where('comissionamento_id = ?', $fields['comissionamento_id']); } if( isset($fields['data_final']) && $fields['data_final'] === 'null' ){ $select->where("data_final IS NULL OR data_final = ?", '0000-00-00'); } if( isset($fields['corretor_id']) && !empty($fields['corretor_id']) ){ $select->where('comissionamentos.corretor_id = ?', $fields['corretor_id']); } if( isset($fields['ordem']) && !empty($fields['ordem']) ){ if( $fields['ordem'] == 'SIM' ){ $select->order("percentuais.comissao DESC"); } else { $select->order("percentuais.id ASC"); } } } public function getComissaoIndividual(array $fields, $page = null, $limit = null, $order = null, $range = null) { $dbtable = new Model_DbTable_ComissionamentoCorretorPercentual(); $select = $this->_getSelectComissaoCorretor($dbtable, array( 'corretor' => 'corretores.nome', 'tabela' => 'tabelas.nome', 'convenio' => 'convenios.nome', 'produto' => 'produtos.descricao', 'prazo' => 'comissionamentos.prazo', 'comissionamentos.prazo_de', 'comissionamentos.prazo_a', 'comissionamentos.tipo_produto', 'banco' => 'bancos.nome', 'comissao', 'percentuais.comissao' )); $this->_prepareFilterSelect($fields, $select); if( $order != null ){ $select->order($order); } else { $select->order(array( 'corretores.id ASC' )); } if( $page ){ $paginator = Zend_Paginator::factory($select); $paginator->setCurrentPageNumber($page); if( $limit && is_numeric($limit) ){ $paginator->setItemCountPerPage($limit); } if( $range && is_numeric($range) ){ $paginator->setPageRange($range); } return $paginator; } } }
💾 保存文件
← 返回文件管理器