// Запускаем логику калькулятора НДС для Sales Invoice
jey_erp.vat_calculator.init('Sales Invoice');

// Логика для чекбоксов Won/Lost и Seller/Organizer
frappe.ui.form.on('Sales Invoice', {
    refresh: function(frm) {
        // Убедимся что одна из галочек Won/Lost всегда выбрана при загрузке формы
        if (!frm.doc.won && !frm.doc.lost) {
            frm.set_value('won', 1);
        }
        
        // Убедимся что одна из галочек Seller/Organizer выбрана (если поля видимы)
        if (should_show_seller_organizer(frm)) {
            if (!frm.doc.seller && !frm.doc.organizer) {
                frm.set_value('organizer', 1);
            }
        }
        
        // Настройка HTML чекбоксов после загрузки формы
        setTimeout(function() {
            setup_won_lost_html_checkboxes(frm);
        }, 1000);
    },
    
    // Обработчики для Won/Lost
    won: function(frm) {
        // Синхронизируем HTML чекбоксы при изменении скрытых полей
        update_html_checkboxes(frm);
        if (frm.doc.won) {
            frm.set_value('lost', 0);
        } else {
            frm.set_value('lost', 1);
        }
    },
    
    lost: function(frm) {
        // Синхронизируем HTML чекбоксы при изменении скрытых полей
        update_html_checkboxes(frm);
        if (frm.doc.lost) {
            frm.set_value('won', 0);
        } else {
            frm.set_value('won', 1);
        }
    },
    
    // Обработчики для Seller/Organizer
    seller: function(frm) {
        if (should_show_seller_organizer(frm)) {
            if (frm.doc.seller) {
                frm.set_value('organizer', 0);
            } else {
                // Если seller снят, обязательно ставим organizer
                frm.set_value('organizer', 1);
            }
        }
    },
    
    organizer: function(frm) {
        if (should_show_seller_organizer(frm)) {
            if (frm.doc.organizer) {
                frm.set_value('seller', 0);
            } else {
                // Если organizer снят, обязательно ставим seller
                frm.set_value('seller', 1);
            }
        }
    },
    
    // Обработчик изменения company_main_activity
    company_main_activity: function(frm) {
        // Если поля Seller/Organizer должны быть видимы, устанавливаем значения по умолчанию
        if (should_show_seller_organizer(frm)) {
            if (!frm.doc.seller && !frm.doc.organizer) {
                frm.set_value('organizer', 1);
                frm.set_value('seller', 0);
            }
        }
    },
    
    // При валидации формы
    validate: function(frm) {
        // Проверяем Won/Lost
        if (!frm.doc.won && !frm.doc.lost) {
            frm.set_value('won', 1);
            frm.set_value('lost', 0);
        }
        
        // Проверяем Seller/Organizer (если поля должны быть видимы)
        if (should_show_seller_organizer(frm)) {
            if (!frm.doc.seller && !frm.doc.organizer) {
                frm.set_value('organizer', 1);
                frm.set_value('seller', 0);
            }
        }
    }
});

// Функция проверки, должны ли быть видимы поля Seller/Organizer
function should_show_seller_organizer(frm) {
    const allowed_activities = ["92000", "9200003", "9200004", "9200001", "9200002", "9200005"];
    return frm.doc.company_main_activity && 
           allowed_activities.includes(frm.doc.company_main_activity);
}

// Функция настройки HTML чекбоксов для Won/Lost
function setup_won_lost_html_checkboxes(frm) {
    const wonCheckbox = document.querySelector('.won-checkbox');
    const lostCheckbox = document.querySelector('.lost-checkbox');
    
    if (!wonCheckbox || !lostCheckbox) return;
    
    // Синхронизация с текущими значениями полей
    wonCheckbox.checked = frm.doc.won ? true : false;
    lostCheckbox.checked = frm.doc.lost ? true : false;
    
    // Обеспечиваем что всегда выбрана одна галочка
    if (!wonCheckbox.checked && !lostCheckbox.checked) {
        wonCheckbox.checked = true;
        frm.set_value('won', 1);
    }
    
    // Удаляем старые обработчики событий
    wonCheckbox.removeEventListener('change', wonCheckbox._changeHandler);
    lostCheckbox.removeEventListener('change', lostCheckbox._changeHandler);
    
    // Добавляем новые обработчики событий
    wonCheckbox._changeHandler = function() {
        if (this.checked) {
            lostCheckbox.checked = false;
            frm.set_value('lost', 0);
            frm.set_value('won', 1);
        } else {
            lostCheckbox.checked = true;
            frm.set_value('lost', 1);
            frm.set_value('won', 0);
        }
    };
    
    lostCheckbox._changeHandler = function() {
        if (this.checked) {
            wonCheckbox.checked = false;
            frm.set_value('won', 0);
            frm.set_value('lost', 1);
        } else {
            wonCheckbox.checked = true;
            frm.set_value('won', 1);
            frm.set_value('lost', 0);
        }
    };
    
    wonCheckbox.addEventListener('change', wonCheckbox._changeHandler);
    lostCheckbox.addEventListener('change', lostCheckbox._changeHandler);
}

// Функция синхронизации HTML чекбоксов со скрытыми полями
function update_html_checkboxes(frm) {
    setTimeout(function() {
        const wonCheckbox = document.querySelector('.won-checkbox');
        const lostCheckbox = document.querySelector('.lost-checkbox');
        
        if (wonCheckbox && lostCheckbox) {
            wonCheckbox.checked = frm.doc.won ? true : false;
            lostCheckbox.checked = frm.doc.lost ? true : false;
        }
    }, 100);
}