✏️ 正在编辑: Comissao.php
路径:
/srv/systems_dir/yuppiecred-lidernegocios/library/Core/Banco/Planilha/Bgn/Comissao.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Core_Banco_Planilha_Bgn_Comissao extends Core_Banco_Planilha { protected $_dateFormat = 'dd-MM-yy'; private $_inicioLaco = 2; protected $colunas = array( 'codigo_agente' => 'T', 'codigo_convenio' => '', 'codigo_tabela' => '', 'comissao_empresa' => '', 'convenio' => '', 'corretor_id' => '', 'cpf_cliente' => 'H', 'data_emissao' => '', 'data_liberacao' => 'J', 'digitador' => 'U', 'nome_cliente' => 'G', 'numero_ade' => '', 'numero_beneficio' => '', 'numero_contrato' => 'F', 'orgao_expedidor' => '', 'prazo' => 'I', 'produto' => '', 'status_proposta' => '', 'tabela' => '', 'valor_bruto' => 'K', 'valor_bruto_empresa' => '', 'valor_liquido' => 'K', 'valor_parcela' => '', 'valor_principal' => '', 'valor_refin' => 'L', 'regra' => 'R', 'valor_comissao' => 'P' ); function getInicioLaco() { return $this->_inicioLaco; } function setInicioLaco($inicioLaco) { if( !is_null($inicioLaco) ){ $this->_inicioLaco = $inicioLaco; } } public function importar(array $sheetData) { $this->validarColunas($sheetData); $sheetData = $this->excluirLinhasVazias($sheetData); end($sheetData); $lastKey = key($sheetData); reset($sheetData); if( count($sheetData) > 0 ){ for ( $i = $this->_inicioLaco; $i <= $lastKey; $i++ ) { $dados = array( 'banco_id' => $this->getBancoId(), 'corretor_id' => null, 'empresa_id' => null, 'convenio_id' => null, 'tabela_id' => null, 'cliente_id' => null, 'produto' => null, 'prazo' => null, 'valor_bruto' => null, 'valor_liquido' => null, 'numero_contrato' => null, 'data_emissao' => null, 'data_liberacao' => null, 'digitador' => Yuppie_Auth::getIdentity()->login, 'forma_liberacao' => null, 'comissao_corretor' => null, 'comissao_empresa' => null, 'diferimento_corretor' => null, 'status_proposta' => null, 'subestabelecido_id' => null, 'verificar_contratos' => null, 'seguranca' => null, 'cartao' => null ); try { $this->_getSeguranca($sheetData[$i], $dados); $sheetData[$i][$this->getColuna('cpf_cliente')] = String_Refatorar::formatarCpf( $sheetData[$i][$this->getColuna('cpf_cliente')]); $this->_getTipoContrato($sheetData[$i], $dados); $this->_getPrazo($sheetData[$i], $dados); $this->_getEstornado($sheetData[$i], $dados); $this->_getNumeroContrato($sheetData[$i], $dados); $this->_getValorBrutoLiquido($sheetData[$i], $dados); $this->_getCorretorId($sheetData[$i], $dados); $this->_getEmpresaId($sheetData[$i], $dados); $this->_getClienteId($sheetData[$i], $dados); $this->_getComissaoCorretorAndEmpresa($sheetData[$i], $dados); $this->_getStatusProposta($sheetData[$i], $dados); $this->_getDataLiberacao($sheetData[$i], $dados); $this->_getDigitador($sheetData[$i], $dados); $this->_getSubestabelecido($sheetData[$i], $dados); $this->_getContratoVerificado($sheetData[$i], $dados); $this->_getStatusCartao($sheetData[$i], $dados); $this->_getObs($sheetData[$i], $dados); $this->contratosImportados[] = $dados['numero_contrato']; $this->salvarLinha($sheetData[$i], $dados); } catch ( Exception $e ) { $this->_addNaoImportado( $dados, $sheetData[$i], $this->naoImportados, $e->getMessage() ); } } } return $this->naoImportados; } protected function salvarLinha($sheetData, &$dados) { /* Apenas para LOG */ $dataLiberacao = null; $urlSistema = Yuppie_Auth::getSiteKey(); $writer = new Zend_Log_Writer_Stream("/tmp/zf_log_planilha_{$urlSistema}.txt"); $classeChamada = get_class($this); $log = new Zend_Log($writer); $log->log('#######################', Zend_Log::INFO); $log->log("IMPORTAÇÃO: " . $classeChamada, Zend_Log::INFO); $log->log("Usuário logado: " . Yuppie_Auth::getIdentity()->login, Zend_Log::INFO); if( $this->getColuna('data_liberacao') != null ){ $dataLiberacao = $sheetData[$this->getColuna('data_liberacao')]; } $log->log('Formatação (Dt Liberacao): ' . $dataLiberacao, Zend_Log::INFO); $newContrato = new Model_DbTable_Contrato(); $result = 0; /* Copia de $dados para atualização do recebimento */ $dadosRecebimento = $dados; //verifica se o contrato existe $dadosContrato = isset($dados['numero_contrato']) && $dados['numero_contrato'] ? $newContrato->fetchRow("numero_contrato = '" . $dados['numero_contrato'] . "' " . "AND banco_id = " . $this->getBancoId()) : null; $protocolos = null; if( $dadosContrato == null ){ try { $log->log("Tentativa de atualizaçao do contrato: {$dadosContrato['numero_contrato']}", Zend_Log::INFO); foreach ( $dados as $key => $value ) { $log->log("[{$key}] => {$value}", Zend_Log::INFO); } $result = $newContrato->insert($dados); if( $result > 0 ){ $dados['id'] = $result; $log->log("Contrato adicionado.", Zend_Log::INFO); } else { $log->log("Contrato NAO foi foi adicionado.", Zend_Log::INFO); } if( $result <= 0 ){ $this->_addNaoImportado( $dados, $sheetData, $this->naoImportados, 'Contrato não inserido.' ); } } catch ( Exception $e ) { $log->log("[Exception] Erro ao adicionar contrato. " . $e->getMessage(), Zend_Log::INFO); $this->_addNaoImportado( $dados, $sheetData, $this->naoImportados, $e->getMessage() ); } } else { $this->_dadosContrato = $dadosContrato; $protocoloContrato = new Model_DbTable_ProtocoloContrato(); $protocolos = $protocoloContrato->fetchRow("contrato_id = " . $dadosContrato['id']); if( $protocolos != null ){ $this->_addNaoImportado( $dados, $sheetData, $this->naoImportados, 'Contrato está pago e não pode ser alterado.' ); } else { $corretorId = $dados['corretor_id']; $dados['id'] = $dadosContrato['id']; /* Caso o contrato encontrado já tenha corretor, não permitir atualizar o conrretor */ if( isset($dadosContrato['corretor_id']) && $dadosContrato['corretor_id'] > 0 && $dados['corretor_id'] > 0 && $dados['corretor_id'] != $dadosContrato['corretor_id'] ){ $log->log("[Contrato já tem o corretor: {$dadosContrato['corretor_id']}] Tentativa de atualização para: {$dados['corretor_id']}. ", Zend_Log::INFO); unset($dados['corretor_id']); } $dados = $this->_getCamposAtualizacao($dados); try { $log->log("Tentativa de atualizaçao do contrato: {$dadosContrato['numero_contrato']}.", Zend_Log::INFO); foreach ( $dados as $key => $value ) { $log->log("[{$key}] => {$value}", Zend_Log::INFO); } $result = $newContrato->update($dados, "id = {$dadosContrato['id']}"); if( $result > 0 ){ $log->log("Contrato atualizado.", Zend_Log::INFO); } else { $log->log("Contrato NAO foi foi atualizado.", Zend_Log::INFO); } } catch ( Exception $e ) { $log->log("[Exception] Erro ao atualizar contrato. " . $e->getMessage(), Zend_Log::INFO); $this->_addNaoImportado( $dados, $sheetData, $this->naoImportados, $e->getMessage() ); } } Model_Contrato::gravarEspelhoImportacao($dados['id'], $sheetData, $this->getArquivoOrigem()); $this->_recebimentoContrato($sheetData, $dadosRecebimento); } } protected function _recebimentoContrato($sheetData, $dados) { $urlSistema = Yuppie_Auth::getSiteKey(); $writer = new Zend_Log_Writer_Stream("/tmp/zf_log_recebimento_{$urlSistema}.txt"); $log = new Zend_Log($writer); $log->log('#######################', Zend_Log::INFO); $log->log("Numero contrato: " . $dados['numero_contrato'], Zend_Log::INFO); $dadosContrato = null; $contrato = new Model_DbTable_Contrato(); $dbtableRecebimento = new Model_DbTable_RecebimentoContrato(); $result = 0; /* * Tipo Remuneração */ $colTipoRemuneracao = "Á vista"; $dbtable = new Model_DbTable_Tipos(); $search = $dbtable->fetchRow("descricao = '{$colTipoRemuneracao}' AND tipo = 'TIPO_REMUNERACAO_BGN '"); if( !$search ){ $tipoRemuneracao = $dbtable->insert(array( 'tipo' => 'TIPO_REMUNERACAO_BGN', 'descricao' => $colTipoRemuneracao )); } else { $tipoRemuneracao = $search['id']; } $dados['tipo_remuneracao'] = $tipoRemuneracao; $digits = new Zend_Filter_Digits(); /* Valor Comissão */ $valorComissao = ($digits->filter(trim($sheetData[$this->getColuna('valor_comissao')])) / 100); /* Descrição */ $descricao = isset($sheetData[$this->getColuna('obs')]) ? $sheetData[$this->getColuna('obs')] : ""; // // /* // Verifica se o contrato existe // */ if( isset($dados['numero_contrato']) && $dados['numero_contrato'] != null && $dados['banco_id'] > 0 ){ $dadosContrato = $contrato->fetchRow("numero_contrato = '" . $dados['numero_contrato'] . "' AND banco_id = {$dados['banco_id']}"); } if( $dadosContrato != null ){ if (!empty($dados['data_liberacao']) && !empty($valorComissao)) { $contrato->update(array( 'data_recebimento_comissao' => $dados['data_liberacao'] ), "id = {$dadosContrato->id}"); } $comissaoEmpresa = $valorComissao * $sheetData[$this->getColuna('valor_liquido')] / 100; try { $recebimento = array( 'contrato_id' => $dadosContrato->id, 'data_recebimento_comissao' => $dados['data_liberacao'], 'parcelas' => 0, 'comissao_empresa' => isset($dados['comissao_empresa']) ? $dados['comissao_empresa'] : $comissaoEmpresa, 'rco' => isset($dados['rco']) ? $dados['rco'] : null, 'data_saldo' => $dados['data_liberacao'], 'tipo_remuneracao' => isset($dados['tipo_remuneracao']) ? $dados['tipo_remuneracao'] : null, 'valor_lancamento' => $valorComissao, 'natureza' => isset($dados['natureza']) ? $dados['natureza'] : null, 'descricao' => $descricao ); $result = $dbtableRecebimento->receberComissao($recebimento); if( $result <= 0 ){ $log->log('Uma falha pode ter ocorrido na inserção do recebimento do contrato', Zend_Log::INFO); } $log->log(print_r($recebimento, true), Zend_Log::INFO); } catch ( Exception $e ) { $log->log('Exception: ' . $e->getMessage(), Zend_Log::INFO); } } } protected function _getNumeroContrato(array $sheetData, array &$dados) { if( $this->getColuna('numero_contrato') ){ $dados['numero_contrato'] = String_Refatorar::soNumeros( $sheetData[$this->getColuna('numero_contrato')] ); } $newContrato = new Model_DbTable_Contrato(); $dadosContrato = isset($dados['numero_contrato']) && $dados['numero_contrato'] ? $newContrato->fetchRow("numero_contrato = '" . $dados['numero_contrato'] . "' " . "AND banco_id = " . $this->getBancoId()) : null; if( $dadosContrato == null ){ throw new Exception("Contrato não existe no sistema, favor importar o arquivo de produção."); } } /** * * @param array $sheetData * @param array $dados * @return void */ protected function _getValorBrutoLiquido(array $sheetData, array &$dados) { $regra = $this->getColuna('regra') ? trim($sheetData[$this->getColuna('regra')]) : null; $convertColumns = explode(" - ", $regra); $descricaoProduto = $convertColumns[1]; $digits = new Zend_Filter_Digits(); $valorBruto = ($digits->filter(trim($sheetData[$this->getColuna('valor_bruto')])) / 100); $valorLiquido = ($digits->filter(trim($sheetData[$this->getColuna('valor_liquido')])) / 100); if( (strstr($descricaoProduto, 'REFIN PORTABILIDADE') || strstr($descricaoProduto, 'REFIN') ) ){ $valorRefin = ($digits->filter(trim($sheetData[$this->getColuna('valor_refin')])) / 100); $valorLiquido = $valorLiquido - $valorRefin; } $dados['valor_bruto'] = @number_format($valorBruto, 2, ',', '.'); $dados['valor_liquido'] = @number_format($valorLiquido, 2, ',', '.'); } /** * * @param array $sheetData * @param array $dados * @return void */ protected function _getConvenioIdTabelaId(array $sheetData, array &$dados) { $colunaTabela = $sheetData[$this->getColuna('tabela')]; $colunaConvenio = $sheetData[$this->getColuna('convenio')]; if( !empty($colunaConvenio) ){ $convenio = new Model_DbTable_Convenio(); $dadosConvenio = $convenio->fetchRow("nome='" . $colunaConvenio . "'"); //verifica se o convenio existe if( $dadosConvenio == null ){ // se não existir cadastra $dados['convenio_id'] = $convenio->insert(array( 'nome' => $colunaConvenio )); } else if( $dadosConvenio['parent_id'] ){ //verifica se o convenio tem parent_id, se tiver, usa o parent_id $dadosParent = $convenio->fetchRow("id='" . $dadosConvenio['parent_id'] . "'"); $dados['convenio_id'] = $dadosParent['id']; } else { $dados['convenio_id'] = $dadosConvenio['id']; } } if (!empty($colunaTabela)) { $this->_getTipoFormalizacao($sheetData, $dados); $tabela = (new Model_Tabela())->getOrCreateTabelaByNome(null, $colunaTabela, $dados['convenio_id'], $this->getBancoId(), $dados['tipo_formalizacao']); $dados['tabela_id'] = $tabela; } } protected function _getDataLiberacao(array $sheetData, array &$dados) { //Se for operação finalizada if( isset($dados['status_proposta']) && $dados['status_proposta'] == 43 ){ $colunaDtLib = isset($sheetData[$this->getColuna('data_liberacao')]) ? $sheetData[$this->getColuna('data_liberacao')] : null; $dataLiberacao = null; if( !empty($colunaDtLib) ){ try { $data = new Zend_Date($colunaDtLib, $this->_dateFormat); $dataLiberacao = $data->toString('yyyy-MM-dd'); } catch ( Zend_Date_Exception $e ) { echo $e->getMessage(); $dataLiberacao = null; } } } else { $dataLiberacao = null; } $dados['data_liberacao'] = $dataLiberacao; } protected function _getStatusProposta(array $sheetData, array &$dados) { //já seta por default operação finalizada $dados['status_proposta'] = 43; } /** * * @param array $sheetData * @param array $dados * @return void */ protected function _getCorretorId(array $sheetData, array &$dados) { $colCorretorId = isset($sheetData[$this->getColuna('corretor_id')]) ? $sheetData[$this->getColuna('corretor_id')] : null; $codAgente = isset($sheetData[$this->getColuna('codigo_agente')]) ? $sheetData[$this->getColuna('codigo_agente')] : null; $corretor = new Model_Corretor(); $corretorId = 0; if( $colCorretorId != null ){ $dadosCorretor = $corretor->exibir($colCorretorId); //pesquisa pelo ID if( $dadosCorretor != null ){ $corretorId = $dadosCorretor['id']; } } if( $codAgente == null && ($corretorId <= 0 || $corretorId == null) ){ //pesquisa pelo codigo do usuario $corretorSenha = new Model_CorretorSenha(); $corretorId = $corretorSenha->getCorretorIdBySenha($codAgente, $dados['banco_id']); } $dados['corretor_id'] = $corretorId; } protected function _getCamposAtualizacao(array &$dados) { $dadosAtualizacao = array( 'subestabelecido_id' => isset($dados['subestabelecido_id']) ? $dados['subestabelecido_id'] : "", 'status_proposta' => isset($dados['status_proposta']) ? $dados['status_proposta'] : '', 'estornado' => isset($dados['estornado']) ? $dados['estornado'] : '', 'valor_bruto' => isset($dados['valor_bruto']) ? $dados['valor_bruto'] : '', 'valor_liquido' => isset($dados['valor_liquido']) ? $dados['valor_liquido'] : '', 'verificar_contratos' => isset($dados['verificar_contratos']) ? $dados['verificar_contratos'] : '', 'id' => $dados['id'] ); if( !empty($dados['data_liberacao']) ){ $dadosAtualizacao['data_liberacao'] = $dados['data_liberacao']; } if( isset($this->_dadosContrato->status_proposta) && in_array($this->_dadosContrato->status_proposta, array( 788, 134, 219 )) ){ unset($dadosAtualizacao['status_proposta']); } if( $dados['comissao_empresa'] != NULL ){ $dadosAtualizacao['comissao_empresa'] = $dados['comissao_empresa']; } if(!empty($dados['base_comissao_empresa_valor']) && empty($this->_dadosContrato['base_comissao_empresa_valor'])){ $dadosAtualizacao['base_comissao_empresa_valor'] = $dados['base_comissao_empresa_valor']; } if( $dados['tabela_id'] != NULL ){ $dadosAtualizacao['tabela_id'] = $dados['tabela_id']; } if( $dados['produto'] != NULL ){ $dadosAtualizacao['produto'] = $dados['produto']; } if( isset($dados['bonus_empresa']) && $dados['bonus_empresa'] != NULL ){ $dadosAtualizacao['bonus_empresa'] = $dados['bonus_empresa']; } if(!empty($dados['base_comissao_empresa_bonus']) && empty($this->_dadosContrato['base_comissao_empresa_bonus'])){ $dadosAtualizacao['base_comissao_empresa_bonus'] = $dados['base_comissao_empresa_bonus']; } if( $dados['comissao_corretor'] != NULL ){ $dadosAtualizacao['comissao_corretor'] = $dados['comissao_corretor']; } if(!empty($dados['base_comissao_valor']) && empty($this->_dadosContrato['base_comissao_valor'])){ $dadosAtualizacao['base_comissao_valor'] = $dados['base_comissao_valor']; } if( isset($dados['bonus_corretor']) && $dados['bonus_corretor'] != NULL ){ $dadosAtualizacao['bonus_corretor'] = $dados['bonus_corretor']; } if(!empty($dados['base_comissao_bonus']) && empty($this->_dadosContrato['base_comissao_bonus'])){ $dadosAtualizacao['base_comissao_bonus'] = $dados['base_comissao_bonus']; } if( isset($dados['tabela_id']) && $dados['tabela_id'] != NULL ){ $dadosAtualizacao['tabela_id'] = $dados['tabela_id']; } if( isset($dados['corretor_id']) && $dados['corretor_id'] != NULL ){ $dadosAtualizacao['corretor_id'] = $dados['corretor_id']; } return $dadosAtualizacao; } }
💾 保存文件
← 返回文件管理器