const QR = { security: { base: 15000, ps: 12000 }, cleaning: { base: 8000, pa: 2.5 }, garden: { base: 5000, pa: 1.2 }, fleet: { base: 10000, ps: 8000 }, ifm: { base: 30000, pa: 3, ps: 9000 }, }; const QL = { bkk: 1.25, central: 1.1, isan: 1.0, north: 1.05, south: 1.08 }; const QN = { security: 'รักษาความปลอดภัย', cleaning: 'ทำความสะอาด', garden: 'ดูแลสวน', fleet: 'รถประจำองค์กร', ifm: 'Facility ครบวงจร' }; function Quote() { const [co, setCo] = React.useState(''); const [svcs, setSvcs] = React.useState([]); const [area, setArea] = React.useState(0); const [staff, setStaff] = React.useState(0); const [loc, setLoc] = React.useState('isan'); const toggle = (s) => setSvcs(p => p.includes(s) ? p.filter(x => x !== s) : [...p, s]); const f = QL[loc]; const rows = svcs.map(s => { const r = QR[s]; const c = (r.base + (r.ps||0)*staff + (r.pa||0)*area) * f; return [QN[s], c]; }); const sub = rows.reduce((a, [, c]) => a + c, 0); const total = sub * 1.07; const fmt = n => '฿' + n.toLocaleString('th', { maximumFractionDigits: 0 }); return (
ใบเสนอราคา · Quote

คำนวณเบื้องต้น

setCo(e.target.value)} placeholder="ABC Co., Ltd." />
{Object.entries(QN).map(([k, v]) => ( ))}
setArea(+e.target.value || 0)} placeholder="5,000" /> setStaff(+e.target.value || 0)} placeholder="10" />
ส่งคำขอใบเสนอราคา
ประมาณการ / Estimate
{co || 'องค์กรของคุณ'}
{rows.length === 0 ?
กรุณาเลือกบริการ
: rows.map(([n, c], i) => (
{n} {fmt(c)}
))} {rows.length > 0 && (
VAT 7% {fmt(sub * 0.07)}
)}
{rows.length > 0 && (
รวม / เดือน {fmt(total)}
)}
); } window.Quote = Quote;