Skip to content

Commit

Permalink
Merge branch 'emails-automaticos' of https://github.com/Pr3d4dor/mapos
Browse files Browse the repository at this point in the history
…into Pr3d4dor-emails-automaticos
  • Loading branch information
RamonSilva20 committed Oct 5, 2019
2 parents 9c7079e + 95b20f3 commit 5c8914e
Show file tree
Hide file tree
Showing 6 changed files with 115 additions and 61 deletions.
26 changes: 15 additions & 11 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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)
Expand Down Expand Up @@ -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
Expand All @@ -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]

Expand Down Expand Up @@ -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).
18 changes: 9 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -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)
Expand All @@ -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.
Expand All @@ -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
Expand All @@ -48,7 +48,7 @@
| [<img src="https://avatars.githubusercontent.com/Pr3d4dor?s=115"><br><sub>Gianluca Bine</sub>](https://github.com/Pr3d4dor) | [<img src="https://avatars.githubusercontent.com/Henrique-Miranda?s=115"><br><sub>Henrique Miranda</sub>](https://github.com/Henrique-Miranda) | [<img src="https://avatars.githubusercontent.com/mariolucasdev?s=115"><br><sub>Mário Lucas</sub>](https://github.com/mariolucasdev) | [<img src="https://avatars.githubusercontent.com/HelanAllysson?s=115"><br><sub>Helan Allysson</sub>](https://github.com/HelanAllysson) | [<img src="https://avatars.githubusercontent.com/KansasMyers?s=115"><br><sub>KansasMyers</sub>](https://github.com/KansasMyers)
|:-:|:-:|:-:|:-:|:-:|
| [<img src="https://avatars.githubusercontent.com/daniellbastos?s=115"><br><sub>Daniel Bastos</sub>](https://github.com/daniellbastos) | [<img src="https://avatars.githubusercontent.com/github?s=115"><br><sub>drelldeveloper</sub>](https://github.com/drelldeveloper) | [<img src="https://avatars.githubusercontent.com/fontebasso?s=115"><br><sub>Samuel Fontebasso</sub>](https://github.com/fontebasso) | [<img src="https://avatars.githubusercontent.com/marllonferreira?s=115"><br><sub>marllonferreira</sub>](https://github.com/marllonferreira) | [<img src="https://avatars.githubusercontent.com/rodrigo3d?s=115"><br><sub>Rodrigo Ribeiro</sub>](https://github.com/rodrigo3d)
| [<img src="https://avatars.githubusercontent.com/willph?s=115"><br><sub>Wilmerson</sub>](https://github.com/willph) | [<img src="https://avatars.githubusercontent.com/bulfaitelo?s=115"><br><sub>Thiago Rodrigues</sub>](https://github.com/bulfaitelo)
| [<img src="https://avatars.githubusercontent.com/willph?s=115"><br><sub>Wilmerson</sub>](https://github.com/willph) | [<img src="https://avatars.githubusercontent.com/bulfaitelo?s=115"><br><sub>Thiago Rodrigues</sub>](https://github.com/bulfaitelo)


## Autor
Expand Down
2 changes: 1 addition & 1 deletion application/config/config.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?php defined('BASEPATH') or exit('No direct script access allowed');


$config['app_version'] = '3.8.0';
$config['app_version'] = '3.9.0';

/*
|--------------------------------------------------------------------------
Expand Down
106 changes: 76 additions & 30 deletions application/controllers/Os.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

class Os extends CI_Controller
{

/**
* author: Ramon Silva
* email: silva018-mg@yahoo.com.br
Expand All @@ -29,7 +28,6 @@ public function index()

public function gerenciar()
{

$this->load->library('pagination');

$where_array = array();
Expand Down Expand Up @@ -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());
Expand Down Expand Up @@ -145,11 +142,25 @@ 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');

$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'] = '<div class="form_error"><p>An Error Occured.</p></div>';
}
}
Expand All @@ -160,7 +171,6 @@ public function adicionar()

public function adicionarAjax()
{

$this->load->library('form_validation');

if ($this->form_validation->run('os') == false) {
Expand Down Expand Up @@ -193,7 +203,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');
Expand Down Expand Up @@ -242,6 +251,22 @@ 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');

$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'));
Expand All @@ -261,7 +286,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');
Expand All @@ -285,7 +309,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');
Expand All @@ -308,7 +331,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');
Expand All @@ -335,19 +357,13 @@ public function enviar_email()
redirect(site_url('os'));
}

$html = $this->load->view('os/emails/os', $this->data, true);
$idOs = $this->uri->segment(3);
$remetentes = [
$this->data['result']->email,
];
$enviouEmail = $this->enviarOsPorEmail($idOs, $remetentes, 'Ordem de Serviço');

$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),
);

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'));
Expand All @@ -360,7 +376,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());
Expand Down Expand Up @@ -391,7 +406,6 @@ public function excluir()

public function autoCompleteProduto()
{

if (isset($_GET['term'])) {
$q = strtolower($_GET['term']);
$this->os_model->autoCompleteProduto($q);
Expand All @@ -400,7 +414,6 @@ public function autoCompleteProduto()

public function autoCompleteProdutoSaida()
{

if (isset($_GET['term'])) {
$q = strtolower($_GET['term']);
$this->os_model->autoCompleteProdutoSaida($q);
Expand All @@ -418,7 +431,6 @@ public function autoCompleteCliente()

public function autoCompleteUsuario()
{

if (isset($_GET['term'])) {
$q = strtolower($_GET['term']);
$this->os_model->autoCompleteUsuario($q);
Expand All @@ -436,7 +448,6 @@ public function autoCompleteTermoGarantia()

public function autoCompleteServico()
{

if (isset($_GET['term'])) {
$q = strtolower($_GET['term']);
$this->os_model->autoCompleteServico($q);
Expand All @@ -445,7 +456,6 @@ public function autoCompleteServico()

public function adicionarProduto()
{

$preco = $this->input->post('preco');
$quantidade = $this->input->post('quantidade');
$subtotal = $preco * $quantidade;
Expand All @@ -470,7 +480,6 @@ public function adicionarProduto()

public function excluirProduto()
{

$ID = $this->input->post('idProduto');
if ($this->os_model->delete('produtos_os', 'idProdutos_os', $ID) == true) {

Expand Down Expand Up @@ -523,7 +532,6 @@ public function excluirServico()

public function anexar()
{

$this->load->library('upload');
$this->load->library('image_lib');

Expand Down Expand Up @@ -622,7 +630,6 @@ public function excluirAnexo($id = null)

public function downloadanexo($id = null)
{

if ($id != null && is_numeric($id)) {

$this->db->where('idAnexos', $id);
Expand Down Expand Up @@ -704,4 +711,43 @@ 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 false;
}

$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 false;
}

$html = $this->load->view('os/emails/os', $dados, true);

$this->load->model('email_model');

$remetentes = array_unique($remetentes);
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;
}
}
Loading

0 comments on commit 5c8914e

Please sign in to comment.