diff --git a/taxes_az/taxes_az/doctype/land_tax_declaration/land_tax_declaration.js b/taxes_az/taxes_az/doctype/land_tax_declaration/land_tax_declaration.js index a22dcc2..415ff5b 100644 --- a/taxes_az/taxes_az/doctype/land_tax_declaration/land_tax_declaration.js +++ b/taxes_az/taxes_az/doctype/land_tax_declaration/land_tax_declaration.js @@ -195,6 +195,11 @@ function fill_agricultural_row_fields(row, asset, agricultural_purposes, total_a } function calculate_agricultural_tax_for_row_silent(row, asset, total_area, group_info, callback, agricultural_purposes) { + let agricultural_purpose_name = null; + if (asset.agricultural_purpose && agricultural_purposes && agricultural_purposes[asset.agricultural_purpose]) { + agricultural_purpose_name = agricultural_purposes[asset.agricultural_purpose].purpose_name; + } + if (!asset.cadastral_district_name || !asset.quality_groups || !asset.agricultural_land_purpose) { callback(); return; @@ -206,7 +211,8 @@ function calculate_agricultural_tax_for_row_silent(row, asset, total_area, group area_value: total_area, cadastral_district_name: asset.cadastral_district_name, quality_groups: asset.quality_groups, - agricultural_land_purpose: asset.agricultural_land_purpose + agricultural_land_purpose: asset.agricultural_land_purpose, + agricultural_purpose_name: agricultural_purpose_name }, callback: function(response) { if (response.message && 'tax_amount' in response.message) { diff --git a/taxes_az/taxes_az/doctype/land_tax_declaration/land_tax_declaration.py b/taxes_az/taxes_az/doctype/land_tax_declaration/land_tax_declaration.py index 56747d8..dc47044 100644 --- a/taxes_az/taxes_az/doctype/land_tax_declaration/land_tax_declaration.py +++ b/taxes_az/taxes_az/doctype/land_tax_declaration/land_tax_declaration.py @@ -60,17 +60,20 @@ def get_doctype_fields_info(): @frappe.whitelist() def calculate_agricultural_tax(area_value, cadastral_district_name, quality_groups, agricultural_land_purpose, agricultural_purpose_name=None): - """ - Calculates tax for agricultural land - Formula: hectare × score × markup - - area_value: всегда в гектарах (без конвертации) - """ try: if area_value is None or not cadastral_district_name or not quality_groups or not agricultural_land_purpose: frappe.throw("Not all fields are filled for calculation") hectare_value = float(area_value) + original_unit = "unknown" + + if agricultural_purpose_name == 'Təyinatı üzrə istifadə edilməyən kənd təsərrüfatı torpaqları üzrə hesablanmış vergi məbləği': + if hectare_value > 0: + hectare_value = float(area_value) / 10000 + original_unit = "sq.m" + else: + original_unit = "hectares" + score = get_cadastral_score(cadastral_district_name, quality_groups) markup = get_markup_coefficient(agricultural_land_purpose) result = hectare_value * score * markup @@ -78,6 +81,8 @@ def calculate_agricultural_tax(area_value, cadastral_district_name, quality_grou return { 'tax_amount': result, 'calculation_details': { + 'original_value': float(area_value), + 'original_unit': original_unit, 'hectare': hectare_value, 'score': score, 'markup': markup, @@ -125,12 +130,6 @@ def get_markup_coefficient(agricultural_land_purpose): @frappe.whitelist() def calculate_industrial_tax(area_sqm, territorial_unit_name, industrial_land_purpose): - """ - Calculates tax for industrial land - Formula: (area_in_sqm ÷ 100) × score (progressive system) - - area_sqm: площадь в квадратных метрах (уже вычтена tax_exempt_area) - """ try: if area_sqm is None or not territorial_unit_name or not industrial_land_purpose: frappe.throw("Not all fields are filled for calculation")