From 47a69ca19b73d6e43c1f23e15932fc30ff5e4c72 Mon Sep 17 00:00:00 2001 From: Ali <010109ali@gmail.com> Date: Tue, 23 Dec 2025 19:55:42 +0400 Subject: [PATCH] added alert for less than 500 azn --- .../property_tax_return.js | 149 ++++++++++++++++++ .../property_tax_return.json | 12 ++ 2 files changed, 161 insertions(+) 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 184ad0b..a5dc210 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 @@ -42,6 +42,9 @@ frappe.ui.form.on('Property tax return', { // Calculate totals for Elave 1 and Elave 2 calculate_elave_1_totals(frm); calculate_elave_2_totals(frm); + + // Validate minimum asset values + validate_minimum_asset_value(frm); }, // Handle year changes @@ -69,13 +72,24 @@ frappe.ui.form.on('Property tax return', { if (frm.doc.il_erzinde) { frm.set_value('tam_il', 0); toggle_field_readonly(frm); + + // Validate when checking il_erzinde + validate_minimum_asset_value(frm); + if (frm.doc.il) { reload_property_tax_data(frm); } } else if (!frm.doc.tam_il) { // If unchecking il_erzinde and tam_il is also unchecked, default to tam_il frm.set_value('tam_il', 1); + } else { + // Clear warnings when unchecking il_erzinde + validate_minimum_asset_value(frm); } + }, + + validate: function(frm) { + return validate_minimum_asset_value(frm); } }); @@ -341,11 +355,146 @@ function update_child_table_values(frm, table_name, data_map) { if (table_name === 'elave_2') { calculate_binalar_totals(frm); calculate_elave_2_totals(frm); + // Validate after auto-populating Əlavə 2 + try { + validate_minimum_asset_value(frm); + } catch (e) { + console.log('Validation error:', e); + } } else if (table_name === 'elave_1') { calculate_elave_1_totals(frm); + // Validate after auto-populating Əlavə 1 + try { + validate_minimum_asset_value(frm); + } catch (e) { + console.log('Validation error:', e); + } } } +// ==================== MINIMUM ASSET VALUE VALIDATION ==================== +// Validate that asset values in columns 503.1 and 503.2 are >= 500 AZN +// when il_erzinde mode is selected + +function validate_minimum_asset_value(frm) { + // Only run if il_erzinde is checked + if (!frm.doc.il_erzinde) { + // Hide warnings and allow save + const field1 = frm.get_field('warning_elave_1_html'); + const field2 = frm.get_field('warning_elave_2_html'); + if (field1) field1.$wrapper.hide(); + if (field2) field2.$wrapper.hide(); + return true; + } + + let has_error_elave_1 = false; + let has_error_elave_2 = false; + let invalid_rows_1 = []; + let invalid_rows_2 = []; + + // Check Əlavə 1 (column 503.2) + (frm.doc.elave_1 || []).forEach((row, idx) => { + let value = row.hesabatiliərzindəəsasvəsaitlərinqalıqdəyəri || 0; + if (value > 0 && value < 500) { + has_error_elave_1 = true; + invalid_rows_1.push({row: idx + 1, value: value, category: row.azadolmasəbəbi}); + } + }); + + // Check Əlavə 2 (column 503.1) + (frm.doc.elave_2 || []).forEach((row, idx) => { + let value = row.hesabatilierzindeuçotaalınan || 0; + if (value > 0 && value < 500) { + has_error_elave_2 = true; + invalid_rows_2.push({row: idx + 1, value: value, category: row.vergiyəcəlbolunanəmlaklarınkateqoriyası}); + } + }); + + // Debug logging + if (invalid_rows_1.length > 0) { + console.log('Əlavə 1 invalid rows:', invalid_rows_1); + } + if (invalid_rows_2.length > 0) { + console.log('Əlavə 2 invalid rows:', invalid_rows_2); + } + + // Show/hide warnings and set validation state + show_warning_if_needed(frm, 'elave_1', has_error_elave_1); + show_warning_if_needed(frm, 'elave_2', has_error_elave_2); + + // Block save if any errors + if (has_error_elave_1 || has_error_elave_2) { + frm.validated = false; + return false; + } + + return true; +} + +function show_warning_if_needed(frm, table_name, has_error) { + const field_name = `warning_${table_name}_html`; + const field = frm.get_field(field_name); + + if (!field) return; + + if (has_error) { + // Unhide the field + frm.set_df_property(field_name, 'hidden', 0); + + // Show red warning message + const warning_html = ` +
+

+ ⚠️ Əsas vəsaitlərin dəyəri 500 manatdan az ola bilməz +

+
+ `; + field.$wrapper.html(warning_html); + field.$wrapper.show(); + + // Add red emoji to tab title + update_tab_title(frm, table_name, true); + } else { + // Hide warning + field.$wrapper.hide(); + frm.set_df_property(field_name, 'hidden', 1); + update_tab_title(frm, table_name, false); + } +} + +function update_tab_title(frm, table_name, has_error) { + const tab_map = { + 'elave_1': 'Əlavə 1', + 'elave_2': 'Əlavə 2' + }; + + const base_title = tab_map[table_name]; + if (!base_title) return; + + // Find tab element and update title + const tab_title = has_error ? `🔴 ${base_title}` : base_title; + + // Update tab title using jQuery/DOM + setTimeout(() => { + try { + // Find all tabs and update the matching one + $('.form-tabs .nav-link').each(function() { + const $tab = $(this); + const text = $tab.text().trim(); + + // Check if this is the tab we want to update + if (text === base_title || text === `🔴 ${base_title}`) { + $tab.text(tab_title); + } + }); + } catch (e) { + console.log('Could not update tab title:', e); + } + }, 200); +} + +// ==================== END VALIDATION ==================== + // Обработчики для дочерней таблицы Elave 2 - автоматический пересчет суммы binalar frappe.ui.form.on('Property tax return Elave 2', { form_render: function(frm, cdt, cdn) { diff --git a/taxes_az/taxes_az/doctype/property_tax_return/property_tax_return.json b/taxes_az/taxes_az/doctype/property_tax_return/property_tax_return.json index 49bc2e0..1fbd99b 100644 --- a/taxes_az/taxes_az/doctype/property_tax_return/property_tax_return.json +++ b/taxes_az/taxes_az/doctype/property_tax_return/property_tax_return.json @@ -59,9 +59,11 @@ "vergi_hesab_6ci", "əlavə_1_tab", "html_hken", + "warning_elave_1_html", "elave_1", "əlavə_2_tab", "html_ybie", + "warning_elave_2_html", "elave_2" ], "fields": [ @@ -231,6 +233,16 @@ "fieldtype": "HTML", "options": "

Vergiyə cəlb olunan əsas vəsaitin dəyəri haqqında məlumat

" }, + { + "fieldname": "warning_elave_1_html", + "fieldtype": "HTML", + "hidden": 1 + }, + { + "fieldname": "warning_elave_2_html", + "fieldtype": "HTML", + "hidden": 1 + }, { "fieldname": "əmlak_vergisinin_hesablanması_tab", "fieldtype": "Tab Break",