✏️ 正在编辑: ValorARecuperar.php
路径:
/srv/systems_dir/yuppiecred-lidernegocios/library/Core/Banco/Planilha/ValorARecuperar.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Core_Banco_Planilha_ValorARecuperar { protected $_inicioLaco = 1; protected $_dateFormat = 'd/m/Y'; protected $colunas = array( 'numero_contrato' => 'A', 'valor' => 'B', 'motivo' => 'C', ); protected $numeroContrato; public $naoImportados = array(); public $importados = array(); function getInicioLaco() { return $this->_inicioLaco; } function setInicioLaco($inicioLaco) { if( !is_null($inicioLaco) ){ $this->_inicioLaco = $inicioLaco; } } public function __construct($bancoId) { $this->setBancoId($bancoId); } public function setBancoId($bancoId) { $this->_bancoId = $bancoId; return $this; } public function getBancoId() { return $this->_bancoId; } public function getColuna($coluna) { return isset($this->colunas[$coluna]) ? trim($this->colunas[$coluna]) : null; } public function getColunas() { return $this->colunas; } public function validarColunas(array $sheetData) { $colunas = array_flip($this->getColunas()); unset($colunas['']); $colunas = array_keys($colunas); $sheetDataColunas = array_keys(current($sheetData)); $colunasFaltando = array_diff($colunas, $sheetDataColunas); if( $colunasFaltando ){ asort($colunasFaltando); $msg = count($colunasFaltando) == 1 ? "A coluna '" . current($colunasFaltando) . "' não existe na planilha enviada. " : 'As seguintes colunas não existem na planilha enviada:<br />' . implode(', ', $colunasFaltando) . '. '; $msg .= '<br />Confira na planilha padrão deste banco o que está diferente.'; throw new Core_Exception($msg); } } public function excluirLinhasVazias(array $sheetData) { $newSheetData = array(); $cont = $this->_inicioLaco; if ($this->_inicioLaco > 0) { $cont = $this->_inicioLaco - 1; } foreach ( $sheetData as $linha ) { if( $linha[$this->getColuna('numero_contrato')] ){ $newSheetData[$cont++] = $linha; } } return $newSheetData; } public function importar(array $sheetData) { $this->validarColunas($sheetData); $sheetData = $this->excluirLinhasVazias($sheetData); end($sheetData); reset($sheetData); if( count($sheetData) > 0 ){ for ( $i = $this->_inicioLaco; $i < count($sheetData); $i++ ) { $dados = array( 'contrato_id' => null, 'valor' => null, 'motivo' => null ); $this->_getContrato($sheetData[$i], $dados); $this->_getValor($sheetData[$i], $dados); $this->_getMotivo($sheetData[$i], $dados); $this->salvarLinha($sheetData[$i], $dados); } } return $this; } public function salvarLinha($sheetData, &$dados) { $dbtable = new Model_DbTable_ValorARecuperar(); if( empty($dados['contrato_id']) ){ $this->_addNaoImportado($dados, $sheetData, $this->naoImportados, 'Contrato não cadastrado ou banco não localizado.'); } else { $valores = $dbtable->fetchAll( array("contrato_id = {$dados['contrato_id']}", "valor = {$dados['valor']}", "motivo LIKE '{$dados['motivo']}'", "excluido <> 1")); if (count($valores) > 0) { $this->_addNaoImportado($dados, $sheetData, $this->naoImportados, 'Já existe um cadastro com o valor, motivo e contrato idênticos.'); } else { $valores = $valores->toArray(); try { $result = $dbtable->insert($dados); if ($result > 0) { $this->importados[] = $this->numeroContrato; } else { $this->_addNaoImportado( $dados, $sheetData, $this->naoImportados, 'Uma falha pode ter ocorrido.' ); } } catch ( Exception $e ) { $this->_addNaoImportado( $dados, $sheetData, $this->naoImportados, $e->getMessage() ); } } } } /** * * @param array $sheetData * @param array $dados * @return void */ protected function _getContrato(array $sheetData, array &$dados) { if( $this->getColuna('numero_contrato') ){ $this->numeroContrato = String_Refatorar::soNumeros( $sheetData[$this->getColuna('numero_contrato')] ); $dadosContrato = null; $contrato = new Model_DbTable_Contrato(); //verifica se o contrato existe if( !empty($this->numeroContrato)){ $dadosContrato = $contrato->fetchRow("(numero_contrato = '" . $this->numeroContrato . "' OR numero_contrato LIKE '". $this->numeroContrato . "-%')"); if($dadosContrato){ $dados['contrato_id'] = $dadosContrato['id']; } } } } protected function _getValor(array $sheetData, array &$dados) { $valor = $this->getColuna('valor') ? trim($sheetData[$this->getColuna('valor')]) : null; $dados['valor'] = Core_FilterValor::filter($valor); } protected function _getMotivo(array $sheetData, array &$dados) { $colunaMotivo = $this->getColuna('motivo') != null ? $sheetData[$this->getColuna('motivo')] : null; $dados['motivo'] = $colunaMotivo; } /** * * @param array $naoImportados * @param string $motivo * @return void */ protected function _addNaoImportado(array $dados, array $sheetData, array &$naoImportados, $motivo = '') { $result = array_push($naoImportados, array( 'numero_contrato' => $this->numeroContrato, 'motivo' => $motivo )); return $result; } }
💾 保存文件
← 返回文件管理器