| |
| |
|
|
| |
| function exportDeliveryExcel() { |
| console.log('[V.AI STUDIO] Exporting delivery to Excel...'); |
| if (!window.cartItems || !window.cartItems.length) { |
| alert('❌ Giỏ hàng trống!'); |
| return; |
| } |
| |
| |
| let csv = 'STT,Tên sản phẩm,Mã SP,Số lượng,Đơn giá,Thành tiền,Ghi chú\n'; |
| let total = 0; |
| window.cartItems.forEach((item, idx) => { |
| let price = item.priceNum || 0; |
| let qty = item.qty || 1; |
| let subtotal = price * qty; |
| total += subtotal; |
| csv += `${idx + 1},"${item.name}","${item.sku || ''}",${qty},${price},${subtotal},"${item.note || ''}"\n`; |
| }); |
| csv += `,,,,,,"${total}",Tổng cộng\n`; |
| |
| |
| const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' }); |
| const url = URL.createObjectURL(blob); |
| const a = document.createElement('a'); |
| a.href = url; |
| a.download = `giao-hang-${new Date().toISOString().slice(0,10)}.csv`; |
| a.click(); |
| URL.revokeObjectURL(url); |
| alert('✅ Đã xuất file Excel (CSV) thành công!'); |
| } |
|
|
| function exportDeliveryPDF() { |
| console.log('[V.AI STUDIO] Exporting delivery to PDF...'); |
| if (!window.cartItems || !window.cartItems.length) { |
| alert('❌ Giỏ hàng trống!'); |
| return; |
| } |
| |
| |
| if (typeof jsPDF !== 'undefined') { |
| const doc = new jsPDF(); |
| doc.setFontSize(16); |
| doc.text('PHIẾU GIAO HÀNG', 14, 20); |
| doc.setFontSize(10); |
| doc.text(`Ngày: ${new Date().toLocaleDateString('vi-VN')}`, 14, 30); |
| doc.text(`Tổng số: ${window.cartItems.length} sản phẩm`, 14, 36); |
| |
| let y = 50; |
| window.cartItems.forEach((item, idx) => { |
| if (y > 280) { doc.addPage(); y = 20; } |
| doc.text(`${idx + 1}. ${item.name}`, 14, y); |
| y += 7; |
| }); |
| |
| doc.save(`giao-hang-${new Date().toISOString().slice(0,10)}.pdf`); |
| alert('✅ Đã xuất file PDF thành công!'); |
| } else { |
| alert('⚠️ Thư viện jsPDF chưa được tải. Vui lòng thử xuất Excel.'); |
| } |
| } |
|
|
| |
| function exportExcel() { |
| console.log('[V.AI STUDIO] Exporting quote to Excel...'); |
| const table = document.getElementById('quoteTableBody'); |
| if (!table || !table.rows.length) { |
| alert('❌ Báo giá trống!'); |
| return; |
| } |
| |
| let csv = 'STT,Hình ảnh,Tên sản phẩm,Mã SP,Thông tin,SL,Đơn giá,Đơn giá CK,Thành tiền,Ghi chú\n'; |
| |
| alert('✅ Đã xuất báo giá Excel (đang triển khai...)'); |
| } |
|
|
| function exportPDF() { |
| console.log('[V.AI STUDIO] Exporting quote to PDF...'); |
| alert('✅ Đã xuất báo giá PDF (đang triển khai...)'); |
| } |
|
|
| function printQuotation() { |
| console.log('[V.AI STUDIO] Printing quotation...'); |
| window.print(); |
| } |
|
|
| function shareQuoteImage() { |
| console.log('[V.AI STUDIO] Sharing quote as image...'); |
| alert('✅ Chia sẻ ảnh báo giá (đang triển khai...)'); |
| } |
|
|
| function shareQuoteLink() { |
| console.log('[V.AI STUDIO] Sharing quote link...'); |
| const url = window.location.href; |
| if (navigator.share) { |
| navigator.share({ title: 'Báo giá V.AI STUDIO', url: url }); |
| } else { |
| prompt('Copy link báo giá:', url); |
| } |
| } |
|
|
| |
| window.VAI_ORDERS = window.VAI_ORDERS || { |
| save: function() { |
| console.log('[V.AI STUDIO] Saving order...'); |
| const orderData = { |
| date: new Date().toISOString(), |
| customer: { |
| name: document.getElementById('qcName')?.value || '', |
| phone: document.getElementById('qcPhone')?.value || '', |
| email: document.getElementById('qcEmail')?.value || '', |
| address: document.getElementById('qcAddr')?.value || '' |
| }, |
| items: window.cartItems || [], |
| total: window.cartTotal || 0 |
| }; |
| |
| |
| let orders = JSON.parse(localStorage.getItem('VAI_ORDERS') || '[]'); |
| orders.push(orderData); |
| localStorage.setItem('VAI_ORDERS', JSON.stringify(orders)); |
| |
| alert('✅ Đã lưu đơn hàng thành công!'); |
| console.log('[V.AI STUDIO] Order saved:', orderData); |
| }, |
| |
| openSearch: function() { |
| console.log('[V.AI STUDIO] Opening order search...'); |
| const orders = JSON.parse(localStorage.getItem('VAI_ORDERS') || '[]'); |
| if (!orders.length) { |
| alert('📋 Chưa có đơn hàng nào được lưu.'); |
| return; |
| } |
| |
| let msg = `📋 Tìm thấy ${orders.length} đơn hàng:\n\n`; |
| orders.slice(-5).forEach((order, idx) => { |
| msg += `${idx + 1}. ${order.customer.name || 'Không tên'} - ${order.customer.phone || ''}\n`; |
| }); |
| alert(msg); |
| } |
| }; |
|
|
| |
| window.cartItems = window.cartItems || []; |
| window.cartTotal = window.cartTotal || 0; |
|
|
| console.log('[V.AI STUDIO] Export functions loaded successfully!'); |