✏️ 正在编辑: WebService.php
路径:
/srv/systems_dir/yuppiecred-lidernegocios/library/Core/Banco/Service/Bonsucesso/WebService.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Core_Banco_Service_Bonsucesso_WebService extends Core_Banco_Planilha { protected $_inicioLaco = 0; protected $_dateFormat = 'Y-m-d'; protected $colunas = array( //Dados do cliente 'nome_cliente' => 'nome_cliente', 'cpf_cliente' => 'cpf_cliente', //Dados do contrato 'tipo' => 'codigo_produto', 'status_proposta' => 'descricao_status', 'data_liberacao' => 'data_atualizacao', 'numero_contrato' => 'numero_proposta', ); public function __construct($bancoId, $extensao = null) { $this->setArquivoOrigem("IMPORTACAO_WS_STATUS_BONSUCESSO"); parent::__construct($bancoId, $extensao); } protected function _getNumeroContrato(array $sheetData, array &$dados) { if( isset($sheetData[$this->getColuna('numero_contrato')]) ){ $numeroContrato = String_Refatorar::soNumeros($sheetData[$this->getColuna('numero_contrato')]); $dados['numero_contrato'] = ltrim($numeroContrato, '0'); } } 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 )); } 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 salvarLinhaStatus($sheetData, &$dados) { $log = $this->getLogger("DADOS STATUS PROPOSTA"); $log->log("Tentativa de atualização com os dados: " . print_r($dados, true), Zend_Log::INFO); $dbContrato = new Model_DbTable_Contrato(); $dbContrato->closeConnection(); $dadosContrato = $this->_contratoExiste($dbContrato, $dados); $protocolos = null; if ($dadosContrato) { $protocoloContrato = new Model_DbTable_ProtocoloContrato(); $protocolos = $protocoloContrato->fetchRow("contrato_id = {$dadosContrato['id']}", 'id DESC'); if ($protocolos) { $motivo = "Contrato {$dados['numero_contrato']} está pago e não pode ser alterado."; $log->log("Contrato NAO foi atualizado. Motivo : $motivo", Zend_Log::INFO); $this->_addNaoImportado($dados, $sheetData, $this->naoImportados, $motivo); return; } if ($dados['status_proposta'] == 43 && !empty($dadosContrato['data_liberacao'])) { unset($dados['data_liberacao']); $motivo = "Contrato {$dados['numero_contrato']} com status 43 e já tinha data de liberação."; $log->log($motivo, Zend_Log::INFO); } unset($dados['numero_contrato']); $dados['id'] = $dadosContrato['id']; $result = $dbContrato->update($dados, "id = {$dadosContrato['id']}"); if ($result) { $log->log("Contrato atualizado.", Zend_Log::INFO); } return $result; } $motivo = 'Atualização de Status: contrato não localizado no sistema'; $log->log("Contrato NAO foi atualizado. Motivo : $motivo", Zend_Log::INFO); $this->_addNaoImportado($dados, $sheetData, $this->naoImportados, $motivo); } public function importarStatus(array $sheetDataStatus) { if( empty($sheetDataStatus) ){ return; } foreach ( $sheetDataStatus as $i => $proposta ) { $dadosStatus = [ 'status_proposta' => null ]; try { $this->_getNumeroContrato($proposta, $dadosStatus); $this->_getStatusProposta($proposta, $dadosStatus); $this->salvarLinhaStatus($proposta, $dadosStatus); } catch ( Exception $e ) { $this->_addNaoImportado($dadosStatus, $proposta, $this->naoImportados, $e->getMessage()); } } return $this->naoImportados; } private function getLogger($tipoImportacao) { /* 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 $tipoImportacao: " . $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); return $log; } }
💾 保存文件
← 返回文件管理器