import { useState, useEffect } from 'react'; import api from '../../services/api'; import { Save, DollarSign } from 'lucide-react'; interface PricingConfig { basePrice: number; baseWordCount: number; extraWordPrice: number; specialChars: string; specialCharPrice: number; boldSurcharge: number; frameSurcharge: number; } interface Category { id: number; name: string; } export default function PricingManager() { const [categories, setCategories] = useState([]); const [selectedCat, setSelectedCat] = useState(null); const [config, setConfig] = useState({ basePrice: 0, baseWordCount: 15, extraWordPrice: 0, specialChars: '!', specialCharPrice: 0, boldSurcharge: 0, frameSurcharge: 0 }); const [loading, setLoading] = useState(false); useEffect(() => { // Cargar categorías api.get('/categories').then(res => setCategories(res.data)); }, []); useEffect(() => { if (selectedCat) { // Cargar config existente api.get(`/pricing/${selectedCat}`).then(res => { if (res.data) setConfig(res.data); else setConfig({ // Default si no existe basePrice: 0, baseWordCount: 15, extraWordPrice: 0, specialChars: '!', specialCharPrice: 0, boldSurcharge: 0, frameSurcharge: 0 }); }); } }, [selectedCat]); const handleSave = async () => { if (!selectedCat) return; setLoading(true); try { await api.post('/pricing', { ...config, categoryId: selectedCat }); alert('Configuración guardada correctamente.'); } catch (e) { alert('Error al guardar.'); } finally { setLoading(false); } }; return (

Gestor de Tarifas y Reglas

{selectedCat && (

Reglas de Precio

{/* Tarifa Base */}

Base

setConfig({ ...config, basePrice: parseFloat(e.target.value) })} />
setConfig({ ...config, baseWordCount: parseInt(e.target.value) })} />
setConfig({ ...config, extraWordPrice: parseFloat(e.target.value) })} />
{/* Extras y Estilos */}

Extras y Recargos

setConfig({ ...config, specialChars: e.target.value })} />
setConfig({ ...config, specialCharPrice: parseFloat(e.target.value) })} />
setConfig({ ...config, boldSurcharge: parseFloat(e.target.value) })} />
setConfig({ ...config, frameSurcharge: parseFloat(e.target.value) })} />
)}
); }