import React, { useState, useEffect } from 'react'; import { db } from '../../firebase/config'; import { ref, onValue, push, set, remove, update } from 'firebase/database'; import { Plus, Trash2, Edit3, AlertTriangle, X, Save } from 'lucide-react'; export default function InventoryControl() { const [items, setItems] = useState([]); const [formData, setFormData] = useState({ name: '', quantity: '', unit: '', minStock: '' }); const [editingItem, setEditingItem] = useState(null); const [isModalOpen, setIsModalOpen] = useState(false); useEffect(() => { const inventoryRef = ref(db, 'inventory'); onValue(inventoryRef, (snapshot) => { const data = snapshot.val(); if (data) { const productList = Object.keys(data).map(key => ({ id: key, ...data[key] })); setItems(productList); } else { setItems([]); } }); }, []); const handleAddItem = async (e) => { e.preventDefault(); if (!formData.name || !formData.quantity) return; const inventoryRef = ref(db, 'inventory'); const newItemRef = push(inventoryRef); await set(newItemRef, { name: formData.name, quantity: Number(formData.quantity), unit: formData.unit || 'Und', minStock: Number(formData.minStock) || 10 }); setFormData({ name: '', quantity: '', unit: '', minStock: '' }); }; const handleDelete = async (id) => { if(window.confirm('¿Seguro que deseas eliminar este insumo?')){ await remove(ref(db, `inventory/${id}`)); } }; const openEdit = (item) => { setEditingItem({ ...item }); setIsModalOpen(true); }; const handleSaveEdit = async () => { if (!editingItem.name) return; const { id, ...updates } = editingItem; await update(ref(db, `inventory/${id}`), { ...updates, quantity: Number(updates.quantity), minStock: Number(updates.minStock) }); setEditingItem(null); setIsModalOpen(false); }; const handleAddStock = async (id, currentQty) => { await set(ref(db, `inventory/${id}/quantity`), currentQty + 10); } return (
| Insumo | Stock Actual | Estado | Acciones |
|---|---|---|---|
| Sin insumos registrados | |||
| {item.name} | {item.quantity} {item.unit} |
{isLow ? (
|
|