90 lines
2.4 KiB
JavaScript
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!");
|