const fs = require('fs');

function makeFlexible(file) {
    if (!fs.existsSync(file)) return;
    let content = fs.readFileSync(file, 'utf8');

    // 1. العملاء (Customers)
    content = content.replace(
        /a\.name === 'العملاء'/g,
        "a.name.includes('عملاء') || a.name.includes('عميل')"
    );

    // 2. الموردين (Suppliers)
    content = content.replace(
        /a\.name === 'الموردين'/g,
        "a.name.includes('مورد')"
    );
    // There is also an array includes in vouchers_returns.js
    content = content.replace(
        /\['الموردين',\s*'موردين'\]\.includes\(a\.name\.trim\(\)\)/g,
        "a.name.includes('مورد')"
    );
    content = content.replace(
        /\['العملاء',\s*'عملاء'\]\.includes\(a\.name\.trim\(\)\)/g,
        "a.name.includes('عملاء') || a.name.includes('عميل')"
    );

    // 3. المخزون (Inventory)
    content = content.replace(
        /a\.name === 'المخزون'/g,
        "a.name.includes('مخزون')"
    );

    // 4. تكلفة المبيعات (COGS)
    content = content.replace(
        /a\.name === 'تكلفة المبيعات'/g,
        "a.name.includes('تكلفة') || a.name.includes('مبيعات')" // actually this might be too broad if we just say مبيعات.
    );
    // Let's replace specifically
    content = content.replace(
        /a\.name\.includes\('تكلفة'\) \|\| a\.name\.includes\('مبيعات'\)/g, // undo if we accidentally did it
        "a.name.includes('تكلفة المبيعات') || a.name.includes('تكلفة')"
    );

    // 5. المبيعات (Sales)
    content = content.replace(
        /a\.name === 'المبيعات'/g,
        "a.name === 'المبيعات' || a.name === 'مبيعات' || a.name.includes('إيرادات')"
    );
    
    // 6. المشتريات (Purchases) - Usually no direct account for purchases in perpetual inventory, but just in case.
    
    // 7. ضريبة القيمة المضافة
    content = content.replace(
        /a\.name === 'ضريبة القيمة المضافة'/g,
        "a.name.includes('ضريب') || a.name.includes('قيمة مضافة')"
    );

    // 8. الخصم المسموح به / المكتسب
    content = content.replace(
        /a\.name === 'الخصم المسموح به'/g,
        "a.name.includes('مسموح به') || a.name.includes('خصم مسموح')"
    );
    content = content.replace(
        /a\.name === 'الخصم المكتسب'/g,
        "a.name.includes('مكتسب') || a.name.includes('خصم مكتسب')"
    );

    fs.writeFileSync(file, content, 'utf8');
}

makeFlexible('sales_purchases_module.js');
makeFlexible('vouchers_returns.js');
makeFlexible('app_final.js');

// Bust cache
let html = fs.readFileSync('index.html', 'utf8');
html = html.replace(/v=\d+/g, 'v=' + Date.now());
fs.writeFileSync('index.html', html, 'utf8');

console.log('Main accounts flexible matching applied!');
