✏️ 正在编辑: AdiantamentoComissao.php
路径:
/srv/systems_dir/yuppiecred-lidernegocios/library/Core/Banco/Planilha/AdiantamentoComissao.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Core_Banco_Planilha_AdiantamentoComissao { protected $_inicioLaco = 0; protected $_bancoId = 0; protected $_dataSaldo = NULL; protected $_dateFormat = 'd/m/Y'; protected $colunasOpcionais = []; protected $naoImportados = []; protected $contratosImportados = []; private $_arquivoOrigem = null; protected $colunas = [ 'numero_contrato' => NULL, 'data_recebimento_comissao' => NULL, 'comissao_empresa' => NULL, 'data_saldo' => NULL, 'valor_lancamento' => NULL, 'descricao' => NULL, 'valor_base_comissao' => NULL, ]; function getInicioLaco() { return $this->_inicioLaco; } function setInicioLaco($inicioLaco) { if( !is_null($inicioLaco) ){ $this->_inicioLaco = $inicioLaco; } } function getDataSaldo() { return $this->_dataSaldo; } function setDataSaldo($dataSaldo) { $this->_dataSaldo = $dataSaldo; } 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 setArquivoOrigem($arquivoOrigem) { $this->_arquivoOrigem = $arquivoOrigem; } public function getArquivoOrigem() { return $this->_arquivoOrigem; } public function validarColunas(array $sheetData) { $colunas = array_flip($this->getColunas()); $colunas = array_diff($colunas, $this->colunasOpcionais); 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; 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++) { try { $dados = [ 'banco_id' => $this->getBancoId(), 'numero_contrato' => NULL, 'data_recebimento_comissao' => NULL, 'comissao_empresa' => NULL, 'data_saldo' => NULL, 'valor_lancamento' => NULL, 'descricao' => NULL ]; $this->_getNumeroContrato($sheetData[$i], $dados); $this->_getDataRecebimentoComissao($sheetData[$i], $dados); $this->_getValorLancamento($sheetData[$i], $dados); $this->_getDataSaldo($sheetData[$i], $dados); $this->_getComissaoEmpresa($sheetData[$i], $dados); $this->_getDescricao($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; } public function salvarLinha($sheetData, &$dados) { $dadosContrato = null; $recebimento = new Model_DbTable_RecebimentoContrato(); $result = 0; //verifica se o contrato existe if (!empty($dados['numero_contrato']) && $dados['banco_id'] > 0) { $dadosContrato = (new Model_DbTable_Contrato())->fetchRow("numero_contrato LIKE '{$dados['numero_contrato']}' OR numero_contrato LIKE '{$dados['numero_contrato']}-%' AND banco_id = {$dados['banco_id']}"); } if ($dadosContrato == null) { $this->_addNaoImportado($dados, $sheetData, $this->naoImportados, 'Contrato não cadastrado ou banco não localizado.'); } else { $dadosRecebimento = $recebimento->fetchRow("contrato_id LIKE '{$dadosContrato['id']}' AND tipo_remuneracao = 3 AND natureza = 1 "); if ($dadosRecebimento != null) { $this->_addNaoImportado($dados, $sheetData, $this->naoImportados, 'Já existe importação para esse contrato'); } else { //update na coluna data recebimento comissao na tabela de contratos if ((empty($dadosContrato->data_recebimento_comissao) || $dadosContrato->data_recebimento_comissao == "0000-00-00") && !empty($dados['data_recebimento_comissao']) && !empty($dados['valor_lancamento'])) { $dadosContrato->data_recebimento_comissao = $dados['data_recebimento_comissao']; } $this->_getValorBaseComissao($sheetData, $dadosContrato, $dados); $dadosContrato->save(); $result = $recebimento->adiantamentoComissao([ 'contrato_id' => $dadosContrato->id, 'data_recebimento_comissao' => $dados['data_recebimento_comissao'], 'base_comissao' => $dados['base_comissao'], 'comissao_empresa' => $dados['comissao_empresa'], 'data_saldo' => $dados['data_saldo'], 'valor_lancamento' => $dados['valor_lancamento'], 'descricao' => $dados['descricao'], 'tipo_remuneracao' => '3', 'natureza' => '1' ]); if ($result <= 0) { $this->_addNaoImportado( $dados, $sheetData, $this->naoImportados, 'Uma falha pode ter ocorrido na inserção do recebimento do contrato' ); return; } Model_Contrato::gravarEspelhoImportacao($dadosContrato->id, $sheetData, $this->getArquivoOrigem()); } } } /** * * @param array $sheetData * @param array $dados * @return void */ protected function _getNumeroContrato(array $sheetData, array &$dados) { if( $this->getColuna('numero_contrato') ){ $dados['numero_contrato'] = String_Refatorar::soNumeros( $sheetData[$this->getColuna('numero_contrato')] ); } } protected function _getDataRecebimentoComissao(array $sheetData, array &$dados) { $colunaDtRecebimentoComissao = $sheetData[$this->getColuna('data_recebimento_comissao')]; $dataRecebimentoComissao = null; if( !empty($colunaDtRecebimentoComissao) ){ $dataRecebimentoComissao = Core_Util::convertDate($colunaDtRecebimentoComissao, $this->_dateFormat); if( is_array($dataRecebimentoComissao) ){ throw new Core_Exception("Não foi possível converter a data de recebimento para o banco de dados. ({$colunaDtRecebimentoComissao})"); } } $dados['data_recebimento_comissao'] = $dataRecebimentoComissao; } protected function _getValorLancamento(array $sheetData, array &$dados) { $valorLancamento = $this->getColuna('valor_lancamento') ? String_Refatorar::parseStringToFloat($sheetData[$this->getColuna('valor_lancamento')]) : 0.00; $dados['valor_lancamento'] = $valorLancamento; } protected function _getComissaoEmpresa(array $sheetData, array &$dados) { $dados['comissao_empresa'] = String_Refatorar::parseStringToFloat($sheetData[$this->getColuna('comissao_empresa')]); } protected function _getDataSaldo(array $sheetData, array &$dados) { $dataSaldo = null; if( !empty($this->_dataSaldo) ){ $dataSaldo = Core_Util::convertDate($this->_dataSaldo, $this->_dateFormat); if( is_array($dataSaldo) ){ throw new Core_Exception("Não foi possível converter a data saldo para o banco de dados. ({$dataSaldo})"); } } $dados['data_saldo'] = $dataSaldo; } protected function _getDescricao(array $sheetData, array &$dados) { $colunaDescricao = $this->getColuna('descricao') != null ? $sheetData[$this->getColuna('descricao')] : null; $dados['descricao'] = $colunaDescricao; } /** * * @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' => $dados['numero_contrato'], 'tabela' => $this->getColuna('tabela') ? $sheetData[$this->getColuna('tabela')] : null, 'data_efetiva_contrato' => $this->getColuna('data_efetiva_contrato') ? $sheetData[$this->getColuna('data_efetiva_contrato')] : null, 'comissao_empresa' => $this->getColuna('comissao_empresa') ? $sheetData[$this->getColuna('comissao_empresa')] : null, 'descricao' => $this->getColuna('descricao') ? $sheetData[$this->getColuna('descricao')] : null, 'motivo' => $motivo )); return $result; } protected function _getColunaBase($dados) { return "base_comissao_empresa_adiantamento"; } protected function _getValorBaseComissao($sheetData, &$dadosContrato, &$dados = null) { $base = $this->_getColunaBase($dados); if (!empty($sheetData[$this->getColuna('valor_base_comissao')])) { $valor = $sheetData[$this->getColuna('valor_base_comissao')]; } else { $empresa = new Model_Empresa(); $tipoComissaoValor = $empresa->getBaseComissao( $dadosContrato->empresa_id, $dadosContrato->banco_id, $dadosContrato->tabela_id, $dadosContrato->convenio_id, $dadosContrato->produto, $dadosContrato->prazo, $dadosContrato->data_emissao, $dadosContrato->valor_liquido); $valor = $tipoComissaoValor == 'VALOR BRUTO' ? $dadosContrato->valor_bruto : $dadosContrato->valor_liquido; } $dados['base_comissao'] = $valor ? String_Refatorar::parseStringToFloat($valor) : 0.00; $dadosContrato->$base = $dados['base_comissao']; } }
💾 保存文件
← 返回文件管理器