foamking/lib/constants.ts
mikl0s 7d2bbae1c6 Initial implementation of Foam King Gulve price calculator
Features:
- Complete Next.js 16 app with TypeScript and Tailwind CSS
- Customer-facing price calculator form with validation
- Admin mode showing detailed price breakdowns
- Accurate price calculations matching business requirements
- Responsive design with custom shadcn/ui theme
- API endpoint for quote requests
- Danish postal code distance calculations
- Complete test coverage against documentation examples

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-10 14:27:28 +00:00

63 lines
No EOL
1.7 KiB
TypeScript

export const PRICES = {
// Isolering
INSULATION_MATERIALS: 2850, // kr/m³
INSULATION_LABOR: 880, // kr/m³
INSULATION_TOTAL: 3730, // kr/m³
SIMPLE_LABOR: 75, // kr/m² (når højde = 0)
// Gulvvarme (altid inkluderet)
FLOOR_HEATING_MATERIALS: 75, // kr/m²
FLOOR_HEATING_LABOR: 130, // kr/m²
FLOOR_HEATING_TOTAL: 205, // kr/m²
// Syntetisk net (altid inkluderet)
SYNTHETIC_NET_MATERIALS: 24, // kr/m²
SYNTHETIC_NET_LABOR: 25, // kr/m²
SYNTHETIC_NET_TOTAL: 49, // kr/m²
// Flydespartel
SELF_LEVELING_COMPOUND: 450, // kr/m²
COMPOUND_WEIGHT_PER_M2: 90, // kg/m²
// Faste gebyrer
START_FEE: 3500, // kr (leje af anlæg og sikkerhedsudstyr)
// Transport
TRANSPORT_PER_KM: 18.75, // kr/km
GREAT_BELT_FEE: 500, // kr (kun Fyn)
// Procenttillæg
COVERING_PERCENTAGE: 0.007, // 0.7%
WASTE_PERCENTAGE: 0.0025, // 0.25%
TOTAL_PERCENTAGE: 0.0095, // 0.95%
// Moms
VAT: 0.25, // 25%
} as const
export const PUMP_TRUCK_FEES = [
{ minWeight: 8000, fee: 0 },
{ minWeight: 5000, fee: 3800 },
{ minWeight: 3000, fee: 6000 },
{ minWeight: 0, fee: 8100 },
] as const
export const CONSTRAINTS = {
MIN_AREA: 25, // m²
MAX_AREA: 300, // m²
MIN_HEIGHT: 0, // cm
MAX_HEIGHT: 100, // cm
CONCRETE_THICKNESS: 5, // cm (fratrækkes fra højde)
HOME_POSTAL_CODE: "4550", // Asnæs
HOME_CITY: "Asnæs",
} as const
export const COVERAGE_AREAS = {
WEST_ZEALAND: { start: 4000, end: 4999, bridgeFee: 0 },
COPENHAGEN: { start: 2000, end: 2999, bridgeFee: 0 },
NORTH_ZEALAND: { start: 3000, end: 3999, bridgeFee: 0 },
LOLLAND_FALSTER: { start: 4800, end: 4899, bridgeFee: 0 },
FUNEN: { start: 5000, end: 5999, bridgeFee: PRICES.GREAT_BELT_FEE },
} as const
export type CoverageArea = keyof typeof COVERAGE_AREAS