diff --git a/taxes_az/taxes_az/doctype/property_tax_return/property_tax_return.js b/taxes_az/taxes_az/doctype/property_tax_return/property_tax_return.js index 958cc64..184ad0b 100644 --- a/taxes_az/taxes_az/doctype/property_tax_return/property_tax_return.js +++ b/taxes_az/taxes_az/doctype/property_tax_return/property_tax_return.js @@ -38,6 +38,10 @@ frappe.ui.form.on('Property tax return', { // Calculate binalar totals on load calculate_binalar_totals(frm); + + // Calculate totals for Elave 1 and Elave 2 + calculate_elave_1_totals(frm); + calculate_elave_2_totals(frm); }, // Handle year changes @@ -149,6 +153,94 @@ function calculate_binalar_totals(frm) { }); } +function calculate_elave_1_totals(frm) { + if (!frm.doc.elave_1 || !frm.doc.elave_1.length) { + return; + } + + // Найти итоговую строку "Vergidən azad olunan əmlakın CƏMİ dəyəri:" + let total_row = null; + const other_rows = []; + + frm.doc.elave_1.forEach(row => { + const azadolma = row.azadolmasəbəbi || ''; + + if (azadolma === 'Vergidən azad olunan əmlakın CƏMİ dəyəri:') { + total_row = row; + } else { + // Все остальные строки для суммирования + other_rows.push(row); + } + }); + + // Если нет итоговой строки, ничего не делаем + if (!total_row) { + return; + } + + // Суммируем все числовые поля из всех строк (кроме итоговой) + const fields_to_sum = [ + 'hesabatilininəvvəlinəəsasvəsaitlərinqalıqdəyərimanatla5012', // 501.2 + 'ləğvolunmatarxinəəsasvəsaitlərinqalıqdəyəri', // 502.2 + 'hesabatiližrzindəəsasvəsaitlərinqalıqdəyəri', // 503.2 + 'ilinsonunaəsasvəsaitlərinqalıqdəyəri', // 504.2 + 'artıqqiymətəəsasvəsaitlərindəyəri' // 505.2 + ]; + + fields_to_sum.forEach(field => { + let total = 0; + other_rows.forEach(row => { + total += flt(row[field]); + }); + + frappe.model.set_value(total_row.doctype, total_row.name, field, total); + }); +} + +function calculate_elave_2_totals(frm) { + if (!frm.doc.elave_2 || !frm.doc.elave_2.length) { + return; + } + + // Найти итоговую строку "Vergiyə cəlb olunan əmlakın CƏMİ dəyəri:" + let total_row = null; + const other_rows = []; + + frm.doc.elave_2.forEach(row => { + const category = row.vergiyəcəlbolunanəmlaklarınkateqoriyası || ''; + + if (category === 'Vergiyə cəlb olunan əmlakın CƏMİ dəyəri:') { + total_row = row; + } else { + // Все остальные строки для суммирования + other_rows.push(row); + } + }); + + // Если нет итоговой строки, ничего не делаем + if (!total_row) { + return; + } + + // Суммируем все числовые поля из всех строк (кроме итоговой) + const fields_to_sum = [ + 'hesabatilininəvvəlinəəsasvəsaitlərinqalıqdəyəri', // 501.1 + 'ləğvolunmatarxinəəsasvəsaitlərinqalıqdəyəri', // 502.1 + 'hesabatilierzindeuçotaalınan', // 503.1 + 'hesabatilinsonunaəsasvəsaitlərinqalıqdəyəri', // 504.1 + 'artıqqiymətəəsasvəsaitlərindəyəri505' // 505.1 + ]; + + fields_to_sum.forEach(field => { + let total = 0; + other_rows.forEach(row => { + total += flt(row[field]); + }); + + frappe.model.set_value(total_row.doctype, total_row.name, field, total); + }); +} + function reload_property_tax_data(frm) { // Validate required fields if (!frm.doc.il) { @@ -245,9 +337,12 @@ function update_child_table_values(frm, table_name, data_map) { } }); - // After updating all rows, recalculate binalar totals for elave_2 + // After updating all rows, recalculate totals if (table_name === 'elave_2') { calculate_binalar_totals(frm); + calculate_elave_2_totals(frm); + } else if (table_name === 'elave_1') { + calculate_elave_1_totals(frm); } } @@ -261,23 +356,29 @@ frappe.ui.form.on('Property tax return Elave 2', { // При изменении любого числового поля - пересчитать totals hesabatilininəvvəlinəəsasvəsaitlərinqalıqdəyəri: function(frm, cdt, cdn) { calculate_binalar_totals(frm); + calculate_elave_2_totals(frm); }, ləğvolunmatarxinəəsasvəsaitlərinqalıqdəyəri: function(frm, cdt, cdn) { calculate_binalar_totals(frm); + calculate_elave_2_totals(frm); }, hesabatilierzindeuçotaalınan: function(frm, cdt, cdn) { calculate_binalar_totals(frm); + calculate_elave_2_totals(frm); }, hesabatilinsonunaəsasvəsaitlərinqalıqdəyəri: function(frm, cdt, cdn) { calculate_binalar_totals(frm); + calculate_elave_2_totals(frm); }, artıqqiymətəəsasvəsaitlərindəyəri505: function(frm, cdt, cdn) { calculate_binalar_totals(frm); + calculate_elave_2_totals(frm); }, // При удалении строки - пересчитать elave_2_remove: function(frm, cdt, cdn) { calculate_binalar_totals(frm); + calculate_elave_2_totals(frm); } }); @@ -286,5 +387,27 @@ frappe.ui.form.on('Property tax return Elave 1', { form_render: function(frm, cdt, cdn) { // Скрыть колонку при рендеринге формы строки toggle_field_readonly(frm); + }, + + // При изменении любого числового поля - пересчитать totals + hesabatilininəvvəlinəəsasvəsaitlərinqalıqdəyərimanatla5012: function(frm, cdt, cdn) { + calculate_elave_1_totals(frm); + }, + ləğvolunmatarxinəəsasvəsaitlərinqalıqdəyəri: function(frm, cdt, cdn) { + calculate_elave_1_totals(frm); + }, + hesabatiližrzindəəsasvəsaitlərinqalıqdəyəri: function(frm, cdt, cdn) { + calculate_elave_1_totals(frm); + }, + ilinsonunaəsasvəsaitlərinqalıqdəyəri: function(frm, cdt, cdn) { + calculate_elave_1_totals(frm); + }, + artıqqiymətəəsasvəsaitlərindəyəri: function(frm, cdt, cdn) { + calculate_elave_1_totals(frm); + }, + + // При удалении строки - пересчитать + elave_1_remove: function(frm, cdt, cdn) { + calculate_elave_1_totals(frm); } }); \ No newline at end of file