// POS — Recepcijski POS (split-screen, kategorije + košarica) function RCPos({ dark }) { const muted = dark?'#9A9A9A':'#707070'; const [cat, setCat] = React.useState('drinks'); const [cart, setCart] = React.useState([ {id:'i2', qty:2}, {id:'i7', qty:1}, {id:'i26', qty:2}, ]); const [pay, setPay] = React.useState('room'); // room | card | cash | split const addItem = (id) => setCart(c=>{ const ex = c.find(x=>x.id===id); return ex ? c.map(x=>x.id===id?{...x, qty:x.qty+1}:x) : [...c, {id, qty:1}]; }); const incItem = (id, d) => setCart(c=>c.map(x=>x.id===id?{...x, qty:Math.max(0,x.qty+d)}:x).filter(x=>x.qty>0)); const removeItem = (id) => setCart(c=>c.filter(x=>x.id!==id)); const items = POS_ITEMS.filter(i=>i.cat===cat); const cartItems = cart.map(c => ({...POS_ITEMS.find(i=>i.id===c.id), qty:c.qty})); const subtotal = cartItems.reduce((s,i)=>s + i.price*i.qty, 0); const taxLow = cartItems.filter(i=>i.vat==='9.5%').reduce((s,i)=>s + (i.price*i.qty)*0.095/1.095, 0); const taxHigh = cartItems.filter(i=>i.vat==='22%').reduce((s,i)=>s + (i.price*i.qty)*0.22/1.22, 0); const total = subtotal; return <> Odprti računi (3) Prekliči }/>
{/* LEFT — items grid */} {/* Categories */}
{POS_CATS.map(c=>{ const a = cat===c.id; return ; })}
{/* Items grid */}
{items.map(i=>{ const inCart = cart.find(c=>c.id===i.id); return ; })}
{/* RIGHT — cart panel (dark like a POS terminal) */}
Račun {pay==='room'?`· soba 305`:''}
James Schmidt · VIP
{/* Cart items */}
{cartItems.length===0 &&
Ni izdelkov v košarici
} {cartItems.map(i=>
{i.name}
€{i.price.toFixed(2)} · DDV {i.vat}
{i.qty}
€{(i.price*i.qty).toFixed(2)}
)}
{/* Totals */}
{[ ['Vmesna vsota', `€ ${(subtotal-taxLow-taxHigh).toFixed(2)}`], ['DDV 9,5 %', `€ ${taxLow.toFixed(2)}`], ['DDV 22 %', `€ ${taxHigh.toFixed(2)}`], ].map(([l,v])=>
{l}{v}
)}
Skupaj € {total.toFixed(2)}
{/* Payment methods */}
{[['room','Soba 305','door'],['card','Kartica','box'],['cash','Gotovina','box'],['split','Razdelitev','users']].map(([k,l,ic])=>{ const a = pay===k; return ; })}
FURS · EOR pripravljen, ZOI poslan
; } Object.assign(window, { RCPos });