GovDocs AI Malaysia | TNT Document Generator - Cross Browser Fixed v13
G
GovDocs AI Malaysia TNT Document Generator • Auto Save • Final Error-Fixed
Disimpan secara automatik
WP1.4 • Tuntutan Perjalanan • Kenderaan Sendiri • Lampiran A
Generator Dokumen TNT Dengan Kotak, Jadual & Preview A4.
Isi maklumat sekali sahaja. Sistem akan susun semula kepada borang tuntutan perjalanan, kenyataan tuntutan, borang kebenaran menggunakan kenderaan sendiri dan Lampiran A bertugas luar pejabat.
1Maklumat Pegawai⌄
Isi maklumat pegawai.
2Maklumat Tuntutan & Kenderaan⌄
Kadar Elaun Kenderaan
3Senarai Perjalanan Rasmi⌄
Isi satu perjalanan rasmi bagi setiap rekod.
4Elaun, Penginapan & Belanja Lain⌄
Kemudahan Makan Minum
Kemudahan Penginapan
Tambang Pengangkutan Awam
Kemudahan Lain
5Prompt AI Sokongan⌄
Jana dan salin prompt jika diperlukan.
Preview Dokumen A4 Portrait
Klik “Cetak / Simpan PDF” dan pilih Save as PDF. Format kotak dijana melalui HTML/CSS.
Disimpan
';
try{
const blob=new Blob([html],{type:'text/html'});
const url=URL.createObjectURL(blob);
const a=document.createElement('a');
a.href=url;
a.download='dokumen-tnt-print-ready.html';
document.body.appendChild(a);
a.click();
setTimeout(()=>{document.body.removeChild(a);URL.revokeObjectURL(url);},200);
}catch(e){showToast('Muat turun gagal: '+e.message);}
}
function generatePrompt(){
var nl='\n';
var tripData=state.trips.map(function(t){return {
tarikhPermohonan:t.tarikhMohon,
lokasiDaripada:tripOrigin(t),
tarikhPerjalananPergi:tripDateGo(t),
masaBertolakPergi:timeDisplay(tripGoDepart(t)),
masaTibaPergi:timeDisplay(tripGoArrive(t)),
tarikhPerjalananBalik:tripDateBack(t),
masaBertolakBalik:timeDisplay(tripBackDepart(t)),
masaTibaBalik:timeDisplay(tripBackArrive(t)),
tarikhTugasUrusanRasmi:tripTaskDate(t),
tempatBertugas:tripPlace(t),
tugasUrusanRasmi:upper(t.tugasan),
kenderaan:tripVehicle(t),
jarakPergiKm:tripKmGo(t),
jarakBalikKm:tripKmBack(t),
jumlahKm:tripKm(t),
suratArahanLampiran:t.suratArahan,
noFailRujukan:t.noFail
};});
var text='Bertindak sebagai pembantu penyedia dokumen tuntutan perjalanan rasmi kerajaan Malaysia. Sediakan kandungan tuntutan perjalanan rasmi berdasarkan maklumat yang diberikan. Gunakan bahasa rasmi kerajaan Malaysia, jangan mereka-reka maklumat, dan kekalkan susunan borang WP1.4, Permohonan Kebenaran Menggunakan Kenderaan Sendiri serta Lampiran A. Semua helaian output hendaklah A4 Portrait.'+nl+nl
+'ARAHAN OUTPUT WAJIB'+nl
+'1. Jana Kenyataan Tuntutan mengikut kolum Tarikh, Waktu Bertolak, Waktu Tiba, Butiran Tuntutan dan Jarak (km).'+nl
+'2. Gunakan satu rekod untuk satu perjalanan rasmi, dengan ayat PERGI dan BALIK dalam Butiran Tuntutan.'+nl
+'3. Ayat PERGI: "Perjalanan PERGI daripada LOKASI DARIPADA ke TEMPAT BERTUGAS bagi menghadiri TUGAS / URUSAN RASMI pada TARIKH TUGAS menaiki KENDERAAN."'+nl
+'4. Ayat BALIK: "Perjalanan BALIK daripada TEMPAT BERTUGAS ke LOKASI DARIPADA menaiki KENDERAAN."'+nl
+'5. Hanya PERGI/BALIK, lokasi, tempat bertugas, tugas/urusan rasmi, tarikh tugas dan kenderaan diboldkan dalam huruf besar.'+nl
+'6. Jana jumlah kilometer bagi setiap perjalanan dan jumlah keseluruhan kilometer.'+nl
+'7. Jana kandungan Bahagian A, B, C dan D tanpa membuang seksyen rasmi walaupun nilai kosong.'+nl
+'8. Jana kandungan Permohonan Kebenaran Menggunakan Kenderaan Sendiri bagi setiap perjalanan kenderaan sendiri.'+nl
+'9. Jana kandungan Lampiran A Permohonan Bertugas Di Luar Pejabat bagi setiap perjalanan.'+nl
+'10. Jana teks Pengakuan dan Pengesahan.'+nl
+'11. Semak konsistensi tarikh, hari, masa, lokasi, tujuan, jarak, jumlah kilometer dan dokumen sokongan.'+nl
+'12. Senaraikan maklumat yang masih kosong atau perlu disemak oleh pengguna.'+nl+nl
+'MAKLUMAT PEGAWAI'+nl+JSON.stringify(state.pegawai,null,2)+nl+nl
+'MAKLUMAT TUNTUTAN'+nl+JSON.stringify(state.claim,null,2)+nl+nl
+'KENDERAAN UTAMA'+nl+JSON.stringify(state.vehicle,null,2)+nl+nl
+'SENARAI PERJALANAN RASMI'+nl+JSON.stringify(tripData,null,2)+nl+nl
+'ELAUN DAN KEMUDAHAN LAIN'+nl+JSON.stringify({allowance:state.allowance,misc:state.misc},null,2)+nl+nl
+'KIRAAN'+nl
+'Jumlah KM: '+km(totalKm())+' km'+nl
+'Elaun Kenderaan: '+money(vehicleAllowance())+nl
+'Tambang Pengangkutan Awam: '+money(publicTransportTotal())+nl
+'Elaun Makan/Harian: '+money(mealAllowance())+nl
+'Penginapan/Lojing: '+money(lodgingAllowance())+nl
+'Kemudahan Lain: '+money(miscTotal())+nl
+'Jumlah Keseluruhan: '+money(grandTotal());
var out=document.getElementById('promptOutput');
out.style.display='block';
out.value=text;
showToast('Prompt dijana');
}
async function copyPrompt(){
generatePrompt();
const text=document.getElementById('promptOutput').value;
if(navigator.clipboard && navigator.clipboard.writeText){
try{
await navigator.clipboard.writeText(text);
showToast('Prompt disalin');
return;
}catch(e){}
}
// Fallback for Edge/older browsers
try{
const ta=document.createElement('textarea');
ta.value=text;
ta.style.cssText='position:fixed;top:0;left:0;opacity:0;';
document.body.appendChild(ta);
ta.focus();
ta.select();
document.execCommand('copy');
document.body.removeChild(ta);
showToast('Prompt disalin');
}catch(e){showToast('Sila salin manual');}
}
function initDefaults(){if(!state.claim.tarikhPengakuan)state.claim.tarikhPengakuan=todayIso();if(!state.claim.tarikhPengesahan)state.claim.tarikhPengesahan='';if(!state.claim.bulan){const d=new Date();state.claim.bulan=d.getFullYear()+'-'+String(d.getMonth()+1).padStart(2,'0');}if(!state.rates.kmPertama)state.rates.kmPertama=500;if(state.rates.kadarPertama===undefined)state.rates.kadarPertama=0.90;if(state.rates.kadarSeterusnya===undefined)state.rates.kadarSeterusnya=0.80;if(!state.vehicle.sebab)state.vehicle.sebab='KENDERAAN TIDAK DISEDIAKAN';if(!state.misc.catatan)state.misc.catatan='SEPERTI DI LAMPIRAN';}
function boot(){loadSaved();initDefaults();bindInputs();renderTripForms();render();setInterval(()=>saveNow(false),30000);}boot();
//]]>