Vouchers

ENOS TOUR MEDAN — Voucher :root{–ink:#122425;–muted:#6c7a7a;–line:#dce7e5;–brand:#0b5d5a;–dark:#074441;–gold:#d99b38;–paper:#fff;–canvas:#f3f7f6;–shadow:0 14px 40px rgba(10,43,41,.09)}*{box-sizing:border-box}body{margin:0;color:var(–ink);background:var(–canvas);font:14px/1.5 Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,”Segoe UI”,sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer}.topbar{min-height:72px;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:13px clamp(20px,5vw,72px);background:#fff;border-bottom:1px solid var(–line)}.brand{display:flex;align-items:center;gap:12px;color:var(–ink);text-decoration:none}.mark{display:grid;place-items:center;width:42px;height:42px;border-radius:13px;color:#fff;background:linear-gradient(135deg,var(–brand),#13807a);font-weight:800;letter-spacing:-1px}.brand strong{display:block;font-size:15px;letter-spacing:.08em}.brand small{display:block;color:var(–muted);font-size:11px;letter-spacing:.04em}.nav{display:flex;align-items:center;gap:15px}.nav a{color:var(–brand);font-size:13px;font-weight:750;text-decoration:none}.nav a:hover{text-decoration:underline}main{max-width:1360px;margin:auto;padding:35px clamp(20px,5vw,72px) 60px}.intro{display:flex;justify-content:space-between;align-items:end;gap:24px;margin-bottom:25px}.eyebrow{margin:0 0 7px;color:var(–brand);font-size:12px;font-weight:800;letter-spacing:.13em}h1{margin:0;font-size:clamp(27px,4vw,38px);letter-spacing:-.045em;line-height:1.1}.intro p{max-width:590px;margin:9px 0 0;color:var(–muted)}.layout{display:grid;grid-template-columns:minmax(300px,.72fr) minmax(0,1.6fr);align-items:start;gap:24px}.card{border:1px solid var(–line);border-radius:17px;background:#fff;box-shadow:var(–shadow)}.form-card{position:sticky;top:18px;padding:24px}.head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px}.head h2{margin:0;font-size:18px;letter-spacing:-.02em}.badge{padding:4px 9px;border-radius:99px;color:var(–brand);background:#e9f5f3;font-size:11px;font-weight:800}.fields{display:grid;gap:14px}.field{display:grid;gap:6px}.field label{color:#485756;font-size:12px;font-weight:750}.field select,.field input,.field textarea{width:100%;padding:10px 12px;outline:none;border:1px solid #cbdad7;border-radius:9px;background:#fff;color:var(–ink)}.field textarea{min-height:82px;resize:vertical}.field select:focus,.field input:focus,.field textarea:focus{border-color:var(–brand);box-shadow:0 0 0 3px rgba(11,93,90,.12)}.notice{margin:0;padding:10px 11px;border-radius:9px;color:#48605d;background:#f1f6f5;font-size:11.5px}.notice strong{color:var(–brand)}.actions{display:flex;gap:10px;padding-top:4px}.btn{border:0;border-radius:9px;padding:10px 14px;font-weight:750;transition:.15s}.btn:hover{transform:translateY(-1px)}.primary{flex:1;color:#fff;background:var(–brand);box-shadow:0 6px 14px rgba(11,93,90,.2)}.primary:hover{background:var(–dark)}.secondary{color:#455755;background:#edf3f2}.voucher-wrap{padding:24px;overflow:auto}.voucher{min-width:650px;overflow:hidden;border:1px solid #cddbd8;border-radius:12px;background:#fff}.voucher-top{display:flex;justify-content:space-between;gap:20px;padding:27px 30px 23px;color:#fff;background:linear-gradient(110deg,#074441,#0b5d5a)}.voucher-brand{display:flex;align-items:center;gap:11px}.voucher-brand .mark{width:38px;height:38px;background:#fff;color:var(–brand)}.voucher-brand strong{display:block;letter-spacing:.09em}.voucher-brand small{display:block;opacity:.75;font-size:10px;letter-spacing:.06em}.voucher-type{text-align:right}.voucher-type b{display:block;font-size:20px;letter-spacing:.05em}.voucher-type span{font-size:12px;opacity:.8}.voucher-body{padding:27px 30px 30px}.voucher-to{display:flex;justify-content:space-between;gap:20px;padding-bottom:19px;border-bottom:1px solid var(–line)}.label{margin-bottom:4px;color:var(–muted);font-size:10px;font-weight:800;letter-spacing:.1em}.to-name{font-size:19px;font-weight:780;letter-spacing:-.025em}.ref{text-align:right}.ref strong{display:block;color:var(–brand);font-size:15px}.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px 28px;padding:21px 0}.value{font-weight:680}.value.muted{color:var(–muted);font-weight:500}.service-box{margin-top:3px;border:1px solid var(–line);border-radius:9px;overflow:hidden}.service-title{padding:9px 12px;color:var(–brand);background:#eef7f5;font-size:11px;font-weight:800;letter-spacing:.07em}.service-content{padding:12px}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{padding:4px 7px;border-radius:6px;color:#526260;background:#f0f5f4;font-size:11px;font-weight:750}.description{margin:17px 0 0;padding:12px;border-left:3px solid var(–gold);color:#4f5c5a;background:#fffaf1;font-size:12px}.foot{display:flex;justify-content:space-between;gap:18px;margin-top:28px;padding-top:17px;border-top:1px solid var(–line);color:var(–muted);font-size:11px}.foot strong{color:var(–ink)}.empty{padding:85px 25px;text-align:center;color:var(–muted)}.empty strong{display:block;margin-bottom:4px;color:#485756}.print-only{display:none}@media(max-width:1050px){.layout{grid-template-columns:1fr}.form-card{position:static}}@media(max-width:680px){.topbar{padding:11px 18px}.nav{gap:10px}.nav a{font-size:12px}main{padding:27px 16px 40px}.intro{flex-direction:column;align-items:start;gap:10px}.voucher-wrap{padding:12px}.voucher{min-width:570px}}@media print{body{background:#fff}.topbar,.form-card,.intro{display:none!important}main{max-width:none;padding:0}.layout{display:block}.card{border:0;box-shadow:none}.voucher-wrap{padding:0}.voucher{width:100%;border:0;border-radius:0}.print-only{display:block}} /* Logo asli pada hasil voucher dan versi cetak */ .voucher-brand .mark{font-size:0!important;overflow:hidden!important;background:#fff url(‘enos-tour-logo.jpg’) center/cover no-repeat!important}.history{grid-column:1/-1;overflow:hidden}.history-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:18px 22px;border-bottom:1px solid var(–line)}.history-head h2{margin:0;font-size:17px}.history-head small{color:var(–muted)}.history-wrap{overflow:auto}.history-table{width:100%;min-width:650px;border-collapse:collapse;text-align:left}.history-table th{padding:11px 16px;color:var(–muted);font-size:10px;letter-spacing:.08em;text-transform:uppercase}.history-table td{padding:13px 16px;border-top:1px solid #edf1f0;font-size:13px}.history-table tr:hover{background:#fbfdfd}.history-empty{padding:26px;color:var(–muted);text-align:center}.voucher-number{color:var(–brand);font-weight:800} /* Periode layanan saja yang ditampilkan kepada partner */ .voucher-body .grid>div:nth-child(5){display:none} @media print{.history{display:none!important}}
Logo ENOS TOUR MEDANENOS TOUR MEDANVOUCHER MANAGEMENT
VOUCHER LAYANAN

Voucher Hotel / Restaurant / Lainnya

Pilih booking dan partner untuk membuat voucher layanan yang siap dipreview atau dicetak.

Belum ada voucher dipilihPilih booking kemudian partner untuk melihat voucher.

Daftar Voucher Dicetak

Nomor, partner, dan agent tersimpan setelah voucher dicetak.
0 VOUCHER
No. VoucherPartnerNama AgentDicetak
Belum ada voucher yang dicetak.
(()=>{ const KEY=’enos-tour-medan-booking-list-v1′,HISTORY_KEY=’enos-tour-medan-voucher-history-v1′,COUNTER_KEY=’enos-tour-medan-voucher-counter-v1′; const fallback=[{id:’b1′,no:1,agent:’Nusantara Holiday’,guestName:’Budi Santoso’,package:’Danau Toba & Samosir’,start:’2026-09-18′,end:’2026-09-20′,adult:4,kid:1,infant:0,partnerItems:[{id:’p1′,partner:’Grand Mercure Medan — Hotel’,checkIn:’2026-09-18′,checkOut:’2026-09-20′,single:1,twinKing:2,extraBed:1,breakfast:5,lunch:5,dinner:5,description:’Early check-in bila tersedia.’}]}]; const $=id=>document.getElementById(id);let bookings=[]; const esc=v=>String(v??”).replace(/[&”‘]/g,c=>({‘&’:’&’,”:’>’,'”‘:’"’,”‘”:’'’}[c])); const date=v=>v?new Intl.DateTimeFormat(‘id-ID’,{day:’2-digit’,month:’long’,year:’numeric’}).format(new Date(v+’T00:00:00′)):’—’; function load(){try{const data=JSON.parse(localStorage.getItem(KEY));bookings=Array.isArray(data)&&data.length?data:fallback}catch{bookings=fallback}const current=$(‘bookingSelect’).value;$(‘bookingSelect’).innerHTML=’Pilih booking terlebih dahulu’+bookings.map(b=>`${String(b.no).padStart(3,’0′)} — ${esc(b.agent)}${b.guestName?’ / ‘+esc(b.guestName):”}`).join(”);$(‘bookingSelect’).value=current;renderPartners()} function items(b){return Array.isArray(b?.partnerItems)?b.partnerItems:[]} function selectedBooking(){return bookings.find(b=>b.id===$(‘bookingSelect’).value)} function renderPartners(){const b=selectedBooking(),p=$(‘partnerSelect’),old=p.value;p.innerHTML=’Pilih partner’+items(b).map((x,i)=>`${esc(x.partner)}`).join(”);p.disabled=!b||!items(b).length;p.value=old;render()} function voucherNo(){const next=Math.max(10001,Number(localStorage.getItem(COUNTER_KEY)||10001));return `ETM-${next}`} function render(){const b=selectedBooking(),index=$(‘partnerSelect’).value,p=items(b)[index];if(!b||!p){$(‘voucherPreview’).className=’empty’;$(‘voucherPreview’).innerHTML=’Belum ada voucher dipilihPilih booking kemudian partner untuk melihat voucher.’;return}$(‘voucherNumber’).value=$(‘voucherNumber’).value||voucherNo();const service=[[‘Single’,p.single],[‘Twin/King’,p.twinKing],[‘Extra Bed’,p.extraBed],[‘Breakfast’,p.breakfast],[‘Lunch’,p.lunch],[‘Dinner’,p.dinner]].filter(([,n])=>Number(n)>0);const note=[$(‘voucherNote’).value.trim(),p.description].filter(Boolean).join(‘ • ‘);$(‘voucherPreview’).className=’voucher’;$(‘voucherPreview’).innerHTML=`
ETENOS TOUR MEDANHOTEL · RESTAURANT · TOUR SERVICES
VOUCHEROfficial Service Confirmation
DITUJUKAN KEPADA
${esc(p.partner)}
Mohon sediakan layanan sesuai rincian di bawah.
NOMOR VOUCHER
${esc($(‘voucherNumber’).value||voucherNo())}Terbit: ${date(new Date().toISOString().slice(0,10))}
NAMA AGENT
${esc(b.agent)}
NAMA TAMU
${esc(b.guestName||’—’)}
PAKET WISATA
${esc(b.package)}
JUMLAH TAMU
Adult ${b.adult||0} · Kid ${b.kid||0} · Infant ${b.infant||0}
PERIODE PERJALANAN
${date(b.start)} — ${date(b.end)}
PERIODE LAYANAN
Check-in ${date(p.checkIn)}
Check-out ${date(p.checkOut)}
RINCIAN LAYANAN
${service.length?service.map(([n,v])=>`${esc(n)}: ${esc(v)}`).join(”):’Tidak ada rincian tambahan‘}
${note?`
Catatan: ${esc(note)}
`:”}
Voucher ini dibuat melalui sistem ENOS TOUR MEDAN.Authorized by ENOS TOUR MEDAN
Terima kasih atas kerja samanya.
`} function history(){try{const data=JSON.parse(localStorage.getItem(HISTORY_KEY));return Array.isArray(data)?data:[]}catch{return []}} function renderHistory(){const data=history(),rows=$(‘historyRows’);$(‘historyCount’).textContent=`${data.length} VOUCHER`;rows.innerHTML=data.map(item=>`${esc(item.number)}${esc(item.partner)}${esc(item.agent)}${esc(item.printedAt)}`).join(”);$(‘historyEmpty’).hidden=data.length!==0} function savePrintedVoucher(){const b=selectedBooking(),p=items(b)[$(‘partnerSelect’).value],number=$(‘voucherNumber’).value||voucherNo();if(!b||!p)return false;const data=history();if(!data.some(item=>item.number===number)){data.unshift({number,partner:p.partner,agent:b.agent,printedAt:new Intl.DateTimeFormat(‘id-ID’,{day:’2-digit’,month:’long’,year:’numeric’,hour:’2-digit’,minute:’2-digit’}).format(new Date())});localStorage.setItem(HISTORY_KEY,JSON.stringify(data));const match=number.match(/^ETM-(\d+)/i);if(match)localStorage.setItem(COUNTER_KEY,String(Number(match[1])+1));renderHistory()}return true} $(‘bookingSelect’).addEventListener(‘change’,()=>{$(‘voucherNumber’).value=”;renderPartners()});$(‘partnerSelect’).addEventListener(‘change’,()=>{$(‘voucherNumber’).value=”;render()});$(‘voucherNumber’).addEventListener(‘input’,render);$(‘voucherNote’).addEventListener(‘input’,render);$(‘refreshBtn’).addEventListener(‘click’,load);$(‘printBtn’).addEventListener(‘click’,()=>{if(!selectedBooking()||$(‘partnerSelect’).value===”)return alert(‘Pilih booking dan partner terlebih dahulu.’);if(savePrintedVoucher())window.print()});load();renderHistory(); const baseRender=render;render=function(){baseRender();const b=selectedBooking(),p=items(b)[$(‘partnerSelect’).value],chips=document.querySelector(‘#voucherPreview .chips’);if(!p||!chips)return;[[‘Breakfast’,p.breakfast],[‘Lunch’,p.lunch],[‘Dinner’,p.dinner]].filter(([,value])=>value===’Include’||value===’Exclude’).forEach(([name,value])=>{const chip=document.createElement(‘span’);chip.className=’chip’;chip.textContent=`${name}: ${value}`;chips.appendChild(chip);});};$(‘voucherNumber’).addEventListener(‘input’,render);$(‘voucherNote’).addEventListener(‘input’,render); })();

Create Vouchers

Create and manage travel vouchers for tours, hotels, restaurants, boats, and other trusted partners.

Organize Details

Keep voucher details organized and easy to retrieve.

Track Issued Vouchers

Track issued vouchers alongside bookings and invoices.
“Our vouchers are easier to manage, and booking details stay clear for everyone.”
John Doe
“Sending vouchers to guests and partners now takes just a few simple steps.”
John Doe