prepare('SELECT * FROM products WHERE id = ?'); $stmt->execute([$product_id]); $product = $stmt->fetch(); } catch (PDOException $e) { $error = "Erro ao buscar produto: " . $e->getMessage(); } if ($_SERVER['REQUEST_METHOD'] == 'POST') { $type = $_POST['type'] ?? ''; $quantity = $_POST['quantity'] ?? 0; $notes = $_POST['notes'] ?? ''; if (empty($type) || empty($quantity) || $quantity <= 0) { $error = 'Por favor, preencha o tipo e a quantidade (maior que zero).'; } else { try { $pdo->beginTransaction(); // Insert into stock_movements $stmt = $pdo->prepare('INSERT INTO stock_movements (product_id, type, quantity, user_id, notes) VALUES (?, ?, ?, ?, ?)'); $stmt->execute([$product_id, $type, $quantity, $_SESSION['user_id'], $notes]); // Update product quantity if ($type == 'entrada') { $update_sql = 'UPDATE products SET quantity = quantity + ? WHERE id = ?'; } else { $update_sql = 'UPDATE products SET quantity = quantity - ? WHERE id = ?'; } $stmt = $pdo->prepare($update_sql); $stmt->execute([$quantity, $product_id]); $pdo->commit(); $success = 'Movimentação de estoque registrada com sucesso!'; // Refresh product data $stmt = $pdo->prepare('SELECT * FROM products WHERE id = ?'); $stmt->execute([$product_id]); $product = $stmt->fetch(); } catch (PDOException $e) { $pdo->rollBack(); $error = 'Erro ao registrar movimentação: ' . $e->getMessage(); } } } // Fetch stock movements for this product try { $stmt = $pdo->prepare('SELECT sm.*, u.name as user_name FROM stock_movements sm JOIN users u ON sm.user_id = u.id WHERE sm.product_id = ? ORDER BY sm.date DESC'); $stmt->execute([$product_id]); $movements = $stmt->fetchAll(); } catch (PDOException $e) { $movements = []; $error = "Erro ao buscar movimentações: " . $e->getMessage(); } ?>

Movimentar Estoque:

Registrar Entrada/Saída

Estoque Atual:


Voltar para o Estoque
Histórico de Movimentações
Data Tipo Quantidade Usuário Notas