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 415ff5b..d462697 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 @@ -200,9 +200,12 @@ function calculate_agricultural_tax_for_row_silent(row, asset, total_area, group agricultural_purpose_name = agricultural_purposes[asset.agricultural_purpose].purpose_name; } - if (!asset.cadastral_district_name || !asset.quality_groups || !asset.agricultural_land_purpose) { - callback(); - return; + // Для неиспользуемых земель не нужны остальные поля + 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 (!asset.cadastral_district_name || !asset.quality_groups || !asset.agricultural_land_purpose) { + callback(); + return; + } } frappe.call({ 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 dc47044..5c6d397 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 @@ -61,19 +61,29 @@ 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): try: - if area_value is None or not cadastral_district_name or not quality_groups or not agricultural_land_purpose: + if area_value is None: + frappe.throw("Area value is required") + + area_float = float(area_value) + + # Для неиспользуемых земель: Area × 2% + if agricultural_purpose_name == 'Təyinatı üzrə istifadə edilməyən kənd təsərrüfatı torpaqları üzrə hesablanmış vergi məbləği': + result = area_float * 0.02 + + return { + 'tax_amount': result, + 'calculation_details': { + 'area_sqm': area_float, + 'rate': 0.02, + 'formula': f"{area_float} sq.m × 0.02 = {result}" + } + } + + # Для используемых земель: Hectare × Score × Markup + if 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 @@ -81,8 +91,6 @@ 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,