File: /home/ekspardev/nokta-logo-entegrasyon/convert-xml.controller.js
const fs = require('fs');
const xml2js = require('xml2js');
exports.convertXmlInvoiceNumbers = (inputFile, outputFile) => {
fs.readFile(inputFile, 'utf-8', (err, data) => {
if (err) {
console.error('Dosya okuma hatası:', err);
return;
}
// 
 karakterlerini kaldır
data = data.replace(/
/g, '');
xml2js.parseString(data, (err, result) => {
if (err) {
console.error('XML ayrıştırma hatası:', err);
return;
}
if (result.PURCHASE_INVOICES && result.PURCHASE_INVOICES.INVOICE) {
result.PURCHASE_INVOICES.INVOICE = result.PURCHASE_INVOICES.INVOICE.map(invoice => {
if (invoice.DOC_NUMBER && invoice.DOC_NUMBER[0]) {
const docNumber = invoice.DOC_NUMBER[0];
invoice.ARP_CODE = invoice.CARIKOD;
// Invoice'ın NUMBER etiketini de güncelle
invoice.NUMBER = [docNumber];
delete invoice.DOSYANO;
delete invoice.PLAKA;
delete invoice.CARIKOD;
return invoice;
}
});
}
const builder = new xml2js.Builder({
xmldec: { 'version': '1.0', 'encoding': 'ISO-8859-9' }
});
let xml = builder.buildObject(result);
xml = xml.replace(/
/g, '');
// standalone özelliğini kaldır
xml = xml.replace(/\?xml version="1.0" encoding="ISO-8859-9"\?>/,
'?xml version="1.0" encoding="ISO-8859-9"?>');
fs.writeFile(outputFile, xml, (err) => {
if (err) {
console.error('Dosya yazma hatası:', err);
} else {
console.log('Yeni XML dosyası başarıyla oluşturuldu:', outputFile);
}
});
});
});
}
exports.convertXmlInvoiceNumbersForSales = (inputFile, outputFile) => {
fs.readFile(inputFile, 'utf-8', (err, data) => {
if (err) {
console.error('Dosya okuma hatası:', err);
return;
}
// 
 karakterlerini kaldır
data = data.replace(/
/g, '');
xml2js.parseString(data, (err, result) => {
if (err) {
console.error('XML ayrıştırma hatası:', err);
return;
}
if (result.SALES_INVOICES && result.SALES_INVOICES.INVOICE) {
result.SALES_INVOICES.INVOICE = result.SALES_INVOICES.INVOICE.map(invoice => {
if (invoice.DOC_NUMBER && invoice.DOC_NUMBER[0]) {
const docNumber = invoice.DOC_NUMBER[0];
invoice.DOC_NUMBER = invoice.DOSYANO;
invoice.ARP_CODE = invoice.CARIKOD;
invoice.PROJECT_CODE = invoice.DOSYANO;
const newInvoice = {};
// Özellikleri istenen sırayla ekle
for (let key in invoice) {
if (invoice.hasOwnProperty(key)) {
newInvoice[key] = invoice[key];
if (key === 'DOC_NUMBER') {
// PROJECT_CODE'u DOC_NUMBER'dan hemen sonra ekle
newInvoice['PROJECT_CODE'] = invoice.DOSYANO;
}
}
}
// NUMBER'ı güncelle
newInvoice.NUMBER = [docNumber];
// DOSYANO, PLAKA ve CARIKOD'u sil
delete newInvoice.DOSYANO;
delete newInvoice.PLAKA;
delete newInvoice.CARIKOD;
return newInvoice;
}
return invoice;
});
}
const builder = new xml2js.Builder({
xmldec: { 'version': '1.0', 'encoding': 'ISO-8859-9' }
});
let xml = builder.buildObject(result);
xml = xml.replace(/
/g, '');
// standalone özelliğini kaldır
xml = xml.replace(/\?xml version="1.0" encoding="ISO-8859-9"\?>/,
'?xml version="1.0" encoding="ISO-8859-9"?>');
fs.writeFile(outputFile, xml, (err) => {
if (err) {
console.error('Dosya yazma hatası:', err);
} else {
console.log('Yeni XML dosyası başarıyla oluşturuldu:', outputFile);
}
});
});
});
}