diff --git a/src/data/mockStore.jsx b/src/data/mockStore.jsx index 5149180..1ae1644 100644 --- a/src/data/mockStore.jsx +++ b/src/data/mockStore.jsx @@ -2214,6 +2214,7 @@ const MOCK_PROJECTS = [ subcontractorIds: [], projectType: 'Gutter Replacement', status: 'completed', + demoScenario: 4, phase: 'Handover', budget: 8500, approvedBudget: 8500, @@ -2267,6 +2268,7 @@ const MOCK_PROJECTS = [ subcontractorIds: ['sub_001'], projectType: 'HVAC Installation', status: 'active', + demoScenario: 5, phase: 'MEP', budget: 32000, approvedBudget: 32000, @@ -2578,6 +2580,7 @@ const MOCK_PROJECTS = [ subcontractorIds: ['sub_001'], projectType: 'Commercial Roof Replacement', status: 'active', + demoScenario: 7, phase: 'Structural', budget: 125000, approvedBudget: 125000, @@ -2678,6 +2681,7 @@ const MOCK_PROJECTS = [ subcontractorIds: [], projectType: 'Foundation Repair', status: 'active', + demoScenario: 8, phase: 'Finishing', budget: 75000, approvedBudget: 75000, @@ -2866,6 +2870,7 @@ const MOCK_PROJECTS = [ subcontractorIds: ['sub_001'], projectType: 'Exterior Facade Restoration', status: 'disputed', + demoScenario: 10, budget: 95000, spent: 68400, margin: 0.20, @@ -2902,6 +2907,12 @@ const MOCK_PROJECTS = [ { id: 'ms_011_6', name: 'Window Sealant Replacement', dueDate: '2026-02-28', status: 'pending', assignedTo: 'v4' }, { id: 'ms_011_7', name: 'Final Restoration and Paint', dueDate: '2026-03-15', status: 'pending', assignedTo: 'con_001' } ], + paymentSchedule: [ + { id: 'ps_011_1', milestone: 'Mobilization (20%)', amount: 19000, dueDate: '2025-12-10', status: 'paid' }, + { id: 'ps_011_2', milestone: 'Phase 1 Complete (25%)', amount: 23750, dueDate: '2026-01-15', status: 'paid' }, + { id: 'ps_011_3', milestone: 'Phase 2 & Waterproof (30%)', amount: 28500, dueDate: '2026-02-20', status: 'pending' }, + { id: 'ps_011_4', milestone: 'Final Completion (25%)', amount: 23750, dueDate: '2026-03-20', status: 'pending' }, + ], invoices: [ { id: 'inv_011_1', amount: 22000, submittedBy: 'con_001', status: 'paid', dueDate: '2025-12-18', datePaid: '2025-12-20' }, { id: 'inv_011_2', amount: 18400, submittedBy: 'v1', status: 'paid', dueDate: '2026-01-15', datePaid: '2026-01-18' }, @@ -2909,6 +2920,15 @@ const MOCK_PROJECTS = [ { id: 'inv_011_4', amount: 12800, submittedBy: 'con_001', status: 'pending', dueDate: '2026-02-20' }, { id: 'inv_011_5', amount: 8900, submittedBy: 'v4', status: 'pending', dueDate: '2026-03-05' } ], + issueLog: [ + { id: 'issue_011_1', title: 'Scope dispute — contractor claims 3 unapproved COs; owner withheld Phase 2 payment', priority: 'Critical', status: 'open', assignedTo: 'Jesus Gonzales', dateReported: '2026-02-18' }, + ], + activityTimeline: [ + { date: '2026-02-18', action: 'Dispute Opened', user: 'Diana Reeves', details: 'Owner withheld Phase 2 milestone payment — disputes scope of CO #2 and CO #3. Project effectively paused.' }, + { date: '2026-02-10', action: 'Change Order Disputed', user: 'Texas Builders LLC', details: 'CO #3 structural reinforcement — owner claims it was not in original bid.' }, + { date: '2026-01-30', action: 'Payment Released', user: 'Diana Reeves', details: 'Phase 1 payment released after masonry sign-off.' }, + { date: '2025-12-20', action: 'Mobilization Payment', user: 'Diana Reeves', details: 'Project started — 20% mobilization paid.' }, + ], documents: [ { name: 'Facade Restoration Master Contract', url: '#', type: 'contract' }, { name: 'Building Permit #25-2101', url: '#', type: 'permit' }, @@ -2999,7 +3019,7 @@ const MOCK_PROJECTS = [ propertyId: 'P-9013', address: '2908 Roundabout Ln, Plano, TX 75023', customerName: 'Charlotte Norris', - customerPhone: '(972) 555-0123', + customerPhone: '(972) 413-7842', customerEmail: 'charlotte.n@gmail.com', contractorId: 'con_001', subcontractorIds: [], @@ -3073,7 +3093,7 @@ const MOCK_PROJECTS = [ propertyId: 'P-9014', address: '5614 Ridgewood Dr, Plano, TX 75093', customerName: 'Henry Castaneda', - customerPhone: '(972) 555-0124', + customerPhone: '(469) 628-3519', customerEmail: 'hcastaneda@yahoo.com', contractorId: 'con_001', subcontractorIds: [], @@ -3150,7 +3170,7 @@ const MOCK_PROJECTS = [ propertyId: 'P-9015', address: '3401 Parker Rd, Plano, TX 75023', customerName: 'Yvonne Blackwell', - customerPhone: '(972) 555-0125', + customerPhone: '(214) 857-4061', customerEmail: 'yblackwell@gmail.com', contractorId: 'con_001', subcontractorIds: [], @@ -3223,7 +3243,7 @@ const MOCK_PROJECTS = [ propertyId: 'P-9016', address: '4812 Mapleshade Ln, Plano, TX 75075', customerName: 'Emmanuel Okafor', - customerPhone: '(972) 555-0126', + customerPhone: '(945) 319-7628', customerEmail: 'e.okafor@outlook.com', contractorId: 'con_001', subcontractorIds: [], @@ -3297,12 +3317,13 @@ const MOCK_PROJECTS = [ propertyId: 'P-9017', address: '1820 Custer Rd, Plano, TX 75075', customerName: 'Adriana Voss', - customerPhone: '(972) 555-0127', + customerPhone: '(972) 541-8203', customerEmail: 'adriana.v@gmail.com', contractorId: 'con_001', subcontractorIds: [], projectType: 'Roof Replacement', status: 'active', + demoScenario: 2, phase: 'Pre-Construction', budget: 19600, approvedBudget: 19600, @@ -3372,12 +3393,13 @@ const MOCK_PROJECTS = [ propertyId: 'P-9018', address: '6820 Windhaven Pkwy, Plano, TX 75024', customerName: 'Marvin Delgado', - customerPhone: '(972) 555-0128', + customerPhone: '(469) 782-3954', customerEmail: 'mdelgado@gmail.com', contractorId: 'con_001', subcontractorIds: [], projectType: 'Roof Replacement', status: 'active', + demoScenario: 1, phase: 'Structural', budget: 16800, approvedBudget: 16800, @@ -3453,20 +3475,21 @@ const MOCK_PROJECTS = [ propertyId: 'P-9019', address: '2506 Springpark Dr, Plano, TX 75023', customerName: 'Sandra Tran', - customerPhone: '(972) 555-0129', + customerPhone: '(214) 631-9047', customerEmail: 's.tran@yahoo.com', contractorId: 'con_001', subcontractorIds: [], projectType: 'Siding Replacement', status: 'active', + demoScenario: 6, phase: 'Structural', budget: 28500, approvedBudget: 28500, - committedCost: 27000, + committedCost: 31400, actualCost: 15600, spent: 15600, variancePercent: -45.3, - margin: 0.05, + margin: -0.10, commissionType: 'percent_gross', commissionRate: 10, commission: 2850, @@ -3475,16 +3498,17 @@ const MOCK_PROJECTS = [ completionPercentage: 55, healthScore: 78, openRFIs: 0, - changeOrderCount: 1, + changeOrderCount: 2, pendingInvoiceCount: 0, budgetBreakdown: [ { name: 'Owens Corning', category: 'Materials', allocated: 15400, committed: 15400, actual: 14200 }, - { name: 'Plano Siding Crew', category: 'Labor', allocated: 10400, committed: 10400, actual: 600 }, + { name: 'Plano Siding Crew', category: 'Labor', allocated: 10400, committed: 14200, actual: 600 }, { name: 'City of Plano', category: 'Permits', allocated: 800, committed: 800, actual: 800 }, - { name: 'Reserve Fund', category: 'Contingency', allocated: 1900, committed: 400, actual: 0 }, + { name: 'Reserve Fund', category: 'Contingency', allocated: 1900, committed: 1000, actual: 0 }, ], changeOrders: [ { id: 'CO-019-01', title: 'Rot Repair — 2 Panels', amount: 380, status: 'approved', description: 'Two panels of rotted OSB substrate discovered during demo. Repaired.' }, + { id: 'CO-019-02', title: 'Hidden Rot & Structural Sheathing Replacement', amount: 3800, status: 'approved', dateSubmitted: '2026-03-28', description: 'Full west wall sheathing found severely rotted behind old siding — 320 sq ft of OSB substructure replaced plus additional labor days. Exceeds original labor budget by $3,800.' }, ], rfis: [], riskLog: [], @@ -3534,7 +3558,7 @@ const MOCK_PROJECTS = [ propertyId: 'P-9020', address: '1504 Estates Dr, Plano, TX 75093', customerName: 'Reginald Hopper', - customerPhone: '(972) 555-0130', + customerPhone: '(972) 487-2815', customerEmail: 'reg.hopper@icloud.com', contractorId: 'con_001', subcontractorIds: [], @@ -3620,7 +3644,7 @@ const MOCK_PROJECTS = [ propertyId: 'P-9021', address: '5150 Preston Rd, Plano, TX 75024', customerName: 'Nadia Thornton', - customerPhone: '(972) 555-0131', + customerPhone: '(469) 354-7192', customerEmail: 'nadia.t@gmail.com', contractorId: 'con_001', subcontractorIds: [], @@ -3698,7 +3722,7 @@ const MOCK_PROJECTS = [ propertyId: 'P-9022', address: '3822 Haverwood Ln, Plano, TX 75023', customerName: 'Clifford Aguilar', - customerPhone: '(972) 555-0132', + customerPhone: '(214) 926-5483', customerEmail: 'c.aguilar@outlook.com', contractorId: 'con_001', subcontractorIds: [], @@ -3775,7 +3799,7 @@ const MOCK_PROJECTS = [ propertyId: 'P-9023', address: '2010 Oak Creek Blvd, Plano, TX 75023', customerName: 'Tamara Owens', - customerPhone: '(972) 555-0133', + customerPhone: '(972) 748-6130', customerEmail: 'tamara.o@yahoo.com', contractorId: 'con_001', subcontractorIds: [], @@ -3855,7 +3879,7 @@ const MOCK_PROJECTS = [ propertyId: 'P-9024', address: '4110 Lorimar Dr, Plano, TX 75093', customerName: 'Craig Singleton', - customerPhone: '(972) 555-0134', + customerPhone: '(945) 261-8374', customerEmail: 'craig.s@gmail.com', contractorId: 'con_001', subcontractorIds: [], @@ -3935,7 +3959,7 @@ const MOCK_PROJECTS = [ propertyId: 'P-9025', address: '6230 West Parker Rd, Plano, TX 75093', customerName: 'Bertha Fleming', - customerPhone: '(972) 555-0135', + customerPhone: '(469) 815-4027', customerEmail: 'bertha.f@hotmail.com', contractorId: 'con_001', subcontractorIds: [], @@ -4014,12 +4038,13 @@ const MOCK_PROJECTS = [ propertyId: 'P-9026', address: '3750 Legacy Dr, Plano, TX 75023', customerName: 'Oliver Stanton', - customerPhone: '(972) 555-0136', + customerPhone: '(214) 573-9618', customerEmail: 'oliver.st@outlook.com', contractorId: 'con_001', subcontractorIds: [], projectType: 'Roof Replacement', status: 'completed', + demoScenario: 9, phase: 'Handover', budget: 22100, approvedBudget: 22100, @@ -4090,7 +4115,7 @@ const MOCK_PROJECTS = [ propertyId: 'P-9027', address: '1912 Mira Vista Dr, Plano, TX 75025', customerName: 'Daphne Garrett', - customerPhone: '(972) 555-0137', + customerPhone: '(972) 361-8459', customerEmail: 'daphne.g@gmail.com', contractorId: 'con_001', subcontractorIds: [], @@ -4168,7 +4193,7 @@ const MOCK_PROJECTS = [ propertyId: 'P-9028', address: '5808 Tennyson Pkwy, Plano, TX 75024', customerName: 'Nathaniel Cruz', - customerPhone: '(972) 555-0138', + customerPhone: '(469) 247-8613', customerEmail: 'ncruz@icloud.com', contractorId: 'con_001', subcontractorIds: [], @@ -5892,6 +5917,22 @@ const KANBAN_LEADS_INITIAL = [ { from: 'Signed', to: 'Follow-up', by: 'Travis Boone', date: '2026-03-28', note: 'HOA review pending. Follow-up Apr 20 for approval status.' }, ], }, + { + id: 'kl_045', name: 'Greg Lindfors', address: '6601 Phoenix Pl, Plano, TX 75023', + phone: '(972) 483-7162', email: 'g.lindfors@gmail.com', + jobType: 'Roof Replacement', insuranceType: 'Insurance', value: 18000, stormSource: true, + assignedAgentId: 'e1', assignedAgentName: 'Cody Tatum', + columnId: 'kc_lost', outcome: 'lost', demoScenario: 3, + notes: 'Inspection found major hail damage; revised estimate to $18k. Customer declined — sticker shock after deductible.', + createdDate: '2026-04-02', + activity: [ + { from: null, to: 'New Lead', by: 'Cody Tatum', date: '2026-04-02', note: 'Storm canvassing — homeowner reported a small leak.' }, + { from: 'New Lead', to: 'Contacted', by: 'Cody Tatum', date: '2026-04-04', note: 'Scheduled inspection.' }, + { from: 'Contacted', to: 'Appt Scheduled', by: 'Cody Tatum', date: '2026-04-06', note: 'Inspection Apr 9.' }, + { from: 'Appt Scheduled', to: 'Estimate Sent', by: 'Cody Tatum', date: '2026-04-11', note: 'Inspection found major hail damage across the slope — revised estimate $18k.' }, + { from: 'Estimate Sent', to: 'Lost', by: 'Cody Tatum', date: '2026-04-20', note: 'Customer declined after seeing out-of-pocket deductible. Marked lost.' }, + ], + }, ]; // ── Enriched project data for signed/in-progress/complete leads ──────────────