Direct Factory B2B & Project Procurement

Get Instant Project Quotation & BOQ Pricing

Request official pricing for Grazia Architectural Glass Hardware and Koch Modular Kitchen Systems. Build your customized bill of quantities below, upload architectural drawings, or submit your requirement directly to our engineering desk.

⚡
2-Hour Response
Fast BOQ Turnaround
🏭
Direct Factory Rates
B2B Trade Pricing
📐
CAD & Cutout Support
Engineering Assistance
🚚
Pan-India Dispatch
Transit Insured Logistics
1

Project Hardware BOQ / Items

Add products from our catalogue or specify custom fabrication items.

Product / Item Category / Series Finish / Spec Quantity Action
Total Unique Products: 0 Total Units: 0
* Exact pricing and tiered volume discounts are computed based on project scale.
2

Commercial & Project Profile

Provide project coordinates so our trade desk can prepare accurate logistics and GST tax invoicing.

+91
3

Project Scope & Drawings

Provide additional technical specifications or upload drawings for cutout reviews.

📁
Click to upload or drag & drop architectural schedules
Supports PDF, DWG, DXF, XLSX, DOCX, JPG, PNG (Max 25MB)

Quotation Summary

Ready for RFQ
Hardware Series: Grazia & Koch
Selected BOQ Items: 0 Items
Total Quantity: 0 Units
Quality Standard: ISO 9001:2008 / SS 304
Estimated Response: Within 2 Hours
📞

Need Urgent BOQ Help?

Speak directly to an Architectural Hardware Specialist

Trade Hotline: 729 33 444 44
Technical Desk: info@kanzhardware.com
Head Office: New Delhi, India
✓ Physical finish samples & working mechanism kits dispatched upon architect request.
// --- QUOTE PAGE LOGIC --- let boqItems = []; // Initialize BOQ items from localStorage quoteBasket if available, else add starter popular products document.addEventListener('DOMContentLoaded', () => { try { const stored = localStorage.getItem('kanz_quote_basket'); if (stored) { boqItems = JSON.parse(stored); } } catch (e) {} if (!boqItems || boqItems.length === 0) { // Seed with high-spec starter items for demo if empty if (typeof PRODUCTS !== 'undefined' && PRODUCTS.length > 0) { boqItems = [ { id: PRODUCTS[0].id, name: PRODUCTS[0].name, code: PRODUCTS[0].code, category: PRODUCTS[0].category, finish: PRODUCTS[0].finishes ? PRODUCTS[0].finishes[0] : 'Satin SS 304', qty: 4 }, { id: PRODUCTS[4].id, name: PRODUCTS[4].name, code: PRODUCTS[4].code, category: PRODUCTS[4].category, finish: PRODUCTS[4].finishes ? PRODUCTS[4].finishes[0] : 'Standard', qty: 2 } ]; } } renderBOQTable(); populateCatalogueList(); }); function renderBOQTable() { const tbody = document.getElementById('boqTableBody'); const totalItemCountEl = document.getElementById('totalItemCount'); const totalUnitCountEl = document.getElementById('totalUnitCount'); const summaryItemCountEl = document.getElementById('summaryItemCount'); const summaryTotalUnitsEl = document.getElementById('summaryTotalUnits'); const badge = document.getElementById('quoteBasketBadge'); if (!tbody) return; if (boqItems.length === 0) { tbody.innerHTML = `
📋
Your Quote BOQ is Empty
Click "+ Add Item From Catalogue" or type in the custom box above to add architectural hardware items.
`; if (totalItemCountEl) totalItemCountEl.textContent = '0'; if (totalUnitCountEl) totalUnitCountEl.textContent = '0'; if (summaryItemCountEl) summaryItemCountEl.textContent = '0 Items'; if (summaryTotalUnitsEl) summaryTotalUnitsEl.textContent = '0 Units'; if (badge) badge.textContent = '0'; return; } let totalUnits = 0; tbody.innerHTML = boqItems.map((item, index) => { totalUnits += (parseInt(item.qty) || 1); return `
${item.name}
${item.code ? 'SKU: ' + item.code : 'Custom Spec'}
${item.category || 'Architectural'}
`; }).join(''); if (totalItemCountEl) totalItemCountEl.textContent = boqItems.length; if (totalUnitCountEl) totalUnitCountEl.textContent = totalUnits; if (summaryItemCountEl) summaryItemCountEl.textContent = `${boqItems.length} Items`; if (summaryTotalUnitsEl) summaryTotalUnitsEl.textContent = `${totalUnits} Units`; if (badge) badge.textContent = boqItems.length; try { localStorage.setItem('kanz_quote_basket', JSON.stringify(boqItems)); } catch (e) {} } function updateItemQty(index, change) { if (!boqItems[index]) return; let q = (parseInt(boqItems[index].qty) || 1) + change; if (q < 1) q = 1; boqItems[index].qty = q; renderBOQTable(); } function setItemQty(index, val) { if (!boqItems[index]) return; let q = parseInt(val) || 1; if (q < 1) q = 1; boqItems[index].qty = q; renderBOQTable(); } function updateItemFinish(index, finish) { if (!boqItems[index]) return; boqItems[index].finish = finish; try { localStorage.setItem('kanz_quote_basket', JSON.stringify(boqItems)); } catch (e) {} } function removeBOQItem(index) { boqItems.splice(index, 1); renderBOQTable(); } function clearBOQ() { if (confirm('Are you sure you want to clear all items in your BOQ list?')) { boqItems = []; renderBOQTable(); } } function addCustomItemToBOQ() { const nameInput = document.getElementById('customItemName'); const finishInput = document.getElementById('customItemFinish'); const qtyInput = document.getElementById('customItemQty'); const name = nameInput.value.trim(); if (!name) { alert('Please enter a custom item or specification name.'); nameInput.focus(); return; } const finish = finishInput.value.trim() || 'Custom'; const qty = parseInt(qtyInput.value) || 1; boqItems.push({ id: 'custom-' + Date.now(), name: name, code: 'CUSTOM-SPEC', category: 'Bespoke Fabrication', finish: finish, qty: qty }); nameInput.value = ''; finishInput.value = ''; qtyInput.value = 1; renderBOQTable(); } // Modal catalogue picker function openAddProductModal() { const modal = document.getElementById('addCatalogueItemModal'); if (modal) { modal.classList.remove('hidden'); modal.classList.add('flex'); populateCatalogueList(); } } function closeAddProductModal() { const modal = document.getElementById('addCatalogueItemModal'); if (modal) { modal.classList.add('hidden'); modal.classList.remove('flex'); } } function populateCatalogueList(query = '') { const container = document.getElementById('catalogueItemsList'); if (!container || typeof PRODUCTS === 'undefined') return; const q = query.toLowerCase().trim(); const filtered = PRODUCTS.filter(p => { if (!q) return true; return (p.name && p.name.toLowerCase().includes(q)) || (p.code && p.code.toLowerCase().includes(q)) || (p.category && p.category.toLowerCase().includes(q)); }); if (filtered.length === 0) { container.innerHTML = '
No matching products found in catalogue.
'; return; } container.innerHTML = filtered.slice(0, 30).map(p => { const isAdded = boqItems.some(item => item.id === p.id); return `
${p.name}
${p.code} • ${p.category.replace('-', ' ')}
`; }).join(''); } function filterCatalogueItems(val) { populateCatalogueList(val); } function addItemFromCatalogue(productId) { const p = PRODUCTS.find(item => item.id === productId); if (!p) return; const existingIndex = boqItems.findIndex(item => item.id === productId); if (existingIndex > -1) { boqItems[existingIndex].qty = (parseInt(boqItems[existingIndex].qty) || 1) + 1; } else { boqItems.push({ id: p.id, name: p.name, code: p.code, category: p.category, finish: p.finishes ? p.finishes[0] : 'Satin SS 304', qty: 1 }); } renderBOQTable(); populateCatalogueList(document.getElementById('catalogueItemSearch')?.value || ''); } // File attachments handler let attachedFiles = []; function handleFileSelect(e) { const files = Array.from(e.target.files); attachedFiles = files; const badgeContainer = document.getElementById('fileListBadge'); if (badgeContainer) { badgeContainer.innerHTML = files.map(f => ` 📄 ${f.name} (${(f.size / 1024).toFixed(0)} KB) `).join(''); } } // Submit via WhatsApp function submitQuoteViaWhatsApp() { const name = document.getElementById('clientName')?.value.trim() || 'Valued Architect'; const company = document.getElementById('clientCompany')?.value.trim() || 'Direct Project'; const role = document.getElementById('clientRole')?.value || 'Architect'; const phone = document.getElementById('clientPhone')?.value.trim() || ''; const city = document.getElementById('clientCity')?.value.trim() || 'Delhi NCR'; const projectType = document.getElementById('projectType')?.value || 'Project'; const timeline = document.getElementById('projectTimeline')?.value || 'Ready Stock'; const notes = document.getElementById('projectNotes')?.value.trim() || ''; if (boqItems.length === 0) { alert('Please add at least one product or custom item to your quotation request.'); return; } let text = `*KANZ HARDWARE - PROJECT QUOTATION / BOQ REQUEST*%0A`; text += `----------------------------------------%0A`; text += `*Client Name:* ${encodeURIComponent(name)}%0A`; text += `*Company / Practice:* ${encodeURIComponent(company)}%0A`; text += `*Professional Role:* ${encodeURIComponent(role)}%0A`; text += `*Site Location:* ${encodeURIComponent(city)}%0A`; text += `*Project Type:* ${encodeURIComponent(projectType)}%0A`; text += `*Timeline:* ${encodeURIComponent(timeline)}%0A`; text += `----------------------------------------%0A`; text += `*ITEMIZED HARDWARE BOQ:*` + `%0A`; boqItems.forEach((item, i) => { text += `${i + 1}. *${encodeURIComponent(item.name)}* (SKU: ${encodeURIComponent(item.code || 'N/A')})%0A - Finish: ${encodeURIComponent(item.finish || 'Standard')}%0A - Qty: *${item.qty} units*%0A`; }); if (notes) { text += `----------------------------------------%0A`; text += `*Technical Notes:* ${encodeURIComponent(notes)}%0A`; } text += `----------------------------------------%0A`; text += `*Reference:* KZ-BOQ-${Math.floor(1000 + Math.random() * 9000)}%0A`; text += `Please share official GST invoice pricing & delivery schedule.`; window.open(`https://wa.me/919811059635?text=${text}`, '_blank'); } // Submit Online RFQ function handleQuoteSubmit(e) { e.preventDefault(); if (boqItems.length === 0) { alert('Please add at least one product to your BOQ before submitting.'); return; } const name = document.getElementById('clientName').value.trim(); const city = document.getElementById('clientCity').value.trim(); const refToken = 'KZ-BOQ-2026-' + Math.floor(1000 + Math.random() * 9000); document.getElementById('quoteRefToken').textContent = refToken; document.getElementById('confirmName').textContent = name; document.getElementById('confirmCount').textContent = boqItems.length + ' Products'; document.getElementById('confirmCity').textContent = city; const modal = document.getElementById('quoteSuccessModal'); if (modal) { modal.classList.remove('hidden'); modal.classList.add('flex'); } // Save to localStorage enquiry log for admin portal try { const enquiries = JSON.parse(localStorage.getItem('kanz_enquiries') || '[]'); enquiries.unshift({ id: refToken, date: new Date().toLocaleDateString(), name: name, company: document.getElementById('clientCompany').value.trim(), phone: document.getElementById('clientPhone').value.trim(), email: document.getElementById('clientEmail').value.trim(), city: city, role: document.getElementById('clientRole').value, itemsCount: boqItems.length, status: 'Pending Quotation' }); localStorage.setItem('kanz_enquiries', JSON.stringify(enquiries)); } catch (err) {} } function closeSuccessModal() { const modal = document.getElementById('quoteSuccessModal'); if (modal) { modal.classList.add('hidden'); modal.classList.remove('flex'); } window.location.href = 'index.html'; } // Print formal quotation request function printOfficialBOQ() { window.print(); }