✏️ 正在编辑: Producao.php
路径:
/srv/systems_dir/yuppiecred-lidernegocios/library/Core/Banco/Planilha/Banrisul/Producao.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Core_Banco_Planilha_Banrisul_Producao extends Core_Banco_Planilha { protected $_dateFormat = 'dd-MM-yy'; protected $colunas = array( 'agencia_beneficiado' => '', 'bairro' => '', 'banco_beneficiado' => '', 'celular' => '', 'cep' => '', 'cidade' => '', 'cidade_uf' => '', 'codigo_agente' => '', 'codigo_convenio' => '', 'complemento' => '', 'comissao_empresa' => 'V', 'conta_beneficiado' => '', 'convenio' => 'F', 'corretor_id' => 'AB', 'cpf_cliente' => 'K', 'data_emissao' => 'I', 'data_expedicao' => '', 'data_liberacao' => 'Y', 'data_nascimento' => '', 'data_recebimento_comissao' => 'Z', 'detalhamento' => 'B', 'digito_agencia_beneficiado' => '', 'digito_conta_beneficiado' => '', 'endereco' => '', 'fone' => '', 'forma_liberacao' => '', 'matricula' => '', 'nome_cliente' => 'L', 'nome_mae' => '', 'nome_pai' => '', 'nome_produto' => 'G', 'numero' => '', 'numero_ade' => '', 'numero_beneficio' => '', 'numero_contrato' => 'J', 'orgao_expedidor' => '', 'prazo' => 'M', 'produto' => 'G', // código 'rg' => '', 'status_proposta' => '', 'situacao_comissao' => 'W', 'tabela' => 'T', 'tipo_contrato' => 'AA', 'uf' => '', 'uf_expedidor' => '', 'valor_bruto' => 'O', 'valor_liquido' => 'P', 'valor_parcela' => 'N', 'valor_principal' => '', 'valor_refin' => '', 'tipo_remuneracao' => 'A', 'comissao_recebida' => 'V', 'obs' => 'B' ); protected function _getStatusProposta(array $sheetData, array &$dados) { $dados['status_proposta'] = 43; //operação finalizada } protected function _getComissaoEmpresa(array $sheetData, array &$dados) { $colunaPrazo = $sheetData[$this->getColuna('prazo')]; //pega a comissao da empresa $comissaoEmpresa = 0; if ($dados['empresa_id'] > 0) { $empresa = new Model_Empresa(); $comissaoEmpresa = $empresa->getComissao( $dados['empresa_id'], isset($dados['banco_id']) ? $dados['banco_id'] : 0, isset($dados['tabela_id']) ? $dados['tabela_id'] : 0, isset($dados['convenio_id']) ? $dados['convenio_id'] : 0, isset($dados['produto']) ? $dados['produto'] : 0, $colunaPrazo, $dados['data_emissao'], str_replace(array('.', ','), array('', '.'), $dados['base_comissao_empresa_valor']), $dados['base_comissao_empresa'] ); } $dados['comissao_empresa'] = $comissaoEmpresa; } protected function _getEstornado(array $sheetData, array &$dados) { $situacaoComissao = $sheetData[$this->getColuna('situacao_comissao')]; $detalhamento = $sheetData[$this->getColuna('detalhamento')]; if( substr($detalhamento, 0, 3) != 'RCO' ){ $dados['estornado'] = $situacaoComissao == 'E' ? 1 : 0; } } protected function _getTipoContrato(array $sheetData, array &$dados) { $tipoContrato = $sheetData[$this->getColuna('tipo_contrato')]; $dados['tipo'] = $tipoContrato == 'REFIN' ? 'REFINANCIAMENTO' : $tipoContrato; } protected function _getDataRecebimentoComissao(array $sheetData, array &$dados) { $colunaDtRecComissao = isset($sheetData[$this->getColuna('data_recebimento_comissao')]) ? $sheetData[$this->getColuna('data_recebimento_comissao')] : null; $dataLiberacao = null; if (!empty($colunaDtRecComissao)) { try { $data = new Zend_Date($colunaDtRecComissao, $this->_dateFormat); $dataLiberacao = $data->toString('yyyy-MM-dd'); } catch (Zend_Date_Exception $e) { echo $e->getMessage(); $dataLiberacao = null; } } $dados['data_recebimento_comissao'] = $dataLiberacao; } protected function _getProduto(array $sheetData, array &$dados) { $colunaCodigoProduto = $sheetData[$this->getColuna('produto')]; $colunaDescricaoProduto = isset($sheetData[$this->getColuna('nome_produto')]) ? $sheetData[$this->getColuna('nome_produto')] : null; $codigoProduto = 0; if ($colunaCodigoProduto) { $produto = new Model_Produto(); $dadosProduto = $produto->existe($colunaCodigoProduto, $this->getBancoId()); if ($dadosProduto == null) { $produto->setCodigo($colunaCodigoProduto); $produto->setDescricao($colunaDescricaoProduto); $produto->setBancoId($this->getBancoId()); $produto->setTipo($dados['tipo']); $result = $produto->salvar($produto); if ($result != null) { $codigoProduto = $colunaCodigoProduto; $dados['tipo'] = $dados['tipo']; } } else { $codigoProduto = $dadosProduto['codigo']; //adiciona o tipo do contrato $dados['tipo'] = $dadosProduto['tipo']; } } $dados['produto'] = $codigoProduto; } /** * * @param array $sheetData * @param array $dados * @return void */ protected function _getValorBrutoLiquido(array $sheetData, array &$dados) { $digits = new Zend_Filter_Digits(); $valorBruto = $this->getColuna('valor_bruto') ? trim($sheetData[$this->getColuna('valor_bruto')]) : null; $valorLiquido = $this->getColuna('valor_liquido') ? trim($sheetData[$this->getColuna('valor_liquido')]) : null; $valorBruto = ($digits->filter($valorBruto)/100); $valorLiquido = ($digits->filter($valorLiquido)/100); $dados['valor_bruto'] = $valorBruto; $dados['valor_liquido'] = $valorLiquido; } protected function salvarLinha($sheetData, &$dados) { unset($dados['base_comissao']); unset($dados['base_comissao_empresa']); $dataLiberacao = null; /* Apenas para LOG */ $urlSistema = Yuppie_Auth::getSiteKey(); $writer = new Zend_Log_Writer_Stream("/var/log/sistemayuppie/zf_log_planilha_{$urlSistema}_" . Zend_Date::now()->get("ddMMyyyy") . ".txt"); $classeChamada = get_class($this); $log = new Zend_Log($writer); $log->log('#######################', Zend_Log::INFO); $log->log("IMPORTAÇÃO: " . $classeChamada, Zend_Log::INFO); $log->log('ARQUIVO IMPORTADO: ' . print_r($this->getArquivoOrigem(), true), Zend_Log::INFO); $log->log("Usuário logado: " . Yuppie_Auth::getIdentity()->login, Zend_Log::INFO); if( $this->getColuna('data_liberacao') != null ){ $dataLiberacao = $sheetData[$this->getColuna('data_liberacao')]; } $log->log('Formatação (Dt Liberacao): ' . $dataLiberacao, Zend_Log::INFO); $log->log('Formatação (Dt Emissao): ' . $sheetData[$this->getColuna('data_emissao')], Zend_Log::INFO); /* Copia de $dados para atualização do recebimento */ $dadosRecebimento = $dados; $newContrato = new Model_DbTable_Contrato(); $result = 0; //verifica se o contrato existe $dadosContrato = isset($dados['numero_contrato']) && $dados['numero_contrato'] ? $newContrato->fetchRow("numero_contrato = '" . $dados['numero_contrato'] . "' " . "AND banco_id = " . $this->getBancoId()) : null; $protocolos = null; if( $dadosContrato == null ){ try { $log->log("Tentativa de inserção do contrato: {$dados['numero_contrato']}", Zend_Log::INFO); foreach ( $dados as $key => $value ) { $log->log("[{$key}] => {$value}", Zend_Log::INFO); } $result = $newContrato->insert($dados); if( $result > 0 ){ $log->log("Contrato adicionado.", Zend_Log::INFO); } else { $log->log("Contrato NAO foi foi adicionado.", Zend_Log::INFO); } if( $result <= 0 ){ $this->_addNaoImportado( $dados, $sheetData, $this->naoImportados, 'Contrato não inserido.' ); } } catch ( Exception $e ) { $log->log("[Exception] Erro ao adicionar contrato. " . $e->getMessage(), Zend_Log::INFO); $this->_addNaoImportado( $dados, $sheetData, $this->naoImportados, $e->getMessage() ); } } else { $protocoloContrato = new Model_DbTable_ProtocoloContrato(); $protocolos = $protocoloContrato->fetchRow("contrato_id = " . $dadosContrato['id'], 'id DESC'); if( $protocolos != null ){ $log->log("Protocolos: " . print_r($protocolos->toArray(), true), Zend_Log::INFO); //verifica se é um estorno e não foi estornado do corretor if( is_numeric($dados['estornado']) && $dados['estornado'] == 1 && $protocolos['valor'] >= 0 ){ $log->log("Contrato está pago e no arquivo veio um estorno: {$dados['numero_contrato']}", Zend_Log::INFO); $dadosAtualizacao = array( 'id' => $dadosContrato['id'], 'status_proposta' => $dados['status_proposta'], 'estornado' => 1, ); $result = $newContrato->update($dadosAtualizacao, "id = {$dadosContrato['id']}"); if( $result > 0 ){ $log->log("Contrato sinalizado como estorno: {$dados['numero_contrato']}", Zend_Log::INFO); } else { $log->log("Contrato está pago, no arquivo veio um estorno mas não pode ser alterado no sistema: {$dados['numero_contrato']}", Zend_Log::INFO); $this->_addNaoImportado( $dados, $sheetData, $this->naoImportados, 'Contrato está pago, no arquivo veio um estorno mas não pode ser alterado no sistema.' ); } } else { $this->_addNaoImportado( $dados, $sheetData, $this->naoImportados, 'Contrato está pago e não pode ser alterado.' ); $log->log("Contrato está pago e nada foi alterado: {$dados['numero_contrato']}", Zend_Log::INFO); } } else { $dados['id'] = $dadosContrato['id']; /* Caso o contrato encontrado já tenha corretor, não permitir atualizar o conrretor */ if( isset($dadosContrato['corretor_id']) && $dadosContrato['corretor_id'] > 0 && $dados['corretor_id'] > 0 && $dados['corretor_id'] != $dadosContrato['corretor_id'] ){ $log->log("[Contrato já tem o corretor: {$dadosContrato['corretor_id']}] Tentativa de atualização para: {$dados['corretor_id']}. ", Zend_Log::INFO); unset($dados['corretor_id']); } $dados = $this->_getCamposAtualizacao($dados); try { $log->log("Tentativa de atualizaçao do contrato: {$dadosContrato['numero_contrato']}.", Zend_Log::INFO); foreach ( $dados as $key => $value ) { $log->log("[{$key}] => {$value}", Zend_Log::INFO); } $result = $newContrato->update($dados, "id = {$dadosContrato['id']}"); if( $result > 0 ){ $log->log("Contrato atualizado.", Zend_Log::INFO); } else { $log->log("Contrato não foi atualizado.", Zend_Log::INFO); } } catch ( Exception $e ) { $log->log("[Exception] Erro ao atualizar contrato. " . $e->getMessage(), Zend_Log::INFO); $this->_addNaoImportado( $dados, $sheetData, $this->naoImportados, $e->getMessage() ); } } } /* Atualização de recebimento contrato */ $this->_recebimentoContrato($sheetData, $dadosRecebimento); } protected function _recebimentoContrato($sheetData, $dados) { $urlSistema = Yuppie_Auth::getSiteKey(); $writer = new Zend_Log_Writer_Stream("/var/log/sistemayuppie/zf_log_recebimento_{$urlSistema}_" . date('dmY') . ".txt"); $log = new Zend_Log($writer); $log->log('#######################', Zend_Log::INFO); $log->log("Numero contrato: " . $dados['numero_contrato'], Zend_Log::INFO); $dadosContrato = null; $contrato = new Model_DbTable_Contrato(); $dbtableRecebimento = new Model_DbTable_RecebimentoContrato(); $result = 0; /* Considerando apenas contratos com status "Operação Finalizada" */ $colunaStatusProposta = $dados['status_proposta']; if( $colunaStatusProposta == 43 ){ $log->log('Status Paga: ' . $colunaStatusProposta, Zend_Log::INFO); /* * Tipo Remuneração */ $colTipoRemuneracao = $sheetData[$this->getColuna('tipo_remuneracao')]; $dbtable = new Model_DbTable_Tipos(); $searchTipo = $dbtable->fetchRow("descricao = '{$colTipoRemuneracao}' AND tipo = 'TIPO_REMUNERACAO_BANRISUL '"); if( !$searchTipo ){ $tipoRemuneracao = $dbtable->insert(array( 'tipo' => 'TIPO_REMUNERACAO_BANRISUL', 'descricao' => $colTipoRemuneracao )); } else { $tipoRemuneracao = $searchTipo->id; } $dados['tipo_remuneracao'] = $tipoRemuneracao; /* Descrição */ $descricao = isset($sheetData[$this->getColuna('obs')]) ? $sheetData[$this->getColuna('obs')] : ""; $search = $dbtable->fetchRow("descricao = '{$descricao}' AND tipo = 'NATUREZA_BANRISUL'"); if( !$search ){ $tipoPagamento = $dbtable->insert(array( 'tipo' => 'NATUREZA_BANRISUL', 'descricao' => $descricao )); } else { $tipoPagamento = $search->id; } $dados['natureza'] = $tipoPagamento; /* Valor Comissão */ $valorComissao = $this->getColuna('comissao_recebida') ? trim($sheetData[$this->getColuna('comissao_recebida')]) : 0; $valorComissao = str_replace(array( '.', ',' ), array( '', '.' ), $valorComissao); /* 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 ){ if( isset($dados['data_liberacao']) && !empty($dados['data_liberacao']) ){ $dadosContrato->id = $dadosContrato->id; $dadosContrato->data_recebimento_comissao = $dados['data_liberacao']; $dadosContrato->save(); } try { $recebimento = array( 'contrato_id' => $dadosContrato->id, 'data_recebimento_comissao' => $dados['data_liberacao'], 'parcelas' => 0, 'comissao_empresa' => $valorComissao, 'rco' => isset($dados['rco']) ? $dados['rco'] : null, 'data_saldo' => $dados['data_liberacao'], 'tipo_remuneracao' => isset($dados['tipo_remuneracao']) ? $dados['tipo_remuneracao'] : null, 'valor_lancamento' => $dadosContrato->base_comissao_empresa_valor, 'natureza' => isset($dados['natureza']) ? $dados['natureza'] : null, 'descricao' => $descricao ); $result = $dbtableRecebimento->receberComissao($recebimento); if( $result <= 0 ){ $log->log('Uma falha pode ter ocorrido na inserção do recebimento do contrato', Zend_Log::INFO); } $log->log(print_r($recebimento, true), Zend_Log::INFO); } catch ( Exception $e ) { $log->log('Exception: ' . $e->getMessage(), Zend_Log::INFO); } } } else { $log->log('Status não é "Paga". Status: ' . $colunaStatusProposta, Zend_Log::INFO); } } }
💾 保存文件
← 返回文件管理器