From 09995b39c0e7fa661ed48c9eb60916fc80ffc0fa Mon Sep 17 00:00:00 2001 From: cabralwms <61280919+cabralwms@users.noreply.github.com> Date: Sat, 3 Aug 2024 21:16:11 -0300 Subject: [PATCH 1/2] =?UTF-8?q?Corre=C3=A7=C3=B5es=20Lan=C3=A7amentos=20OS?= =?UTF-8?q?=20E=20Vendas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/controllers/Os.php | 81 ++++++++++++++++++++--------- application/controllers/Vendas.php | 2 +- application/views/mapos/painel.php | 2 +- application/views/vendas/vendas.php | 6 +-- 4 files changed, 61 insertions(+), 30 deletions(-) diff --git a/application/controllers/Os.php b/application/controllers/Os.php index 5f30ec74c..6f3fa97ac 100644 --- a/application/controllers/Os.php +++ b/application/controllers/Os.php @@ -1016,23 +1016,31 @@ public function faturar() $recebimento = $this->input->post('recebimento'); try { - $vencimento = explode('/', $vencimento); - $vencimento = $vencimento[2] . '-' . $vencimento[1] . '-' . $vencimento[0]; - + $vencimento = DateTime::createFromFormat('d/m/Y', $vencimento)->format('Y-m-d'); if ($recebimento != null) { - $recebimento = explode('/', $recebimento); - $recebimento = $recebimento[2] . '-' . $recebimento[1] . '-' . $recebimento[0]; + $recebimento = DateTime::createFromFormat('d/m/Y', $recebimento)->format('Y-m-d'); } } catch (Exception $e) { - $vencimento = date('Y/m/d'); + $vencimento = date('Y-m-d'); } - $os = $this->os_model->getById($this->input->post('os_id')); + + $os_id = $this->input->post('os_id'); + $valorTotalData = $this->os_model->valorTotalOS($os_id); + + $valorTotalServico = $valorTotalData['totalServico']; + $valorTotalProduto = $valorTotalData['totalProdutos']; + $valorDesconto = $valorTotalData['valor_desconto']; + + $valorTotal = $valorTotalServico + $valorTotalProduto; + $valorTotalComDesconto = $valorTotal - $valorDesconto; + + // Prepara os dados para inserção na tabela 'lancamentos' $data = [ 'descricao' => set_value('descricao'), - 'valor' => getAmount($this->input->post('valor')), - 'tipo_desconto' => ($this->input->post('tipoDesconto')), - 'desconto' => $os->desconto, - 'valor_desconto' => $os->valor_desconto, + 'valor' => $valorTotal, // Valor total é sempre atribuído a 'valor' + 'tipo_desconto' => 'real', + 'desconto' => ($valorDesconto > 0) ? $valorTotalComDesconto : 0, // Se houver desconto, usa valor com desconto, senão 0 + 'valor_desconto' => ($valorDesconto > 0) ? $valorDesconto : $valorTotal, // Se houver desconto, usa valor do desconto, senão valor total 'clientes_id' => $this->input->post('clientes_id'), 'data_vencimento' => $vencimento, 'data_pagamento' => $recebimento, @@ -1042,37 +1050,60 @@ public function faturar() 'tipo' => $this->input->post('tipo'), 'observacoes' => set_value('observacoes'), 'usuarios_id' => $this->session->userdata('id_admin'), + 'os_id' => $os_id, ]; - $editavel = $this->os_model->isEditable($this->input->post('idOs')); - if (! $editavel) { + $this->db->trans_start(); + + $editavel = $this->os_model->isEditable($os_id); + if (!$editavel) { + $this->db->trans_rollback(); return $this->output ->set_content_type('application/json') ->set_status_header(400) ->set_output(json_encode(['result' => false])); } - if ($this->os_model->add('lancamentos', $data) == true) { - $os = $this->input->post('os_id'); - + // Inserção dos dados na tabela 'lancamentos' + if ($this->os_model->add('lancamentos', $data)) { + // Atualização dos campos na tabela 'os' $this->db->set('faturado', 1); - $this->db->set('valorTotal', $this->input->post('valor')); + $this->db->set('valorTotal', $valorTotal); + + // Atualiza tabela 'os' + if ($valorDesconto > 0) { + // Se houver desconto + $this->db->set('desconto', $valorTotalComDesconto); + $this->db->set('valor_desconto', $valorDesconto); + } else { + // Se não houver desconto + $this->db->set('desconto', 0); + $this->db->set('valor_desconto', $valorTotal); // Valor total é atribuído a valor_desconto + } + $this->db->set('status', 'Faturado'); - $this->db->where('idOs', $os); + $this->db->where('idOs', $os_id); $this->db->update('os'); - log_info('Faturou uma OS. ID: ' . $os); + log_info('Faturou uma OS. ID: ' . $os_id); - $this->session->set_flashdata('success', 'OS faturada com sucesso!'); - $json = ['result' => true]; - echo json_encode($json); - exit(); + $this->db->trans_complete(); + + if ($this->db->trans_status() === FALSE) { + $this->session->set_flashdata('error', 'Ocorreu um erro ao tentar faturar OS.'); + $json = ['result' => false]; + } else { + $this->session->set_flashdata('success', 'OS faturada com sucesso!'); + $json = ['result' => true]; + } } else { + $this->db->trans_rollback(); $this->session->set_flashdata('error', 'Ocorreu um erro ao tentar faturar OS.'); $json = ['result' => false]; - echo json_encode($json); - exit(); } + + echo json_encode($json); + exit(); } $this->session->set_flashdata('error', 'Ocorreu um erro ao tentar faturar OS.'); diff --git a/application/controllers/Vendas.php b/application/controllers/Vendas.php index fe865c2df..b2a051004 100644 --- a/application/controllers/Vendas.php +++ b/application/controllers/Vendas.php @@ -573,7 +573,7 @@ public function faturar() 'descricao' => set_value('descricao'), 'valor' => $valorTotal, 'desconto' => $vendas->desconto, - 'tipo_desconto' => $vendas->tipo_desconto, + 'tipo_desconto' => 'real', // Defina 'real' aqui 'valor_desconto' => $valorDesconto, 'clientes_id' => $this->input->post('clientes_id'), 'data_vencimento' => $vencimento, diff --git a/application/views/mapos/painel.php b/application/views/mapos/painel.php index a6a861eeb..43b295c3e 100644 --- a/application/views/mapos/painel.php +++ b/application/views/mapos/painel.php @@ -1033,7 +1033,7 @@ function responsiveFonts() {