semillero-special-hotel/scripts/generate-sheets.js

90 lines
2.4 KiB
JavaScript

const fs = require('fs');
const path = require('path');
const XLSX = require('xlsx');
const templatesDir = path.join(__dirname, '..', 'public', 'templates');
if (!fs.existsSync(templatesDir)) {
fs.mkdirSync(templatesDir, { recursive: true });
}
// 1. Template Sheet (Clean layout)
const templateData = [
{
"Colaborador": "colaborador_mde",
"Periodo": "2026-06",
"Hotel": "EST-MDE",
"Monto": 15000.00,
"Cantidad": 5,
"Id_Transaccion": "TX-EST-MDE-001"
}
];
const templateWorkbook = XLSX.utils.book_new();
const templateWorksheet = XLSX.utils.json_to_sheet(templateData);
XLSX.utils.book_append_sheet(templateWorkbook, templateWorksheet, "Template");
XLSX.writeFile(templateWorkbook, path.join(templatesDir, 'import_sales_template.xlsx'));
console.log("Created import_sales_template.xlsx successfully!");
// 2. Test Sheet (Contains both valid and invalid records to test API validation output)
const testData = [
// Valid row
{
"Colaborador": "colaborador_mde",
"Periodo": "2026-06",
"Hotel": "EST-MDE",
"Monto": 25000.00,
"Cantidad": 10,
"Id_Transaccion": "TX-E2E-001"
},
// Valid row
{
"Colaborador": "colaborador_mde",
"Periodo": "2026-06",
"Hotel": "EST-MDE",
"Monto": 5000.00,
"Cantidad": 2,
"Id_Transaccion": "TX-E2E-002"
},
// Invalid row: Non-existent Colaborador
{
"Colaborador": "colaborador_inexistente",
"Periodo": "2026-06",
"Hotel": "EST-MDE",
"Monto": 10000.00,
"Cantidad": 3,
"Id_Transaccion": "TX-E2E-003"
},
// Invalid row: Invalid Period format
{
"Colaborador": "colaborador_mde",
"Periodo": "2026/06",
"Hotel": "EST-MDE",
"Monto": 12000.00,
"Cantidad": 4,
"Id_Transaccion": "TX-E2E-004"
},
// Invalid row: Non-existent Hotel
{
"Colaborador": "colaborador_mde",
"Periodo": "2026-06",
"Hotel": "EST-FAKE",
"Monto": 8000.00,
"Cantidad": 1,
"Id_Transaccion": "TX-E2E-005"
},
// Invalid row: Negative amount
{
"Colaborador": "colaborador_mde",
"Periodo": "2026-06",
"Hotel": "EST-MDE",
"Monto": -500.00,
"Cantidad": 2,
"Id_Transaccion": "TX-E2E-006"
}
];
const testWorkbook = XLSX.utils.book_new();
const testWorksheet = XLSX.utils.json_to_sheet(testData);
XLSX.utils.book_append_sheet(testWorkbook, testWorksheet, "TestData");
XLSX.writeFile(testWorkbook, path.join(templatesDir, 'import_sales_test.xlsx'));
console.log("Created import_sales_test.xlsx successfully!");