✏️ 正在编辑: ImportarComissionamentoBB.php
路径:
/srv/systems_dir/yuppiecred/library/Core/ImportarComissionamentoBB.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Core_ImportarComissionamentoBB extends Core_ImportarComissionamento { protected $_tabelaAtivada = false; protected $_incidirSobre = false; protected $_baseComissao = false; protected $_dataInicial = null; protected $_qtdImport = null; protected $_colunas = [ 'tabela' => 'A', 'taxa_contrato_de' => 'B', 'taxa_contrato_a' => 'C', 'prazo_de' => 'D', 'prazo_a' => 'E', 'idade_inicial' => 'F', 'idade_final' => 'G', 'valor_de' => 'H', 'valor_a' => 'I', 'comissao' => 'J', 'adiantamento' => 'K', 'diferimento' => 'L', 'valor_fixo' => 'M' ]; /** * Realiza a importação de comissionamentos * @param array $params dados adicionais do request * @param string $className classe referente ao tipo de importação * @return int $qtdBaixado quantidade de itens importados do arquivo */ public function importar($fields = null) { $this->_qtdImport = 0; $this->_naoImportados = []; $this->_bancoId = $fields['banco_id']; $this->_incidirSobre = $fields['incidir_sobre']; $this->_baseComissao = $fields['base_comissao']; $this->_dataInicial = $fields['data_inicial']; if (count($this->_sheetData) > 0) { if ($fields['tipo_importacao'] == 'GRUPO') { $this->complementarLinhaGrupo($fields); } else { $this->complementarLinha($fields); } } return $this->_qtdImport; } private function complementarLinhaGrupo($fields) { foreach ($fields['grupos_comissao'] as $grupo) { $this->complementarLinha($fields, $grupo); } } private function complementarLinha($fields, $grupo = null) { foreach ($fields['convenios'] as $convenio) { foreach ($fields['tipos_produto'] as $tipo) { foreach ($this->_sheetData as $dados) { $this->importarLinha($dados, $convenio, $tipo, $grupo); } } } } private function importarLinha($dados, $convenioId, $tipoProduto, $grupo = null) { $modelComissionamento = $this->_getTipoImportacaoLinha($grupo); if (!is_object($modelComissionamento)) { $this->addNaoImportados($dados, $modelComissionamento); return; } try { if (empty($this->_bancoId)) { throw new Core_Exception("'Banco do Brasil' não localizado no cadastro de bancos"); } $this->validaDados($dados); $modelTabela = new Model_Tabela(); $tabelaId = $modelTabela->getOrCreateTabelaByNome($dados[$this->_colunas['tabela']], $dados[$this->_colunas['tabela']], $convenioId, $this->_bancoId); $tabela = $modelTabela->exibir($tabelaId); $produto = ((new Model_Produto())->getProdutoByTipo($tipoProduto, $this->_bancoId))->toArray(); if (count($produto) == 0) { throw new Core_Exception('Não foi possível localizar o tipo de produto vinculado ao Banco do Brasil.'); } if ($tabela['tabela_desativada']) { $modelTabela->ativar($tabela['id']); } if (!empty($dados[$this->_colunas['valor_a']])) { if ($this->_baseComissao == 'VALOR LIQUIDO') { $modelComissionamento->setValidarFaixa(1); } elseif ($this->_baseComissao == 'VALOR BRUTO') { $modelComissionamento->setValidarFaixa(2); } } $modelComissionamento->setConvenioId($convenioId); $modelComissionamento->setTabelaId($tabela['id']); $modelComissionamento->setTipoProduto($tipoProduto); $modelComissionamento->setPrazoDe($dados[$this->_colunas['prazo_de']]); $modelComissionamento->setPrazoA($dados[$this->_colunas['prazo_a']]); $modelComissionamento->setValorDe($dados[$this->_colunas['valor_de']]); $modelComissionamento->setValorA($dados[$this->_colunas['valor_a']]); $modelComissionamento->setBancoId($this->_bancoId); $modelComissionamento->setTaxaContratoDe($dados[$this->_colunas['taxa_contrato_de']]); $modelComissionamento->setTaxaContratoA($dados[$this->_colunas['taxa_contrato_a']]); $modelComissionamento->setIdadeInicial($dados[$this->_colunas['idade_inicial']]); $modelComissionamento->setIdadeFinal($dados[$this->_colunas['idade_final']]); $modelComissionamento->setIncidirSobre($this->_incidirSobre); $modelComissionamento->setValorFixo($dados[$this->_colunas['valor_fixo']]); if (method_exists($modelComissionamento, 'setBaseComissaoEmpresa')) { $modelComissionamento->setBaseComissaoEmpresa(strtoupper($this->_baseComissao)); } else { $modelComissionamento->setBaseComissao(strtoupper($this->_baseComissao)); } $result = $modelComissionamento->salvar($modelComissionamento); if ($result > 0) { $classComissionamentoPercentual = get_class($modelComissionamento) . "Percentual"; $modelComissionamentoPercentual = new $classComissionamentoPercentual(); $modelComissionamentoPercentual->setComissionamentoId($result); $modelComissionamentoPercentual->setBaseComissaoValor(strtoupper($this->_baseComissao)); $modelComissionamentoPercentual->setComissao($dados[$this->_colunas['comissao']]); $modelComissionamentoPercentual->setDataInicial($this->_dataInicial); $modelComissionamentoPercentual->setDiferimento($dados[$this->_colunas['diferimento']]); $modelComissionamentoPercentual->setAdiantamento($dados[$this->_colunas['adiantamento']]); if (method_exists($modelComissionamentoPercentual, 'setTabelaAtivada')) { $modelComissionamentoPercentual->setTabelaAtivada($this->_tabelaAtivada); } $modelComissionamentoPercentual->salvar($modelComissionamentoPercentual); $this->_qtdImport++; } } catch (Core_Exception $ex) { if ($grupo) { $grupoComissao = (new Model_GrupoComissao())->exibir($grupo); } $convenio = (new Model_Convenio())->exibir($convenioId); array_push($dados, $grupoComissao->descricao ?? null, $convenio->nome, $tipoProduto); $this->addNaoImportados($dados, $ex->getMessage()); } } private function _getTipoImportacaoLinha($grupo = null) { $className = $this->_models['empresa']; $params = []; if ($grupo > 0) { $params['grupo_id'] = $grupo; $className = $this->_models['corretor_grupo']; } return new $className($params); } protected function validaDados(&$dados) { if (empty($dados[$this->_colunas['tabela']])) { throw new Core_Exception("O campo tabela não foi informado"); } if ($dados[$this->_colunas['prazo_de']] > $dados[$this->_colunas['prazo_a']]) { throw new Core_Exception("Intervalo de prazo inválido"); } elseif ($this->getFloat($dados[$this->_colunas['valor_de']]) > $this->getFloat($dados[$this->_colunas['valor_a']])) { throw new Core_Exception("Intervalo de valores inválido"); } elseif ($dados[$this->_colunas['idade_inicial']] > $dados[$this->_colunas['idade_final']]) { throw new Core_Exception("Intervalo de idades inválido"); } elseif ($dados[$this->_colunas['taxa_contrato_de']] > $dados[$this->_colunas['taxa_contrato_a']]) { throw new Core_Exception("Intervalo de taxas inválido"); } return true; } }
💾 保存文件
← 返回文件管理器