Skip to content

Commit

Permalink
Merge pull request #2581 from cabralwms/master
Browse files Browse the repository at this point in the history
Correção de Bugs e Padronização Vendas e Area Cliente.
  • Loading branch information
willph authored Nov 7, 2024
2 parents f5956a1 + 622421f commit e74ed38
Show file tree
Hide file tree
Showing 13 changed files with 1,118 additions and 903 deletions.
52 changes: 27 additions & 25 deletions application/controllers/Mine.php
Original file line number Diff line number Diff line change
Expand Up @@ -635,7 +635,7 @@ public function gerarPagamentoGerencianetLink()

public function imprimirOs($id = null)
{
if (! session_id() || ! $this->session->userdata('conectado')) {
if (!session_id() || !$this->session->userdata('conectado')) {
redirect('mine');
}

Expand All @@ -647,6 +647,13 @@ public function imprimirOs($id = null)
$data['produtos'] = $this->os_model->getProdutos($this->uri->segment(3));
$data['servicos'] = $this->os_model->getServicos($this->uri->segment(3));
$data['emitente'] = $this->mapos_model->getEmitente();
$data['pix_key'] = $this->db->get_where('configuracoes', ['config' => 'pix_key'])->row_object()->valor;
$data['qrCode'] = $this->os_model->getQrCode(
$id,
$data['pix_key'],
$data['emitente']
);
$data['chaveFormatada'] = $this->formatarChave($data['pix_key']);

if ($data['result']->idClientes != $this->session->userdata('cliente_id')) {
$this->session->set_flashdata('error', 'Esta OS não pertence ao cliente logado.');
Expand All @@ -666,24 +673,21 @@ public function visualizarCompra($id = null)
$data['custom_error'] = '';
$this->CI = &get_instance();
$this->CI->load->database();


$this->load->model('mapos_model');
$this->load->model('os_model');
$data['pix_key'] = $this->CI->db->get_where('configuracoes', ['config' => 'pix_key'])->row_object()->valor;
$this->load->model('vendas_model');

$data['result'] = $this->vendas_model->getById($this->uri->segment(3));
$data['produtos'] = $this->vendas_model->getProdutos($this->uri->segment(3));
$data['emitente'] = $this->mapos_model->getEmitente();
$data['qrCode'] = $this->os_model->getQrCode(
$data['pix_key'] = $this->CI->db->get_where('configuracoes', ['config' => 'pix_key'])->row_object()->valor;
$data['qrCode'] = $this->vendas_model->getQrCode(
$id,
$data['pix_key'],
$data['emitente']
);
$data['chaveFormatada'] = $this->formatarChave($data['pix_key']);

$this->load->model('vendas_model');
$data['result'] = $this->vendas_model->getById($this->uri->segment(3));
$data['produtos'] = $this->vendas_model->getProdutos($this->uri->segment(3));
$data['emitente'] = $this->mapos_model->getEmitente();

if ($data['result']->clientes_id != $this->session->userdata('cliente_id')) {
$this->session->set_flashdata('error', 'Esta OS não pertence ao cliente logado.');
redirect('mine/painel');
Expand All @@ -696,30 +700,29 @@ public function visualizarCompra($id = null)

public function imprimirCompra($id = null)
{
if (! session_id() || ! $this->session->userdata('conectado')) {
if (!session_id() || !$this->session->userdata('conectado')) {
redirect('mine');
}

$data['menuVendas'] = 'vendas';
$data['custom_error'] = '';
$this->CI = &get_instance();
$this->CI->load->database();

$this->load->model('mapos_model');
$this->load->model('vendas_model');
$this->load->model('os_model');
$data['result'] = $this->vendas_model->getById($this->uri->segment(3));
$data['produtos'] = $this->vendas_model->getProdutos($this->uri->segment(3));

$data['result'] = $this->vendas_model->getById($id);
$data['produtos'] = $this->vendas_model->getProdutos($id);
$data['emitente'] = $this->mapos_model->getEmitente();

$this->CI = &get_instance();
$this->CI->load->database();
$data['pix_key'] = $this->CI->db->get_where('configuracoes', ['config' => 'pix_key'])->row_object()->valor;
$data['qrCode'] = $this->os_model->getQrCode(
$id,
$data['pix_key'],
$data['emitente']
);
$data['qrCode'] = $this->vendas_model->getQrCode($id, $data['pix_key'], $data['emitente']);
$data['chaveFormatada'] = $this->formatarChave($data['pix_key']);

if ($data['result']->clientes_id != $this->session->userdata('cliente_id')) {
$this->session->set_flashdata('error', 'Esta OS não pertence ao cliente logado.');
$this->session->set_flashdata('error', 'Esta venda não pertence ao cliente logado.');
redirect('mine/painel');
}

Expand Down Expand Up @@ -759,7 +762,6 @@ public function minha_ordem_de_servico($y = null, $when = null)
}
}

// Cadastro de OS pelo cliente
public function adicionarOs()
{
if (! session_id() || ! $this->session->userdata('conectado')) {
Expand Down Expand Up @@ -793,8 +795,8 @@ public function adicionarOs()

$data = [
'dataInicial' => date('Y-m-d'),
'clientes_id' => $this->session->userdata('cliente_id'), //set_value('idCliente'),
'usuarios_id' => $id, //set_value('idUsuario'),
'clientes_id' => $this->session->userdata('cliente_id'),
'usuarios_id' => $id,
'dataFinal' => date('Y-m-d'),
'descricaoProduto' => $this->security->xss_clean($this->input->post('descricaoProduto')),
'defeito' => $this->security->xss_clean($this->input->post('defeito')),
Expand Down Expand Up @@ -853,7 +855,6 @@ public function detalhesOs($id = null)
}
}

// método para clientes se cadastratem
public function cadastrar()
{
$this->load->model('clientes_model', '', true);
Expand Down Expand Up @@ -1113,6 +1114,7 @@ public function captcha()

$this->session->set_userdata('captchaWord', $codigoCaptcha);
}

}

/* End of file conecte.php */
Expand Down
56 changes: 39 additions & 17 deletions application/controllers/Vendas.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public function index()

public function gerenciar()
{
if (! $this->permission->checkPermission($this->session->userdata('permissao'), 'vVenda')) {
if (!$this->permission->checkPermission($this->session->userdata('permissao'), 'vVenda')) {
$this->session->set_flashdata('error', 'Você não tem permissão para visualizar vendas.');
redirect(base_url());
}
Expand Down Expand Up @@ -51,15 +51,20 @@ public function gerenciar()

$this->data['configuration']['base_url'] = site_url('vendas/gerenciar/');
$this->data['configuration']['total_rows'] = $this->vendas_model->count('vendas');

if (count($where_array) > 0) {
$this->data['configuration']['suffix'] = "?pesquisa={$pesquisa}&status={$status}&data={$de}&data2={$ate}";
$this->data['configuration']['first_url'] = base_url("index.php/vendas/gerenciar")."\?pesquisa={$pesquisa}&status={$status}&data={$de}&data2={$ate}";
$this->data['configuration']['first_url'] = base_url("index.php/vendas/gerenciar")."?pesquisa={$pesquisa}&status={$status}&data={$de}&data2={$ate}";
}

$this->pagination->initialize($this->data['configuration']);

$this->data['results'] = $this->vendas_model->get('vendas', '*', $where_array, $this->data['configuration']['per_page'], $this->uri->segment(3));

foreach ($this->data['results'] as $key => $venda) {
$this->data['results'][$key]->totalProdutos = $this->vendas_model->getTotalVendas($venda->idVendas);
}

$this->data['view'] = 'vendas/vendas';

return $this->layout();
Expand All @@ -84,7 +89,7 @@ public function adicionar()
$dataVenda = explode('/', $dataVenda);
$dataVenda = $dataVenda[2] . '-' . $dataVenda[1] . '-' . $dataVenda[0];
} catch (Exception $e) {
$dataVenda = date('Y-m-d'); // Corrigido para o formato Y-m-d
$dataVenda = date('Y-m-d');
}

$data = [
Expand Down Expand Up @@ -129,6 +134,13 @@ public function editar()
$this->load->library('form_validation');
$this->data['custom_error'] = '';

$this->data['editavel'] = $this->vendas_model->isEditable($this->input->post('idVendas'));
if (! $this->data['editavel']) {
$this->session->set_flashdata('error', 'Essa Venda já tem seu status Faturada e não pode ser alterado e nem suas informações atualizadas. Por favor abrir uma nova Venda.');

redirect(site_url('vendas'));
}

if ($this->form_validation->run('vendas') == false) {
$this->data['custom_error'] = (validation_errors() ? '<div class="form_error">' . validation_errors() . '</div>' : false);
} else {
Expand Down Expand Up @@ -189,6 +201,7 @@ public function visualizar()
$this->data['configuration']['pix_key'],
$this->data['emitente']
);
$this->data['chaveFormatada'] = $this->formatarChave($this->data['configuration']['pix_key']);
$this->data['modalGerarPagamento'] = $this->load->view(
'cobrancas/modalGerarPagamento',
[
Expand All @@ -199,7 +212,6 @@ public function visualizar()
);

$this->data['view'] = 'vendas/visualizarVenda';
$this->data['chaveFormatada'] = $this->formatarChave($this->data['configuration']['pix_key']);

return $this->layout();
}
Expand Down Expand Up @@ -450,15 +462,13 @@ public function excluirProduto()

$this->db->trans_start();

// Exclui o produto
$this->vendas_model->delete('itens_de_vendas', 'idItens', $idProduto);

if ($this->data['configuration']['control_estoque']) {
$this->load->model('produtos_model');
$this->produtos_model->updateEstoque($produto, $quantidade, '+');
}

// Atualiza a venda
$this->db->set('desconto', 0.00);
$this->db->set('valor_desconto', 0.00);
$this->db->set('tipo_desconto', null);
Expand Down Expand Up @@ -556,31 +566,29 @@ public function faturar()

if ($tipoDesconto == 'percentual') {
$valorDesconto = $valorTotal * ($valorDesconto / 100);
} else {
} elseif ($tipoDesconto == 'real') {
$valorDesconto = $valorDesconto;
} else {
$valorDesconto = 0;
}

$valorDesconto = $valorDesconto > $valorTotal ? $valorTotal : $valorDesconto;

$valorDesconto = $valorTotal - $valorDesconto;
if ($valorDesconto == $valorTotal) {
$valorDesconto = $valorTotal;
}
$valorDesconto = min($valorTotal, $valorDesconto);
$valorComDesconto = $valorTotal - $valorDesconto;

$data = [
'vendas_id' => $venda_id,
'descricao' => set_value('descricao'),
'valor' => $valorTotal,
'desconto' => $vendas->desconto,
'tipo_desconto' => 'real',
'valor_desconto' => $valorDesconto,
'valor_desconto' => $valorComDesconto,
'clientes_id' => $this->input->post('clientes_id'),
'data_vencimento' => $vencimento,
'data_pagamento' => $recebimento,
'baixado' => $this->input->post('recebido') == 1 ? true : false,
'cliente_fornecedor' => set_value('cliente'),
'forma_pgto' => $this->input->post('formaPgto'),
'tipo' => $this->input->post('tipo'),
'tipo' => 'receita',
'usuarios_id' => $this->session->userdata('id_admin'),
];

Expand All @@ -593,7 +601,7 @@ public function faturar()
$this->db->set('faturado', 1);
$this->db->set('valorTotal', $valorTotal);
$this->db->set('desconto', $vendas->desconto);
$this->db->set('valor_desconto', $valorDesconto);
$this->db->set('valor_desconto', $valorComDesconto);
$this->db->set('lancamentos_id', $idLancamentos);
$this->db->set('status', 'Faturado');
$this->db->where('idVendas', $venda_id);
Expand Down Expand Up @@ -684,5 +692,19 @@ public function formatarChave($chave) {
return '(' . substr($chave, 0, 2) . ') ' . substr($chave, 2, 5) . '-' . substr($chave, 7);
}
return $chave;
}
}

public function visualizarVenda($id)
{
$venda = $this->Vendas_model->getById($id);
$produtos = $this->Vendas_model->getProdutos($id);
$total = $this->Vendas_model->getTotalVendas($id);

$data['venda'] = $venda;
$data['produtos'] = $produtos;
$data['total'] = $total;

$this->load->view('vendas/vendas', $data);
}

}
28 changes: 26 additions & 2 deletions application/models/Conecte_model.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function getLastOs($cliente)
$this->db->from('os');
$this->db->join('usuarios', 'os.usuarios_id = usuarios.idUsuarios', 'left');
$this->db->where('clientes_id', $cliente);
$this->db->limit(5);
$this->db->limit(10);
$this->db->order_by('idOs', 'desc');

return $this->db->get()->result();
Expand All @@ -38,7 +38,7 @@ public function getLastCompras($cliente)
$this->db->join('usuarios', 'usuarios.idUsuarios = vendas.usuarios_id');
$this->db->order_by('idVendas', 'desc');
$this->db->where('clientes_id', $cliente);
$this->db->limit(5);
$this->db->limit(10);
$this->db->order_by('idVendas', 'desc');

return $this->db->get()->result();
Expand Down Expand Up @@ -142,6 +142,30 @@ public function edit($table, $data, $fieldID, $ID)

return false;
}

public function getQrCode($id, $pixKey, $emitente)
{
if (empty($id) || empty($pixKey) || empty($emitente)) {
return;
}

$result = $this->valorTotalOS($id);
$amount = $result['valor_desconto'] != 0 ? round(floatval($result['valor_desconto']), 2) : round(floatval($result['totalServico'] + $result['totalProdutos']), 2);

if ($amount <= 0) {
return;
}

$pix = (new StaticPayload())
->setAmount($amount)
->setTid($id)
->setDescription(sprintf('%s OS %s', substr($emitente->nome, 0, 18), $id), true)
->setPixKey(getPixKeyType($pixKey), $pixKey)
->setMerchantName($emitente->nome)
->setMerchantCity($emitente->cidade);

return $pix->getQRCode();
}
}

/* End of file conecte_model.php */
Expand Down
15 changes: 14 additions & 1 deletion application/models/Vendas_model.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ public function get($table, $fields, $where = [], $perpage = 0, $start = 0, $one
$this->db->from($table);
$this->db->limit($perpage, $start);
$this->db->join('clientes', 'clientes.idClientes = ' . $table . '.clientes_id');
$this->db->join('usuarios', 'usuarios.idUsuarios = ' . $table . '.usuarios_id');
$this->db->order_by('idVendas', 'desc');

// condicionais da pesquisa
Expand Down Expand Up @@ -124,7 +125,7 @@ public function getVendas($table, $fields, $where = [], $perpage = 0, $start = 0

public function getById($id)
{
$this->db->select('vendas.*, clientes.*, clientes.email as emailCliente, lancamentos.data_vencimento, usuarios.telefone as telefone_usuario, usuarios.email as email_usuario, usuarios.nome');
$this->db->select('vendas.*, clientes.*, clientes.contato as contato_cliente, clientes.email as emailCliente, lancamentos.data_vencimento, usuarios.telefone as telefone_usuario, usuarios.email as email_usuario, usuarios.nome as nome');
$this->db->from('vendas');
$this->db->join('clientes', 'clientes.idClientes = vendas.clientes_id');
$this->db->join('usuarios', 'usuarios.idUsuarios = vendas.usuarios_id');
Expand Down Expand Up @@ -299,6 +300,18 @@ function ($carry, $produto) {

return $pix->getQRCode();
}

public function getTotalVendas($idVendas)
{
$produtos = $this->getProdutos($idVendas);
$total = 0;

foreach ($produtos as $produto) {
$total += $produto->quantidade * $produto->preco;
}

return $total;
}
}

/* End of file vendas_model.php */
Expand Down
Loading

0 comments on commit e74ed38

Please sign in to comment.