organizer and seller checks edit

This commit is contained in:
Ali 2025-09-03 15:16:16 +04:00
parent 914ce3ae3a
commit 2400aff025
1 changed files with 70 additions and 7 deletions

View File

@ -1,24 +1,31 @@
// Запускаем логику калькулятора НДС для Sales Invoice // Запускаем логику калькулятора НДС для Sales Invoice
jey_erp.vat_calculator.init('Sales Invoice'); jey_erp.vat_calculator.init('Sales Invoice');
// Логика для HTML галочек Won/Lost (совместимость с v15) // Логика для чекбоксов Won/Lost и Seller/Organizer
frappe.ui.form.on('Sales Invoice', { frappe.ui.form.on('Sales Invoice', {
refresh: function(frm) { refresh: function(frm) {
// Убедимся что одна из галочек всегда выбрана при загрузке формы // Убедимся что одна из галочек Won/Lost всегда выбрана при загрузке формы
if (!frm.doc.won && !frm.doc.lost) { if (!frm.doc.won && !frm.doc.lost) {
frm.set_value('won', 1); 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 чекбоксов после загрузки формы // Настройка HTML чекбоксов после загрузки формы
setTimeout(function() { setTimeout(function() {
setup_won_lost_html_checkboxes(frm); setup_won_lost_html_checkboxes(frm);
}, 1000); }, 1000);
}, },
// Обработчики для Won/Lost
won: function(frm) { won: function(frm) {
// Синхронизируем HTML чекбоксы при изменении скрытых полей // Синхронизируем HTML чекбоксы при изменении скрытых полей
update_html_checkboxes(frm); update_html_checkboxes(frm);
if (frm.doc.won) { if (frm.doc.won) {
frm.set_value('lost', 0); frm.set_value('lost', 0);
} else { } else {
@ -29,16 +36,73 @@ frappe.ui.form.on('Sales Invoice', {
lost: function(frm) { lost: function(frm) {
// Синхронизируем HTML чекбоксы при изменении скрытых полей // Синхронизируем HTML чекбоксы при изменении скрытых полей
update_html_checkboxes(frm); update_html_checkboxes(frm);
if (frm.doc.lost) { if (frm.doc.lost) {
frm.set_value('won', 0); frm.set_value('won', 0);
} else { } else {
frm.set_value('won', 1); 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);
}
}
} }
}); });
// Функция настройки HTML чекбоксов // Функция проверки, должны ли быть видимы поля 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) { function setup_won_lost_html_checkboxes(frm) {
const wonCheckbox = document.querySelector('.won-checkbox'); const wonCheckbox = document.querySelector('.won-checkbox');
const lostCheckbox = document.querySelector('.lost-checkbox'); const lostCheckbox = document.querySelector('.lost-checkbox');
@ -99,5 +163,4 @@ function update_html_checkboxes(frm) {
lostCheckbox.checked = frm.doc.lost ? true : false; lostCheckbox.checked = frm.doc.lost ? true : false;
} }
}, 100); }, 100);
}// Запускаем логику калькулятора НДС для Sales Invoice }
jey_erp.vat_calculator.init('Sales Invoice');