/** * Salva imagens que foram feitas upload no caso de uso de cumprimento * do objeto * @param int $idCumprimentoDoObjeto */ public function save($idCumprimentoDoObjeto) { $arquivoModel = new ArquivoModel(); $cumprimentoObjetoArquivo = $this; array_walk($_FILES, function ($file, $filename) use($idCumprimentoDoObjeto, $arquivoModel, $cumprimentoObjetoArquivo) { // Se não houve nenhum erro pode persistir o arquivo no banco if (UPLOAD_ERR_OK === $file['error']) { $arquivoModel->cadastrar($filename); $cumprimentoObjetoArquivoRow = $cumprimentoObjetoArquivo->createRow(); $cumprimentoObjetoArquivoRow->idCumprimentoObjeto = $idCumprimentoDoObjeto; $cumprimentoObjetoArquivoRow->idArquivo = $arquivoModel->getId(); $cumprimentoObjetoArquivoRow->idPosicao = $cumprimentoObjetoArquivo->getTipoDeArquivo($filename); $cumprimentoObjetoArquivoRow->save(); } }); }
/** * Metodo que está disponivel para ser consumido como soap. * Responsavel por cadastrar um comprovante de pagamento * * @param string $fornecedorCpfCnpj * @param integer $itemId * @param string $tipo * @param integer $numero * @param string $dataEmissao * @param string $arquivoNome * @param string $arquivoConteudo * @param string $comprovanteTipo * @param string $comprovanteData * @param string $comprovanteJustificativa * @param double $comprovanteValor * @param string $serie * @param string $comprovanteJustificativa * @throws Exception * @return string Description */ public function cadastrar($fornecedorCpfCnpj, $itemId, $tipo, $numero, $dataEmissao, $arquivoNome, $arquivoConteudo, $comprovanteTipo, $comprovanteData, $comprovanteValor, $comprovanteNumero, $serie = null, $comprovanteJustificativa = null) { try { /** * @todo mover este trecho de buscar fornecedor para um model */ $cnpjcpf = preg_replace('/\\.|-|\\//', '', $fornecedorCpfCnpj); $agentesDao = new Agentes(); $fornecedores = $agentesDao->buscarFornecedor(array(' A.CNPJCPF = ? ' => $cnpjcpf)); if (!$fornecedores->count()) { throw new Exception('Fornecedor não encontrado'); } $fornecedor = $fornecedores->current(); /** * @todo mover o trecho de arquivo para uma classe de model */ $arquivo = base64_decode($arquivoConteudo); $filePath = tempnam("/tmp", "ComprovantePagamentoService_"); file_put_contents($filePath, $arquivo); $_FILES['arquivo']['name'] = $arquivoNome; // nome $_FILES['arquivo']['tmp_name'] = $filePath; // nome temporário $_FILES['arquivo']['type'] = mime_content_type($filePath); // tipo $_FILES['arquivo']['size'] = filesize($filePath); // tamanho $arquivoModel = new ArquivoModel(); $arquivoModel->cadastrar('arquivo'); $comprovantePagamentoModel = new ComprovantePagamento(null, $fornecedor->idAgente, $itemId, constant("self::{$tipo}"), $numero, $serie, new DateTime($dataEmissao), $arquivoModel->getId(), constant("self::{$comprovanteTipo}"), new DateTime($comprovanteData), $comprovanteValor, $comprovanteNumero, $comprovanteJustificativa); $comprovantePagamentoModel->cadastrar(); } catch (Exception $exception) { $mensagem = $exception->getMessage(); if (false !== strpos($mensagem, 'DateTime::__construct()')) { $matches = array(); preg_match('#string \\((.+)\\) at#', $mensagem, $matches); $mensagem = "A data \"{$matches[1]}\" está fora do formato aceito: \"yyyy-mm-dd\"."; } new Exception($mensagem, null, $exception); } }
/** * */ public function atualizar() { $this->validarCadastrar(); $arquivoModel = new ArquivoModel(); $arquivoModel->deletar($this->arquivo); $arquivoModel->cadastrar('arquivo'); $this->update(array('idFornecedor' => $this->fornecedor, 'tpDocumento' => $this->tipo, 'nrComprovante' => $this->numero, 'nrSerie' => $this->serie, 'dtEmissao' => $this->dataEmissao->format('Y-m-d h:i:s'), 'idArquivo' => $arquivoModel->getId(), 'vlComprovacao' => $this->comprovanteValor, 'dtPagamento' => $this->comprovanteData->format('Y-m-d h:i:s'), 'dsJustificativa' => $this->comprovanteJustificativa, 'tpFormaDePagamento' => $this->comprovanteTipo, 'nrDocumentoDePagamento' => $this->comprovanteNumero), array('idComprovantePagamento = ?' => $this->comprovantePagamento)); $this->comprovarPlanilhaAtualizarStatus(4, $this->comprovantePagamento); }
/** * */ public function cadastrarcomprovacaopagamentoAction() { try { $this->verificarPermissaoAcesso(false, true, false); $request = $this->getRequest(); $pais = $this->getRequest()->getParam('pais'); if (empty($pais)) { throw new Exception('Favor preencher o campo "Nacionalidade do Fornecedor"'); } $arquivoModel = new ArquivoModel(); if ('Brasil' == $pais) { $arquivoModel->cadastrar('arquivo'); $idArquivo = $arquivoModel->getId(); if (empty($idArquivo)) { throw new Exception('O arquivo deve ser PDF.'); } $comprovantePagamentoModel = new ComprovantePagamento(null, $request->getParam('idAgente'), $request->getParam('itemId'), $request->getParam('tpDocumento'), $request->getParam('nrComprovante'), $request->getParam('nrSerie'), $request->getParam('dtEmissao') ? new DateTime(data::dataAmericana($request->getParam('dtEmissao'))) : null, $arquivoModel->getId(), $request->getParam('tpFormaDePagamento'), new DateTime(), str_replace(',', '.', str_replace('.', '', $request->getParam('vlComprovado'))), $request->getParam('nrDocumentoDePagamento'), $request->getParam('dsJustificativa')); } else { $arquivoModel->cadastrar('arquivoInternacional'); $idArquivo = $arquivoModel->getId(); if (empty($idArquivo)) { throw new Exception('O arquivo deve ser PDF.'); } $comprovantePagamentoModel = new ComprovantePagamentoInvoice(null, new FornecedorInvoice(null, $pais, $request->getParam('nomeRazaoSocialInternacional'), $request->getParam('enderecoInternacional')), $request->getParam('itemId'), $request->getParam('nif'), $request->getParam('nrSerieInternacional'), $request->getParam('dtEmissaoInternacional') ? new DateTime(data::dataAmericana($request->getParam('dtEmissaoInternacional'))) : null, $arquivoModel->getId(), new DateTime(), str_replace(',', '.', str_replace('.', '', $request->getParam('vlComprovado'))), $request->getParam('dsJustificativaInternacional')); } $comprovantePagamentoModel->cadastrar(); $this->_helper->flashMessenger('Comprovante cadastrado com sucesso.'); $this->_helper->flashMessengerType('CONFIRM'); $this->_redirect(str_replace($this->view->baseUrl(), '', $this->view->url(array('controller' => 'comprovarexecucaofinanceira', 'action' => 'comprovacaopagamento', 'idusuario' => $this->view->idusuario, 'idpronac' => $request->getParam('idpronac'))))); } catch (Exception $e) { $this->view->message = $e->getMessage(); $this->view->message_type = 'ERROR'; $this->_forward('comprovacaopagamento'); } }