✏️ 正在编辑: Funcionario.php
路径:
/srv/systems_dir/yuppiecred/application/models/Funcionario.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Model_Funcionario extends Model_PessoaJuridica { private $_obs; private $_banco; private $_agencia; private $_conta; private $_tipoConta; //Corrente / Poupança private $_titular; private $_cpfTitular; private $_dataNascimento; private $_dataContratacao; private $_dataDesligamento; private $_setorId; private $_motivoDesligamento; private $_modeloDesligamento; private $_salarioBase; private $_valeTransporte; private $_valeAlimentacao; private $_chavePix; private $_tipoVinculo; private $_cargoId; private $_empresaId; private $_optanteTransporte; //<editor-fold> public function getObs() { return $this->_obs; } public function setObs($obs) { $this->_obs = $obs; } public function getBanco() { return $this->_banco; } public function setBanco($banco) { $this->_banco = $banco; } public function getAgencia() { return $this->_agencia; } public function setAgencia($agencia) { $this->_agencia = $agencia; } public function getConta() { return $this->_conta; } public function setConta($conta) { $this->_conta = $conta; } public function getTipoConta() { return $this->_tipoConta; } public function setTipoConta($tipoConta) { $this->_tipoConta = $tipoConta; } public function getTitular() { return $this->_titular; } public function setTitular($titular) { $this->_titular = $titular; } public function getCpfTitular() { return $this->_cpfTitular; } public function setCpfTitular($cpfTitular) { $this->_cpfTitular = $cpfTitular; } public function getDataNascimento() { return $this->_dataNascimento; } public function setDataNascimento($dataNascimento) { if( !empty($dataNascimento) ){ try{ $data = new Zend_Date($dataNascimento, Zend_Date::DATES, 'pt'); $dataNascimento = $data->toString('yyyy-MM-dd'); } catch (Zend_Date_Exception $e){ echo $e->getMessage(); $dataNascimento = null; } }else{ $dataNascimento = null; } $this->_dataNascimento = $dataNascimento; } public function getDataContratacao() { return $this->_dataContratacao; } public function setDataContratacao($dataContratacao): void { if( !empty($dataContratacao) ){ try{ $data = new Zend_Date($dataContratacao, Zend_Date::DATES, 'pt'); $dataContratacao = $data->toString('yyyy-MM-dd'); } catch (Zend_Date_Exception $e){ echo $e->getMessage(); $dataContratacao = null; } }else{ $dataContratacao = null; } $this->_dataContratacao = $dataContratacao; } public function getDataDesligamento() { return $this->_dataDesligamento; } public function setDataDesligamento($dataDesligamento): void { if( !empty($dataDesligamento) ){ try{ $data = new Zend_Date($dataDesligamento, Zend_Date::DATES, 'pt'); $dataDesligamento = $data->toString('yyyy-MM-dd'); } catch (Zend_Date_Exception $e){ echo $e->getMessage(); $dataDesligamento = null; } }else{ $dataDesligamento = null; } $this->_dataDesligamento = $dataDesligamento; } public function getSetorId() { return $this->_setorId; } public function setSetorId($setorId): void { $this->_setorId = $setorId; } public function getMotivoDesligamento() { return $this->_motivoDesligamento; } public function setMotivoDesligamento($motivoDesligamento): void { $this->_motivoDesligamento = $motivoDesligamento; } public function getModeloDesligamento() { return $this->_modeloDesligamento; } public function setModeloDesligamento($modeloDesligamento): void { $this->_modeloDesligamento = $modeloDesligamento; } public function getSalarioBase() { return $this->_salarioBase; } public function setSalarioBase($salarioBase): void { $this->_salarioBase = str_replace(array( '.', ',' ), array( '', '.' ),$salarioBase); } public function getValeTransporte() { return $this->_valeTransporte; } public function setValeTransporte($valeTransporte): void { $this->_valeTransporte = str_replace(array( '.', ',' ), array( '', '.' ),$valeTransporte); } public function getValeAlimentacao() { return $this->_valeAlimentacao; } public function setValeAlimentacao($valeAlimentacao): void { $this->_valeAlimentacao = str_replace(array( '.', ',' ), array( '', '.' ),$valeAlimentacao); } public function getChavePix() { return $this->_chavePix; } public function setChavePix($chavePix) { $this->_chavePix = $chavePix; } public function getTipoVinculo() { return $this->_tipoVinculo; } public function setTipoVinculo($tipoVinculo) { $this->_tipoVinculo = $tipoVinculo; } public function getCargoId() { return $this->_cargoId; } public function setCargoId($cargoId) { $this->_cargoId = $cargoId; } public function getEmpresaId() { return $this->_empresaId; } public function setEmpresaId($empresaId) { $this->_empresaId = $empresaId; } public function getOptanteTransporte() { return $this->_optanteTransporte; } public function setOptanteTransporte($optanteTransporte) { $this->_optanteTransporte = $optanteTransporte; } //</editor-fold> 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_Funcionario(); $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(); } } $data['tipo'] = 'FUNCIONARIO'; return $data; } /** * Insere ou altera o registro passado por parâmetro * @param Model_Fornecedor $fornecedor */ public function salvar(Model_Funcionario $funcionario) { $dbtable = new Model_DbTable_Funcionario(); if( $funcionario->getId() > 0 ){ $dbtable->update($funcionario->_toArray(), "id = " . $funcionario->getId()); return $funcionario->getId(); } else { return $dbtable->insert($funcionario->_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_Funcionario(); return $dbtable->delete("id = " . $id); } return null; } /** * Retorna uma lista de empresas * @param string $where * @param string $order * @param int $count * @param int $offset * @return array */ public function listar($where = null, $order = null, $count = null, $offset = null) { $dbtable = new Model_DbTable_Funcionario(); return $dbtable->fetchAll($where, $order, $count, $offset); } /** * 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_Funcionario(); return $dbtable->fetchRow("id = " . $id); } public function findByCpf($cpf) { if($cpf != ''){ $dbtable = new Model_DbTable_Fornecedor(); return $dbtable->fetchRow([ "trim(replace(replace(cpf_responsavel, '-', ''), '.', '')) = ?" => String_Refatorar::formatarCpf($cpf), "tipo = 'FUNCIONARIO'"]); } else { return 0; } } public function getDadosFolha($id, $diasTrabalhados = 0, $qtdeFaltas = 0) { if (empty($id)) { throw new Core_Exception("Funcionário não informado"); } $values = []; $dbtable = new Model_DbTable_Funcionario(); $dadosFuncionario = $dbtable->fetchRow("id = " . $id); if (empty($dadosFuncionario)) { throw new Core_Exception("Funcionário não localizado"); } $dadosCargo = $dadosFuncionario->findParentRow('Model_DbTable_Cargo'); $values['salario_bruto'] = $dadosCargo['salario_bruto']; $values['vale_transporte'] = 0; // $values['desconto_transporte'] = 0; $values['plano_saude'] = 0; //VERIFICA SE O SALÁRIO BRUTO É DIFERENCIADO OU PADRÃO PADRÃO DO CARGO. if ($dadosFuncionario['salario_base'] && $dadosFuncionario['salario_base'] > 0) { $values['salario_bruto'] = $dadosFuncionario['salario_base']; } //VERIFICAR SE É OPTANTE DE TRANSPORTE if ($dadosFuncionario['optante_transporte'] == 1) { $values['vale_transporte'] = $dadosCargo['vale_transporte'] * ($diasTrabalhados - $qtdeFaltas); if (!empty($dadosFuncionario['vale_transporte'])) { //SE OPTANTE DE TRANSPORTE VERIFICA SE VALOR É ESPECÍFICO OU PADRÃO DO CARGO. $values['vale_transporte'] = $dadosFuncionario['vale_transporte'] * ($diasTrabalhados - $qtdeFaltas); } // $values['desconto_transporte'] = $values['salario_bruto'] * $dadosCargo['desconto_vale_transporte']; } //cálculo do vale alimentação baseado na quantidade de faltas/diasTrabalhados $values['vale_alimentacao'] = $dadosCargo['vale_alimentacao'] * ($diasTrabalhados - $qtdeFaltas); if (!empty($dadosFuncionario['vale_alimentacao'])) { $values['vale_alimentacao'] = $dadosFuncionario['vale_alimentacao'] * ($diasTrabalhados - $qtdeFaltas); } $values['gratificacao_funcao'] = $dadosCargo['gratificacao_funcao']; //verificar se funcionário é optante ou não if ($dadosFuncionario['optante_plano'] == 1) { $values['plano_saude'] = $dadosCargo['plano_saude']; } //cálculo da quantidade total paga de plano de saúde dos dependentes $totalPlanoDep = Model_Dependente::getTotalPlanoDependentes($id); $values['plano_saude_dependente'] = $totalPlanoDep; //cálculo do INSS $descontoInss = Model_Tributo::calculoDescontoInss($values['salario_bruto']); $values['inss'] = $descontoInss; //cálculo de descontos por dependente $valorDependente = Model_Tributo::valorDependente(); $qtdeDependentes = Model_Dependente::getDependentesDescontoIrpf($id); $descontoTotalDependentes = ($valorDependente['valor_dependente_irpf'] * $qtdeDependentes); //cálculo do imposto de renda $salarioParaCalculoIrpf = ($values['salario_bruto'] - $values['inss'] - $descontoTotalDependentes); $descontoIrpf = Model_Tributo::calculoDescontoIrpf($salarioParaCalculoIrpf); $values['irpf'] = $descontoIrpf; //cálculo do salário família $qtde = Model_Dependente::getDependentesSalarioFamilia($id); $values['salario_familia'] = ($dadosCargo['salario_familia'] * $qtde); return $values; } /** * Calcula o tempo de serviço em anos * @param date $dataAdmissao * @param date $dataDemissao * @return int */ public function calculaTempoServico($dataAdmissao = null, $dataDemissao = null) { $dataInicial = null; $dataFinal = new Zend_Date(); if( $dataAdmissao != null ){ $dataInicial = new Zend_Date($dataAdmissao); } if( $dataDemissao != null ){ $dataFinal = new Zend_Date($dataDemissao); } $t1 = $dataInicial->get(Zend_Date::TIMESTAMP); $t2 = $dataFinal->get(Zend_Date::TIMESTAMP); $t1 = new DateTime($dataInicial->get('yyyy-MM-dd HH:mm:ss')); $diff = $t1->diff(new DateTime($dataFinal->get('yyyy-MM-dd HH:mm:ss'))); return $diff->y; } // public function findByDate($date, $funcionarioId) // { // if($date != '' && $funcionarioId != '') // { // $dbtable = new Model_DbTable_FolhaPonto(); // return $dbtable->fetchRow("data_ponto = '{$date}' AND funcionario_id = {$funcionarioId}"); // } // else{ // return 0; // } // } }
💾 保存文件
← 返回文件管理器