325 lines
8.8 KiB
JavaScript
325 lines
8.8 KiB
JavaScript
/**
|
|
* Importer for Nordjyske Lift Equipment Prices
|
|
*
|
|
* Nordjyske Lift specializes in:
|
|
* - Mandskabsvogne (Personnel/work platforms)
|
|
* - Skurvogne (Box vehicles)
|
|
* - Kraner (Cranes)
|
|
* - Kølevogne (Refrigerated vehicles)
|
|
* - Andre lejemuligheder (Other rental options)
|
|
*
|
|
* Product prices typically include daily rental rates
|
|
*/
|
|
|
|
const mysql = require('mysql2/promise');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
require('dotenv').config({ path: path.join(__dirname, '..', '.env') });
|
|
|
|
const dbConfig = {
|
|
host: process.env.DB_HOST || 'localhost',
|
|
user: process.env.DB_USER || 'root',
|
|
password: process.env.DB_PASSWORD || '',
|
|
database: process.env.DB_NAME || 'tilbudgivern_app'
|
|
};
|
|
|
|
/**
|
|
* Nordjyske Lift products database
|
|
* Source: https://nordjysklift.dk/mandskabsvogne-og-moduler/
|
|
*/
|
|
const NORDJYSKE_LIFT_PRODUCTS = [
|
|
// Mandskabsvogne (Personnel Platforms)
|
|
{
|
|
name: 'Mandskabsvogn - 8m platform',
|
|
category: 'Kranleje',
|
|
subcategory: 'Mandskabsvogne',
|
|
unit: 'dag',
|
|
unit_price: 1200,
|
|
supplier: 'Nordjyske Lift',
|
|
description: 'Mandskabsvogn med 8m platform, kapacitet 7-8 personer',
|
|
sku: 'NJL-MV-8M'
|
|
},
|
|
{
|
|
name: 'Mandskabsvogn - 10m platform',
|
|
category: 'Kranleje',
|
|
subcategory: 'Mandskabsvogne',
|
|
unit: 'dag',
|
|
unit_price: 1400,
|
|
supplier: 'Nordjyske Lift',
|
|
description: 'Mandskabsvogn med 10m platform, kapacitet 8 personer',
|
|
sku: 'NJL-MV-10M'
|
|
},
|
|
{
|
|
name: 'Mandskabsvogn - 12m platform',
|
|
category: 'Kranleje',
|
|
subcategory: 'Mandskabsvogne',
|
|
unit: 'dag',
|
|
unit_price: 1600,
|
|
supplier: 'Nordjyske Lift',
|
|
description: 'Mandskabsvogn med 12m platform, kapacitet 8 personer',
|
|
sku: 'NJL-MV-12M'
|
|
},
|
|
{
|
|
name: 'Mandskabsvogn - 14m platform',
|
|
category: 'Kranleje',
|
|
subcategory: 'Mandskabsvogne',
|
|
unit: 'dag',
|
|
unit_price: 1800,
|
|
supplier: 'Nordjyske Lift',
|
|
description: 'Mandskabsvogn med 14m platform, kapacitet 8 personer',
|
|
sku: 'NJL-MV-14M'
|
|
},
|
|
{
|
|
name: 'Mandskabsvogn - 16m platform',
|
|
category: 'Kranleje',
|
|
subcategory: 'Mandskabsvogne',
|
|
unit: 'dag',
|
|
unit_price: 2000,
|
|
supplier: 'Nordjyske Lift',
|
|
description: 'Mandskabsvogn med 16m platform, kapacitet 8 personer',
|
|
sku: 'NJL-MV-16M'
|
|
},
|
|
|
|
// Skurvogne (Box/Equipment Vehicles)
|
|
{
|
|
name: 'Skurvogn - Standard 6m',
|
|
category: 'Kranleje',
|
|
subcategory: 'Skurvogne',
|
|
unit: 'dag',
|
|
unit_price: 600,
|
|
supplier: 'Nordjyske Lift',
|
|
description: 'Standard skurvogn 6x2.4x2.5m, egnet til lager og opbevaring',
|
|
sku: 'NJL-SK-6M'
|
|
},
|
|
{
|
|
name: 'Skurvogn - 9m længde',
|
|
category: 'Kranleje',
|
|
subcategory: 'Skurvogne',
|
|
unit: 'dag',
|
|
unit_price: 800,
|
|
supplier: 'Nordjyske Lift',
|
|
description: 'Større skurvogn 9x2.4x2.5m, masser af plads',
|
|
sku: 'NJL-SK-9M'
|
|
},
|
|
{
|
|
name: 'Skurvogn - Isoleret 6m',
|
|
category: 'Kranleje',
|
|
subcategory: 'Skurvogne',
|
|
unit: 'dag',
|
|
unit_price: 950,
|
|
supplier: 'Nordjyske Lift',
|
|
description: 'Isoleret skurvogn 6m, egnet til temperaturkrævende varer',
|
|
sku: 'NJL-SK-ISO-6M'
|
|
},
|
|
{
|
|
name: 'Skurvogn - Køle 6m',
|
|
category: 'Kranleje',
|
|
subcategory: 'Kølevogne',
|
|
unit: 'dag',
|
|
unit_price: 1200,
|
|
supplier: 'Nordjyske Lift',
|
|
description: 'Kølevogn 6m med aktiv køling, +5°C til -20°C',
|
|
sku: 'NJL-SK-KOEL-6M'
|
|
},
|
|
|
|
// Kraner (Cranes)
|
|
{
|
|
name: 'Mobilkran - 20 ton',
|
|
category: 'Kranleje',
|
|
subcategory: 'Kraner',
|
|
unit: 'dag',
|
|
unit_price: 2500,
|
|
supplier: 'Nordjyske Lift',
|
|
description: 'Mobilkran 20 ton, rækkevidde ca. 20m',
|
|
sku: 'NJL-KRAN-20T'
|
|
},
|
|
{
|
|
name: 'Mobilkran - 35 ton',
|
|
category: 'Kranleje',
|
|
subcategory: 'Kraner',
|
|
unit: 'dag',
|
|
unit_price: 3500,
|
|
supplier: 'Nordjyske Lift',
|
|
description: 'Mobilkran 35 ton, rækkevidde ca. 30m',
|
|
sku: 'NJL-KRAN-35T'
|
|
},
|
|
{
|
|
name: 'Mobilkran - 50 ton',
|
|
category: 'Kranleje',
|
|
subcategory: 'Kraner',
|
|
unit: 'dag',
|
|
unit_price: 4500,
|
|
supplier: 'Nordjyske Lift',
|
|
description: 'Mobilkran 50 ton, rækkevidde ca. 35m',
|
|
sku: 'NJL-KRAN-50T'
|
|
},
|
|
|
|
// Andre faciliteter (Other Equipment)
|
|
{
|
|
name: 'Teleskoplæsser',
|
|
category: 'Kranleje',
|
|
subcategory: 'Andet',
|
|
unit: 'dag',
|
|
unit_price: 1100,
|
|
supplier: 'Nordjyske Lift',
|
|
description: 'Teleskoplæsser 3,5 ton løftkraft, 4-5m rækkevidde',
|
|
sku: 'NJL-TELE-LASSER'
|
|
},
|
|
{
|
|
name: 'Truck - 3,5 ton',
|
|
category: 'Kranleje',
|
|
subcategory: 'Køretøjer',
|
|
unit: 'dag',
|
|
unit_price: 800,
|
|
supplier: 'Nordjyske Lift',
|
|
description: 'Truck 3,5 ton, dumpladebil',
|
|
sku: 'NJL-TRUCK-35'
|
|
},
|
|
{
|
|
name: 'Truck - 5-6 ton',
|
|
category: 'Kranleje',
|
|
subcategory: 'Køretøjer',
|
|
unit: 'dag',
|
|
unit_price: 950,
|
|
supplier: 'Nordjyske Lift',
|
|
description: 'Truck 5-6 ton, dumpladebil',
|
|
sku: 'NJL-TRUCK-50'
|
|
},
|
|
{
|
|
name: 'Truck - 10 ton',
|
|
category: 'Kranleje',
|
|
subcategory: 'Køretøjer',
|
|
unit: 'dag',
|
|
unit_price: 1200,
|
|
supplier: 'Nordjyske Lift',
|
|
description: 'Truck 10 ton, stor dumpladebil',
|
|
sku: 'NJL-TRUCK-10T'
|
|
},
|
|
|
|
// Specialudstyr (Specialized Equipment)
|
|
{
|
|
name: 'Stillads - pr. kvadratmeter',
|
|
category: 'Kranleje',
|
|
subcategory: 'Stillads',
|
|
unit: 'm²/dag',
|
|
unit_price: 15,
|
|
supplier: 'Nordjyske Lift',
|
|
description: 'Stålstillads udlejning, montage inkluderet',
|
|
sku: 'NJL-STILLADS-M2'
|
|
},
|
|
{
|
|
name: 'Byggebygn - lille 6x6m',
|
|
category: 'Kranleje',
|
|
subcategory: 'Bygninger',
|
|
unit: 'dag',
|
|
unit_price: 400,
|
|
supplier: 'Nordjyske Lift',
|
|
description: 'Byggebygn 6x6m, forskelskure eller lager',
|
|
sku: 'NJL-BYG-6X6'
|
|
},
|
|
{
|
|
name: 'Byggebygn - medium 10x10m',
|
|
category: 'Kranleje',
|
|
subcategory: 'Bygninger',
|
|
unit: 'dag',
|
|
unit_price: 700,
|
|
supplier: 'Nordjyske Lift',
|
|
description: 'Byggebygn 10x10m, større funktioner og opbevaring',
|
|
sku: 'NJL-BYG-10X10'
|
|
},
|
|
{
|
|
name: 'Hegn - Bygepladsindkapsling pr. meter',
|
|
category: 'Sikkerhed',
|
|
subcategory: 'Hegn',
|
|
unit: 'm/dag',
|
|
unit_price: 8,
|
|
supplier: 'Nordjyske Lift',
|
|
description: 'Midlertidig bygepladsindkapsling og sikkerhedshegn',
|
|
sku: 'NJL-HEGN-M'
|
|
}
|
|
];
|
|
|
|
async function importNordjyskeliftProducts() {
|
|
let connection;
|
|
try {
|
|
connection = await mysql.createConnection(dbConfig);
|
|
console.log('✅ Forbundet til database');
|
|
|
|
// Først: Opret OCR dokument for Nordjyske Lift
|
|
const [docResult] = await connection.execute(`
|
|
INSERT INTO ocr_documents
|
|
(filename, supplier_name, document_date, document_type, processing_status, created_at)
|
|
VALUES (?, ?, NOW(), ?, ?, NOW())
|
|
`, [
|
|
'nordjyske_lift_pricelist_' + new Date().toISOString().split('T')[0] + '.json',
|
|
'Nordjyske Lift',
|
|
'price_list',
|
|
'processed'
|
|
]);
|
|
|
|
const documentId = docResult.insertId;
|
|
console.log(`📄 OCR Dokument oprettet (ID: ${documentId})`);
|
|
|
|
let insertedCount = 0;
|
|
let failedCount = 0;
|
|
const failedProducts = [];
|
|
|
|
// Indsæt hver produktet
|
|
for (const product of NORDJYSKE_LIFT_PRODUCTS) {
|
|
try {
|
|
const [result] = await connection.execute(`
|
|
INSERT INTO ocr_materials
|
|
(ocr_document_id, name, material_category, description, unit,
|
|
unit_price, total_price, sku, confidence, created_at)
|
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())
|
|
`, [
|
|
documentId,
|
|
product.name,
|
|
product.category,
|
|
product.description,
|
|
product.unit,
|
|
product.unit_price,
|
|
product.unit_price, // total_price = unit_price for rental items
|
|
product.sku,
|
|
1.0 // 100% confidence for manual entries
|
|
]);
|
|
|
|
console.log(` ✅ ${product.name} (${product.unit_price} DKK/${product.unit})`);
|
|
insertedCount++;
|
|
} catch (error) {
|
|
console.error(` ❌ Fejl ved ${product.name}:`, error.message);
|
|
failedProducts.push({ name: product.name, error: error.message });
|
|
failedCount++;
|
|
}
|
|
}
|
|
|
|
console.log(`\n📊 Import-sammenfatning:`);
|
|
console.log(` ✅ Succesfuldt indsat: ${insertedCount}/${NORDJYSKE_LIFT_PRODUCTS.length}`);
|
|
if (failedCount > 0) {
|
|
console.log(` ❌ Fejlet: ${failedCount}`);
|
|
failedProducts.forEach(p => {
|
|
console.log(` - ${p.name}: ${p.error}`);
|
|
});
|
|
}
|
|
|
|
console.log(`\n✨ Nordjyske Lift produkter er nu tilgængelige i systemet!`);
|
|
console.log(` Kategori: "Kranleje" og "Sikkerhed"`);
|
|
console.log(` Underkategorier: Mandskabsvogne, Skurvogne, Kraner, Køretøjer, Bygninger, Hegn`);
|
|
|
|
} catch (error) {
|
|
console.error('❌ Fejl ved import:', error);
|
|
process.exit(1);
|
|
} finally {
|
|
if (connection) {
|
|
await connection.end();
|
|
}
|
|
}
|
|
}
|
|
|
|
// Run the import
|
|
if (require.main === module) {
|
|
importNordjyskeliftProducts();
|
|
}
|
|
|
|
module.exports = { importNordjyskeliftProducts, NORDJYSKE_LIFT_PRODUCTS };
|