BPT Enterprise Service empowers businesses with AI-driven document management and intelligent chat solutions. Upload, analyze, and interact with your data seamlessly.
Get StartedOur platform combines enterprise-grade security with cutting-edge AI to transform how you work with documents.
Upload PDFs, Word documents, Excel spreadsheets, and text files. Our AI automatically processes, chunks, and indexes your content for instant retrieval.
Ask natural language questions and get accurate, well-formatted answers powered by Qwen AI, drawing from your entire document knowledge base.
Role-based access control, JWT authentication, and document-level permissions keep your data secure and organized.
BPT Enterprise Service (Blue Power Technology) is a technology company specializing in enterprise cloud infrastructure and AI-powered business solutions. Headquartered in Jakarta, we serve businesses across Southeast Asia with scalable, secure, and intelligent cloud platforms built on Alibaba Cloud.
Sign in to your account
We sent a 6-digit code to your email
PDF, DOCX, XLSX, TXT, CSV (max 20MB)
| User | Role | Verified | Status | Documents | Last Login | Registered | Actions | |
|---|---|---|---|---|---|---|---|---|
| Loading users... | ||||||||
| Section | '; html += 'Items | '; html += '' + (subscriptionType === 'monthly' ? 'Monthly (USD)' : 'Yearly (USD)') + ' | '; html += '' + (subscriptionType === 'monthly' ? 'Monthly (IDR)' : 'Yearly (IDR)') + ' | '; html += '
|---|---|---|---|
| ' + label + ' | '; html += '' + boqData[key].items.length + ' | '; html += '$' + usd.toFixed(2) + ' | '; html += 'Rp ' + idr.toLocaleString('id-ID', {maximumFractionDigits:0}) + ' | '; html += '
| Grand Total | '; html += '' + boqData.compute.items.length + boqData.gpu.items.length + boqData.rds.items.length + boqData.otherItems.items.length + ' | '; html += '$' + totalUSD.toFixed(2) + ' | '; html += 'Rp ' + totalIDR.toLocaleString('id-ID', {maximumFractionDigits:0}) + ' | '; html += '
Exchange Rate (KURS): Rp ' + boqData.kurs.toLocaleString('id-ID') + '
'; document.getElementById('boqPreviewContent').innerHTML = html; } function showMessage(msg, type) { var el = document.getElementById('quotationMessage'); el.style.display = 'block'; el.style.background = type === 'error' ? '#fef2f2' : type === 'success' ? '#f0fdf4' : '#eff6ff'; el.style.color = type === 'error' ? '#dc2626' : type === 'success' ? '#16a34a' : '#2563eb'; el.textContent = msg; } function generateQuotationFile() { if (!boqData) { showMessage('Please upload a BoQ file first.', 'error'); return; } var customerName = document.getElementById('customerName').value.trim(); var customerEmail = document.getElementById('customerEmail').value.trim(); if (!customerName || !customerEmail) { showMessage('Please fill in customer name and email.', 'error'); return; } showMessage('Generating quotation...', 'info'); try { var workbook = XLSX.utils.book_new(); var data = []; // Header data.push(['PT. Blue Power Technology']); data.push(['Centennial Tower 12th floor']); data.push(['Jl. Gatot Subroto kav. 24-25']); data.push(['Jakarta Selatan, Indonesia']); data.push(['P. 021 806 22278 | F. 021 806 22279']); data.push(['www.bluepowertechnology.com']); data.push([]); // Customer Info data.push(['Customer Name', '', '', customerName]); data.push(['Address', '', '', document.getElementById('customerAddress').value]); data.push(['Email', '', '', customerEmail]); data.push(['Quote Reference', '', '', document.getElementById('quoteReference').value]); data.push(['Date Of Issue', '', '', document.getElementById('dateOfIssue').value]); data.push(['Valid Until', '', '', document.getElementById('validUntil').value]); data.push([]); // Subscription header var subType = subscriptionType === 'monthly' ? 'Monthly' : 'Yearly'; data.push(['Virtual Server : Indonesia']); data.push([subType + ' Subscription']); data.push(['Item', 'Description', 'Description', subType + ' Price (IDR)', subType + ' Price (IDR)']); // Items var allItems = boqData.compute.items.concat(boqData.gpu.items, boqData.rds.items, boqData.otherItems.items); allItems.forEach(function(item) { data.push(['Server #' + item.no, item.item, item.instanceType]); data.push(['Qty: ' + item.qty, item.vCPU + ' Core, ' + item.ram + ' GB RAM']); data.push(['Region: ' + item.region, 'System Disk ' + item.systemDisk + ' GB, Data Disk ' + item.dataDisk + ' GB']); var price = subscriptionType === 'monthly' ? item.monthlyIDR : item.yearlyIDR; data.push(['', '', '', price.toLocaleString('id-ID', {maximumFractionDigits:0}), price.toLocaleString('id-ID', {maximumFractionDigits:0})]); }); // Subtotal var subtotal = subscriptionType === 'monthly' ? (boqData.compute.totalMonthUSD + boqData.gpu.totalMonthUSD + boqData.rds.totalMonthUSD + boqData.otherItems.totalMonthUSD) * boqData.kurs : (boqData.compute.totalYearUSD + boqData.gpu.totalYearUSD + boqData.rds.totalYearUSD + boqData.otherItems.totalYearUSD) * boqData.kurs; data.push(['Sub Total', 'Sub Total', 'Sub Total', subtotal.toLocaleString('id-ID', {maximumFractionDigits:0}), subtotal.toLocaleString('id-ID', {maximumFractionDigits:0})]); data.push([]); // Discount var discount = parseFloat(document.getElementById('discount').value) || 0; var discountAmount = subtotal * (discount / 100); var partnerPrice = subtotal - discountAmount; data.push(['', '', 'Est User Price', subtotal.toLocaleString('id-ID', {maximumFractionDigits:0})]); data.push(['', '', 'Discount', discount + '%']); data.push(['', '', 'Est Partner Price', partnerPrice.toLocaleString('id-ID', {maximumFractionDigits:0})]); data.push([]); // Terms data.push(['Term of Payment:']); data.push(['1. ' + subType + ' basis, 100% - 2 weeks after invoice']); data.push(['2. Price quoted is under Rupiah']); data.push(['3. The exchange rate used is IDR ' + boqData.kurs]); var worksheet = XLSX.utils.aoa_to_sheet(data); XLSX.utils.book_append_sheet(workbook, worksheet, subType); var fileName = 'Quotation_' + document.getElementById('quoteReference').value + '_' + subscriptionType + '.xlsx'; XLSX.writeFile(workbook, fileName); showMessage('Quotation generated successfully! Check your downloads.', 'success'); } catch (err) { showMessage('Error generating quotation: ' + err.message, 'error'); } }