organizer and seller checks edit
This commit is contained in:
parent
914ce3ae3a
commit
2400aff025
|
|
@ -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');
|
|
||||||
Loading…
Reference in New Issue