✏️ 正在编辑: Comissionamento.php
路径:
/srv/systems_dir/yuppiecred/application/models/Abstract/Comissionamento.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php abstract class Model_Abstract_Comissionamento { private $_dbtable; private $_id; private $_bancoId; private $_tipoProduto; private $_tabelaId; private $_convenioId; private $_valorDe; private $_valorA; private $_baseComissao; private $_prazoDe; private $_prazoA; private $_valorFixo; private $_validarFaixa; private $_desativado; private $_taxaContratoDe; private $_taxaContratoA; private $_idadeInicial; private $_idadeFinal; private $_incidirSobre; private $_especie; public function getDbtable() { return $this->_dbtable; } public function setDbtable($dbtable): void { $this->_dbtable = $dbtable; } 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; } function getTipoProduto() { return $this->_tipoProduto; } function setTipoProduto($tipoProduto) { $this->_tipoProduto = $tipoProduto; } 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; } function getValorDe() { return $this->_valorDe; } function getValorA() { return $this->_valorA; } function setValorDe($valorDe) { $this->_valorDe = String_Refatorar::parseStringToFloat($valorDe); } function setValorA($valorA) { $this->_valorA = String_Refatorar::parseStringToFloat($valorA); } public function getBaseComissao() { return $this->_baseComissao; } public function setBaseComissao($baseComissao) { $this->_baseComissao = $baseComissao; } public function getComissaoValida() { $db = new Model_DbTable_ComissionamentoGrupoPercentual(); $res = $db->fetchRow("comissionamento_id = " . $this->getId(), "id DESC"); return $res['comissao']; } public function getPrazoDe() { return $this->_prazoDe; } public function getPrazoA() { return $this->_prazoA; } public function setPrazoDe($prazoDe) { $this->_prazoDe = $prazoDe > 0 ? $prazoDe : 0; } public function setPrazoA($prazoA) { $this->_prazoA = $prazoA > 0 ? $prazoA : 0; } public function getValorFixo() { return $this->_valorFixo; } public function setValorFixo($valorFixo) { $this->_valorFixo = String_Refatorar::parseStringToFloat($valorFixo); } public function getValidarFaixa() { return $this->_validarFaixa; } public function setValidarFaixa($validarFaixa) { $this->_validarFaixa = $validarFaixa; } public function getDesativado() { return $this->_desativado; } public function setDesativado($desativado) { $this->_desativado = $desativado; } public function getIncidirSobre() { return $this->_incidirSobre; } public function setIncidirSobre($incidirSobre) { $this->_incidirSobre = $incidirSobre; } public function getTaxaContratoDe() { return $this->_taxaContratoDe; } public function getTaxaContratoA() { return $this->_taxaContratoA; } public function setTaxaContratoDe($taxaContratoDe) { $this->_taxaContratoDe = String_Refatorar::parseStringToFloat($taxaContratoDe); } public function setTaxaContratoA($taxaContratoA) { $this->_taxaContratoA = String_Refatorar::parseStringToFloat($taxaContratoA); } public function getIdadeInicial() { return $this->_idadeInicial; } public function getIdadeFinal() { return $this->_idadeFinal; } public function setIdadeInicial($idadeInicial): void { $this->_idadeInicial = $idadeInicial; } public function setIdadeFinal($idadeFinal): void { $this->_idadeFinal = $idadeFinal; } public function getEspecie() { return $this->_especie; } public function setEspecie($especie): void { $this->_especie = $especie; } public function __construct($options = null) { if (is_array($options)) { $this->setOptions($options); } $classDb = str_replace("Model_", "Model_DbTable_", get_class($this)); $this->_dbtable = new $classDb; } 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; } public function salvar() { if ($this->getId() > 0) { $this->_dbtable->update($this->_toArray(), "id = " . $this->getId() . " AND desativado <> 1"); return $this->getId(); } return $this->_dbtable->insert($this->_toArray()); } public function excluir($id) { if ($id > 0) { $result = $this->_dbtable->delete("id = " . $id); if ($result > 0) { $classDb = str_replace("Model_", "Model_DbTable_", get_class($this)) . "Percentual"; $dbtable = new $classDb; $dbtable->delete("comissionamento_id = " . $id); } } return null; } /** * Retorna um fetchRow do item passado por parâmetro * @param int $id * @return Zend_Db_Table_Row_Abstract | null */ public function exibir($id) { if (empty($id)) return; return $this->_dbtable->fetchRow(["id = ?" => $id]); } public function ativarDesativarComissoes($class, $comissoes = null, int $desativar) { if ($comissoes == null || count($comissoes) <= 0) { return false; } $dbtable = new $class(); $success = 0; $errors = 0; foreach ($comissoes as $comissaoId) { try { $dbtable->updateComissionamento(['desativado' => $desativar], "id = {$comissaoId}"); $success++; } catch (Zend_Exception $e) { $errors++; } } return ['success' => $success, 'errors' => $errors]; } public function checkComissaoVigente(?array $comissaoGrupo = [], ?array $comissaoGrupoTabela = [], ?array $comissaoCorretor = []) { $comissaoFormatada = []; //organiza em multi array if ($comissaoGrupo) { $dadosGrupo = $comissaoGrupo['dados_grupo']; unset($comissaoGrupo['dados_grupo']); if (!empty($dadosGrupo['indicador_id'])) { $grupoIndicador = Model_GrupoComissao::getGrupoByCorretor($dadosGrupo['indicador_id']); } foreach ($comissaoGrupo as $comissao) { $comissaoEmpresa = $comissao['perc_comissao']; $comissaoPerc = $dadosGrupo['percentual_comissionamento']; // if (Yuppie_Auth::getIdentity()->grupo == 'Supervisor') { // $dadosGrupo['incidir_sobre'] = $dadosGrupo['incidencia_comissao_supervisor']; // $comissaoPerc = $dadosGrupo['comissao_supervisor']; // } if (Yuppie_Auth::getIdentity()->grupo == 'Indicador' && empty($dadosGrupo['indicador_id'])) { $dadosGrupo['incidir_sobre'] = $dadosGrupo['incidencia_comissao_indicador']; $comissaoPerc = $dadosGrupo['comissao_indicador']; } if (!empty($grupoIndicador)) { if ($grupoIndicador['incidencia_comissao_indicador']) { $comissaoPerc = $grupoIndicador['comissao_indicador']; } else { $comissao['perc_comissao'] = $grupoIndicador['comissao_indicador']; } } $comissao['comissao'] = $comissaoPerc ?: 0; $comissao['bonus'] = $dadosGrupo['comissionamento_bonus'] ?: 0; $comissao['diferimento'] = $dadosGrupo['comissionamento_diferimento'] ?: 0; $comissao['adiantamento'] = $dadosGrupo['comissionamento_adiantamento'] ?: 0; if (!empty($dadosGrupo['incidir_sobre']) && !empty($comissaoPerc)) { $spreadFaixaComissao = Model_BancosSpreadFaixaComissao::getSpreadByComissao($comissao['banco_id'], $comissao['perc_comissao']); $spread = !empty($spreadFaixaComissao) ? $spreadFaixaComissao : 0; $imposto = !empty($comissao['imposto']) ? ($comissao['perc_comissao'] * $comissao['imposto'] / 100) : 0; $comissao['perc_comissao'] = $comissao['perc_comissao'] - $spread - $imposto; $comissao['comissao'] = $comissao['perc_comissao']*$comissaoPerc/100; if ($grupoIndicador['incidencia_comissao_indicador']) { $comissao['comissao'] = $comissao['comissao']*$dadosGrupo['percentual_comissionamento']/100; } $comissao['bonus'] = !empty($comissao['perc_comissao_bonus']) ? ($comissao['perc_comissao_bonus'] * $comissao['bonus']) / 100 : 0; $comissao['diferimento'] = !empty($comissao['perc_comissao_diferimento']) ? ($comissao['perc_comissao_diferimento'] * $comissao['diferimento']) / 100 : 0; $comissao['adiantamento'] = !empty($comissao['perc_comissao_adiantamento']) ? ($comissao['perc_comissao_adiantamento'] * $comissao['adiantamento']) / 100 : 0; } $comissaoFormatada[] = [ 'tipo_produto' => $comissao['tipo_produto'], 'valor_de' => $comissao['valor_de'] ?: null, 'valor_a' => $comissao['valor_a'] ?: null, 'prazo_de' => $comissao['prazo_de'], 'prazo_a' => $comissao['prazo_a'], 'taxa_contrato_de' => $comissao['taxa_contrato_de'] ?: null, 'taxa_contrato_a' => $comissao['taxa_contrato_a'] ?: null, 'idade_inicial' => $comissao['idade_inicial'], 'idade_final' => $comissao['idade_final'] ?: null, 'tabela_id' => $comissao['tabela_id'] ?: null, 'convenio_id' => $comissao['convenio_id'], 'banco_id' => $comissao['banco_id'], 'especie' => $comissao['especie'] ?: null, 'incidencia_comissao' => $dadosGrupo['incidir_sobre'], 'comissao_empresa' => $comissaoEmpresa ?: null, 'base_comissao_empresa_valor' => $comissao['base_comissao_valor'] ?: null, 'detalhe' => $comissao, 'origem' => 'grupo_geral' ]; } } if ($comissaoGrupoTabela) { foreach ($comissaoGrupoTabela as $comissao) { $comissaoEmpresa = $comissao['comissao_empresa']; $comissao['banco_nome'] = $comissao['banco']; $comissao['convenio_nome'] = $comissao['convenio']; $comissao['tabela_nome'] = $comissao['tabela']; if (!empty($comissao['incidir_sobre']) && !empty($comissao['comissao'])) { $spreadFaixaComissao = Model_BancosSpreadFaixaComissao::getSpreadByComissao($comissao['banco_id'], $comissao['comissao_empresa'] ?: 0); $spread = !empty($spreadFaixaComissao) ? $spreadFaixaComissao : 0; $imposto = !empty($comissao['imposto']) ? ($comissao['comissao_empresa'] * $comissao['imposto'] / 100) : 0; $comissao['comissao_empresa'] = ($comissao['comissao_empresa']-$spread-$imposto); $comissao['comissao'] = !empty($comissao['comissao_empresa']) ? (($comissao['comissao_empresa'] * $comissao['comissao']) / 100) : 0; $comissao['bonus'] = !empty($comissao['bonus_empresa']) ? ($comissao['bonus_empresa'] * $comissao['bonus']) / 100 : 0; $comissao['diferimento'] = !empty($comissao['diferimento_empresa']) ? ($comissao['diferimento_empresa'] * $comissao['diferimento']) / 100 : 0; $comissao['adiantamento'] = !empty($comissao['adiantamento_empresa']) ? ($comissao['adiantamento_empresa'] * $comissao['adiantamento']) / 100 : 0; } $arrComissao = [ 'tipo_produto' => $comissao['tipo_produto'], 'valor_de' => $comissao['valor_de'] ?: null, 'valor_a' => $comissao['valor_a'] ?: null, 'prazo_de' => $comissao['prazo_de'], 'prazo_a' => $comissao['prazo_a'], 'taxa_contrato_de' => $comissao['taxa_contrato_de'] ?: null, 'taxa_contrato_a' => $comissao['taxa_contrato_a'] ?: null, 'idade_inicial' => $comissao['idade_inicial'] ?: null, 'idade_final' => $comissao['idade_final'] ?: null, 'tabela_id' => $comissao['tabela_id'], 'convenio_id' => $comissao['convenio_id'], 'banco_id' => $comissao['banco_id'], 'especie' => $comissao['especie'] ?: null, 'incidencia_comissao' => $comissao['incidir_sobre'], 'comissao_empresa' => $comissaoEmpresa ?: null, 'base_comissao_empresa_valor' => $comissao['base_comissao_valor'] ?: null, 'detalhe' => $comissao, 'origem' => 'grupo_tabela' ]; foreach ($comissaoFormatada as $key => $value) { if ($value['tipo_produto'] == $arrComissao['tipo_produto'] && $value['valor_de'] == $arrComissao['valor_de'] && $value['valor_a'] == $arrComissao['valor_a'] && $value['prazo_de'] == $arrComissao['prazo_de'] && $value['prazo_a'] == $arrComissao['prazo_a'] && $value['taxa_contrato_de'] == $arrComissao['taxa_contrato_de'] && $value['taxa_contrato_a'] == $arrComissao['taxa_contrato_a'] && $value['idade_inicial'] == $arrComissao['idade_inicial'] && $value['idade_final'] == $arrComissao['idade_final'] && $value['idade_final'] == $arrComissao['idade_final'] && $value['tabela_id'] == $arrComissao['tabela_id'] && $value['convenio_id'] == $arrComissao['convenio_id'] && $value['banco_id'] == $arrComissao['banco_id'] && $value['especie'] == $arrComissao['especie'] ) { $comissaoFormatada[$key] = $arrComissao; break; } } if (!in_array($arrComissao, $comissaoFormatada)) { $comissaoFormatada[] = $arrComissao; } } } if ($comissaoCorretor) { foreach ($comissaoCorretor as $comissao) { $comissaoEmpresa = $comissao['comissao_empresa']; $comissao['banco_nome'] = $comissao['banco']; $comissao['convenio_nome'] = $comissao['convenio']; $comissao['tabela_nome'] = $comissao['tabela']; if (!empty($comissao['incidir_sobre']) && !empty($comissao['comissao'])) { $spreadFaixaComissao = Model_BancosSpreadFaixaComissao::getSpreadByComissao($comissao['banco_id'], $comissao['comissao_empresa'] ?: 0); $spread = !empty($spreadFaixaComissao) ? $spreadFaixaComissao : 0; $imposto = !empty($comissao['imposto']) ? ($comissao['comissao_empresa'] * $comissao['imposto'] / 100) : 0; $comissao['comissao_empresa'] = $comissao['comissao_empresa']-$spread-$imposto; $comissao['comissao'] = !empty($comissao['comissao_empresa']) ? ($comissao['comissao_empresa'] * $comissao['comissao']) / 100 : 0; $comissao['bonus'] = !empty($comissao['bonus_empresa']) ? (($comissao['bonus_empresa'] / 100) * ($comissao['bonus'] / 100)) / 100 : 0; $comissao['diferimento'] = !empty($comissao['diferimento_empresa']) ? (($comissao['diferimento_empresa'] / 100) * ($comissao['diferimento'] / 100)) / 100 : 0; } $arrComissao = [ 'tipo_produto' => $comissao['tipo_produto'], 'valor_de' => $comissao['valor_de'] ?: null, 'valor_a' => $comissao['valor_a'] ?: null, 'prazo_de' => $comissao['prazo_de'], 'prazo_a' => $comissao['prazo_a'], 'taxa_contrato_de' => $comissao['taxa_contrato_de'] ?: null, 'taxa_contrato_a' => $comissao['taxa_contrato_a'] ?: null, 'idade_inicial' => $comissao['idade_inicial'] ?: null, 'idade_final' => $comissao['idade_final'] ?: null, 'tabela_id' => $comissao['tabela_id'], 'convenio_id' => $comissao['convenio_id'], 'banco_id' => $comissao['banco_id'], 'especie' => $comissao['especie'] ?: null, 'incidencia_comissao' => $comissao['incidir_sobre'], 'comissao_empresa' => $comissaoEmpresa ?: null, 'base_comissao_empresa_valor' => $comissao['base_comissao_valor'] ?: null, 'detalhe' => $comissao, 'origem' => 'individual' ]; foreach ($comissaoFormatada as $key => $value) { if ($value['tipo_produto'] == $arrComissao['tipo_produto'] && $value['valor_de'] == $arrComissao['valor_de'] && $value['valor_a'] == $arrComissao['valor_a'] && $value['prazo_de'] == $arrComissao['prazo_de'] && $value['prazo_a'] == $arrComissao['prazo_a'] && $value['taxa_contrato_de'] == $arrComissao['taxa_contrato_de'] && $value['taxa_contrato_a'] == $arrComissao['taxa_contrato_a'] && $value['idade_inicial'] == $arrComissao['idade_inicial'] && $value['idade_final'] == $arrComissao['idade_final'] && $value['idade_final'] == $arrComissao['idade_final'] && $value['tabela_id'] == $arrComissao['tabela_id'] && $value['convenio_id'] == $arrComissao['convenio_id'] && $value['banco_id'] == $arrComissao['banco_id'] && $value['especie'] == $arrComissao['especie'] ) { $comissaoFormatada[$key] = $arrComissao; break; } } if (!in_array($arrComissao, $comissaoFormatada)) { $comissaoFormatada[] = $arrComissao; } } } usort($comissaoFormatada, function($a, $b){ return $a['detalhe']['comissao'] < $b['detalhe']['comissao']; }); return $comissaoFormatada; } }
💾 保存文件
← 返回文件管理器