✏️ 正在编辑: Recebimento.php
路径:
/srv/systems_dir/yuppiecred-lidernegocios/library/Core/Banco/Planilha/Mercantil/Recebimento.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Core_Banco_Planilha_Mercantil_Recebimento extends Core_Banco_Planilha_RecebimentoComissao { protected $_dateFormat = 'd/m/Y'; protected $colunas = array( 'numero_contrato' => 'R', 'parcelas' => 'V', 'valor_liquido_concessao' => 'Y', 'valor_liquido_renovacao' => 'X', 'valor_comissao' => 'AC', 'valor_comissao_renovacao' => 'AB', 'tipo_pagamento' => 'AF', 'periodo_pagto' => 'I', 'metodologia_calculo' => 'AE', 'valor_base_operacao' => 'Z', 'tipo_tab_fator' => 'AD' ); private $_dadosContrato = null; public function importar(array $sheetData) { $this->validarColunas($sheetData); $sheetData = $this->excluirLinhasVazias($sheetData); end($sheetData); reset($sheetData); for ($i = $this->_inicioLaco; $i < count($sheetData); $i++) { $dados = array( 'banco_id' => $this->getBancoId(), 'numero_contrato' => null, 'data_recebimento_comissao' => null, 'parcelas' => null, 'valor_lancamento' => null, 'comissao_empresa' => null, 'tipo_pagamento' => null, 'valor_comissao_empresa' => null ); try { $this->_getNumeroContrato($sheetData[$i], $dados); $this->_getDataRecebimentoComissao($sheetData[$i], $dados); $this->_getNumeroParcelas($sheetData[$i], $dados); $this->_getValorLancamento($sheetData[$i], $dados); $this->_getComissaoEmpresa($sheetData[$i], $dados); $this->_getTipoRemuneracao($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; $contrato = new Model_DbTable_Contrato(); $dbtable = new Model_DbTable_RecebimentoContrato(); $result = 0; //verifica se o contrato existe if (isset($dados['numero_contrato']) && $dados['numero_contrato'] != null && $dados['banco_id'] > 0) { $numeroContratoSemTipo = stristr($dados['numero_contrato'], '-', true) ? stristr($dados['numero_contrato'], '-', true) : $dados['numero_contrato']; $where = "numero_contrato LIKE '$numeroContratoSemTipo-%' " . "OR ( numero_contrato = '{$numeroContratoSemTipo}' ) " . "AND banco_id = {$this->getBancoId()}"; $dadosContrato = $contrato->fetchRow($where); } if(stristr($dados['numero_contrato'], '-')){ $data = $dadosContrato->toArray(); $data['numero_contrato'] = $dados['numero_contrato']; $dados = $this->_getCamposAtualizacao($data, $sheetData); $result = $contrato->insert($dados); }elseif ($dadosContrato == null) { $this->_addNaoImportado($dados, $sheetData, $this->naoImportados, 'Contrato não cadastrado ou banco não localizado.'); }else{ //update na coluna data recebimento comissao na tabela de contratos if (!empty($dados['data_recebimento_comissao']) && !empty($dados['valor_lancamento'])) { $dadosContrato->id = $dadosContrato->id; $dadosContrato->data_recebimento_comissao = $dados['data_recebimento_comissao']; $dadosContrato->comissao_empresa = $dadosContrato->comissao_empresa > 0 ? $dadosContrato->comissao_empresa : $dados['comissao_empresa']; $dadosContrato->save(); } $result = $dbtable->receberComissao(array( 'contrato_id' => $dadosContrato->id, 'data_recebimento_comissao' => $dados['data_recebimento_comissao'], 'parcelas' => $dados['parcelas'], 'valor_lancamento' => $dados['valor_lancamento'], 'comissao_empresa' => $dados['comissao_empresa'], 'data_saldo' => $dados['data_saldo'], 'tipo_remuneracao' => $dados['tipo_remuneracao'], 'valor_comissao_empresa' => $dados['valor_comissao_empresa'] )); 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()); } } protected function _getDataRecebimentoComissao(array $sheetData, array &$dados) { $colunaDtContratacao = $sheetData[$this->getColuna('periodo_pagto')]; $dataContratacao = null; if (!empty($colunaDtContratacao)) { $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 _getNumeroContrato(array $sheetData, array &$dados) { if( !empty($sheetData[$this->getColuna('numero_contrato')]) ) { $dados['numero_contrato'] = String_Refatorar::soNumeros($sheetData[$this->getColuna('numero_contrato')]); $sufixo = ""; $tipoTabFator = trim($sheetData[$this->getColuna('tipo_tab_fator')]); if (stristr($tipoTabFator, "TELE SAQ")) { $sufixo = "-C"; } $dbtable = new Model_DbTable_Contrato(); $contrato = $dbtable->fetchRow([ "numero_contrato = ?" => $dados['numero_contrato'] . $sufixo ], "numero_contrato DESC"); if (!$contrato) { $dados['numero_contrato'] = $dados['numero_contrato'] . $sufixo; return; } $numeroSufixo = substr($contrato->numero_contrato, (strlen($contrato->numero_contrato) - 1), strlen($contrato->numero_contrato)); //verifica se já tem um número no sufixo e se é COMPLEMENTAR if (is_numeric($numeroSufixo) && $sufixo == "-C") { $sufixo .= ($numeroSufixo + 1); } $dados['numero_contrato'] = $dados['numero_contrato'] . $sufixo; }else{ throw new Core_Exception('O número do contrato não foi informado'); } } protected function _getValorLancamento(array $sheetData, array &$dados) { $valorLancamento = String_Refatorar::parseStringToFloat($sheetData[$this->getColuna('valor_comissao')]); $dados['valor_lancamento'] = $valorLancamento; } protected function _getComissaoEmpresa(array $sheetData, array &$dados) { $valorComissao = String_Refatorar::parseStringToFloat($sheetData[$this->getColuna('valor_comissao')]); $valorBase = String_Refatorar::parseStringToFloat($sheetData[$this->getColuna('valor_base_operacao')]); $comissao = $valorBase > 0 ? ($valorComissao*100/$valorBase) : 0; $dados['comissao_empresa'] = $comissao; $dados['valor_comissao_empresa'] = $valorComissao; } protected function _getNumeroParcelas(array $sheetData, array &$dados) { $dados['parcelas'] = $sheetData[$this->getColuna('parcelas')]; } protected function _getTipoRemuneracao(array $sheetData, array &$dados) { $colunaTipoRemuneracao = $sheetData[$this->getColuna('tipo_pagamento')]; $dados['tipo_remuneracao'] = $colunaTipoRemuneracao; } /** * * @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_contrato']) ? $dados['numero_contrato'] : '00000', 'parcelas' => $this->getColuna('parcelas') ? $sheetData[$this->getColuna('parcelas')] : null, 'data_recebimento_comissao' => $this->getColuna('periodo_pagto') ? $sheetData[$this->getColuna('periodo_pagto')] : null, 'valor_lancamento' => $this->getColuna('valor_comissao') ? $sheetData[$this->getColuna('valor_comissao')] : null, 'comissao_empresa' => $this->getColuna('valor_comissao') ? $sheetData[$this->getColuna('valor_comissao')] : null, 'tipo_remuneracao' => $this->getColuna('tipo_pagamento') ? $sheetData[$this->getColuna('tipo_pagamento')] : null, 'motivo' => $motivo )); return $result; } protected function _getCamposAtualizacao(array &$dados, $sheetData) { $dadosAtualizacao = array( 'comissao_empresa' => isset($sheetData['comissao_empresa']) ? $sheetData['comissao_empresa'] : 0, 'banco_id' => $dados['banco_id'], 'cliente_id' => $dados['cliente_id'], 'empresa_id' => $dados['empresa_id'], 'valor_liquido' => $dados['valor_liquido'] ); if( !empty($dados['numero_contrato']) ){ $dadosAtualizacao['numero_contrato'] = $dados['numero_contrato']; if(stristr($dados['numero_contrato'], '-C')){ $dadosAtualizacao['tipo'] = "COMPLEMENTAR"; } } if( !empty($dados['data_liberacao']) ){ $dadosAtualizacao['data_liberacao'] = $dados['data_liberacao']; } if( !empty($dados['subestabelecido_id']) ){ $dadosAtualizacao['subestabelecido_id'] = $dados['subestabelecido_id']; } if( !empty($dados['status_proposta']) ){ $dadosAtualizacao['status_proposta'] = $dados['status_proposta']; } if( array_key_exists('estornado', $dados) ){ $dadosAtualizacao['estornado'] = $dados['estornado']; } if ($dados['comissao_empresa'] != NULL) { $dadosAtualizacao['comissao_empresa'] = $dados['comissao_empresa']; } if( !empty($dados['base_comissao_empresa_valor']) && $dados['base_comissao_empresa_valor'] != $this->_dadosContrato['base_comissao_empresa_valor'] ){ $dadosAtualizacao['base_comissao_empresa_valor'] = $dados['base_comissao_empresa_valor']; } if ( !empty($dados['bonus_empresa']) ) { $dadosAtualizacao['bonus_empresa'] = $dados['bonus_empresa']; } if( !empty($dados['base_comissao_empresa_bonus']) && $dados['base_comissao_empresa_bonus'] != $this->_dadosContrato['base_comissao_empresa_bonus'] ){ $dadosAtualizacao['base_comissao_empresa_bonus'] = $dados['base_comissao_empresa_bonus']; } if ($dados['comissao_corretor'] != NULL) { $dadosAtualizacao['comissao_corretor'] = $dados['comissao_corretor']; } if( !empty($dados['base_comissao_valor']) && $dados['base_comissao_valor'] != $this->_dadosContrato['base_comissao_valor'] ){ $dadosAtualizacao['base_comissao_valor'] = $dados['base_comissao_valor']; } if ( !empty($dados['bonus_corretor']) ) { $dadosAtualizacao['bonus_corretor'] = $dados['bonus_corretor']; } if( !empty($dados['base_comissao_bonus']) && $dados['base_comissao_bonus'] != $this->_dadosContrato['base_comissao_bonus'] ){ $dadosAtualizacao['base_comissao_bonus'] = $dados['base_comissao_bonus']; } if ( !empty($dados['tabela_id']) ) { $dadosAtualizacao['tabela_id'] = $dados['tabela_id']; } if( !empty($dados['tipo_formalizacao']) ){ $dadosAtualizacao['tipo_formalizacao'] = $dados['tipo_formalizacao']; } if( !empty($dados['forma_liberacao']) ){ $dadosAtualizacao['forma_liberacao'] = $dados['forma_liberacao']; } if( !empty($dados['valor_prestacao']) ){ $dadosAtualizacao['valor_prestacao'] = $dados['valor_prestacao']; } if( !empty($dados['valor_bruto']) ){ $dadosAtualizacao['valor_bruto'] = $dados['valor_bruto']; } return $dadosAtualizacao; } }
💾 保存文件
← 返回文件管理器