HEX
Server: Apache
System: Linux srv4.garantili.com.tr 4.18.0-477.21.1.lve.1.el8.x86_64 #1 SMP Tue Sep 5 23:08:35 UTC 2023 x86_64
User: ekspardev (1006)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system
Upload Files
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);
                }
            });
        });
    });
}