tax exempt now in formula for land tax reprot
This commit is contained in:
parent
c5c7dd8194
commit
4f69e9bc6c
|
|
@ -223,9 +223,16 @@ def calculate_tax_for_agricultural_asset(asset):
|
|||
# Определяем agricultural_purpose_name
|
||||
agricultural_purpose_name = get_agricultural_purpose_name(asset.get('agricultural_purpose'))
|
||||
|
||||
# Рассчитываем налогооблагаемую площадь
|
||||
taxable_area = calculate_taxable_area(asset.get('area'), asset.get('tax_exempt_area'))
|
||||
|
||||
# Если вся площадь освобождена от налогов, возвращаем 0
|
||||
if taxable_area <= 0:
|
||||
return 0
|
||||
|
||||
# Вызываем функцию расчета из land_tax_declaration
|
||||
result = calculate_agricultural_tax(
|
||||
area_value=asset.get('area'),
|
||||
area_value=taxable_area,
|
||||
cadastral_district_name=asset.get('cadastral_district_name'),
|
||||
quality_groups=asset.get('quality_groups'),
|
||||
agricultural_land_purpose=asset.get('agricultural_land_purpose'),
|
||||
|
|
@ -241,9 +248,16 @@ def calculate_tax_for_agricultural_asset(asset):
|
|||
def calculate_tax_for_industrial_asset(asset):
|
||||
"""Рассчитывает налог для промышленной земли"""
|
||||
try:
|
||||
# Рассчитываем налогооблагаемую площадь
|
||||
taxable_area = calculate_taxable_area(asset.get('area'), asset.get('tax_exempt_area'))
|
||||
|
||||
# Если вся площадь освобождена от налогов, возвращаем 0
|
||||
if taxable_area <= 0:
|
||||
return 0
|
||||
|
||||
# Вызываем функцию расчета из land_tax_declaration
|
||||
result = calculate_industrial_tax(
|
||||
area_sqm=asset.get('area'),
|
||||
area_sqm=taxable_area,
|
||||
territorial_unit_name=asset.get('territorial_unit_name'),
|
||||
industrial_land_purpose=asset.get('industrial_land_purpose')
|
||||
)
|
||||
|
|
@ -263,4 +277,40 @@ def get_agricultural_purpose_name(agricultural_purpose_id):
|
|||
purpose_doc = frappe.get_doc('Agricultural Purpose Type', agricultural_purpose_id)
|
||||
return purpose_doc.purpose_name
|
||||
except:
|
||||
return None
|
||||
return None
|
||||
|
||||
|
||||
def calculate_taxable_area(total_area, tax_exempt_area):
|
||||
"""
|
||||
Рассчитывает налогооблагаемую площадь, вычитая освобожденную от налогов площадь.
|
||||
|
||||
Args:
|
||||
total_area: Общая площадь (float)
|
||||
tax_exempt_area: Освобожденная от налогов площадь (строка или число)
|
||||
|
||||
Returns:
|
||||
float: Налогооблагаемая площадь (total_area - tax_exempt_area)
|
||||
"""
|
||||
# Если общая площадь не указана, возвращаем 0
|
||||
if not total_area:
|
||||
return 0
|
||||
|
||||
total_area_float = flt(total_area)
|
||||
|
||||
# Если нет освобожденной площади, возвращаем полную площадь
|
||||
if not tax_exempt_area:
|
||||
return total_area_float
|
||||
|
||||
# Преобразуем tax_exempt_area в число (может быть строкой)
|
||||
try:
|
||||
exempt_area_float = flt(tax_exempt_area)
|
||||
except (ValueError, TypeError):
|
||||
# Если не удалось преобразовать, игнорируем освобожденную площадь
|
||||
frappe.log_error(f"Invalid tax_exempt_area value: {tax_exempt_area}. Using full area for tax calculation.")
|
||||
return total_area_float
|
||||
|
||||
# Рассчитываем налогооблагаемую площадь
|
||||
taxable_area = total_area_float - exempt_area_float
|
||||
|
||||
# Возвращаем 0, если результат отрицательный
|
||||
return max(0, taxable_area)
|
||||
Loading…
Reference in New Issue