✏️ 正在编辑: Kgiro.php
路径:
/srv/systems_dir/yuppiecred-lidernegocios/library/Core/Banco/Planilha/Itau/Kgiro.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Core_Banco_Planilha_Itau_Kgiro extends Core_Banco_Planilha_RecebimentoComissao { protected $_dateFormat = 'd/m/Y'; protected $colunas = array( 'numero_ade' => 'B', 'data_saldo' => 'J', 'taxa_contrato' => 'N', 'valor_lancamento' => 'S', 'valor_parcela_manutencao' => 'V', //valor descontado todo dia 13 do mês 'data_desconto_manutencao' => 'K', 'base_calculo_comissao' => 'M', 'valor_liquido_comissao' => 'Q', 'elegivel_capital_giro' => 'C', ); private $_contrato; public function excluirLinhasVazias(array $sheetData) { $newSheetData = array(); $cont = $this->_inicioLaco; foreach ( $sheetData as $linha ) { if( $linha[$this->getColuna('numero_ade')] ){ $newSheetData[$cont++] = $linha; } } return $newSheetData; } public function importar(array $sheetData) { $this->validarColunas($sheetData); $sheetData = $this->excluirLinhasVazias($sheetData); end($sheetData); reset($sheetData); for ($i = $this->_inicioLaco; $i < count($sheetData); $i++) { try { $dados = [ 'banco_id' => $this->getBancoId() ]; $this->_getNumeroAde($sheetData[$i], $dados); $this->_getBaseCalculo($sheetData[$i], $dados); $this->_getElegivelCapitalGiro($sheetData[$i], $dados); $this->salvarLinha($sheetData[$i], $dados); $this->contratosImportados[] = $dados['numero_ade']; } catch (Exception $e) { $this->_addNaoImportado( $dados, $sheetData[$i], $this->naoImportados, $e->getMessage() ); } } return $this->naoImportados; } public function salvarLinha($sheetData, &$dados) { $this->_contrato = (new Model_Contrato)->existeAde($dados['numero_ade'], $this->getBancoId()); if( empty($this->_contrato) ){ throw new Core_Exception("Contrato não localizado"); } if( stristr($dados['elegivel_capital_giro'], "SIM") ){ return $this->_adicionarCreditos($sheetData, $dados); } $this->_adicionarDebitos($sheetData, $dados); } protected function _getNumeroAde(array $sheetData, array &$dados) { if( empty($sheetData[$this->getColuna('numero_ade')]) ){ throw new Core_Exception('O número da ADE não foi informado'); } $dados['numero_ade'] = String_Refatorar::soNumeros($sheetData[$this->getColuna('numero_ade')]); } protected function _getBaseCalculo(array $sheetData, array &$dados) { $dados['base_calculo_comissao'] = String_Refatorar::parseStringToFloat($sheetData[$this->getColuna('base_calculo_comissao')]); } protected function _getElegivelCapitalGiro(array $sheetData, array &$dados) { $dados['elegivel_capital_giro'] = $sheetData[$this->getColuna('elegivel_capital_giro')]; } protected function _adicionarCreditos($sheetData, &$dados) { $this->_getDataRecebimentoComissao($sheetData, $dados); $this->_getValorLancamento($sheetData, $dados); $this->_getComissaoEmpresa($sheetData, $dados); $dbtable = new Model_DbTable_RecebimentoContrato(); $result = $dbtable->receberComissao(array( 'contrato_id' => $this->_contrato->id, 'data_recebimento_comissao' => $dados['data_recebimento_comissao'], 'valor_lancamento' => $dados['valor_lancamento'], 'comissao_empresa' => $dados['comissao_empresa'], 'data_saldo' => $dados['data_saldo'], 'tipo_remuneracao' => 3, //TIPO_REMUNERACAO = adiantamento 'natureza' => 2, //NATUREZA_COMISSAO = Remuneração Adicional 'descricao' => "Elegível capital de giro", 'base_comissao' => $dados['base_calculo_comissao'] )); 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($this->_contrato->id, $sheetData, $this->getArquivoOrigem()); } protected function _getDataRecebimentoComissao(array $sheetData, array &$dados) { $colunaDtContratacao = $sheetData[$this->getColuna('data_saldo')]; if (empty($colunaDtContratacao)) { throw new Core_Exception("A data de pagamento do contrato não foi informada"); } $dataContratacao = Core_Util::convertDate($colunaDtContratacao); if( is_array($dataContratacao) ){ throw new Core_Exception("Não foi possível converter a data de recebimento para o banco de dados. ({$colunaDtContratacao})"); } $dados['data_recebimento_comissao'] = $dataContratacao; $dados['data_saldo'] = $dataContratacao; } protected function _getValorLancamento(array $sheetData, array &$dados) { $valorLancamento = !empty($sheetData[$this->getColuna('valor_lancamento')]) ? String_Refatorar::parseStringToFloat($sheetData[$this->getColuna('valor_lancamento')]) : 0; $dados['valor_lancamento'] = $valorLancamento; } protected function _getComissaoEmpresa(array $sheetData, array &$dados) { $percentual = $dados['valor_lancamento'] * 100 / $dados['base_calculo_comissao']; $dados['comissao_empresa'] = $percentual; } /** * * @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' => isset($dados['numero_ade']) ? $dados['numero_ade'] : '', 'parcelas' => $this->getColuna('parcelas') ? $sheetData[$this->getColuna('parcelas')] : null, 'data_recebimento_comissao' => $this->getColuna('periodo_pagto') ? $sheetData[$this->getColuna('periodo_pagto')] : null, 'valor_lancamento' => !empty($this->getColuna('valor_lancamento')) ? $sheetData[$this->getColuna('valor_lancamento')] : 0, 'comissao_empresa' => !empty($this->getColuna('valor_comissao')) ? $sheetData[$this->getColuna('valor_comissao')] : 0, 'tipo_remuneracao' => $this->getColuna('tipo_pagamento') ? $sheetData[$this->getColuna('tipo_pagamento')] : null, 'motivo' => $motivo )); return $result; } //DEBITOS protected function _getValorParcelaManutencao(array $sheetData, array &$dados) { $valorLancamento = !empty($sheetData[$this->getColuna('valor_parcela_manutencao')]) ? String_Refatorar::parseStringToFloat($sheetData[$this->getColuna('valor_parcela_manutencao')]) : 0; $dados['valor_lancamento'] = ($valorLancamento * -1); } protected function _getDataDescontoManutencao(array $sheetData, array &$dados) { $colunaDt = $sheetData[$this->getColuna('data_desconto_manutencao')]; if (empty($colunaDt)) { throw new Core_Exception("A data de débito da manutenção não foi informada"); } $data = Core_Util::convertDate($colunaDt); if( is_array($data) ){ throw new Core_Exception("Não foi possível converter a data de débito para o banco de dados. ({$colunaDt})"); } $dados['data_saldo'] = $data; } protected function _getComissaoDescontada(array $sheetData, array &$dados) { $percentual = $dados['valor_lancamento'] * 100 / $dados['base_calculo_comissao']; $dados['comissao_descontada'] = $percentual; } protected function _adicionarDebitos($sheetData, &$dados) { $this->_getDataDescontoManutencao($sheetData, $dados); $this->_getValorParcelaManutencao($sheetData, $dados); $this->_getComissaoDescontada($sheetData, $dados); $dbtable = new Model_DbTable_RecebimentoContrato(); $result = $dbtable->receberComissao(array( 'contrato_id' => $this->_contrato->id, 'valor_lancamento' => $dados['valor_lancamento'], 'comissao_empresa' => $dados['comissao_descontada'], 'data_saldo' => $dados['data_saldo'], 'tipo_remuneracao' => 3, //TIPO_REMUNERACAO = Adiantamento 'natureza' => 5, //NATUREZA_COMISSAO = Ajuste de Débito 'descricao' => 'Parcela manutenção kgiro', 'base_comissao' => $dados['base_calculo_comissao'], )); if ($result <= 0) { $this->_addNaoImportado($dados, $sheetData, $this->naoImportados, 'Uma falha pode ter ocorrido na inserção do débito do contrato'); return; } Model_Contrato::gravarEspelhoImportacao($this->_contrato->id, $sheetData, $this->getArquivoOrigem()); } }
💾 保存文件
← 返回文件管理器