Atualizar Carrinho de Compras
Boa Noite, tenho um sistema de carrinho de compra, mais ajustei para um sistema de vendas/estoque, pega normal, seleciona o produto, tem como atualizar a qtd e excluir, mais o cliente pediu para adicionar um campo q chama valor adicional, q pode ser usado para coloca um valor de frete por exemplo ou taxa (%), ate blz ta certo, mais quando seleciono dois produto, e coloco um valor adicional em 1 dos produtos, ele acaba atualizando os 2 produto, e ele só funciona se coloca o valor no produto em ordem decrescente, se o produto q adiciono primeiro, coloca um valor adicional, ele não funciona, fica como 0, ai se coloca o valor no 2 produto adicionado, ai ele adiciona só q nos dois 2 produto, certo seria mostra o valor adicional no produto desejável, segue o código:
cogido em php que faz todo o funcionamento, foca apenas no " if(isset($_POST['adicional'])){ " q é aonde atuliza o valor adicional
<?php
session_start();
if(!isset($_SESSION['carrinho'])){
$_SESSION['carrinho'] = array();
}
//adiciona produto
//ADICIONAR CARRINHO
if($_GET['acao'] == 'add'){
$id = intval($_GET['id']);
if(!isset($_SESSION['carrinho'][$id])){
$_SESSION['carrinho'][$id] = 1;
}else{
$_SESSION['carrinho'][$id] += 1;
}
}
//REMOVER CARRINHO
if($_GET['acao'] == 'del'){
$id = intval($_GET['id']);
if(isset($_SESSION['carrinho'][$id])){
unset($_SESSION['carrinho'][$id]);
}
}
//ALTERAR QUANTIDADE
if(isset($_POST['up'])){
if(is_array($_POST['prod'])){
foreach($_POST['prod'] as $id => $qtd){
$id = intval($id);
$qtd = intval($qtd);
if(!empty($qtd) || $qtd <> 0){
$_SESSION['carrinho'][$id] = $qtd;
}else{
unset($_SESSION['carrinho'][$id]);
}
}
}
}
//ALTERAR VALOR ADICIONAL
if(isset($_POST['adicional'])){
if(is_array($_POST['prods'])){
foreach($_POST['prods'] as $id => $p_valor_adicional){
$id = intval($id);
$p_valor_adicional = intval($p_valor_adicional);
if(!empty($p_valor_adicional) || $p_valor_adicional <> 0){
$_SESSION['carrinho'][$id] = $p_valor_adicional;
}else{
unset($_SESSION['carrinho'][$id]);
}
}
}
}
?>
codigo do html e php, com o select listando os produtos:
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-block">
<h4 class="card-title">Resumo do Pedido</h4>
<div class="table-responsive m-t-20">
<table class="table stylish-table color-table muted-table">
<thead>
<tr>
<th>Produto</th>
<th class="text-center">Quantidade</th>
<th class="text-center">Preço</th>
<th class="text-center">Preço Adicional</th>
<th class="text-center">Total</th>
<th> </th>
</tr>
</thead>
<form action="?id_cliente=<?php echo $_GET['id_cliente']; ?>" method="post">
<tbody>
<?php
if(count($_SESSION['carrinho']) == 0){
echo '<tr>
<td class="center top-20 bottom-40" style="text-align: center; padding: 20px;" colspan="5"><img src="assets/images/icon_cart.fw.png"><br/>Não há produto no carrinho</td>
</tr>';
}else{
foreach($_SESSION['carrinho'] as $id => $qtd){
$Seleciona_Produtos = $pdo->prepare("SELECT * FROM tb_sys_produtos WHERE p_id = :id");
$Seleciona_Produtos->bindValue(":id", $id);
$Seleciona_Produtos->execute();
if($Seleciona_Produtos->rowCount() > 0){
foreach($Seleciona_Produtos->fetchAll() as $ResAssoc){
$Total += $ResAssoc['p_valor_venda'] * $qtd + $p_valor_adicional;
echo '<tr>';
echo '<td class="">'.$ResAssoc['p_nome'].'</td>';
echo '<td class="text-center"><input type="text" size="3" class="text-center" name="prod['.$id.']" value="'.$qtd.'" /></td>';
echo '<td class="text-center">R$ '.number_format($ResAssoc['p_valor_venda'],2,",",".").'</td>';
echo '<td class="text-center"><input type="text" size="10" class="text-center" name="prods['.$id.']" value="'.$p_valor_adicional.'" /></td>';
echo '<td class="text-center">R$ '.number_format($ResAssoc['p_valor_venda'] * $qtd + $p_valor_adicional,2,",",".").'</td>';
echo '<td class="text-center"><a href="?id_cliente='.$_GET['id_cliente'].'&acao=del&id='.$id.'" class="text-inverse btn btn-danger btn-xs" title="" data-toggle="tooltip" data-original-title="Dar Baixa"><i class="ti-trash" style="color:#fff;"></i></a></td>';
echo '</tr>';
}
}
}
?>
<tr>
<td><button type"submit" name="up[]" class="btn btn-primary ladda-button" data-style="zoom-out">
<span class="ladda-label fa fa-refresh"></span> Atualizar Quantidade
</button>
</td>
<td><button type"submit" name="adicional[]" class="btn btn-success ladda-button" data-style="zoom-out">
<span class="ladda-label fa fa-refresh"></span> Atualizar Adicional
</button>
</td>
<td></td>
<td></td>
<td class="text-center"><h5>Subtotal</h5></td>
<td class="text-center"><h5><strong>R$<?php echo number_format($Total,2,",","."); ?></strong></h5></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td></td>
<td></td>
<td class="text-center"><h3>Total</h3></td>
<td class="text-center"><h3><strong>R$<?php echo number_format($Total + $taxa,2,",","."); ?></strong></h3></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td></td>
<td></td>
<td class="text-center">
<a href="fatura_novo_busca.php?id_cliente=<?php echo $_GET['id_cliente']; ?>"><button type="button" class="btn btn-default ladda-button" data-style="zoom-out">
<span class="ladda-label fa fa-search"></span> Nova Busca
</button></a></td>
<td class="text-center">
<?php
if(isset($_POST['enviar'])){
$v_data = date('Y-m-d :H:i:s');
$cliente = $_GET['id_cliente'];
$SqlInserirVenda = $pdo->prepare("INSERT INTO tb_sys_vendas (v_codigo, v_cliente, v_valor_total, v_data) VALUES (:v_codigo, :v_cliente, :v_valor_total, :v_data)");
$SqlInserirVenda->bindValue(":v_codigo", $chave_key2);
$SqlInserirVenda->bindValue(":v_cliente", $cliente);
$SqlInserirVenda->bindValue(":v_valor_total", $Total);
$SqlInserirVenda->bindValue(":v_data", $v_data);
$SqlInserirVenda->execute();
$vi_id_venda = $pdo->lastInsertId();
foreach($_SESSION['carrinho'] as $ProdInsert => $qtd):
$SqlInserirItens = $pdo->prepare("INSERT INTO tb_sys_vendas_itens (vi_id_venda, vi_id_produto, vi_id_cliente, vi_qtd) VALUES (:vi_id_venda, :vi_id_produto, :vi_id_cliente, :vi_qtd)");
$SqlInserirItens->bindValue(":vi_id_venda", $vi_id_venda);
$SqlInserirItens->bindValue(":vi_id_produto", $ProdInsert);
$SqlInserirItens->bindValue(":vi_id_cliente", $cliente);
$SqlInserirItens->bindValue(":vi_qtd", $qtd);
$SqlInserirItens->execute();
$calcular = $id;
$UpProduto = $pdo->prepare("UPDATE tb_sys_produtos SET p_disponivel_estoque = p_disponivel_estoque - :qtd WHERE p_id = :ProdInsert");
$UpProduto->bindValue(":qtd", $qtd);
$UpProduto->bindValue(":ProdInsert", $ProdInsert);
$UpProduto->execute();
endforeach;
$pagina = 'visualizar_fatura.php?id_fatura='.$vi_id_venda.'';
echo "<script>parent.location = '$pagina';</script>";
unset($_SESSION['carrinho']);
}
?>
<form action="" enctype="multipart/form-data" method="post">
<input type="submit" name="enviar" class="btn btn-danger ladda-button" data-style="zoom-out" value="Finalizar Pedido">
</form></td>
</tr>
<?php } ?>
</tbody>
</form>
</table>
</div>
</div>
</div>
</div>
</div>Discussão (2)
Carregando comentários...