fix(data): reconcile project financials and add missing budget breakdowns
This commit is contained in:
+55
-7
@@ -2190,8 +2190,8 @@ const MOCK_PROJECTS = [
|
|||||||
],
|
],
|
||||||
invoices: [
|
invoices: [
|
||||||
{ id: 'inv_002_1', amount: 2272.17, submittedBy: 'v3', status: 'paid', dueDate: '2025-11-25', datePaid: '2025-11-26' },
|
{ id: 'inv_002_1', amount: 2272.17, submittedBy: 'v3', status: 'paid', dueDate: '2025-11-25', datePaid: '2025-11-26' },
|
||||||
{ id: 'inv_002_2', amount: 4200, submittedBy: 'con_001', status: 'paid', dueDate: '2025-12-05', datePaid: '2025-12-06' },
|
{ id: 'inv_002_2', amount: 3927.83, submittedBy: 'con_001', status: 'paid', dueDate: '2025-12-05', datePaid: '2025-12-06' },
|
||||||
{ id: 'inv_002_3', amount: 2027.83, submittedBy: 'con_001', status: 'paid', dueDate: '2025-12-10', datePaid: '2025-12-10' }
|
{ id: 'inv_002_3', amount: 2027.83, submittedBy: 'con_001', status: 'pending', dueDate: '2025-12-10' }
|
||||||
],
|
],
|
||||||
documents: [
|
documents: [
|
||||||
{ name: 'Scope of Work - Gutter', url: '#', type: 'contract' },
|
{ name: 'Scope of Work - Gutter', url: '#', type: 'contract' },
|
||||||
@@ -2326,11 +2326,11 @@ const MOCK_PROJECTS = [
|
|||||||
budgetBreakdown: [
|
budgetBreakdown: [
|
||||||
{ name: 'DemoCrew Pro', category: 'Demolition', allocated: 5000, committed: 5500, actual: 5500 },
|
{ name: 'DemoCrew Pro', category: 'Demolition', allocated: 5000, committed: 5500, actual: 5500 },
|
||||||
{ name: 'Texas Builders LLC', category: 'Framing & Structural', allocated: 8000, committed: 8500, actual: 8500 },
|
{ name: 'Texas Builders LLC', category: 'Framing & Structural', allocated: 8000, committed: 8500, actual: 8500 },
|
||||||
{ name: 'Sparky Electric', category: 'Electrical', allocated: 7000, committed: 7000, actual: 4800 },
|
{ name: 'Sparky Electric', category: 'Electrical', allocated: 7000, committed: 4800, actual: 4800 },
|
||||||
{ name: 'DFW Foundation Pros', category: 'Plumbing', allocated: 6000, committed: 6500, actual: 6500 },
|
{ name: 'DFW Foundation Pros', category: 'Plumbing', allocated: 6000, committed: 6500, actual: 6500 },
|
||||||
{ name: 'Premier Finishes', category: 'Drywall & Paint', allocated: 9000, committed: 10000, actual: 10000 },
|
{ name: 'Premier Finishes', category: 'Drywall & Paint', allocated: 9000, committed: 10000, actual: 10000 },
|
||||||
{ name: 'FloorCraft Inc.', category: 'Flooring & Trim', allocated: 12000, committed: 15500, actual: 15500 },
|
{ name: 'FloorCraft Inc.', category: 'Flooring & Trim', allocated: 12000, committed: 15500, actual: 15500 },
|
||||||
{ name: 'Reserve Fund', category: 'Contingency', allocated: 8000, committed: 9300, actual: 11500 }
|
{ name: 'Reserve Fund', category: 'Contingency', allocated: 8000, committed: 11500, actual: 11500 }
|
||||||
],
|
],
|
||||||
changeOrders: [
|
changeOrders: [
|
||||||
{ id: 'CO-004-01', title: 'Scope Expansion - Kitchen Island', amount: 4500, status: 'approved', dateSubmitted: '2026-01-10', description: 'Add a custom 6ft island with quartz countertop and built-in microwave.' },
|
{ id: 'CO-004-01', title: 'Scope Expansion - Kitchen Island', amount: 4500, status: 'approved', dateSubmitted: '2026-01-10', description: 'Add a custom 6ft island with quartz countertop and built-in microwave.' },
|
||||||
@@ -2389,7 +2389,7 @@ const MOCK_PROJECTS = [
|
|||||||
phase: 'Structural',
|
phase: 'Structural',
|
||||||
budget: 28000,
|
budget: 28000,
|
||||||
approvedBudget: 28000,
|
approvedBudget: 28000,
|
||||||
committedCost: 20700,
|
committedCost: 28850,
|
||||||
actualCost: 14200,
|
actualCost: 14200,
|
||||||
spent: 14200,
|
spent: 14200,
|
||||||
variancePercent: -49.3,
|
variancePercent: -49.3,
|
||||||
@@ -2482,6 +2482,13 @@ const MOCK_PROJECTS = [
|
|||||||
changeOrderCount: 0,
|
changeOrderCount: 0,
|
||||||
pendingInvoiceCount: 1,
|
pendingInvoiceCount: 1,
|
||||||
// TODO: cross-reference — Contractor: Texas Builders LLC, Vendors: Sparky Electric
|
// TODO: cross-reference — Contractor: Texas Builders LLC, Vendors: Sparky Electric
|
||||||
|
budgetBreakdown: [
|
||||||
|
{ name: 'Eaton Corporation', category: 'Materials - Panel & Breakers', allocated: 7500, committed: 5500, actual: 2500 },
|
||||||
|
{ name: 'Sparky Electric', category: 'Labor - Panel Replacement', allocated: 5000, committed: 4000, actual: 2000 },
|
||||||
|
{ name: 'Sparky Electric', category: 'Labor - Circuit Re-routing', allocated: 3000, committed: 2000, actual: 1000 },
|
||||||
|
{ name: 'City of Plano', category: 'Permits & Inspection Fees', allocated: 1000, committed: 900, actual: 100 },
|
||||||
|
{ name: 'Conduit Supply DFW', category: 'Conduit & Wiring Materials', allocated: 2000, committed: 0, actual: 0 }
|
||||||
|
],
|
||||||
milestones: [
|
milestones: [
|
||||||
{ id: 'ms_006_1', name: 'Panel Assessment', dueDate: '2026-02-05', status: 'completed', assignedTo: 'sub_001' },
|
{ id: 'ms_006_1', name: 'Panel Assessment', dueDate: '2026-02-05', status: 'completed', assignedTo: 'sub_001' },
|
||||||
{ id: 'ms_006_2', name: 'Permit Approval', dueDate: '2026-02-10', status: 'completed', assignedTo: 'con_001' },
|
{ id: 'ms_006_2', name: 'Permit Approval', dueDate: '2026-02-10', status: 'completed', assignedTo: 'con_001' },
|
||||||
@@ -2638,6 +2645,14 @@ const MOCK_PROJECTS = [
|
|||||||
changeOrderCount: 2,
|
changeOrderCount: 2,
|
||||||
pendingInvoiceCount: 2,
|
pendingInvoiceCount: 2,
|
||||||
// TODO: cross-reference — Contractor: Texas Builders LLC, Vendors: DFW Foundation Pros, ABC Supply Co.
|
// TODO: cross-reference — Contractor: Texas Builders LLC, Vendors: DFW Foundation Pros, ABC Supply Co.
|
||||||
|
budgetBreakdown: [
|
||||||
|
{ name: 'DFW Foundation Pros', category: 'Labor - Pier Installation', allocated: 28000, committed: 24000, actual: 20000 },
|
||||||
|
{ name: 'DFW Foundation Pros', category: 'Labor - Slab Lifting', allocated: 12000, committed: 10000, actual: 9000 },
|
||||||
|
{ name: 'ABC Supply Co.', category: 'Materials - Steel Piers', allocated: 8000, committed: 5500, actual: 4000 },
|
||||||
|
{ name: 'Lone Star Plumbing', category: 'Plumbing Re-test & Reroute', allocated: 5000, committed: 4000, actual: 3000 },
|
||||||
|
{ name: 'Structural Solutions TX', category: 'Engineering & Re-certification', allocated: 10000, committed: 8500, actual: 8500 },
|
||||||
|
{ name: 'Reserve Fund', category: 'Contingency', allocated: 12000, committed: 0, actual: 0 }
|
||||||
|
],
|
||||||
milestones: [
|
milestones: [
|
||||||
{ id: 'ms_008_1', name: 'Structural Engineering Report', dueDate: '2025-11-22', status: 'completed', assignedTo: 'con_001' },
|
{ id: 'ms_008_1', name: 'Structural Engineering Report', dueDate: '2025-11-22', status: 'completed', assignedTo: 'con_001' },
|
||||||
{ id: 'ms_008_2', name: 'Pier Installation - East', dueDate: '2025-12-06', status: 'completed', assignedTo: 'v5' },
|
{ id: 'ms_008_2', name: 'Pier Installation - East', dueDate: '2025-12-06', status: 'completed', assignedTo: 'v5' },
|
||||||
@@ -2650,7 +2665,7 @@ const MOCK_PROJECTS = [
|
|||||||
invoices: [
|
invoices: [
|
||||||
{ id: 'inv_008_1', amount: 30000, submittedBy: 'con_001', status: 'paid', dueDate: '2025-12-01', datePaid: '2025-12-03' },
|
{ id: 'inv_008_1', amount: 30000, submittedBy: 'con_001', status: 'paid', dueDate: '2025-12-01', datePaid: '2025-12-03' },
|
||||||
{ id: 'inv_008_2', amount: 9352.80, submittedBy: 'v5', status: 'paid', dueDate: '2025-12-20', datePaid: '2025-12-22' },
|
{ id: 'inv_008_2', amount: 9352.80, submittedBy: 'v5', status: 'paid', dueDate: '2025-12-20', datePaid: '2025-12-22' },
|
||||||
{ id: 'inv_008_3', amount: 24000, submittedBy: 'v5', status: 'paid', dueDate: '2026-01-15', datePaid: '2026-01-18' },
|
{ id: 'inv_008_3', amount: 24000, submittedBy: 'v5', status: 'pending', dueDate: '2026-01-15' },
|
||||||
{ id: 'inv_008_4', amount: 18500, submittedBy: 'v5', status: 'pending', dueDate: '2026-02-15' },
|
{ id: 'inv_008_4', amount: 18500, submittedBy: 'v5', status: 'pending', dueDate: '2026-02-15' },
|
||||||
{ id: 'inv_008_5', amount: 9647.20, submittedBy: 'con_001', status: 'pending', dueDate: '2026-02-28' }
|
{ id: 'inv_008_5', amount: 9647.20, submittedBy: 'con_001', status: 'pending', dueDate: '2026-02-28' }
|
||||||
],
|
],
|
||||||
@@ -2696,6 +2711,14 @@ const MOCK_PROJECTS = [
|
|||||||
openRFIs: 0,
|
openRFIs: 0,
|
||||||
changeOrderCount: 0,
|
changeOrderCount: 0,
|
||||||
pendingInvoiceCount: 1,
|
pendingInvoiceCount: 1,
|
||||||
|
budgetBreakdown: [
|
||||||
|
{ name: 'Andersen Windows', category: 'Materials - Custom Windows', allocated: 18000, committed: 14000, actual: 14000 },
|
||||||
|
{ name: 'Texas Builders LLC', category: 'Labor - Floor 1 Installation', allocated: 8000, committed: 8000, actual: 6000 },
|
||||||
|
{ name: 'Texas Builders LLC', category: 'Labor - Floor 2 Installation', allocated: 4000, committed: 3000, actual: 0 },
|
||||||
|
{ name: 'Seal-Rite TX', category: 'Exterior Trim & Sealant', allocated: 5000, committed: 4000, actual: 4000 },
|
||||||
|
{ name: 'Texas Energy Audit Co.', category: 'Energy Audit & Verification', allocated: 4000, committed: 3000, actual: 1800 },
|
||||||
|
{ name: 'Reserve Fund', category: 'Contingency', allocated: 3000, committed: 0, actual: 0 }
|
||||||
|
],
|
||||||
milestones: [
|
milestones: [
|
||||||
{ id: 'ms_009_1', name: 'Window Measurements', dueDate: '2026-01-16', status: 'completed', assignedTo: 'con_001' },
|
{ id: 'ms_009_1', name: 'Window Measurements', dueDate: '2026-01-16', status: 'completed', assignedTo: 'con_001' },
|
||||||
{ id: 'ms_009_2', name: 'Custom Window Fabrication', dueDate: '2026-01-30', status: 'completed', assignedTo: 'v3' },
|
{ id: 'ms_009_2', name: 'Custom Window Fabrication', dueDate: '2026-01-30', status: 'completed', assignedTo: 'v3' },
|
||||||
@@ -2748,6 +2771,14 @@ const MOCK_PROJECTS = [
|
|||||||
openRFIs: 0,
|
openRFIs: 0,
|
||||||
changeOrderCount: 0,
|
changeOrderCount: 0,
|
||||||
pendingInvoiceCount: 0,
|
pendingInvoiceCount: 0,
|
||||||
|
budgetBreakdown: [
|
||||||
|
{ name: 'DFW Asphalt Co.', category: 'Materials - Asphalt Mix', allocated: 12000, committed: 9000, actual: 8400 },
|
||||||
|
{ name: 'DFW Asphalt Co.', category: 'Labor - Milling & Paving', allocated: 6000, committed: 4800, actual: 4000 },
|
||||||
|
{ name: 'Texas Sealcoat Supply', category: 'Materials - Sealcoat', allocated: 5000, committed: 4000, actual: 3500 },
|
||||||
|
{ name: 'Texas Builders LLC', category: 'Labor - Base Repair & Grading', allocated: 4000, committed: 3500, actual: 3000 },
|
||||||
|
{ name: 'Striping Pro TX', category: 'Striping & ADA Signage', allocated: 5000, committed: 4000, actual: 3700 },
|
||||||
|
{ name: 'Reserve Fund', category: 'Contingency', allocated: 3000, committed: 1200, actual: 1200 }
|
||||||
|
],
|
||||||
milestones: [
|
milestones: [
|
||||||
{ id: 'ms_010_1', name: 'Surface Milling', dueDate: '2025-09-20', status: 'completed', assignedTo: 'con_001' },
|
{ id: 'ms_010_1', name: 'Surface Milling', dueDate: '2025-09-20', status: 'completed', assignedTo: 'con_001' },
|
||||||
{ id: 'ms_010_2', name: 'Base Repair', dueDate: '2025-09-28', status: 'completed', assignedTo: 'con_001' },
|
{ id: 'ms_010_2', name: 'Base Repair', dueDate: '2025-09-28', status: 'completed', assignedTo: 'con_001' },
|
||||||
@@ -2758,7 +2789,7 @@ const MOCK_PROJECTS = [
|
|||||||
invoices: [
|
invoices: [
|
||||||
{ id: 'inv_010_1', amount: 8400, submittedBy: 'v3', status: 'paid', dueDate: '2025-09-25', datePaid: '2025-09-26' },
|
{ id: 'inv_010_1', amount: 8400, submittedBy: 'v3', status: 'paid', dueDate: '2025-09-25', datePaid: '2025-09-26' },
|
||||||
{ id: 'inv_010_2', amount: 14200, submittedBy: 'v1', status: 'paid', dueDate: '2025-10-12', datePaid: '2025-10-13' },
|
{ id: 'inv_010_2', amount: 14200, submittedBy: 'v1', status: 'paid', dueDate: '2025-10-12', datePaid: '2025-10-13' },
|
||||||
{ id: 'inv_010_3', amount: 12400, submittedBy: 'con_001', status: 'paid', dueDate: '2025-10-28', datePaid: '2025-10-28' }
|
{ id: 'inv_010_3', amount: 12400, submittedBy: 'con_001', status: 'pending', dueDate: '2025-10-28' }
|
||||||
],
|
],
|
||||||
documents: [
|
documents: [
|
||||||
{ name: 'Paving Contract', url: '#', type: 'contract' },
|
{ name: 'Paving Contract', url: '#', type: 'contract' },
|
||||||
@@ -2801,6 +2832,15 @@ const MOCK_PROJECTS = [
|
|||||||
openRFIs: 2,
|
openRFIs: 2,
|
||||||
changeOrderCount: 3,
|
changeOrderCount: 3,
|
||||||
pendingInvoiceCount: 2,
|
pendingInvoiceCount: 2,
|
||||||
|
budgetBreakdown: [
|
||||||
|
{ name: 'ScaffoldPro DFW', category: 'Scaffolding & Site Protection', allocated: 20000, committed: 20000, actual: 20000 },
|
||||||
|
{ name: 'Legacy Masonry Group', category: 'Masonry Repair & Restoration', allocated: 25000, committed: 23000, actual: 18400 },
|
||||||
|
{ name: 'StoneSeal TX', category: 'Waterproofing & Coating', allocated: 15000, committed: 14000, actual: 12000 },
|
||||||
|
{ name: 'Texas Builders LLC', category: 'Surface Cleaning & Prep', allocated: 12000, committed: 12000, actual: 10000 },
|
||||||
|
{ name: 'Lone Star Plumbing', category: 'Window Sealant Replacement', allocated: 8000, committed: 7000, actual: 6000 },
|
||||||
|
{ name: 'Premier Finishes', category: 'Final Paint & Restoration', allocated: 10000, committed: 9000, actual: 2000 },
|
||||||
|
{ name: 'Reserve Fund', category: 'Contingency', allocated: 5000, committed: 3000, actual: 0 }
|
||||||
|
],
|
||||||
milestones: [
|
milestones: [
|
||||||
{ id: 'ms_011_1', name: 'Scaffolding and Protection', dueDate: '2025-12-12', status: 'completed', assignedTo: 'con_001' },
|
{ id: 'ms_011_1', name: 'Scaffolding and Protection', dueDate: '2025-12-12', status: 'completed', assignedTo: 'con_001' },
|
||||||
{ id: 'ms_011_2', name: 'Surface Cleaning and Prep', dueDate: '2025-12-22', status: 'completed', assignedTo: 'con_001' },
|
{ id: 'ms_011_2', name: 'Surface Cleaning and Prep', dueDate: '2025-12-22', status: 'completed', assignedTo: 'con_001' },
|
||||||
@@ -2861,6 +2901,14 @@ const MOCK_PROJECTS = [
|
|||||||
openRFIs: 0,
|
openRFIs: 0,
|
||||||
changeOrderCount: 0,
|
changeOrderCount: 0,
|
||||||
pendingInvoiceCount: 2,
|
pendingInvoiceCount: 2,
|
||||||
|
budgetBreakdown: [
|
||||||
|
{ name: 'Lone Star Plumbing', category: 'Labor - Main Line Replacement', allocated: 20000, committed: 12000, actual: 8600 },
|
||||||
|
{ name: 'Ferguson Plumbing Supply', category: 'Materials - Pipe & Fittings', allocated: 12000, committed: 8000, actual: 6500 },
|
||||||
|
{ name: 'Lone Star Plumbing', category: 'Labor - Branch Line Reroute', allocated: 8000, committed: 6000, actual: 4000 },
|
||||||
|
{ name: 'AO Smith', category: 'Materials - Water Heaters', allocated: 6000, committed: 4000, actual: 2000 },
|
||||||
|
{ name: 'Texas Builders LLC', category: 'Site Prep & Wall Access', allocated: 7000, committed: 4000, actual: 1500 },
|
||||||
|
{ name: 'Reserve Fund', category: 'Contingency', allocated: 5000, committed: 0, actual: 0 }
|
||||||
|
],
|
||||||
milestones: [
|
milestones: [
|
||||||
{ id: 'ms_012_1', name: 'Plumbing Assessment', dueDate: '2026-01-17', status: 'completed', assignedTo: 'v4' },
|
{ id: 'ms_012_1', name: 'Plumbing Assessment', dueDate: '2026-01-17', status: 'completed', assignedTo: 'v4' },
|
||||||
{ id: 'ms_012_2', name: 'Material Procurement', dueDate: '2026-01-25', status: 'completed', assignedTo: 'v4' },
|
{ id: 'ms_012_2', name: 'Material Procurement', dueDate: '2026-01-25', status: 'completed', assignedTo: 'v4' },
|
||||||
|
|||||||
Reference in New Issue
Block a user