beginTransaction(); // 1. Check if there is enough stock $stmt = $pdo->prepare('SELECT quantity FROM products WHERE id = ?'); $stmt->execute([$product_id]); $stock_quantity = $stmt->fetchColumn(); if ($stock_quantity < $quantity) { throw new Exception('Quantidade em estoque insuficiente.'); } // 2. Add to crop_inputs $stmt = $pdo->prepare('INSERT INTO crop_inputs (crop_id, product_id, quantity, application_date, user_id) VALUES (?, ?, ?, ?, ?)'); $stmt->execute([$crop_id, $product_id, $quantity, $application_date, $_SESSION['user_id']]); // 3. Update product stock (create a stock movement) $stmt = $pdo->prepare('UPDATE products SET quantity = quantity - ? WHERE id = ?'); $stmt->execute([$quantity, $product_id]); // 4. Log the stock movement $notes = "Aplicação na lavoura ID: $crop_id"; $stmt = $pdo->prepare('INSERT INTO stock_movements (product_id, type, quantity, user_id, notes) VALUES (?, 'saída', ?, ?, ?)'); $stmt->execute([$product_id, $quantity, $_SESSION['user_id'], $notes]); $pdo->commit(); $success = 'Insumo aplicado com sucesso!'; } catch (Exception $e) { $pdo->rollBack(); $error = 'Erro ao aplicar insumo: ' . $e->getMessage(); } } } // Fetch crop details try { $stmt = $pdo->prepare('SELECT * FROM crops WHERE id = ?'); $stmt->execute([$crop_id]); $crop = $stmt->fetch(); if (!$crop) { header('Location: crops.php'); exit; } // Fetch applied inputs $stmt = $pdo->prepare(' SELECT ci.*, p.name as product_name, p.unit FROM crop_inputs ci JOIN products p ON ci.product_id = p.id WHERE ci.crop_id = ? ORDER BY ci.application_date DESC '); $stmt->execute([$crop_id]); $applied_inputs = $stmt->fetchAll(); // Fetch products for the dropdown $products = $pdo->query('SELECT id, name, unit, quantity FROM products WHERE quantity > 0 ORDER BY name')->fetchAll(); } catch (PDOException $e) { $error = "Erro ao buscar dados da lavoura: " . $e->getMessage(); $crop = null; $applied_inputs = []; $products = []; } ?>

Detalhes da Lavoura:

Informações Gerais

Cultura:

Área: ha

Data de Início:

Data de Colheita:

Lavoura não encontrada.

Aplicar Insumo
Histórico de Insumos Aplicados
Data Produto Quantidade
Nenhum insumo aplicado ainda.

Voltar para Lavouras