✏️ 正在编辑: ServerSoap.php
路径:
/srv/systems_dir/yuppiecred/application/services/ServerSoap.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Service_ServerSoap { private function _validarAcesso() { $config = new Zend_Config_Ini(CLIENT_PATH . '/configs/application.ini'); if (!isset($config->production->yuppie->webservice) || $config->production->yuppie->webservice != true) { return false; } return true; } /** * Retorna os fisicos pendentes do supervisor * @param int $supervisorId * @param string $senha * @return string */ public function getFisicosPendentes($login, $senha) { if( !$this->_validarAcesso() ){ return ""; } $supervisor = new Model_GerenteRota(); /* * TO DO: * $auth = $supervisor->autenticar($login, $senha, 'tb_gerente_rota', 'Supervisor'); */ $auth = $supervisor->autenticar($login, $senha); $supervisorId = Yuppie_Auth::getIdentity()->id ? Yuppie_Auth::getIdentity()->id : 0; if( $auth && $supervisorId > 0 ){ try { $fields = array( 'supervisor_id' => $supervisorId, 'fisico_recebido' => 'NÃO RECEBIDO', 'status_proposta' => 43, ); $contrato = new Model_Contrato(); $result = $contrato->getFisicosPendentes($fields); $xml = new DOMDocument("1.0", "UTF-8"); $root = $xml->createElement("root"); $xml->appendChild($root); foreach ( $result as $value ) { $element = $xml->createElement("row"); $root->appendChild($element); $elementItem = $xml->createElement('contrato_id'); $element->appendChild($elementItem); $elementValue = $xml->createTextNode($value['id_contrato']); $elementItem->appendChild($elementValue); $elementItem = $xml->createElement('contrato'); $element->appendChild($elementItem); $elementValue = $xml->createTextNode($value['numero_contrato']); $elementItem->appendChild($elementValue); $elementItem = $xml->createElement('corretor_id'); $element->appendChild($elementItem); $elementValue = $xml->createTextNode($value['corretor_id']); $elementItem->appendChild($elementValue); $elementItem = $xml->createElement('corretor'); $element->appendChild($elementItem); $elementValue = $xml->createTextNode($value['corretor']); $elementItem->appendChild($elementValue); $elementItem = $xml->createElement('cpf_cliente'); $element->appendChild($elementItem); $elementValue = $xml->createTextNode($value['cpf_cliente']); $elementItem->appendChild($elementValue); $elementItem = $xml->createElement('dias_atraso'); $element->appendChild($elementItem); $elementValue = $xml->createTextNode(Model_Contrato::getDiasAtraso($value['data_liberacao'], $value['data_recebimento_fisico'], $value['data_recebimento_previa'], $value['prazo_fisico'])); $elementItem->appendChild($elementValue); $elementItem = $xml->createElement('valor_liquido'); $element->appendChild($elementItem); $elementValue = $xml->createTextNode($value['valor_liquido']); $elementItem->appendChild($elementValue); $elementItem = $xml->createElement('pendencia'); $element->appendChild($elementItem); $elementValue = $xml->createTextNode($value['descricao_pendencia']); $elementItem->appendChild($elementValue); } echo $xml->saveXML(); } catch ( Exception $exception ) { echo $exception->getMessage(); } } else { echo 'Usuário não identificado.'; } } /** * Realiza a importação dos dados enviados por $xmlData * @param int $supervisorId * @param string $senha * @param string $xmlData * @return int */ public function previaRecebimento($login, $senha, $xmlData) { if( !$this->_validarAcesso() ){ return 0; } $supervisor = new Model_GerenteRota(); $auth = $supervisor->autenticar($login, $senha); $supervisorId = Yuppie_Auth::getIdentity()->id ? Yuppie_Auth::getIdentity()->id : 0; if( $auth && $supervisorId > 0 ){ $xmlData = new SimpleXMLElement($xmlData); if( count($xmlData->row) > 0 ){ foreach ( $xmlData->row as $item ) { $dbtableContrato = new Model_DbTable_Contrato(); $result = $dbtableContrato->previaRecebimento( $item->contrato_id, $item->data_recebimento_previa); if( $result != null ){ $cont++; } } } } return $cont; } public function getSituacaoContrato($token, $fields) { $corretor = (new Model_DbTable_Corretor())->fetchRow("token_sinc_yuppies = '{$token}'"); $auth = $this->_autenticar($corretor->id, $corretor->token_sinc_yuppies); $fields = array_filter($fields); if (!$auth || !$corretor) { throw new Core_Exception("Falha de identificação do Corretor/Afiliado"); } if (empty($fields)) { throw new Core_Exception("Informe pelo menos um parâmetro de busca."); } unset($fields['token']); $fields['corretor_id'] = $corretor->id; $fields['cartao_corretor'] = true; if (!isset($fields['data_emissao_de']) && !isset($fields['data_emissao_a']) && !isset($fields['data_liberacao_de']) && !isset($fields['data_liberacao_a']) && !isset($fields['cpf_cliente']) && !isset($fields['numero_contrato']) ) { throw new Core_Exception("Informe pelo menos um intervalo de data ou um número de contrato ou CPF para consulta."); } if (isset($fields['data_emissao_de'])) { if (!isset($fields['data_emissao_a'])) { throw new Core_Exception("Informe uma data final."); } $dt = new Zend_Date($fields['data_emissao_de']); $fields['data_emissao_de'] = $dt->get('dd/MM/yyyy'); } if (isset($fields['data_emissao_a'])) { if (!isset($fields['data_emissao_de'])) { throw new Core_Exception("Informe uma data inicial."); } $dt = new Zend_Date($fields['data_emissao_a']); $fields['data_emissao_a'] = $dt->get('dd/MM/yyyy'); $diff = (new DateTime($dt->get('yyyy-MM-dd')))->diff(new DateTime((new Zend_Date($fields['data_emissao_de']))->get('yyyy-MM-dd')))->days; if ($diff > 7) { throw new Core_Exception("Intervalo máximo para pesquisa é de 7 dias."); } } if (isset($fields['data_liberacao_de'])) { if (!isset($fields['data_liberacao_a'])) { throw new Core_Exception("Informe uma data final."); } $dt = new Zend_Date($fields['data_liberacao_de']); $fields['data_liberacao_de'] = $dt->get('dd/MM/yyyy'); } if (isset($fields['data_liberacao_a'])) { if (!isset($fields['data_liberacao_de'])) { throw new Core_Exception("Informe uma data inicial."); } $dt = new Zend_Date($fields['data_liberacao_a']); $fields['data_liberacao_a'] = $dt->get('dd/MM/yyyy'); $diff = (new DateTime($dt->get('yyyy-MM-dd')))->diff(new DateTime((new Zend_Date($fields['data_liberacao_de']))->get('yyyy-MM-dd')))->days; if ($diff > 7) { throw new Core_Exception("Intervalo máximo para pesquisa é de 7 dias."); } } $contratos = (new Model_Contrato())->getContratos($fields); $result = []; if (empty($contratos)) { return; } foreach ($contratos as $dadosContrato) { $result[] = [ "id_contrato" => $dadosContrato['id_contrato'], "numero_contrato" => $dadosContrato['numero_contrato'], "numero_ade" => $dadosContrato['numero_ade'], "data_emissao" => $dadosContrato['data_emissao'], "data_liberacao" => $dadosContrato['data_liberacao'], "prazo" => $dadosContrato['prazo'], "valor_liquido" => $dadosContrato['valor_liquido'], "valor_bruto" => $dadosContrato['valor_bruto'], "corretor_id" => $dadosContrato['corretor_id'], "corretor" => $dadosContrato['corretor'], "tipo" => $dadosContrato['tipo'], "cpf_cliente" => $dadosContrato['cpf_cliente'], "cliente" => $dadosContrato['cliente'], "status_proposta_nome" => $dadosContrato['status_proposta_nome'], "status_proposta_id" => $dadosContrato['status_proposta_id'], "banco_id" => $dadosContrato['banco_id'], "banco" => $dadosContrato['banco'], "convenio_id" => $dadosContrato['convenio_id'], "convenio" => $dadosContrato['convenio'], "tabela" => $dadosContrato['tabela'], "rota" => $dadosContrato['rota'], "supervisor" => $dadosContrato['supervisor'] ]; } return $result; } protected function _autenticar($login, $token) { if (empty($token)) { return false; } $db = Zend_Db_Table_Abstract::getDefaultAdapter(); $adapter = new Zend_Auth_Adapter_DbTable($db, 'tb_corretores', 'id', 'token_sinc_yuppies', 'excluido<>1'); if (Yuppie_Auth::authenticateApp($adapter, $login, $token)) { $data = $adapter->getResultRowObject(null, 'token_sinc_yuppies'); $data->grupo = 'Corretor'; $data->grupo_id = (new Model_GrupoUsuario())->getIdGrupo($data->grupo); Yuppie_Auth::writeStorage($data); $acl = new Core_LibraryAcl($data->grupo); $ns = new Zend_Session_Namespace(); $ns->acl = $acl; return true; } } public function getProtocolosCorretor($token, $dataPagamento = null) { $tbCorretor = new Model_DbTable_Corretor(); $corretor = $tbCorretor->fetchRow(["token_sinc_yuppies = ?" => $token]); if (empty($corretor)) { throw new Core_Exception("Corretor não localizado."); } $auth = $this->_autenticar($corretor->id, $token); if (!$auth) { throw new Core_Exception("Não foi possível autenticar o corretor."); } /** * @todo Esse método precisa ser modificado, pois ele retorna o protocolo sem somar os valores */ $result = []; $protocolos = (new Model_Corretor())->getProtocolos($corretor->id, $dataPagamento, 10); if (empty($protocolos)) { throw new Core_Exception("Nenhum protocolo retornado"); } foreach ($protocolos as $protocolo) { $result[] = [ "data_pagamento" => $protocolo['data_pagameno'], "desconto" => $protocolo['desconto'], "acrescimo" => $protocolo['acrescimo'], "protocolo_id" => $protocolo['protocolo_id'], "data_quitacao" => $protocolo['data_quitacao'], "valor" => $protocolo['valor'], "id_contrato" => $protocolo['id_contrato'], "valor_liquido" => $protocolo['valor_liquido'], "comissao_corretor" => $protocolo['comissao_corretor'], "bonus_corretor" => $protocolo['bonus_corretor'], "banco" => $protocolo['banco'], "forma_pagamento" => $protocolo['forma_pagamento'], "taxa_transf" => $protocolo['taxa_transf'], "banco_pagamento" => $protocolo['banco_pagamento'], "total_comissao" => $protocolo['total_comissao'], "valor_comissao" => $protocolo['valor_comissao'], "vl_comissao" => $protocolo['vl_comissao'], "total_valor_comissao" => $protocolo['valor_total_comissao'] ]; } return $result; } public function getFisicosPendentesCorretor($token, $pendencias, $params) { $tbCorretor = new Model_DbTable_Corretor(); $corretor = $tbCorretor->fetchRow(array("token_aplicativo = ?" => $token)); $auth = $this->_autenticar($corretor->login, $token); $result = null; if( $auth && $corretor ){ $modelContrato = new Model_Contrato(); $fields = array( 'corretor_id' => $corretor->id, 'cartao_corretor' => true, 'pendencia_fisicos' => $pendencias ); if( isset($fields['pendencia_fisicos']) && !empty($fields['pendencia_fisicos']) ){ if( $fields['pendencia_fisicos'] == 'RECEPCIONADO' ){ $fields['fisico_recebido'] = "EM TRANSITO"; } elseif( $fields['pendencia_fisicos'] == 'PENDENTE' ){ $fields['fisico_recebido'] = 'PENDENTE'; } } if( isset($params['numero_contrato']) && !empty($params['numero_contrato']) ){ $fields['numero_contrato'] = $params['numero_contrato']; } if( isset($params['numero_ade']) && !empty($params['numero_ade']) ){ $fields['numero_ade'] = $params['numero_ade']; } $fields = array_filter($fields); $result = $modelContrato->getFisicosPendentes($fields); return $result; } } public function preCadastroProposta($token, $dadosApp, $log) { $tbCorretor = new Model_DbTable_Corretor(); $corretor = $tbCorretor->fetchRow(array("token_aplicativo = ?" => $token)); $auth = $this->_autenticar($corretor->login, $token); $result = array(); if( $auth && $corretor ){ $propostas = array_filter($dadosApp['propostas']); if( is_array($propostas) && !empty($propostas) ){ foreach ( $propostas as $registros ) { $convert = (array) $registros; $log->log("CONVERSÂO DE ARRAY: " . print_r($convert, true), Zend_Log::INFO); $convert['corretor_id'] = $corretor->id; $convert['empresa_id'] = $corretor->empresa_id; $cliente = new Model_Cliente($convert); $proposta = new Model_Proposta($convert); $result[] = $this->_salvarProposta($proposta, $cliente); $log->log("RESULTADO: " . print_r($result, true), Zend_Log::INFO); } } return $result; } } protected function _salvarProposta(Model_Proposta $proposta, Model_Cliente $cliente = null) { $dbtable = new Model_DbTable_Proposta(); $dados = array(); if( $dbtable->existeTokenAplicativo($proposta->getTokenProposta(), $proposta->getCorretorId()) ){ return $dados = array( "token" => $proposta->getTokenProposta() ); } if( Yuppie_Auth::getIdentity()->grupo == 'Corretor' ){ $proposta->setEmpresaId(Yuppie_Auth::getIdentity()->empresa_id); $cliente->setEmpresaId(Yuppie_Auth::getIdentity()->empresa_id); } //atualiza os dados do cliente if( $cliente != null ){ if( ($dadosCliente = $cliente->existe($cliente->getCpf())) != null ){ $cliente->setId($dadosCliente['id']); $proposta->setClienteId($cliente->getId()); $dbtableCliente = new Model_DbTable_Cliente(); $dbtableCliente->update(array( 'empresa_id' => Yuppie_Auth::getIdentity()->empresa_id, 'nome' => $cliente->getNome(), 'cpf' => $cliente->getCpf(), 'rg' => $cliente->getRg(), 'orgao_expedidor' => $cliente->getOrgaoExpedidor(), 'uf_expedidor' => $cliente->getUfExpedidor(), 'data_expedicao' => $cliente->getDataExpedicao(), 'data_nascimento' => $cliente->getDataNascimento(), 'nome_pai' => $cliente->getNomePai(), 'nome_mae' => $cliente->getNomeMae(), 'conjuge' => $cliente->getConjuge(), 'endereco' => $cliente->getEndereco(), 'complemento' => $cliente->getComplemento(), 'bairro' => $cliente->getBairro(), 'cidade' => $cliente->getCidade(), 'uf' => $cliente->getUf(), 'cep' => $cliente->getCep(), 'email' => $cliente->getEmail(), 'celular' => $cliente->getCelular(), 'fax' => $cliente->getFax(), 'fone' => $cliente->getFone(), 'telefone_comercial' => $cliente->getTelefoneComercial(), 'naturalidade' => $cliente->getNaturalidade(), 'senha_contracheque' => $cliente->getSenhaContracheque(), 'renda' => $cliente->getRenda() ), 'id = ' . $cliente->getId()); } else { $proposta->setClienteId($cliente->salvar($cliente)); } } if( $proposta->getId() > 0 ){ $data = $proposta->_toArray(); $result = $dbtable->update($data, "id = " . $proposta->getId()); if( $result > 0 ){ return $dados = array( 'token' => $proposta->getTokenProposta() ); } return null; } else { $data = $proposta->_toArray(); //pegar a base de comissão $dbtable = new Model_DbTable_Contrato(); $dbtable->getComissaoCorretorAndEmpresa($data); if( $dbtable->insert($data) ){ return $dados = array( 'token' => $data['token_proposta'] ); } else { return $dados = array( 'error' => 'Nenhum registro foi inserido' ); } } } public function regularizarPendencia($token, $idContrato, $arquivo, $tipoDocumento, $log) { $tbCorretor = new Model_DbTable_Corretor(); $corretor = $tbCorretor->fetchRow(array("token_aplicativo = ?" => $token)); $auth = $this->_autenticar($corretor->login, $token); if( $auth && $corretor ){ $dbRegularizaPendencia = new Model_DbTable_PendenciaRegularizar(); return $dbRegularizaPendencia->insert(array( 'contrato_id' => $idContrato, 'tipo_documento' => $tipoDocumento, 'anexo' => $arquivo, 'validado' => 0, 'usuario_abertura' => Yuppie_Auth::getIdentity()->login, )); } } public function saveMobileToken($token = null, $params = null, $log = null) { $tbCorretor = new Model_DbTable_Corretor(); $corretor = $tbCorretor->fetchRow(array("token_aplicativo = ?" => $token)); $auth = $this->_autenticar($corretor->login, $token); $result = null; if( $auth && $corretor ){ $dbtable = new Model_DbTable_Corretor(); $exist = $dbtable->fetchRow("id_mobile_token = '{$params['id_mobile_token']}'"); if( !$exist ){ $result = $dbtable->update(array( "id_mobile_token" => $params['id_mobile_token'] ), "id = " . $corretor->id); } $log->log("MOBILE TOKEN: " . print_r($params['id_mobile_token'], true), Zend_Log::INFO); $log->log("CORRETOR TOKEN: " . print_r($token, true), Zend_Log::INFO); } return $result; } public function acessoTemporarioCorretor($flagAcessoTemporario = null, $dataTemporarioApp = null) { if (!empty($flagAcessoTemporario) && Zend_Date::now()->get('yyyy-MM-dd') >= $dataTemporarioApp) { return false; } return true; } }
💾 保存文件
← 返回文件管理器