From 257639a5938ce3ea1cc3f0a785af850eb0a13704 Mon Sep 17 00:00:00 2001 From: Gianluca Bine Date: Tue, 17 Sep 2019 21:17:46 -0300 Subject: [PATCH 1/7] =?UTF-8?q?Adicionado=20novas=20op=C3=A7=C3=B5es=20no?= =?UTF-8?q?=20select=20de=20unidade=20(M=C2=B2=20e=20Outro)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/views/produtos/adicionarProduto.php | 12 +++++++----- application/views/produtos/editarProduto.php | 12 +++++++----- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/application/views/produtos/adicionarProduto.php b/application/views/produtos/adicionarProduto.php index db747b29d..8b3e5814f 100644 --- a/application/views/produtos/adicionarProduto.php +++ b/application/views/produtos/adicionarProduto.php @@ -17,7 +17,7 @@ { /* Set something to make the badge looks focused */ /* This really depends on the application, in my case it was: */ - + /* Adding a light border */ box-shadow: inset 0px 0px 5px; /* Taking the difference out of the padding */ @@ -50,11 +50,11 @@
-
-
+
@@ -160,4 +162,4 @@ } }); }); - \ No newline at end of file + diff --git a/application/views/produtos/editarProduto.php b/application/views/produtos/editarProduto.php index 2c589fbf1..11da3a12e 100644 --- a/application/views/produtos/editarProduto.php +++ b/application/views/produtos/editarProduto.php @@ -17,7 +17,7 @@ { /* Set something to make the badge looks focused */ /* This really depends on the application, in my case it was: */ - + /* Adding a light border */ box-shadow: inset 0px 0px 5px; /* Taking the difference out of the padding */ @@ -85,9 +85,11 @@ - + + + +
-
@@ -126,7 +128,7 @@ \ No newline at end of file + From aad674f551c8c7e955a5bda0604e0c23bd218d8e Mon Sep 17 00:00:00 2001 From: Gianluca Bine Date: Tue, 17 Sep 2019 21:18:36 -0300 Subject: [PATCH 2/7] =?UTF-8?q?Implementado=20envio=20autom=C3=A1tico=20de?= =?UTF-8?q?=20emails=20na=20cria=C3=A7=C3=A3o=20e=20edi=C3=A7=C3=A3o=20de?= =?UTF-8?q?=20OS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/controllers/Os.php | 95 +++++++++++++++++++++++----------- 1 file changed, 65 insertions(+), 30 deletions(-) diff --git a/application/controllers/Os.php b/application/controllers/Os.php index e669d524c..f8a44ea7b 100644 --- a/application/controllers/Os.php +++ b/application/controllers/Os.php @@ -2,7 +2,6 @@ class Os extends CI_Controller { - /** * author: Ramon Silva * email: silva018-mg@yahoo.com.br @@ -29,7 +28,6 @@ public function index() public function gerenciar() { - $this->load->library('pagination'); $where_array = array(); @@ -91,7 +89,6 @@ public function gerenciar() public function adicionar() { - if (!$this->permission->checkPermission($this->session->userdata('permissao'), 'aOs')) { $this->session->set_flashdata('error', 'Você não tem permissão para adicionar O.S.'); redirect(base_url()); @@ -145,11 +142,21 @@ public function adicionar() ); if (is_numeric($id = $this->os_model->add('os', $data, true))) { + $this->load->model('mapos_model'); + + $idOs = $id; + $os = $this->os_model->getById($idOs); + $emitente = $this->mapos_model->getEmitente()[0]; + $remetentes = [ + $os->email, + $emitente->email, + ]; + $this->enviarOsPorEmail($idOs, $remetentes, 'Ordem de Serviço - Criada'); + $this->session->set_flashdata('success', 'OS adicionada com sucesso, você pode adicionar produtos ou serviços a essa OS nas abas de "Produtos" e "Serviços"!'); log_info('Adicionou uma OS'); redirect('os/editar/' . $id); } else { - $this->data['custom_error'] = '

An Error Occured.

'; } } @@ -160,7 +167,6 @@ public function adicionar() public function adicionarAjax() { - $this->load->library('form_validation'); if ($this->form_validation->run('os') == false) { @@ -193,7 +199,6 @@ public function adicionarAjax() public function editar() { - if (!$this->uri->segment(3) || !is_numeric($this->uri->segment(3))) { $this->session->set_flashdata('error', 'Item não pode ser encontrado, parâmetro não foi passado corretamente.'); redirect('mapos'); @@ -242,6 +247,17 @@ public function editar() ); if ($this->os_model->edit('os', $data, 'idOs', $this->input->post('idOs')) == true) { + $this->load->model('mapos_model'); + + $idOs = $this->input->post('idOs'); + $os = $this->os_model->getById($idOs); + $emitente = $this->mapos_model->getEmitente()[0]; + $remetentes = [ + $os->email, + $emitente->email, + ]; + $this->enviarOsPorEmail($idOs, $remetentes, 'Ordem de Serviço - Editada'); + $this->session->set_flashdata('success', 'Os editada com sucesso!'); log_info('Alterou uma OS. ID: ' . $this->input->post('idGarantias')); redirect(base_url() . 'index.php/os/editar/' . $this->input->post('idOs')); @@ -261,7 +277,6 @@ public function editar() public function visualizar() { - if (!$this->uri->segment(3) || !is_numeric($this->uri->segment(3))) { $this->session->set_flashdata('error', 'Item não pode ser encontrado, parâmetro não foi passado corretamente.'); redirect('mapos'); @@ -285,7 +300,6 @@ public function visualizar() public function imprimir() { - if (!$this->uri->segment(3) || !is_numeric($this->uri->segment(3))) { $this->session->set_flashdata('error', 'Item não pode ser encontrado, parâmetro não foi passado corretamente.'); redirect('mapos'); @@ -308,7 +322,6 @@ public function imprimir() public function enviar_email() { - if (!$this->uri->segment(3) || !is_numeric($this->uri->segment(3))) { $this->session->set_flashdata('error', 'Item não pode ser encontrado, parâmetro não foi passado corretamente.'); redirect('mapos'); @@ -335,19 +348,13 @@ public function enviar_email() redirect(site_url('os')); } - $html = $this->load->view('os/emails/os', $this->data, true); - - $this->load->model('email_model'); - $headers = array('From' => $this->data['emitente'][0]->email, 'Subject' => 'Ordem de Serviço'); - $email = array( - 'to' => $this->data['result']->email, - 'message' => $html, - 'status' => 'pending', - 'date' => date('Y-m-d H:i:s'), - 'headers' => serialize($headers), - ); + $idOs = $this->uri->segment(3); + $remetentes = [ + $this->data['result']->email, + ]; + $enviouEmail = $this->enviarOsPorEmail($idOs, $remetentes, 'Ordem de Serviço'); - if ($this->email_model->add('email_queue', $email)) { + if ($enviouEmail) { $this->session->set_flashdata('success', 'O email está sendo processado e será enviado em breve para o cliente.'); log_info('Enviou e-mail para o cliente: '.$this->data['result']->nomeCliente. '. E-mail: '. $this->data['result']->email); redirect(site_url('os')); @@ -360,7 +367,6 @@ public function enviar_email() public function excluir() { - if (!$this->permission->checkPermission($this->session->userdata('permissao'), 'dOs')) { $this->session->set_flashdata('error', 'Você não tem permissão para excluir O.S.'); redirect(base_url()); @@ -391,7 +397,6 @@ public function excluir() public function autoCompleteProduto() { - if (isset($_GET['term'])) { $q = strtolower($_GET['term']); $this->os_model->autoCompleteProduto($q); @@ -400,7 +405,6 @@ public function autoCompleteProduto() public function autoCompleteProdutoSaida() { - if (isset($_GET['term'])) { $q = strtolower($_GET['term']); $this->os_model->autoCompleteProdutoSaida($q); @@ -418,7 +422,6 @@ public function autoCompleteCliente() public function autoCompleteUsuario() { - if (isset($_GET['term'])) { $q = strtolower($_GET['term']); $this->os_model->autoCompleteUsuario($q); @@ -436,7 +439,6 @@ public function autoCompleteTermoGarantia() public function autoCompleteServico() { - if (isset($_GET['term'])) { $q = strtolower($_GET['term']); $this->os_model->autoCompleteServico($q); @@ -445,7 +447,6 @@ public function autoCompleteServico() public function adicionarProduto() { - $preco = $this->input->post('preco'); $quantidade = $this->input->post('quantidade'); $subtotal = $preco * $quantidade; @@ -470,7 +471,6 @@ public function adicionarProduto() public function excluirProduto() { - $ID = $this->input->post('idProduto'); if ($this->os_model->delete('produtos_os', 'idProdutos_os', $ID) == true) { @@ -523,7 +523,6 @@ public function excluirServico() public function anexar() { - $this->load->library('upload'); $this->load->library('image_lib'); @@ -622,7 +621,6 @@ public function excluirAnexo($id = null) public function downloadanexo($id = null) { - if ($id != null && is_numeric($id)) { $this->db->where('idAnexos', $id); @@ -704,4 +702,41 @@ public function faturar() $json = array('result' => false); echo json_encode($json); } + + private function enviarOsPorEmail($idOs, $remetentes, $assunto) { + $dados = []; + + $this->load->model('mapos_model'); + $dados['result'] = $this->os_model->getById($idOs); + if (!isset($dados['result']->email)) { + return; + } + + $dados['produtos'] = $this->os_model->getProdutos($idOs); + $dados['servicos'] = $this->os_model->getServicos($idOs); + $dados['emitente'] = $this->mapos_model->getEmitente(); + + $emitente = $dados['emitente'][0]->email; + if (!isset($emitente)) { + return; + } + + $html = $this->load->view('os/emails/os', $dados, true); + + $this->load->model('email_model'); + + foreach ($remetentes as $remetente) { + $headers = array('From' => $emitente, 'Subject' => $assunto); + $email = array( + 'to' => $remetente, + 'message' => $html, + 'status' => 'pending', + 'date' => date('Y-m-d H:i:s'), + 'headers' => serialize($headers), + ); + $this->email_model->add('email_queue', $email); + } + + return true; + } } From feac909a54230c31158769c72925677b1d3f2d99 Mon Sep 17 00:00:00 2001 From: Gianluca Bine Date: Tue, 17 Sep 2019 21:33:53 -0300 Subject: [PATCH 3/7] =?UTF-8?q?Adequa=C3=A7=C3=A3o=20para=20enviar=20email?= =?UTF-8?q?=20para=20o=20t=C3=A9cnico=20da=20OS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/controllers/Os.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/application/controllers/Os.php b/application/controllers/Os.php index f8a44ea7b..adbeff8bb 100644 --- a/application/controllers/Os.php +++ b/application/controllers/Os.php @@ -143,13 +143,17 @@ public function adicionar() if (is_numeric($id = $this->os_model->add('os', $data, true))) { $this->load->model('mapos_model'); + $this->load->model('usuarios_model'); $idOs = $id; $os = $this->os_model->getById($idOs); $emitente = $this->mapos_model->getEmitente()[0]; + $tecnico = $this->usuarios_model->getById($os->usuarios_id); + $remetentes = [ $os->email, $emitente->email, + $tecnico->email, ]; $this->enviarOsPorEmail($idOs, $remetentes, 'Ordem de Serviço - Criada'); @@ -248,13 +252,18 @@ public function editar() if ($this->os_model->edit('os', $data, 'idOs', $this->input->post('idOs')) == true) { $this->load->model('mapos_model'); + $this->load->model('usuarios_model'); $idOs = $this->input->post('idOs'); + $os = $this->os_model->getById($idOs); $emitente = $this->mapos_model->getEmitente()[0]; + $tecnico = $this->usuarios_model->getById($os->usuarios_id); + $remetentes = [ $os->email, $emitente->email, + $tecnico->email, ]; $this->enviarOsPorEmail($idOs, $remetentes, 'Ordem de Serviço - Editada'); @@ -725,6 +734,7 @@ private function enviarOsPorEmail($idOs, $remetentes, $assunto) { $this->load->model('email_model'); + $remetentes = array_unique($remetentes); foreach ($remetentes as $remetente) { $headers = array('From' => $emitente, 'Subject' => $assunto); $email = array( From a5d059432ee967e28aa16536fb86d0074039f8c0 Mon Sep 17 00:00:00 2001 From: Gianluca Bine Date: Tue, 17 Sep 2019 21:34:29 -0300 Subject: [PATCH 4/7] =?UTF-8?q?Documenta=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 26 +++++++++++++++----------- README.md | 18 +++++++++--------- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9853229f5..11b3c6a18 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,11 +4,15 @@ Todas as alterações serão documentadas neste arquivo Formato baseado em [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), e [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [3.9.0] - 2019-09-17 +- Adequação para enviar email de OS automaticamente na criação e edição (email é enviado para o cliente da OS, para o emitente e para o técnico da OS). [@Pr3d4dor](https://github.com/Pr3d4dor) +- Adicionado novas opções (M² e Outros) no select de unidade na criação e edição de produto. [@Pr3d4dor](https://github.com/Pr3d4dor) + ## [3.8.0] - 2019-07-25 ### Added -- Adicionada pesquisa por múltiplos status em OS. [@RamonSilva20](https://github.com/RamonSilva20) -- Ao adicionar OS e Vendas usuário logado preenchido por padrão como responsável. [@RamonSilva20](https://github.com/RamonSilva20) +- Adicionada pesquisa por múltiplos status em OS. [@RamonSilva20](https://github.com/RamonSilva20) +- Ao adicionar OS e Vendas usuário logado preenchido por padrão como responsável. [@RamonSilva20](https://github.com/RamonSilva20) ### Fixed - Correção tabela e botões OS. [@bulfaitelo](https://github.com/bulfaitelo) @@ -17,15 +21,15 @@ e [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [3.7.0] - 2019-07-08 ### Added -- Adicionada funcionalidade de envio de OS por email. [@RamonSilva20](https://github.com/RamonSilva20) +- Adicionada funcionalidade de envio de OS por email. [@RamonSilva20](https://github.com/RamonSilva20) ## [3.6.0] - 2019-06-29 ### Added -- Adicionada verificação de permissão para exibição de estatísticas no painel. [@RamonSilva20](https://github.com/RamonSilva20) -- Adicionada possibilidade de alteração de preços de produtos e serviços em OS. [@RamonSilva20](https://github.com/RamonSilva20) -- Adicionada possibilidade de adicionar quantidade de serviços em OS. [@RamonSilva20](https://github.com/RamonSilva20) -- Adicionada possibilidade de alterar preços de produtos em Vendas. [@RamonSilva20](https://github.com/RamonSilva20) +- Adicionada verificação de permissão para exibição de estatísticas no painel. [@RamonSilva20](https://github.com/RamonSilva20) +- Adicionada possibilidade de alteração de preços de produtos e serviços em OS. [@RamonSilva20](https://github.com/RamonSilva20) +- Adicionada possibilidade de adicionar quantidade de serviços em OS. [@RamonSilva20](https://github.com/RamonSilva20) +- Adicionada possibilidade de alterar preços de produtos em Vendas. [@RamonSilva20](https://github.com/RamonSilva20) ### Changed - Modificados alguns elementos de estilização. [@RamonSilva20](https://github.com/RamonSilva20) @@ -83,7 +87,7 @@ Por: Wilmerson Felipe[will.phelipe@gmail.com](https://github.com/willph) ## [3.3.1] - 2019-03-03 Por: Fábio Barbosa[fabiobarbosa@gmx.com](https://github.com/aportetecnologia) -### Changed +### Changed - Modificado a cor de fundo para branco do box de texto do trumbowyg - Modificado a disposicao dos campos trumbowyg para evitar rolagem prolongada da tela desnecessáriamente. - Reestilizado a tela de login para uma tela transparente e fundo dinamico @@ -103,7 +107,7 @@ Adicionado o campo valorTotal dentro do $this->data['results']. [Fábio Barbosa] - Adicionado o campo Valor Total para aparecer o valor total da os quando estiver fechado. [Fábio Barbosa](https://github.com/aportetecnologia) - [fabiobarbosa@gmx.com] - Adicionado a div Ordens de Servicos Aguardando Pecas baseado no status da os. [Fábio Barbosa](https://github.com/aportetecnologia) - [fabiobarbosa@gmx.com] -### Changed +### Changed - Alterando layout da tela de login de clientes. [Thomas Henrique Lage Macedo](https://github.com/aportetecnologia) [lage.thomas@gmail.com] - Formatado o campo Valor total com 2 casas decimais e R$ (cifrao) - [Fábio Barbosa](https://github.com/aportetecnologia) - [fabiobarbosa@gmx.com] @@ -144,8 +148,8 @@ Adicionado o campo valorTotal dentro do $this->data['results']. [Fábio Barbosa] - Status alterado automaticamente para faturado [@Pr3d4dor](https://github.com/Pr3d4dor). - Exibir o nome do anexo na embaixo do thumbnail em anexos de OS [@Pr3d4dor](https://github.com/Pr3d4dor). -### Changed +### Changed - Atualização de biblioteca mPDF para versão 6.1 [@Pr3d4dor](https://github.com/Pr3d4dor). -### Fixed +### Fixed - Correção de erro ao gerar relatório sem emitente estar configurado [@RamonSilva20](https://github.com/RamonSilva20). diff --git a/README.md b/README.md index 1bed705f3..bcc6bb2f4 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ ![MapOS](https://raw.githubusercontent.com/RamonSilva20/mapos/master/assets/img/logo.png) -![version](https://img.shields.io/badge/version-3.8.0-blue.svg?longCache=true&style=flat-square) +![version](https://img.shields.io/badge/version-3.9.0-blue.svg?longCache=true&style=flat-square) ![license](https://img.shields.io/badge/license-MIT-green.svg?longCache=true&style=flat-square) ![theme](https://img.shields.io/badge/theme-Matrix--Admin-lightgrey.svg?longCache=true&style=flat-square) ![issues](https://img.shields.io/github/issues/RamonSilva20/mapos.svg?longCache=true&style=flat-square) @@ -15,14 +15,14 @@ 2. Extraia o pacote e copie para seu webserver. 3. Acesse sua URL e inicie a instalação, é bem simples, basta preencher as informações no assistente de instalação **MAPOS**. 4. Configure o email de envio no arquivo email.php -5. Configurar cron jobs para envio de e-mail +5. Configurar cron jobs para envio de e-mail ##### Enviar emails pendentes a cada 2 minutos. - */2 * * * * php /var/www/index.php email/process ##### Enviar emails com falha a cada 5 minutos. - */5 * * * * php /var/www/index.php email/retry - + ##### Obs: O path até o index.php (/var/www/) deve ser configurado conforme o seu ambiente - + ### Atualização para versão 3.* 1. Faça backup do banco de dados. 2. Remova a pasta system da instalação atual. @@ -34,10 +34,10 @@ ### Frameworks/Bibliotecas * [bcit-ci/CodeIgniter](https://github.com/bcit-ci/CodeIgniter) -* [twbs/bootstrap](https://github.com/twbs/bootstrap) -* [jquery/jquery](https://github.com/jquery/jquery) -* [jquery/jquery-ui](https://github.com/jquery/jquery-ui) -* [mpdf/mpdf](https://github.com/mpdf/mpdf) +* [twbs/bootstrap](https://github.com/twbs/bootstrap) +* [jquery/jquery](https://github.com/jquery/jquery) +* [jquery/jquery-ui](https://github.com/jquery/jquery-ui) +* [mpdf/mpdf](https://github.com/mpdf/mpdf) * [Matrix Admin](http://wrappixel.com/demos/free-admin-templates/matrix-admin/index.html) ### Requerimentos @@ -48,7 +48,7 @@ | [
Gianluca Bine](https://github.com/Pr3d4dor) | [
Henrique Miranda](https://github.com/Henrique-Miranda) | [
Mário Lucas](https://github.com/mariolucasdev) | [
Helan Allysson](https://github.com/HelanAllysson) | [
KansasMyers](https://github.com/KansasMyers) |:-:|:-:|:-:|:-:|:-:| | [
Daniel Bastos](https://github.com/daniellbastos) | [
drelldeveloper](https://github.com/drelldeveloper) | [
Samuel Fontebasso](https://github.com/fontebasso) | [
marllonferreira](https://github.com/marllonferreira) | [
Rodrigo Ribeiro](https://github.com/rodrigo3d) -| [
Wilmerson](https://github.com/willph) | [
Thiago Rodrigues](https://github.com/bulfaitelo) +| [
Wilmerson](https://github.com/willph) | [
Thiago Rodrigues](https://github.com/bulfaitelo) ## Autor From 6e100943c3cc912d10dd1948f10bdf452a506cbf Mon Sep 17 00:00:00 2001 From: Gianluca Bine Date: Tue, 17 Sep 2019 21:41:01 -0300 Subject: [PATCH 5/7] =?UTF-8?q?Refatora=C3=A7=C3=A3o=20de=20c=C3=B3digo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/controllers/Os.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/application/controllers/Os.php b/application/controllers/Os.php index adbeff8bb..31b8e3d81 100644 --- a/application/controllers/Os.php +++ b/application/controllers/Os.php @@ -712,7 +712,8 @@ public function faturar() echo json_encode($json); } - private function enviarOsPorEmail($idOs, $remetentes, $assunto) { + private function enviarOsPorEmail($idOs, $remetentes, $assunto) + { $dados = []; $this->load->model('mapos_model'); From 89cc7b1cbfea49631e6b2cb22d5c80ce25ab619e Mon Sep 17 00:00:00 2001 From: Gianluca Bine Date: Tue, 17 Sep 2019 21:44:35 -0300 Subject: [PATCH 6/7] =?UTF-8?q?Refatora=C3=A7=C3=A3o=20de=20c=C3=B3digo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/controllers/Os.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/application/controllers/Os.php b/application/controllers/Os.php index 31b8e3d81..fdea58fa8 100644 --- a/application/controllers/Os.php +++ b/application/controllers/Os.php @@ -719,7 +719,7 @@ private function enviarOsPorEmail($idOs, $remetentes, $assunto) $this->load->model('mapos_model'); $dados['result'] = $this->os_model->getById($idOs); if (!isset($dados['result']->email)) { - return; + return false; } $dados['produtos'] = $this->os_model->getProdutos($idOs); @@ -728,7 +728,7 @@ private function enviarOsPorEmail($idOs, $remetentes, $assunto) $emitente = $dados['emitente'][0]->email; if (!isset($emitente)) { - return; + return false; } $html = $this->load->view('os/emails/os', $dados, true); From 95b20f3faed859bd3fb4380eee614fd84078583b Mon Sep 17 00:00:00 2001 From: Gianluca Bine Date: Tue, 17 Sep 2019 22:14:19 -0300 Subject: [PATCH 7/7] =?UTF-8?q?Atualiza=C3=A7=C3=A3o=20de=20vers=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/config/config.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/config/config.php b/application/config/config.php index 8549eed60..45009876e 100644 --- a/application/config/config.php +++ b/application/config/config.php @@ -1,7 +1,7 @@