✏️ 正在编辑: WebServiceComissionamento.php
路径:
/srv/systems_dir/yuppiecred/library/Core/Banco/Service/Banrisul/WebServiceComissionamento.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Core_Banco_Service_Banrisul_WebServiceComissionamento { protected $_inicioLaco = 0; protected $_dateFormat = 'yyyy-MM-dd'; protected $_source = 'planilha'; protected $colunas = [ 'numero_contrato' => 'Contrato', 'parcelas' => 'Prazo', 'comissao_empresa' => 'Perc_Comissao', 'rco' => 'Vlr_RCO_Retornado', 'data_saldo' => 'Data_Pagamento', 'data_recebimento_comissao' => 'Data_Pagamento', 'valor_liquido' => 'Valor_Base', 'valor_operacao' => 'Valor_Operacao', 'valor_lancamento' => 'Comissao', 'estorno' => 'Sit_Comissao', 'natureza' => 'Detalhamento', 'tipo_remuneracao' => 'Detalhamento', 'descricao' => 'Descricao_Formalizacao' ]; protected $colunasOpcionais = []; protected $naoImportados = []; protected $contratosImportados = []; 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 importar(array $propostas) { if (count($propostas) > 0) { foreach ( $propostas as $proposta ) { foreach ( $proposta as $dadosComissao ) { foreach ( $dadosComissao as $comissao ) { $dados = [ 'banco_id' => $this->getBancoId(), 'numero_contrato' => null, 'comissao_empresa' => null, 'data_recebimento_comissao' => null, 'parcelas' => null, 'rco' => null, 'data_saldo' => null, 'valor_liquido' => null, 'valor_lancamento' => null, 'natureza' => null, 'tipo_remuneracao' => null, 'data_liberacao' => null ]; $this->_getNumeroContrato($comissao, $dados); $this->_getDataRecebimentoComissao($comissao, $dados); $this->_getDataLancamentoComissao($comissao, $dados); $this->_getDataLiberacao($comissao, $dados); if ($dados['numero_contrato'] != null && (!empty($dados['data_recebimento_comissao']) || !empty($dados['data_lancamento']))) { $this->_getComissaoEmpresa($comissao, $dados); $this->_getDataRecebimentoComissao($comissao, $dados); $this->_getNumeroParcelas($comissao, $dados); $this->_getRco($comissao, $dados); $this->_getEstornado($comissao, $dados); $this->_getDataSaldo($comissao, $dados); $this->_getValorBrutoLiquido($comissao, $dados); $this->_getValorLancamento($comissao, $dados); $this->_getNatureza($comissao, $dados); $this->_getTipoRemuneracao($comissao, $dados); $this->_getDescricao($comissao, $dados); $this->contratosImportados[] = $dados['numero_contrato']; $this->salvarLinha($comissao, $dados); } } } } } return $this->naoImportados; } public function salvarLinha($sheetData, &$dados) { /* Apenas para LOG */ $urlSistema = Yuppie_Auth::getSiteKey(); $writer = new Zend_Log_Writer_Stream("/var/log/sistemayuppie/zf_log_{$this->_source}_{$urlSistema}_" . date('dmY') . ".txt"); $classeChamada = get_class($this); $log = new Zend_Log($writer); $log->log('#######################', Zend_Log::INFO); $log->log("IMPORTAÇÃO DETALHAMENTO PPROPOSTAS COMISSAO BANRISUL : " . $classeChamada, Zend_Log::INFO); $log->log('ARQUIVO IMPORTADO: WEBSERVICE COMISSIONAMENTO', Zend_Log::INFO); $log->log("Usuário logado: " . Yuppie_Auth::getIdentity()->login, Zend_Log::INFO); $log->log("Informações: " . print_r($dados, true), Zend_Log::INFO); $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 ){ $dadosContrato = $contrato->fetchRow("numero_contrato = '" . $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 { //update na coluna data recebimento comissao na tabela de contratos if (!empty($dados['data_recebimento_comissao'])) { $dadosContrato->data_recebimento_comissao = $dados['data_recebimento_comissao']; } //update na coluna data de liberação na tabela de contratos, caso não já tenha a data if (!empty($dados['data_liberacao']) && (empty($dadosContrato->data_liberacao) || $dadosContrato->data_liberacao == '0000-00-00')) { $dadosContrato->data_liberacao = $dados['data_liberacao']; } $dbtableContrato = new Model_DbTable_Contrato(); $dbtableContrato->update($dadosContrato->toArray(), "id = $dadosContrato->id"); $valorBase = $sheetData[$this->getColuna('valor_base')] ?? 0.00; try { $result = $dbtable->receberComissao(array( 'contrato_id' => $dadosContrato->id, 'data_recebimento_comissao' => $dados['data_recebimento_comissao'], 'parcelas' => $dados['parcelas'], 'comissao_empresa' => $dados['comissao_empresa'], 'base_comissao' => $valorBase, 'rco' => $dados['rco'] ?? null, 'data_saldo' => $dados['data_saldo'], 'tipo_remuneracao' => $dados['tipo_remuneracao'] ?? null, 'valor_lancamento' => $dados['valor_lancamento'] ?? null, 'natureza' => $dados['natureza'] ?? null )); if( $result <= 0 ){ $this->_addNaoImportado( $dados, $sheetData, $this->naoImportados, 'Uma falha pode ter ocorrido na inserção do recebimento do contrato' ); } } catch ( Exception $e ) { $this->_addNaoImportado( $dados, $sheetData, $this->naoImportados, $e->getMessage() ); } } } /** * * @param array $sheetData * @param array $dados * @return void */ protected function _getNumeroContrato(array $sheetData, array &$dados) { if( $this->getColuna('numero_contrato') ){ $dados['numero_contrato'] = intval(String_Refatorar::soNumeros( $sheetData[$this->getColuna('numero_contrato')] )); } } protected function _getDataLancamentoComissao(array $sheetData, array &$dados) { $colunaDtRecebimentoComissao = $sheetData[$this->getColuna('data_lancamento')]; $dataRecebimentoComissao = null; if (!empty($colunaDtRecebimentoComissao)) { try { $data = new Zend_Date($colunaDtRecebimentoComissao, $this->_dateFormat); $dataRecebimentoComissao = $data->toString('yyyy-MM-dd'); } catch ( Zend_Date_Exception $e ) { echo $e->getMessage(); $dataRecebimentoComissao = null; } } $dados['data_lancamento'] = $dataRecebimentoComissao; } protected function _getDataRecebimentoComissao(array $sheetData, array &$dados) { $colunaDtRecebimentoComissao = $sheetData[$this->getColuna('data_recebimento_comissao')]; $dataRecebimentoComissao = null; if( !empty($colunaDtRecebimentoComissao) ){ try { $data = new Zend_Date($colunaDtRecebimentoComissao, $this->_dateFormat); $dataRecebimentoComissao = $data->toString('yyyy-MM-dd'); } catch ( Zend_Date_Exception $e ) { echo $e->getMessage(); $dataRecebimentoComissao = null; } } $dados['data_recebimento_comissao'] = $dataRecebimentoComissao; } protected function _getValorBrutoLiquido(array $sheetData, array &$dados) { $valorLiquido = $this->getColuna('valor_liquido') ? trim($sheetData[$this->getColuna('valor_liquido')]) : null; $valorOperacao = $this->getColuna('valor_operacao') ? trim($sheetData[$this->getColuna('valor_operacao')]) : null; $dados['valor_liquido'] = !empty($valorLiquido) ? $valorLiquido : $valorOperacao; } protected function _getValorLancamento(array $sheetData, array &$dados) { $valorLancamento = $this->getColuna('valor_lancamento') ? trim($sheetData[$this->getColuna('valor_lancamento')]) : null; $dados['valor_lancamento'] = $valorLancamento; } protected function _getComissaoEmpresa(array $sheetData, array &$dados) { $dados['comissao_empresa'] = $sheetData[$this->getColuna('comissao_empresa')]; } protected function _getRco(array $sheetData, array &$dados) { $dados['rco'] = $sheetData[$this->getColuna('rco')]; } protected function _getNumeroParcelas(array $sheetData, array &$dados) { //Verifica se o tipo de remuneração é a vista, se for insere apenas 1 $colTipoRemuneracao = $sheetData[$this->getColuna('tipo_remuneracao')]; if( strpos($colTipoRemuneracao, "CREDITO") !== false || strpos($colTipoRemuneracao, "Crédito") !== false || strpos($colTipoRemuneracao, "Débito Comissão") !== false ){ $dados['parcelas'] = 1; }else{ $dados['parcelas'] = 0; } } protected function _getDataSaldo(array $sheetData, array &$dados) { if ($dados['estornado']) { $dados['data_saldo'] = $dados['data_lancamento']; return; } $colunaDtSaldo = isset($sheetData[$this->getColuna('data_saldo')]) ? $sheetData[$this->getColuna('data_saldo')] : null ; $dataSaldo = null; if (!empty($colunaDtSaldo)) { try { $data = new Zend_Date($colunaDtSaldo, $this->_dateFormat); $dataSaldo = $data->toString('yyyy-MM-dd'); } catch ( Zend_Date_Exception $e ) { echo $e->getMessage(); $dataSaldo = null; } } $dados['data_saldo'] = $dataSaldo; } protected function _getDataLiberacao(array $sheetData, array &$dados) { $colunaDt = isset($sheetData[$this->getColuna('data_liberacao')]) ? $sheetData[$this->getColuna('data_liberacao')] : null ; $dataLiberacao = null; if (!empty($colunaDt)) { try { $data = new Zend_Date($colunaDt, $this->_dateFormat); $dataLiberacao = $data->toString('yyyy-MM-dd'); } catch ( Zend_Date_Exception $e ) { echo $e->getMessage(); $dataLiberacao = null; } } $dados['data_liberacao'] = $dataLiberacao; } protected function _getEstornado(array $sheetData, array &$dados) { $estorno = $sheetData[$this->getColuna('estorno')]; $dados['estornado'] = $estorno === 'E' ? 1 : 0; } protected function _getNatureza(array $sheetData, array &$dados) { $colNatureza = $sheetData[$this->getColuna('natureza')]; $dbtable = new Model_DbTable_Tipos(); $search = $dbtable->fetchRow("descricao = '{$colNatureza}' AND tipo = 'NATUREZA_COMISSAO'"); if( !$search ){ $tipoPagamento = $dbtable->insert(array( 'tipo' => 'NATUREZA_COMISSAO', 'descricao' => $colNatureza )); } else { $tipoPagamento = $search['id']; } $dados['natureza'] = $tipoPagamento; } protected function _getTipoRemuneracao(array $sheetData, array &$dados) { $colTipoRemuneracao = $sheetData[$this->getColuna('tipo_remuneracao')]; $dbtable = new Model_DbTable_Tipos(); if( strpos($colTipoRemuneracao, "PRO RATA") !== false){ $search = $dbtable->fetchRow("descricao = 'Diferimento' AND tipo = 'TIPO_REMUNERACAO'"); if( !$search ){ $tipoRemuneracao = $dbtable->insert(array( 'tipo' => 'TIPO_REMUNERACAO', 'descricao' => 'Diferimento', 'codigo' => 2 )); } else { $tipoRemuneracao = $search['codigo']; } }elseif( strpos($colTipoRemuneracao, "CREDITO") !== false || strpos($colTipoRemuneracao, "Crédito") !== false || strpos($colTipoRemuneracao, "Débito Comissão") !== false ){ $search = $dbtable->fetchRow("descricao = 'À vista' AND tipo = 'TIPO_REMUNERACAO'"); if( !$search ){ $tipoRemuneracao = $dbtable->insert(array( 'tipo' => 'TIPO_REMUNERACAO', 'descricao' => 'À vista', 'codigo' => 1 )); } else { $tipoRemuneracao = $search['codigo']; } } $dados['tipo_remuneracao'] = $tipoRemuneracao; } protected function _getDescricao(array $sheetData, array &$dados) { $colunaDescricao = !empty($this->getColuna('descricao')) ? $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 = '') { array_push($naoImportados, [ 'numero_contrato' => $dados['numero_contrato'], 'tabela' => $sheetData[$this->getColuna('tabela')] ?? null, 'cpf' => $sheetData[$this->getColuna('cpf_cliente')] ?? null, 'cliente' => $sheetData[$this->getColuna('nome_cliente')] ?? null, 'valor' => $sheetData[$this->getColuna('valor_bruto')] ?? null, 'valor_liquido' => $sheetData[$this->getColuna('valor_liquido')] ?? null, 'prazo' => $sheetData[$this->getColuna('prazo')] ?? null, 'codigo_atendente' => $sheetData[$this->getColuna('codigo_agente')] ?? null, 'codigo_vendedor' => $sheetData[$this->getColuna('corretor_id')] ?? null, 'motivo' => $motivo ]); } }
💾 保存文件
← 返回文件管理器