Ir ao conteúdo

Posts recomendados

Postado

Alguém pode me ajudar? eu criei uma tabela de vendas porém ao abrir o modal eu so posso registrar uma venda, o que eu quero é que ao abrir o modal tenha um botão para adicionar mais produtos que no caso seria clonado e vai aparecer as colunas abaixo:

CODIGO DO PRODUTO

DESCRIÇÃO

FORNECEDOR                                     

VALOR UNITARIO

SAIDA

TIPO DE PAGAMENTO

 

ao registrar eu quero que no index apareça id do cliente, nome do cliente, data de compra e o valor total. e nas ações onde fica o editar e excluir eu quero que fique um botão para visualizar a venda, então é para abrir um modal e em ajax eu quero que ele traga os produtos vendidos com as informações das colunas clonadas. me ajudem por favor!!!

 

index.php:

<?php

include('../conexao/connect.php');

session_start();



if(!isset($_SESSION['idusuario'])) {

    header("location: ../login.php");

    exit();

}



$lista = [];



$sql = $pdo->query("SELECT * FROM fornecedor ORDER BY fornecedor ASC");

if($sql->rowCount() > 0) {

    $lista = $sql->fetchAll(PDO::FETCH_ASSOC);

}



$lista2 = [];



$sql = $pdo->query("SELECT * FROM clientes ORDER BY nome ASC");

if($sql->rowCount() > 0) {

    $lista2 = $sql->fetchAll(PDO::FETCH_ASSOC);

}

?>



<html lang="pt-br">



  <head>

    <title>Vendas</title>

    <meta charset="UTF-8">

    <script src="../js/jquery-3.6.2.js"></script>

    <link rel="icon" type="image/png" href="../images/favicon.png">

    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.0.1/css/bootstrap.min.css">

    <link rel="stylesheet" href="https://cdn.datatables.net/1.11.5/css/dataTables.bootstrap5.min.css">

    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-u1OknCvxWvY5kfmNBILK2hRnQC3Pr17a+RTT6rIHI7NnikvbZlHgTPOOmMi466C8" crossorigin="anonymous"></script>



    <nav class="navbar navbar-default">

        <div class="container-fluid">



            <!-- Esquerdo -->

            <div class="navbar-header">

            <h3>VENDAS</h3>

        </div>



        <!-- Direito -->

        <p class="navbar-text navbar-right">

        <button type="button" class="btn btn-primary btn-lg ml-right" data-bs-toggle="modal" data-bs-target="#exampleModal">Registrar</button>

        <a href="../vendas.php"><button type="button" class="btn btn-secondary btn-lg">Voltar</button></a>

        </p>

    </div>

    </nav>



    <!-- Modal -->

    <div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">

    <div class="modal-dialog modal-dialog-center">

        <div class="modal-content">

        <div class="modal-header">

            <h5 class="modal-title" id="exampleModalLabel">Registrar venda</h5>

            <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>

        </div>

        <div class="modal-body">

        <form action="registrar-venda.php" method="POST">

                <div class="mb-3">

                    <label style="color: red;" class="form-label">DATA DA VENDA</label>

                    <input class="form-control" type="date" name="data_venda" required="">

                </div>



                <div class="mb-3">

                    <label class="form-label">ID DO CLIENTE</label>

                    <input type="text" name="idcliente" class="form-control">

                </div>



                <div class="mb-3">

                    <label class="form-label">NOME DO CLIENTE</label>

                    <select name="nome" class="form-select" aria-label="Default select example">

                        <option selected></option>

                        <?php foreach($lista2 as $nome_cliente): ?>

                        <option><?php echo $nome_cliente['nome']; ?></option>

                        <?php endforeach; ?>

                    </select>

                </div>



                <strong class="form-label">PRODUTO OU SERVIÇO</strong>



                <br></br>



                <div class="mb-3">

                    <label class="form-label">CODIGO DO PRODUTO</label>

                    <input type="text" name="codigo" class="form-control">

                </div>



                <div class="mb-3">

                    <label class="form-label">DESCRIÇÃO</label>

                    <input type="text" name="descricao" class="form-control" maxlength="300">

                </div>



                <div class="mb-3">

                    <label class="form-label">FORNECEDOR</label>

                    <select name="fornecedor" class="form-select" aria-label="Default select example">

                        <option selected>Não possui</option>

                        <?php foreach($lista as $fornecedor): ?>

                        <option><?php echo $fornecedor['fornecedor']; ?></option>

                        <?php endforeach; ?>

                    </select>

                </div>



                <div class="mb-3">

                    <label class="form-label">VALOR UNITARIO <span style="font-size: 14px; color: grey;">Use "." para registrar valores decimais Exemplo: 19.90</span></label>

                    <input type="text" name="valor_unitario" class="form-control">

                </div>



                <div class="mb-3">

                    <label class="form-label">SAIDA</label>

                    <input type="text" name="saida" class="form-control">

                </div>



                <div class="mb-3">

                    <label class="form-label">TIPO DE PAGAMENTO</label>

                    <select name="tipo_pagamento" class="form-select" aria-label="Default select example">

                        <option selected></option>

                        <option>A vista/PIX</option>

                        <option>Cheque</option>

                        <option>Cartão de crédito</option>

                        <option>Cartão de débito</option>

                        <option>Crediário</option>

                        <option>Outro</option>

                    </select>

                </div>

            </div>

            <div class="modal-footer">

                <input id="register-modal" type="submit" name="submit" class="btn btn-primary" value="Registrar">

            </div>

            </form>

        </div>

    </div>

    </div>



    <script>

    $(document).ready(function() {

        if (window.location.search.includes('lista=1')) {

        $("#exampleModal").modal('show');

    }

    });

    </script>



    <?php

    if (isset($_GET['lista']) && $_GET['lista'] == 1) {

      echo '<script>console.log("Lista parameter value: ' . $_GET['lista'] . '")</script>';

      echo '<script>$("#exampleModal").modal("show");</script>';

    }

    ?>



    <script>

        $(document).ready(function() {

            $("input[name='codigo']").on('input', function() {

                var codigo = $(this).val();

                $.ajax({

                type: "POST",

                url: "buscar_produto.php",

                data: {

                    codigo: codigo

                },

                success: function(data) {

                    var produto = JSON.parse(data);

                    $("input[name='descricao']").val(produto.descricao);

                    $("select[name='fornecedor']").val(produto.fornecedor);

                    $("input[name='valor_unitario']").val(produto.valor_unitario);

                }

                });

            });

        });

    </script>



  </head>



  <body>

    <div class="container-fluid">

        <table id="listar-usuarios" class="table table-striped table-hover display" style="width: 100%">

            <thead>

                <tr>

                    <th>ID</th>

                    <th>DATA DA VENDA</th>

                    <th>ID DO CLIENTE</th>

                    <th>NOME DO CLIENTE</th>

                    <th>CODIGO</th>

                    <th>DESCRIÇÃO</th>

                    <th>FORNECEDOR</th>

                    <th>VALOR UNITARIO</th>

                    <th>SAIDA</th>

                    <th>TIPO DE PAGAMENTO</th>

                    <th>AÇÕES</th>

                </tr>

            </thead>

        </table>

    </div>



    <script src="https://codigoe.jquery.com/jquery-3.5.1.js"></script>

    <script src="https://cdn.datatables.net/1.11.5/js/jquery.dataTables.min.js"></script>

    <script src="https://cdn.datatables.net/1.11.5/js/dataTables.bootstrap5.min.js"></script>



    <script>

        $(document).ready(function() {

            $('#listar-usuarios').DataTable({

                "processing": true,

                "serverSide": true,

                "ajax": "listar_usuarios.php",

                "language": {

                    "url": "//cdn.datatables.net/plug-ins/1.11.5/i18n/pt-BR.json"

                }

            });

        });

    </script>

   

  </body>



</html>

 

registrar-venda.php:

<?php

include("../conexao/connect.php");



$data_venda = filter_input(INPUT_POST, 'data_venda');

$idcliente = intval(filter_input(INPUT_POST, 'idcliente'));

$nome = filter_input(INPUT_POST, 'nome');

$codigo = filter_input(INPUT_POST, 'codigo');

$descricao = filter_input(INPUT_POST, 'descricao');

$fornecedor = filter_input(INPUT_POST, 'fornecedor');

$valor_unitario = filter_input(INPUT_POST, 'valor_unitario');

$saida = intval(filter_input(INPUT_POST, 'saida'));

$tipo_pagamento = filter_input(INPUT_POST, 'tipo_pagamento');



if($data_venda) {

    $sql = $pdo->prepare("SELECT * FROM estoque WHERE codigo = :codigo");

    $sql->bindValue(':codigo', $codigo);

    $sql->execute();

    $result = $sql->fetch();



    $entrada = intval($result['entrada']);

    $saldo = $entrada - $saida;



    $sql = $pdo->prepare("SELECT SUM(saida) as total_saida FROM vendas WHERE codigo = :codigo");

    $sql->bindValue(':codigo', $codigo);

    $sql->execute();

    $result = $sql->fetch();

    $total_saida = intval($result['total_saida']) + $saida;



    $sql = $pdo->prepare("UPDATE estoque SET saida = :total_saida, saldo = entrada - :total_saida WHERE codigo = :codigo");

    $sql->bindValue(':total_saida', $total_saida);

    $sql->bindValue(':codigo', $codigo);

    $sql->execute();



    $compras_acumuladas = $valor_unitario * $saida;



    $sql = $pdo->prepare("UPDATE estoque SET valor_venda = valor_venda + :valor_venda WHERE codigo = :codigo");

    $sql->bindValue(':valor_venda', $compras_acumuladas);

    $sql->bindValue(':codigo', $codigo);

    $sql->execute();



    $sql = $pdo->prepare("UPDATE clientes SET compras_acumuladas = compras_acumuladas + :compras_acumuladas WHERE idcliente = :idcliente");

    $sql->bindValue(':compras_acumuladas', $compras_acumuladas);

    $sql->bindValue(':idcliente', $idcliente);

    $sql->execute();



    $sql = $pdo->prepare("INSERT INTO vendas (data_venda,idcliente,nome,codigo,descricao,fornecedor,valor_unitario,saida,tipo_pagamento) VALUES (:data_venda,:idcliente,:nome,:codigo,:descricao,:fornecedor,:valor_unitario,:saida,:tipo_pagamento)");

    $sql->bindValue(':data_venda', $data_venda);

    $sql->bindValue(':idcliente', $idcliente);

    $sql->bindValue(':nome', $nome);

    $sql->bindValue(':codigo', $codigo);

    $sql->bindValue(':descricao', $descricao);

    $sql->bindValue(':fornecedor', $fornecedor);

    $sql->bindValue(':valor_unitario', $valor_unitario);

    $sql->bindValue(':saida', $saida);

    $sql->bindValue(':tipo_pagamento', $tipo_pagamento);

    $sql->execute();



    header("location: index.php?lista=1");

    exit();

}

else {

    header("location: index.php");

    exit();

}

?>



listar_usuarios.php (to usando a biblioteca DataTables para trazer as colunas):



<?php



// Incluir a conexao com o banco de dados

include("../conexao/connect.php");



//Receber os dados da requisão

$dados_requisicao = $_REQUEST;



// Lista de colunas da tabela

$colunas = [

    0 => 'idvenda',

    1 => 'data_venda',

    2 => 'idcliente',

    3 => 'nome',

    4 => 'codigo',

    5 => 'descricao',

    6 => 'fornecedor',

    7 => 'valor_unitario',

    8 => 'saida',

    9 => 'tipo_pagamento'

];



// Obter a quantidade de registros no banco de dados

$query_qnt_usuarios = "SELECT COUNT(idvenda) AS qnt_usuarios FROM vendas";



// Acessa o IF quando ha paramentros de pesquisa  

if(!empty($dados_requisicao['search']['value'])) {

    $query_qnt_usuarios .= " WHERE idvenda LIKE :id ";

    $query_qnt_usuarios .= " OR data_venda LIKE :data_venda ";

    $query_qnt_usuarios .= " OR idcliente LIKE :idcliente ";

    $query_qnt_usuarios .= " OR nome LIKE :nome ";

    $query_qnt_usuarios .= " OR codigo LIKE :codigo ";

    $query_qnt_usuarios .= " OR descricao LIKE :descricao ";

    $query_qnt_usuarios .= " OR fornecedor LIKE :fornecedor ";

    $query_qnt_usuarios .= " OR valor_unitario LIKE :valor_unitario ";

    $query_qnt_usuarios .= " OR saida LIKE :saida ";

    $query_qnt_usuarios .= " OR tipo_pagamento LIKE :tipo_pagamento ";

}

// Preparar a QUERY

$result_qnt_usuarios = $pdo->prepare($query_qnt_usuarios);

// Acessa o IF quando ha paramentros de pesquisa  

if(!empty($dados_requisicao['search']['value'])) {

    $valor_pesq = "%" . $dados_requisicao['search']['value'] . "%";

    $result_qnt_usuarios->bindParam(':id', $valor_pesq, PDO::PARAM_STR);

    $result_qnt_usuarios->bindParam(':data_venda', $valor_pesq, PDO::PARAM_STR);

    $result_qnt_usuarios->bindParam(':idcliente', $valor_pesq, PDO::PARAM_STR);

    $result_qnt_usuarios->bindParam(':nome', $valor_pesq, PDO::PARAM_STR);

    $result_qnt_usuarios->bindParam(':codigo', $valor_pesq, PDO::PARAM_STR);

    $result_qnt_usuarios->bindParam(':descricao', $valor_pesq, PDO::PARAM_STR);

    $result_qnt_usuarios->bindParam(':fornecedor', $valor_pesq, PDO::PARAM_STR);

    $result_qnt_usuarios->bindParam(':valor_unitario', $valor_pesq, PDO::PARAM_STR);

    $result_qnt_usuarios->bindParam(':saida', $valor_pesq, PDO::PARAM_STR);

    $result_qnt_usuarios->bindParam(':tipo_pagamento', $valor_pesq, PDO::PARAM_STR);

}

// Executar a QUERY responsável em retornar a quantidade de registros no banco de dados

$result_qnt_usuarios->execute();

$row_qnt_usuarios = $result_qnt_usuarios->fetch(PDO::FETCH_ASSOC);

//var_dump($row_qnt_usuarios);



// Recuperar os registros do banco de dados

$query_usuarios = "SELECT idvenda, data_venda, idcliente, nome, codigo, descricao, fornecedor, valor_unitario, saida, tipo_pagamento

                    FROM vendas ";



// Acessa o IF quando ha paramentros de pesquisa  

if(!empty($dados_requisicao['search']['value'])) {

    $query_usuarios .= " WHERE idvenda LIKE :id ";

    $query_usuarios .= " OR data_venda LIKE :data_venda ";

    $query_usuarios .= " OR idcliente LIKE :idcliente ";

    $query_usuarios .= " OR nome LIKE :nome ";

    $query_usuarios .= " OR codigo LIKE :codigo ";

    $query_usuarios .= " OR descricao LIKE :descricao ";

    $query_usuarios .= " OR fornecedor LIKE :fornecedor ";

    $query_usuarios .= " OR valor_unitario LIKE :valor_unitario ";

    $query_usuarios .= " OR saida LIKE :saida ";

    $query_usuarios .= " OR tipo_pagamento LIKE :tipo_pagamento ";

}



// Ordenar os registros

$query_usuarios .= " ORDER BY " . $colunas[$dados_requisicao['order'][0]['column']] . " " . $dados_requisicao['order'][0]['dir'] . " LIMIT :inicio , :quantidade";



// Preparar a QUERY

$result_usuarios = $pdo->prepare($query_usuarios);

$result_usuarios->bindParam(':inicio', $dados_requisicao['start'], PDO::PARAM_INT);

$result_usuarios->bindParam(':quantidade', $dados_requisicao['length'], PDO::PARAM_INT);



// Acessa o IF quando ha paramentros de pesquisa  

if(!empty($dados_requisicao['search']['value'])) {

    $valor_pesq = "%" . $dados_requisicao['search']['value'] . "%";

    $result_usuarios->bindParam(':id', $valor_pesq, PDO::PARAM_STR);

    $result_usuarios->bindParam(':data_venda', $valor_pesq, PDO::PARAM_STR);

    $result_usuarios->bindParam(':idcliente', $valor_pesq, PDO::PARAM_STR);

    $result_usuarios->bindParam(':nome', $valor_pesq, PDO::PARAM_STR);

    $result_usuarios->bindParam(':codigo', $valor_pesq, PDO::PARAM_STR);

    $result_usuarios->bindParam(':descricao', $valor_pesq, PDO::PARAM_STR);

    $result_usuarios->bindParam(':fornecedor', $valor_pesq, PDO::PARAM_STR);

    $result_usuarios->bindParam(':valor_unitario', $valor_pesq, PDO::PARAM_STR);

    $result_usuarios->bindParam(':saida', $valor_pesq, PDO::PARAM_STR);

    $result_usuarios->bindParam(':tipo_pagamento', $valor_pesq, PDO::PARAM_STR);

}

// Executar a QUERY

$result_usuarios->execute();



// Ler os registros retornado do banco de dados e atribuir no array

while ($row_usuario = $result_usuarios->fetch(PDO::FETCH_ASSOC)) {

    extract($row_usuario);

    $registro = [];

    $registro[] = $idvenda;

    $registro[] = date("d/m/Y", strtotime($data_venda));

    $registro[] = $idcliente;

    $registro[] = $nome;

    $registro[] = $codigo;

    $registro[] = $descricao;

    $registro[] = $fornecedor;

    $registro[] = "R$ " . str_replace(".", ",", $valor_unitario);

    $registro[] = $saida;

    $registro[] = $tipo_pagamento;

    $registro[] = "<a href='excluir.php?id=$idvenda'><button class='btn btn-danger btn-sm'>Excluir</button></a>";

    $dados[] = $registro;

}



//Cria o array de informações a serem retornadas para o Javascript

$resultado = [

    "draw" => intval($dados_requisicao['draw']), // Para cada requisição é enviado um número como parâmetro

    "recordsTotal" => intval($row_qnt_usuarios['qnt_usuarios']), // Quantidade de registros que há no banco de dados

    "recordsFiltered" => intval($row_qnt_usuarios['qnt_usuarios']), // Total de registros quando houver pesquisa

    "data" => $dados // Array de dados com os registros retornados da tabela usuarios

];



// Retornar os dados em formato de objeto para o JavaScript

echo json_encode($resultado);

 

Postado

@MailingTester Abaixo esta o crud, o que eu quero é que onde tem as colunas como id... data de venda... e etc tenha apenas 

id - data_venda - idcliente - nome (nome do cliente) - valor_total - tipo_pagamento

e onde possui as ações como excluir, ao lado eu quero que tenha um botão para abrir um modal e com ajax apareça os produtos vendidos. la no modal de registro precisa ter um botão de "mais" para adicionar mais produtos, espero que tenha entendido 😉

Capturar.PNG

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!