From fea2f652e00cc9e21dafc9979b6f7e530f12382e Mon Sep 17 00:00:00 2001 From: Ali <010109ali@gmail.com> Date: Wed, 7 Jan 2026 20:15:55 +0400 Subject: [PATCH] insurance calcs --- .../property_tax_return.js | 44 +++++++++++++++++++ .../property_tax_return.py | 3 +- 2 files changed, 46 insertions(+), 1 deletion(-) 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 b63d9d0..58a3e2b 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 @@ -47,6 +47,7 @@ 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); + calculate_vergi_hesab_3cu_totals(frm); // Validate minimum asset values validate_minimum_asset_value(frm); @@ -504,6 +505,7 @@ function update_child_table_values(frm, table_name, data_map) { if (table_name === 'elave_2') { calculate_binalar_totals(frm); calculate_elave_2_totals(frm); + calculate_vergi_hesab_3cu_totals(frm); // Validate after auto-populating Əlavə 2 try { validate_minimum_asset_value(frm); @@ -512,6 +514,7 @@ function update_child_table_values(frm, table_name, data_map) { } } else if (table_name === 'elave_1') { calculate_elave_1_totals(frm); + calculate_vergi_hesab_3cu_totals(frm); // Validate after auto-populating Əlavə 1 try { validate_minimum_asset_value(frm); @@ -863,6 +866,35 @@ function calculate_509_2(frm) { // ==================== END FORMULA 509.2 ==================== +// ==================== CALCULATE VERGI HESAB 3CU (INSURANCE TOTALS) ==================== + +function calculate_vergi_hesab_3cu_totals(frm) { + // Sum insurance from elave_1 (tax-exempt) → 505.2 + let sum_505_2 = 0; + (frm.doc.elave_1 || []).forEach(row => { + sum_505_2 += flt(row.artıqqiymətəəsasvəsaitlərindəyəri); + }); + + // Sum insurance from elave_2 (taxable) → 505.1 + let sum_505_1 = 0; + (frm.doc.elave_2 || []).forEach(row => { + sum_505_1 += flt(row.artıqqiymətəəsasvəsaitlərindəyəri505); + }); + + // Set values in vergi_hesab_3cu + (frm.doc.vergi_hesab_3cu || []).forEach(row => { + if (row.göstəricilər && row.göstəricilər.startsWith('505.1 ')) { + frappe.model.set_value(row.doctype, row.name, 'manatla', sum_505_1); + } else if (row.göstəricilər && row.göstəricilər.startsWith('505.2 ')) { + frappe.model.set_value(row.doctype, row.name, 'manatla', sum_505_2); + } else if (row.göstəricilər && row.göstəricilər.startsWith('505 ')) { + frappe.model.set_value(row.doctype, row.name, 'manatla', sum_505_1 + sum_505_2); + } + }); +} + +// ==================== END VERGI HESAB 3CU ==================== + // Обработчики для дочерней таблицы Elave 2 - автоматический пересчет суммы binalar frappe.ui.form.on('Property tax return Elave 2', { form_render: function(frm, cdt, cdn) { @@ -874,29 +906,35 @@ frappe.ui.form.on('Property tax return Elave 2', { hesabatilininəvvəlinəəsasvəsaitlərinqalıqdəyəri: function(frm, cdt, cdn) { calculate_binalar_totals(frm); calculate_elave_2_totals(frm); + calculate_vergi_hesab_3cu_totals(frm); }, ləğvolunmatarixinəəsasvəsaitlərinqalıqdəyəri: function(frm, cdt, cdn) { calculate_binalar_totals(frm); calculate_elave_2_totals(frm); + calculate_vergi_hesab_3cu_totals(frm); }, hesabatilierzindeuçotaalınan: function(frm, cdt, cdn) { calculate_binalar_totals(frm); calculate_elave_2_totals(frm); + calculate_vergi_hesab_3cu_totals(frm); validate_minimum_asset_value(frm); }, hesabatilinsonunaəsasvəsaitlərinqalıqdəyəri: function(frm, cdt, cdn) { calculate_binalar_totals(frm); calculate_elave_2_totals(frm); + calculate_vergi_hesab_3cu_totals(frm); }, artıqqiymətəəsasvəsaitlərindəyəri505: function(frm, cdt, cdn) { calculate_binalar_totals(frm); calculate_elave_2_totals(frm); + calculate_vergi_hesab_3cu_totals(frm); }, // При удалении строки - пересчитать elave_2_remove: function(frm, cdt, cdn) { calculate_binalar_totals(frm); calculate_elave_2_totals(frm); + calculate_vergi_hesab_3cu_totals(frm); } }); @@ -910,24 +948,30 @@ frappe.ui.form.on('Property tax return Elave 1', { // При изменении любого числового поля - пересчитать totals hesabatilininəvvəlinəəsasvəsaitlərinqalıqdəyərimanatla5012: function(frm, cdt, cdn) { calculate_elave_1_totals(frm); + calculate_vergi_hesab_3cu_totals(frm); }, ləğvolunmatarixinəəsasvəsaitlərinqalıqdəyəri: function(frm, cdt, cdn) { calculate_elave_1_totals(frm); + calculate_vergi_hesab_3cu_totals(frm); }, hesabatiliərzindəəsasvəsaitlərinqalıqdəyəri: function(frm, cdt, cdn) { calculate_elave_1_totals(frm); + calculate_vergi_hesab_3cu_totals(frm); validate_minimum_asset_value(frm); }, ilinsonunaəsasvəsaitlərinqalıqdəyəri: function(frm, cdt, cdn) { calculate_elave_1_totals(frm); + calculate_vergi_hesab_3cu_totals(frm); }, artıqqiymətəəsasvəsaitlərindəyəri: function(frm, cdt, cdn) { calculate_elave_1_totals(frm); + calculate_vergi_hesab_3cu_totals(frm); }, // При удалении строки - пересчитать elave_1_remove: function(frm, cdt, cdn) { calculate_elave_1_totals(frm); + calculate_vergi_hesab_3cu_totals(frm); } }); diff --git a/taxes_az/taxes_az/doctype/property_tax_return/property_tax_return.py b/taxes_az/taxes_az/doctype/property_tax_return/property_tax_return.py index c621e5e..fa6c108 100644 --- a/taxes_az/taxes_az/doctype/property_tax_return/property_tax_return.py +++ b/taxes_az/taxes_az/doctype/property_tax_return/property_tax_return.py @@ -443,7 +443,8 @@ def get_asset_balances_using_standard_logic(company, from_date, to_date, asset_n # Calculate insurance value (Insured value - Gross Purchase Amount) insured_value = flt(frappe.db.get_value('Asset', asset_name, 'insured_value') or 0) gross_purchase_amount = flt(frappe.db.get_value('Asset', asset_name, 'gross_purchase_amount') or 0) - insurance_difference = insured_value - gross_purchase_amount + # Only calculate difference if insured_value is actually set (> 0) + insurance_difference = (insured_value - gross_purchase_amount) if insured_value > 0 else 0 balance_result = { 'asset': asset_name,