✏️ 正在编辑: FtpStatus.php
路径:
/srv/systems_dir/yuppiecred-lidernegocios/library/Core/Banco/Planilha/Bonsucesso/FtpStatus.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Core_Banco_Planilha_Bonsucesso_FtpStatus extends Core_Banco_Planilha { protected $_inicioLaco = 0; protected $_dateFormat = 'd/m/Y'; protected $colunas = array( //contrato status 'numero_contrato' => 'COD_PROPOSTA_EMPRESTIMO', 'codigo_promotora' => 'COD_CORRESPONDENTE', 'data_liberacao' => 'DAT_SITUACAO', 'status_proposta' => 'COD_SITUACAO_EMPRESTIMO', 'obs' => 'DSC_MOTIVO', // ''=>'DAT_CTR_INCLUSAO', // ''=>'DAT_CTR_ALTERACAO', // ''=>'NOM_CTR_PROCESSO', 'digitador' => 'NOM_CTR_ACESSO', ); public function importar(array $sheetData) { $linhas = $sheetData; $sheetData = array(); for ( $i = $this->_inicioLaco; $i < count($linhas); $i++ ) { $sheetData[$i] = $linhas[$i]; $dados = array( 'numero_contrato' => null, 'data_liberacao' => null, 'status_proposta' => null, ); try { $this->_getNumeroContrato($sheetData[$i], $dados); $this->_getStatusProposta($sheetData[$i], $dados); $this->_getObs($sheetData[$i], $dados); // if( $this->statusEmaisRecente($sheetData[$i], $dados) ){ // continue; // } $this->contratosImportados[$dados['numero_contrato']][] = $sheetData[$i]; $this->salvarLinha($sheetData[$i], $dados); } catch ( Exception $e ) { $this->_addNaoImportado( $dados, $sheetData[$i], $this->naoImportados, $e->getMessage() ); } } return $this->naoImportados; } /** * Retorna verdadeiro se o status que está sendo importado for mais recente * @param type $sheetData * @param type $dados * @return boolean */ protected function statusEmaisRecente($sheetData, $dados) { $maisRecente = false; if( isset($this->contratosImportados[$dados['numero_contrato']]) ){ foreach( $this->contratosImportados[$dados['numero_contrato']] as $importados ){ $dtImportado = new Zend_Date($importados['DAT_SITUACAO']); $dtAgora = new Zend_Date($sheetData['DAT_SITUACAO']); if( $dtImportado->getTimestamp() < $dtAgora->getTimestamp() ){ $maisRecente = true; break; } } } return $maisRecente; } protected function salvarLinha($sheetData, &$dados) { /* Apenas para LOG */ $urlSistema = Yuppie_Auth::getSiteKey(); $writer = new Zend_Log_Writer_Stream("/var/log/sistemayuppie/zf_log_planilha_{$urlSistema}_" . date('dmY') . ".txt"); $classeChamada = get_class($this); $log = new Zend_Log($writer); $log->log('#######################', Zend_Log::INFO); $log->log("IMPORTAÇÃO FTP STATUS BONSUCESSO : " . $classeChamada, Zend_Log::INFO); $log->log('ARQUIVO IMPORTADO: ' . print_r($this->getArquivoOrigem(), true), Zend_Log::INFO); $log->log("Usuário logado: " . Yuppie_Auth::getIdentity()->login, Zend_Log::INFO); $log->log("Informações: " . print_r($dados, true), Zend_Log::INFO); $newContrato = new Model_DbTable_Contrato(); $result = 0; //verifica se o contrato existe $this->_dadosContrato = isset($dados['numero_contrato']) && $dados['numero_contrato'] ? $newContrato->fetchRow("numero_contrato = '" . $dados['numero_contrato'] . "' " . "AND banco_id = " . $this->getBancoId()) : null; $protocolos = null; if( $this->_dadosContrato == null ){ $log->log('Contrato não existe no sistema, logo não pode ser atualizado.', Zend_Log::INFO); $this->_addNaoImportado( $dados, $sheetData, $this->naoImportados, 'Contrato não existe no sistema, logo não pode ser atualizado.' ); } else { $protocoloContrato = new Model_DbTable_ProtocoloContrato(); $protocolos = $protocoloContrato->fetchRow("contrato_id = " . $this->_dadosContrato['id']); if( $protocolos != null ){ $this->_addNaoImportado( $dados, $sheetData, $this->naoImportados, 'Contrato está pago e não pode ser alterado.' ); $log->log('Contrato está pago e não pode ser alterado.', Zend_Log::INFO); } else { $dados['id'] = $this->_dadosContrato['id']; $dados = $this->_getCamposAtualizacao($dados); try { $result = $newContrato->update($dados, "id = {$this->_dadosContrato['id']}"); if( $result ){ $log->log("Atualizado com sucesso", Zend_Log::INFO); } else { $log->log("NAO foi Atualizado", Zend_Log::INFO); } } catch ( Exception $e ) { $log->log("Exception:" . $e->getMessage(), Zend_Log::INFO); $this->_addNaoImportado( $dados, $sheetData, $this->naoImportados, $e->getMessage() ); } } } Model_Contrato::gravarEspelhoImportacao($dados['id'], $sheetData, $this->getArquivoOrigem()); } protected function _getCamposAtualizacao(array &$dados) { $dadosAtualizacao = array( 'id' => $dados['id'] ); if( !empty($dados['obs']) ){ $dadosAtualizacao['obs'] = $dados['obs']; } if( !empty($dados['status_proposta']) ){ $dadosAtualizacao['status_proposta'] = $dados['status_proposta']; } if( !empty($dados['data_liberacao']) && empty($this->_dadosContrato['data_liberacao']) ){ $dadosAtualizacao['data_liberacao'] = $dados['data_liberacao']; } return $dadosAtualizacao; } protected function _getNumeroContrato(array $sheetData, array &$dados) { if( $this->getColuna('numero_contrato') ){ if( isset($sheetData[$this->getColuna('numero_contrato')]) ){ $dados['numero_contrato'] = String_Refatorar::soNumeros( $sheetData[$this->getColuna('numero_contrato')] ); } } } protected function _getStatusProposta(array $sheetData, array &$dados) { $dataLiberacao = null; $statusProposta = $sheetData[$this->getColuna('status_proposta')]; $statusId = null; $status = new Model_StatusProposta(); $dadosStatus = $status->existe(isset($statusProposta) ? $statusProposta : null); if( $dadosStatus == null && !empty($statusProposta) ){ // se não existir, cadastra $status->setDescricao($statusProposta); $statusId = $status->salvar($status); } else if( $dadosStatus['parent_id'] ){ //verifica se o status tem parent_id, se tiver, usa o parent_id $dadosParent = $status->exibir($dadosStatus['parent_id']); $statusId = $dadosParent['id']; //QUANDO FOR OPERACAO FINALIZADA, COLOCAR A DATA DE LIBERACAO if( isset($statusId) && $statusId == 43 ){ $dataLiberacao = $sheetData[$this->getColuna('data_liberacao')]; if( !empty($dataLiberacao) ){ $dataLiberacao = Core_Util::convertDate($dataLiberacao, $this->_dateFormat); if( is_array($dataLiberacao) ){ throw new Core_Exception("Não foi possível converter a data de liberação para o banco de dados. ({$dataLiberacao})"); } } } } else { $statusId = $dadosStatus['id']; } if( $statusId != null ){ $dados['status_proposta'] = $statusId; } $dados['data_liberacao'] = $dataLiberacao; } protected function _getObs(array $sheetData, array &$dados) { $numeroContrato = $dados['numero_contrato']; $newContrato = new Model_DbTable_Contrato(); $dadosContrato = isset($numeroContrato) && $numeroContrato ? $newContrato->fetchRow("numero_contrato = '" . $numeroContrato . "' " . "AND banco_id = " . $this->getBancoId()) : null; $obsAtual = isset($dadosContrato->obs) ? ($dadosContrato->obs) : null; $novaObs = isset($dadosSituacao['dsc_motivo']) ? $dadosSituacao['dsc_motivo'] : null; if( $obsAtual && $novaObs ){ $dados['obs'] = $obsAtual . " | " . $novaObs; } elseif( !$obsAtual && $novaObs ){ $dados['obs'] = $novaObs; } else { $dados['obs'] = ""; } } /** * * @param array $naoImportados * @param string $motivo * @return void */ protected function _addNaoImportado(array $dados, array $sheetData, array &$naoImportados, $motivo = '') { array_push($naoImportados, array( 'numero_contrato' => $dados['numero_contrato'], 'tabela' => isset($sheetData[$this->getColuna('tabela')]) ? $sheetData[$this->getColuna('tabela')] : null, 'cpf' => isset($sheetData[$this->getColuna('cpf_cliente')]) ? $sheetData[$this->getColuna('cpf_cliente')] : null, 'cliente' => isset($sheetData[$this->getColuna('nome_cliente')]) ? $sheetData[$this->getColuna('nome_cliente')] : null, 'valor' => isset($sheetData[$this->getColuna('valor_bruto')]) ? $sheetData[$this->getColuna('valor_bruto')] : null, 'valor_liquido' => isset($sheetData[$this->getColuna('valor_liquido')]) ? $sheetData[$this->getColuna('valor_liquido')] : null, 'prazo' => isset($sheetData[$this->getColuna('prazo')]) ? $sheetData[$this->getColuna('prazo')] : null, 'codigo_atendente' => isset($sheetData[$this->getColuna('codigo_agente')]) ? $sheetData[$this->getColuna('codigo_agente')] : null, 'codigo_vendedor' => isset($sheetData[$this->getColuna('corretor_id')]) && isset($sheetData[$this->getColuna('corretor_id')]) ? $sheetData[$this->getColuna('corretor_id')] : null, 'motivo' => $motivo )); } }
💾 保存文件
← 返回文件管理器