Customer & Employee Portal

Access forms, submit requests, and manage your account with Dalcart Associates. Your trusted partner for plumbing, heating, and industrial solutions.

24/7 Access
Secure Platform
Fast Processing

Available Forms & Services

Quick access to all our essential forms and business tools

Quote Request

Request pricing and availability for products. Get fast quotes from our experienced team.

Request Quote

RGA / Return Form

Submit return merchandise authorization requests. Simple and efficient return process.

Start Return

Place Order

Submit product orders directly. Track your orders and manage purchases efficiently.

Place Order

Reimbursement Form

Submit expense reimbursement requests. Fast approval and processing for employees.

Submit Request

Secure Account Access

Login to access your personalized dashboard, order history, saved quotes, and account management tools.

Need Help?

Our team is here to assist you with any questions or concerns.

Mon-Fri 7:30am-4:30pm MST
// Login functionality async function initiateLogin(userType) { const button = event.target.closest('.auth-btn'); if (!button) return; // Create login modal showLoginModal(userType); } function showLoginModal(userType) { // Remove existing modal if present const existingModal = document.querySelector('.login-modal'); if (existingModal) existingModal.remove(); // Create modal overlay const modal = document.createElement('div'); modal.className = 'login-modal'; modal.innerHTML = `

${userType.charAt(0).toUpperCase() + userType.slice(1)} Login

`; document.body.appendChild(modal); // Focus on username field setTimeout(() => { document.getElementById('username').focus(); }, 100); } function closeLoginModal() { const modal = document.querySelector('.login-modal'); if (modal) modal.remove(); } async function handleLogin(event, userType) { event.preventDefault(); const form = event.target; const submitBtn = form.querySelector('.btn-primary'); const messageDiv = document.getElementById('login-message'); // Get form data const username = document.getElementById('username').value; const password = document.getElementById('password').value; // Show loading submitBtn.disabled = true; submitBtn.innerHTML = ' Logging in...'; messageDiv.textContent = ''; try { // Call login API const response = await fetch('/api/user/login', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ username: username, password: password }) }); const result = await response.json(); if (response.ok && result.success) { // Store token localStorage.setItem('auth_token', result.token); localStorage.setItem('user_role', result.user.role); localStorage.setItem('user_name', `${result.user.first_name} ${result.user.last_name}`); messageDiv.style.color = 'green'; messageDiv.textContent = 'Login successful! Redirecting...'; // Redirect based on role setTimeout(() => { switch(result.user.role) { case 'customer': window.location.href = 'customer-portal.html'; break; case 'employee': window.location.href = 'employee-portal/'; break; case 'admin': window.location.href = 'admin.html'; break; default: window.location.href = 'customer-portal.html'; } }, 1000); } else { messageDiv.style.color = 'red'; messageDiv.textContent = result.message || 'Login failed'; submitBtn.disabled = false; submitBtn.innerHTML = ' Login'; } } catch (error) { console.error('Login error:', error); messageDiv.style.color = 'red'; messageDiv.textContent = 'Network error - please try again'; submitBtn.disabled = false; submitBtn.innerHTML = ' Login'; } } // Portal analytics if (typeof gtag !== 'undefined') { gtag('event', 'page_view', { page_title: 'Unified Portal', page_location: window.location.href }); } // Track portal link clicks document.querySelectorAll('.card-action').forEach(link => { link.addEventListener('click', function(e) { if (typeof gtag !== 'undefined') { gtag('event', 'portal_link_click', { link_url: this.href, link_text: this.textContent.trim() }); } }); });