added test logs to land tax
This commit is contained in:
parent
7ffc5f327d
commit
2c1f431465
|
|
@ -10,13 +10,13 @@ class Landtaxdeclaration(Document):
|
||||||
def get_doctype_fields_info():
|
def get_doctype_fields_info():
|
||||||
"""Gets information about fields of əlavə_1 table and Asset"""
|
"""Gets information about fields of əlavə_1 table and Asset"""
|
||||||
|
|
||||||
frappe.log_error("Начало получения метаданных полей", "Fields Info Start")
|
frappe.log_error("Fields Info Start", "Начало получения метаданных полей")
|
||||||
|
|
||||||
result = {}
|
result = {}
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Get metadata for əlavə_1 table
|
# Get metadata for əlavə_1 table
|
||||||
frappe.log_error("Получение метаданных для Land tax declaration Elave 1", "Elave1 Metadata")
|
frappe.log_error("Elave1 Metadata", "Получение метаданных для Land tax declaration Elave 1")
|
||||||
elave1_meta = frappe.get_meta('Land tax declaration Elave 1')
|
elave1_meta = frappe.get_meta('Land tax declaration Elave 1')
|
||||||
result['elave1_fields'] = []
|
result['elave1_fields'] = []
|
||||||
|
|
||||||
|
|
@ -31,10 +31,10 @@ def get_doctype_fields_info():
|
||||||
}
|
}
|
||||||
result['elave1_fields'].append(field_info)
|
result['elave1_fields'].append(field_info)
|
||||||
|
|
||||||
frappe.log_error(f"Найдено полей в Elave 1: {len(result['elave1_fields'])}", "Elave1 Fields Count")
|
frappe.log_error("Elave1 Fields Count", f"Найдено полей в Elave 1: {len(result['elave1_fields'])}")
|
||||||
|
|
||||||
# Get metadata for əlavə_2 table
|
# Get metadata for əlavə_2 table
|
||||||
frappe.log_error("Получение метаданных для Land tax declaration Elave 2", "Elave2 Metadata")
|
frappe.log_error("Elave2 Metadata", "Получение метаданных для Land tax declaration Elave 2")
|
||||||
elave2_meta = frappe.get_meta('Land tax declaration Elave 2')
|
elave2_meta = frappe.get_meta('Land tax declaration Elave 2')
|
||||||
result['elave2_fields'] = []
|
result['elave2_fields'] = []
|
||||||
|
|
||||||
|
|
@ -49,10 +49,10 @@ def get_doctype_fields_info():
|
||||||
}
|
}
|
||||||
result['elave2_fields'].append(field_info)
|
result['elave2_fields'].append(field_info)
|
||||||
|
|
||||||
frappe.log_error(f"Найдено полей в Elave 2: {len(result['elave2_fields'])}", "Elave2 Fields Count")
|
frappe.log_error("Elave2 Fields Count", f"Найдено полей в Elave 2: {len(result['elave2_fields'])}")
|
||||||
|
|
||||||
# Get metadata for Asset
|
# Get metadata for Asset
|
||||||
frappe.log_error("Получение метаданных для Asset", "Asset Metadata")
|
frappe.log_error("Asset Metadata", "Получение метаданных для Asset")
|
||||||
asset_meta = frappe.get_meta('Asset')
|
asset_meta = frappe.get_meta('Asset')
|
||||||
result['asset_fields'] = []
|
result['asset_fields'] = []
|
||||||
|
|
||||||
|
|
@ -67,13 +67,13 @@ def get_doctype_fields_info():
|
||||||
}
|
}
|
||||||
result['asset_fields'].append(field_info)
|
result['asset_fields'].append(field_info)
|
||||||
|
|
||||||
frappe.log_error(f"Найдено полей в Asset: {len(result['asset_fields'])}", "Asset Fields Count")
|
frappe.log_error("Asset Fields Count", f"Найдено полей в Asset: {len(result['asset_fields'])}")
|
||||||
frappe.log_error("Метаданные успешно получены", "Fields Info Success")
|
frappe.log_error("Fields Info Success", "Метаданные успешно получены")
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
frappe.log_error(f"Ошибка в get_doctype_fields_info: {str(e)}\n{frappe.get_traceback()}", "Fields Info Error")
|
frappe.log_error("Fields Info Error", f"Ошибка в get_doctype_fields_info: {str(e)}\n{frappe.get_traceback()}")
|
||||||
return {'error': str(e)}
|
return {'error': str(e)}
|
||||||
|
|
||||||
# ===============================
|
# ===============================
|
||||||
|
|
@ -93,30 +93,24 @@ def calculate_agricultural_tax(hectare, cadastral_district_name, quality_groups,
|
||||||
f" - quality_groups: {quality_groups}\n"
|
f" - quality_groups: {quality_groups}\n"
|
||||||
f" - agricultural_land_purpose: {agricultural_land_purpose}"
|
f" - agricultural_land_purpose: {agricultural_land_purpose}"
|
||||||
)
|
)
|
||||||
frappe.log_error(params_info, "Agri Tax Calc Start")
|
frappe.log_error("Agri Tax Start", params_info)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Input validation
|
# Input validation
|
||||||
if not hectare or not cadastral_district_name or not quality_groups or not agricultural_land_purpose:
|
if not hectare or not cadastral_district_name or not quality_groups or not agricultural_land_purpose:
|
||||||
error_msg = "Не все поля заполнены для расчета"
|
error_msg = "Не все поля заполнены для расчета"
|
||||||
frappe.log_error(error_msg, "Agri Tax Validation")
|
frappe.log_error("Agri Tax Valid", error_msg)
|
||||||
frappe.throw(error_msg)
|
frappe.throw(error_msg)
|
||||||
|
|
||||||
# Get score from JSON file
|
# Get score from JSON file
|
||||||
frappe.log_error(
|
frappe.log_error("Get Cadastral", f"Получение балла для района '{cadastral_district_name}', группа '{quality_groups}'")
|
||||||
f"Получение балла для района '{cadastral_district_name}', группа '{quality_groups}'",
|
|
||||||
"Get Cadastral Score"
|
|
||||||
)
|
|
||||||
score = get_cadastral_score(cadastral_district_name, quality_groups)
|
score = get_cadastral_score(cadastral_district_name, quality_groups)
|
||||||
frappe.log_error(f"Получен балл: {score}", "Score Retrieved")
|
frappe.log_error("Score Retrieved", f"Получен балл: {score}")
|
||||||
|
|
||||||
# Determine markup
|
# Determine markup
|
||||||
frappe.log_error(
|
frappe.log_error("Get Markup", f"Получение коэффициента для назначения '{agricultural_land_purpose}'")
|
||||||
f"Получение коэффициента для назначения '{agricultural_land_purpose}'",
|
|
||||||
"Get Markup Coeff"
|
|
||||||
)
|
|
||||||
markup = get_markup_coefficient(agricultural_land_purpose)
|
markup = get_markup_coefficient(agricultural_land_purpose)
|
||||||
frappe.log_error(f"Получен коэффициент: {markup}", "Markup Retrieved")
|
frappe.log_error("Markup Retrieved", f"Получен коэффициент: {markup}")
|
||||||
|
|
||||||
# Calculate using formula
|
# Calculate using formula
|
||||||
result = float(hectare) * score * markup
|
result = float(hectare) * score * markup
|
||||||
|
|
@ -126,7 +120,7 @@ def calculate_agricultural_tax(hectare, cadastral_district_name, quality_groups,
|
||||||
f"Формула: {hectare} × {score} × {markup} = {result}\n"
|
f"Формула: {hectare} × {score} × {markup} = {result}\n"
|
||||||
f"Результат: {result} манат"
|
f"Результат: {result} манат"
|
||||||
)
|
)
|
||||||
frappe.log_error(calc_summary, "Agri Tax Calc Done")
|
frappe.log_error("Agri Tax Done", calc_summary)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'tax_amount': result,
|
'tax_amount': result,
|
||||||
|
|
@ -139,7 +133,7 @@ def calculate_agricultural_tax(hectare, cadastral_district_name, quality_groups,
|
||||||
}
|
}
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
frappe.log_error(f"Ошибка: {str(e)}\n{frappe.get_traceback()}", "Agri Tax Calc Error")
|
frappe.log_error("Agri Tax Error", f"Ошибка: {str(e)}\n{frappe.get_traceback()}")
|
||||||
frappe.throw(f"Ошибка при расчете: {str(e)}")
|
frappe.throw(f"Ошибка при расчете: {str(e)}")
|
||||||
|
|
||||||
def get_cadastral_score(cadastral_district_name, quality_group):
|
def get_cadastral_score(cadastral_district_name, quality_group):
|
||||||
|
|
@ -151,24 +145,24 @@ def get_cadastral_score(cadastral_district_name, quality_group):
|
||||||
f"Район: {cadastral_district_name}\n"
|
f"Район: {cadastral_district_name}\n"
|
||||||
f"Группа качества: {quality_group}"
|
f"Группа качества: {quality_group}"
|
||||||
)
|
)
|
||||||
frappe.log_error(search_info, "Cadastral Score Search")
|
frappe.log_error("Cadastral Search", search_info)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Path to JSON file
|
# Path to JSON file
|
||||||
json_file_path = frappe.get_app_path('taxes_az', 'data', 'cadastral_points_data.json')
|
json_file_path = frappe.get_app_path('taxes_az', 'data', 'cadastral_points_data.json')
|
||||||
frappe.log_error(f"Путь к JSON: {json_file_path}", "JSON Path")
|
frappe.log_error("JSON Path", f"Путь к JSON: {json_file_path}")
|
||||||
|
|
||||||
# Read JSON file
|
# Read JSON file
|
||||||
with open(json_file_path, 'r', encoding='utf-8') as file:
|
with open(json_file_path, 'r', encoding='utf-8') as file:
|
||||||
data = json.load(file)
|
data = json.load(file)
|
||||||
|
|
||||||
regions_count = len(data.get('cadastral_regions', []))
|
regions_count = len(data.get('cadastral_regions', []))
|
||||||
frappe.log_error(f"JSON загружен, регионов: {regions_count}", "JSON Loaded")
|
frappe.log_error("JSON Loaded", f"JSON загружен, регионов: {regions_count}")
|
||||||
|
|
||||||
# Find corresponding region
|
# Find corresponding region
|
||||||
for region in data.get('cadastral_regions', []):
|
for region in data.get('cadastral_regions', []):
|
||||||
if region.get('region_name') == cadastral_district_name:
|
if region.get('region_name') == cadastral_district_name:
|
||||||
frappe.log_error(f"Регион найден: {cadastral_district_name}", "Region Found")
|
frappe.log_error("Region Found", f"Регион найден: {cadastral_district_name}")
|
||||||
|
|
||||||
# Get score for specified quality group
|
# Get score for specified quality group
|
||||||
quality_groups = region.get('quality_groups', {})
|
quality_groups = region.get('quality_groups', {})
|
||||||
|
|
@ -178,32 +172,32 @@ def get_cadastral_score(cadastral_district_name, quality_group):
|
||||||
f"Группы качества в регионе: {list(quality_groups.keys())}\n"
|
f"Группы качества в регионе: {list(quality_groups.keys())}\n"
|
||||||
f"Балл для группы '{quality_group}': {score}"
|
f"Балл для группы '{quality_group}': {score}"
|
||||||
)
|
)
|
||||||
frappe.log_error(score_info, "Score Found")
|
frappe.log_error("Score Found", score_info)
|
||||||
|
|
||||||
# If score is null or not found, return 0
|
# If score is null or not found, return 0
|
||||||
return score if score is not None else 0
|
return score if score is not None else 0
|
||||||
|
|
||||||
# If region not found
|
# If region not found
|
||||||
error_msg = f"Кадастровый район '{cadastral_district_name}' не найден в базе данных"
|
error_msg = f"Кадастровый район '{cadastral_district_name}' не найден в базе данных"
|
||||||
frappe.log_error(error_msg, "Region Not Found")
|
frappe.log_error("Region Not Found", error_msg)
|
||||||
frappe.throw(error_msg)
|
frappe.throw(error_msg)
|
||||||
|
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
error_msg = f"Файл не найден: {json_file_path}"
|
error_msg = f"Файл не найден: {json_file_path}"
|
||||||
frappe.log_error(error_msg, "JSON File Not Found")
|
frappe.log_error("JSON Not Found", error_msg)
|
||||||
frappe.throw("Файл кадастровых данных не найден. Обратитесь к администратору")
|
frappe.throw("Файл кадастровых данных не найден. Обратитесь к администратору")
|
||||||
except json.JSONDecodeError as e:
|
except json.JSONDecodeError as e:
|
||||||
frappe.log_error(f"Ошибка парсинга JSON: {str(e)}", "JSON Parse Error")
|
frappe.log_error("JSON Parse Err", f"Ошибка парсинга JSON: {str(e)}")
|
||||||
frappe.throw("Ошибка чтения файла кадастровых данных")
|
frappe.throw("Ошибка чтения файла кадастровых данных")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
frappe.log_error(f"Ошибка: {str(e)}\n{frappe.get_traceback()}", "Cadastral Score Error")
|
frappe.log_error("Cadastral Error", f"Ошибка: {str(e)}\n{frappe.get_traceback()}")
|
||||||
frappe.throw(f"Ошибка получения кадастрового балла: {str(e)}")
|
frappe.throw(f"Ошибка получения кадастрового балла: {str(e)}")
|
||||||
|
|
||||||
def get_markup_coefficient(agricultural_land_purpose):
|
def get_markup_coefficient(agricultural_land_purpose):
|
||||||
"""
|
"""
|
||||||
Determines markup coefficient based on land use purpose
|
Determines markup coefficient based on land use purpose
|
||||||
"""
|
"""
|
||||||
frappe.log_error(f"Назначение: {agricultural_land_purpose}", "Get Markup Start")
|
frappe.log_error("Markup Search", f"Назначение: {agricultural_land_purpose}")
|
||||||
|
|
||||||
markup_map = {
|
markup_map = {
|
||||||
"Əkin, dinc və çoxillik əkmələr": 0.06,
|
"Əkin, dinc və çoxillik əkmələr": 0.06,
|
||||||
|
|
@ -215,10 +209,10 @@ def get_markup_coefficient(agricultural_land_purpose):
|
||||||
if coefficient is None:
|
if coefficient is None:
|
||||||
available = list(markup_map.keys())
|
available = list(markup_map.keys())
|
||||||
error_msg = f"Неизвестный тип: {agricultural_land_purpose}\nДоступные: {available}"
|
error_msg = f"Неизвестный тип: {agricultural_land_purpose}\nДоступные: {available}"
|
||||||
frappe.log_error(error_msg, "Unknown Purpose Type")
|
frappe.log_error("Unknown Purpose", error_msg)
|
||||||
frappe.throw(f"Неизвестный тип назначения земли: {agricultural_land_purpose}")
|
frappe.throw(f"Неизвестный тип назначения земли: {agricultural_land_purpose}")
|
||||||
|
|
||||||
frappe.log_error(f"Коэффициент: {coefficient}", "Markup Found")
|
frappe.log_error("Markup Found", f"Коэффициент: {coefficient}")
|
||||||
return coefficient
|
return coefficient
|
||||||
|
|
||||||
# ===============================
|
# ===============================
|
||||||
|
|
@ -237,29 +231,26 @@ def calculate_industrial_tax(hectare, territorial_unit_name, industrial_land_pur
|
||||||
f" - territorial_unit_name: {territorial_unit_name}\n"
|
f" - territorial_unit_name: {territorial_unit_name}\n"
|
||||||
f" - industrial_land_purpose: {industrial_land_purpose}"
|
f" - industrial_land_purpose: {industrial_land_purpose}"
|
||||||
)
|
)
|
||||||
frappe.log_error(params_info, "Ind Tax Calc Start")
|
frappe.log_error("Ind Tax Start", params_info)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Input validation
|
# Input validation
|
||||||
if not hectare or not territorial_unit_name or not industrial_land_purpose:
|
if not hectare or not territorial_unit_name or not industrial_land_purpose:
|
||||||
error_msg = "Не все поля заполнены для расчета"
|
error_msg = "Не все поля заполнены для расчета"
|
||||||
frappe.log_error(error_msg, "Ind Tax Validation")
|
frappe.log_error("Ind Tax Valid", error_msg)
|
||||||
frappe.throw(error_msg)
|
frappe.throw(error_msg)
|
||||||
|
|
||||||
# Use value as is - this is square meters
|
# Use value as is - this is square meters
|
||||||
area_sqm = float(hectare)
|
area_sqm = float(hectare)
|
||||||
frappe.log_error(f"Площадь для расчета: {area_sqm} м²", "Area Converted")
|
frappe.log_error("Area Converted", f"Площадь для расчета: {area_sqm} м²")
|
||||||
|
|
||||||
# Get scores from JSON file
|
# Get scores from JSON file
|
||||||
frappe.log_error(
|
frappe.log_error("Get Ind Scores", f"Получение баллов для '{territorial_unit_name}', назначение '{industrial_land_purpose}'")
|
||||||
f"Получение баллов для '{territorial_unit_name}', назначение '{industrial_land_purpose}'",
|
|
||||||
"Get Ind Scores"
|
|
||||||
)
|
|
||||||
score_data = get_industrial_land_scores(territorial_unit_name, industrial_land_purpose)
|
score_data = get_industrial_land_scores(territorial_unit_name, industrial_land_purpose)
|
||||||
frappe.log_error(f"Получены баллы: {score_data}", "Scores Retrieved")
|
frappe.log_error("Scores Retrieved", f"Получены баллы: {score_data}")
|
||||||
|
|
||||||
# Calculate using progressive formula
|
# Calculate using progressive formula
|
||||||
frappe.log_error("Начало расчета по прогрессивной формуле", "Progressive Calc")
|
frappe.log_error("Progressive Calc", "Начало расчета по прогрессивной формуле")
|
||||||
calculation_result = calculate_industrial_land_formula(area_sqm, score_data)
|
calculation_result = calculate_industrial_land_formula(area_sqm, score_data)
|
||||||
|
|
||||||
calc_summary = (
|
calc_summary = (
|
||||||
|
|
@ -267,7 +258,7 @@ def calculate_industrial_tax(hectare, territorial_unit_name, industrial_land_pur
|
||||||
f"Формула: {calculation_result['formula']}\n"
|
f"Формула: {calculation_result['formula']}\n"
|
||||||
f"Результат: {calculation_result['total']} манат"
|
f"Результат: {calculation_result['total']} манат"
|
||||||
)
|
)
|
||||||
frappe.log_error(calc_summary, "Ind Tax Calc Done")
|
frappe.log_error("Ind Tax Done", calc_summary)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'tax_amount': calculation_result['total'],
|
'tax_amount': calculation_result['total'],
|
||||||
|
|
@ -275,7 +266,7 @@ def calculate_industrial_tax(hectare, territorial_unit_name, industrial_land_pur
|
||||||
}
|
}
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
frappe.log_error(f"Ошибка: {str(e)}\n{frappe.get_traceback()}", "Ind Tax Calc Error")
|
frappe.log_error("Ind Tax Error", f"Ошибка: {str(e)}\n{frappe.get_traceback()}")
|
||||||
frappe.throw(f"Ошибка при расчете: {str(e)}")
|
frappe.throw(f"Ошибка при расчете: {str(e)}")
|
||||||
|
|
||||||
def get_industrial_land_scores(territorial_unit_name, industrial_land_purpose):
|
def get_industrial_land_scores(territorial_unit_name, industrial_land_purpose):
|
||||||
|
|
@ -287,24 +278,24 @@ def get_industrial_land_scores(territorial_unit_name, industrial_land_purpose):
|
||||||
f"Территория: {territorial_unit_name}\n"
|
f"Территория: {territorial_unit_name}\n"
|
||||||
f"Назначение: {industrial_land_purpose}"
|
f"Назначение: {industrial_land_purpose}"
|
||||||
)
|
)
|
||||||
frappe.log_error(search_info, "Ind Scores Search")
|
frappe.log_error("Ind Score Search", search_info)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Path to JSON file
|
# Path to JSON file
|
||||||
json_file_path = frappe.get_app_path('taxes_az', 'data', 'industrial_land_data.json')
|
json_file_path = frappe.get_app_path('taxes_az', 'data', 'industrial_land_data.json')
|
||||||
frappe.log_error(f"Путь к JSON: {json_file_path}", "JSON Path")
|
frappe.log_error("JSON Path", f"Путь к JSON: {json_file_path}")
|
||||||
|
|
||||||
# Read JSON file
|
# Read JSON file
|
||||||
with open(json_file_path, 'r', encoding='utf-8') as file:
|
with open(json_file_path, 'r', encoding='utf-8') as file:
|
||||||
data = json.load(file)
|
data = json.load(file)
|
||||||
|
|
||||||
regions_count = len(data.get('industrial_land_regions', []))
|
regions_count = len(data.get('industrial_land_regions', []))
|
||||||
frappe.log_error(f"JSON загружен, регионов: {regions_count}", "JSON Loaded")
|
frappe.log_error("JSON Loaded", f"JSON загружен, регионов: {regions_count}")
|
||||||
|
|
||||||
# Find corresponding region
|
# Find corresponding region
|
||||||
for region in data.get('industrial_land_regions', []):
|
for region in data.get('industrial_land_regions', []):
|
||||||
if region.get('settlement_name') == territorial_unit_name:
|
if region.get('settlement_name') == territorial_unit_name:
|
||||||
frappe.log_error(f"Регион найден: {territorial_unit_name}", "Region Found")
|
frappe.log_error("Region Found", f"Регион найден: {territorial_unit_name}")
|
||||||
|
|
||||||
# Get scores for specified land purpose
|
# Get scores for specified land purpose
|
||||||
land_purpose_rates = region.get('land_purpose_rates', {})
|
land_purpose_rates = region.get('land_purpose_rates', {})
|
||||||
|
|
@ -315,13 +306,10 @@ def get_industrial_land_scores(territorial_unit_name, industrial_land_purpose):
|
||||||
'up_to_10000': purpose_rates.get('up_to_10000_sqm', 0),
|
'up_to_10000': purpose_rates.get('up_to_10000_sqm', 0),
|
||||||
'above_10000': purpose_rates.get('above_10000_sqm', 0)
|
'above_10000': purpose_rates.get('above_10000_sqm', 0)
|
||||||
}
|
}
|
||||||
frappe.log_error(f"Получены ставки: {result}", "Rates Found")
|
frappe.log_error("Rates Found", f"Получены ставки: {result}")
|
||||||
return result
|
return result
|
||||||
else:
|
else:
|
||||||
frappe.log_error(
|
frappe.log_error("Purpose Not Found", f"Назначение '{industrial_land_purpose}' не найдено в регионе")
|
||||||
f"Назначение '{industrial_land_purpose}' не найдено в регионе",
|
|
||||||
"Purpose Not Found"
|
|
||||||
)
|
|
||||||
|
|
||||||
# If region or purpose not found
|
# If region or purpose not found
|
||||||
error_msg = (
|
error_msg = (
|
||||||
|
|
@ -329,18 +317,18 @@ def get_industrial_land_scores(territorial_unit_name, industrial_land_purpose):
|
||||||
f"Территория: '{territorial_unit_name}'\n"
|
f"Территория: '{territorial_unit_name}'\n"
|
||||||
f"Назначение: '{industrial_land_purpose}'"
|
f"Назначение: '{industrial_land_purpose}'"
|
||||||
)
|
)
|
||||||
frappe.log_error(error_msg, "Data Not Found")
|
frappe.log_error("Data Not Found", error_msg)
|
||||||
frappe.throw(f"Данные не найдены для территории '{territorial_unit_name}' и назначения '{industrial_land_purpose}'")
|
frappe.throw(f"Данные не найдены для территории '{territorial_unit_name}' и назначения '{industrial_land_purpose}'")
|
||||||
|
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
error_msg = f"Файл не найден: {json_file_path}"
|
error_msg = f"Файл не найден: {json_file_path}"
|
||||||
frappe.log_error(error_msg, "JSON File Not Found")
|
frappe.log_error("JSON Not Found", error_msg)
|
||||||
frappe.throw("Файл данных промышленных земель не найден. Обратитесь к администратору")
|
frappe.throw("Файл данных промышленных земель не найден. Обратитесь к администратору")
|
||||||
except json.JSONDecodeError as e:
|
except json.JSONDecodeError as e:
|
||||||
frappe.log_error(f"Ошибка парсинга JSON: {str(e)}", "JSON Parse Error")
|
frappe.log_error("JSON Parse Err", f"Ошибка парсинга JSON: {str(e)}")
|
||||||
frappe.throw("Ошибка чтения файла данных промышленных земель")
|
frappe.throw("Ошибка чтения файла данных промышленных земель")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
frappe.log_error(f"Ошибка: {str(e)}\n{frappe.get_traceback()}", "Ind Scores Error")
|
frappe.log_error("Ind Score Error", f"Ошибка: {str(e)}\n{frappe.get_traceback()}")
|
||||||
frappe.throw(f"Ошибка получения баллов промышленных земель: {str(e)}")
|
frappe.throw(f"Ошибка получения баллов промышленных земель: {str(e)}")
|
||||||
|
|
||||||
def calculate_industrial_land_formula(area_sqm, score_data):
|
def calculate_industrial_land_formula(area_sqm, score_data):
|
||||||
|
|
@ -352,7 +340,7 @@ def calculate_industrial_land_formula(area_sqm, score_data):
|
||||||
f"Площадь: {area_sqm} м²\n"
|
f"Площадь: {area_sqm} м²\n"
|
||||||
f"Баллы: {score_data}"
|
f"Баллы: {score_data}"
|
||||||
)
|
)
|
||||||
frappe.log_error(calc_info, "Formula Calc Start")
|
frappe.log_error("Formula Start", calc_info)
|
||||||
|
|
||||||
up_to_10000_score = score_data['up_to_10000']
|
up_to_10000_score = score_data['up_to_10000']
|
||||||
above_10000_score = score_data['above_10000']
|
above_10000_score = score_data['above_10000']
|
||||||
|
|
@ -374,10 +362,7 @@ def calculate_industrial_land_formula(area_sqm, score_data):
|
||||||
|
|
||||||
formula_text = f"{area_sqm} ÷ 100 × {up_to_10000_score} = {total}"
|
formula_text = f"{area_sqm} ÷ 100 × {up_to_10000_score} = {total}"
|
||||||
|
|
||||||
frappe.log_error(
|
frappe.log_error("Simple Formula", f"Простой расчет (площадь ≤ 10000):\n{formula_text}")
|
||||||
f"Простой расчет (площадь ≤ 10000):\n{formula_text}",
|
|
||||||
"Simple Formula"
|
|
||||||
)
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
# Progressive system: up to 10000 sqm + above 10000 sqm
|
# Progressive system: up to 10000 sqm + above 10000 sqm
|
||||||
|
|
@ -410,7 +395,7 @@ def calculate_industrial_land_formula(area_sqm, score_data):
|
||||||
f" Часть 2 (свыше 10000): {calculation_parts[1]['formula']}\n"
|
f" Часть 2 (свыше 10000): {calculation_parts[1]['formula']}\n"
|
||||||
f" Итого: {total}"
|
f" Итого: {total}"
|
||||||
)
|
)
|
||||||
frappe.log_error(progressive_info, "Progressive Formula")
|
frappe.log_error("Progressive", progressive_info)
|
||||||
|
|
||||||
result = {
|
result = {
|
||||||
'total': total,
|
'total': total,
|
||||||
|
|
@ -420,7 +405,7 @@ def calculate_industrial_land_formula(area_sqm, score_data):
|
||||||
'scores_used': score_data
|
'scores_used': score_data
|
||||||
}
|
}
|
||||||
|
|
||||||
frappe.log_error(f"Расчет завершен, результат: {result}", "Formula Calc Done")
|
frappe.log_error("Formula Done", f"Расчет завершен, результат: {result}")
|
||||||
return result
|
return result
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
|
|
@ -433,12 +418,12 @@ def get_assets_for_year(asset_type, year):
|
||||||
f"Тип актива: {asset_type}\n"
|
f"Тип актива: {asset_type}\n"
|
||||||
f"Год: {year}"
|
f"Год: {year}"
|
||||||
)
|
)
|
||||||
frappe.log_error(search_info, "Get Assets Start")
|
frappe.log_error("Get Assets Start", search_info)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Convert year to int for comparison
|
# Convert year to int for comparison
|
||||||
target_year = int(year)
|
target_year = int(year)
|
||||||
frappe.log_error(f"Целевой год (int): {target_year}", "Year Converted")
|
frappe.log_error("Year Converted", f"Целевой год (int): {target_year}")
|
||||||
|
|
||||||
# Build filters
|
# Build filters
|
||||||
filters = {
|
filters = {
|
||||||
|
|
@ -446,7 +431,7 @@ def get_assets_for_year(asset_type, year):
|
||||||
'custom_asset_type': asset_type
|
'custom_asset_type': asset_type
|
||||||
}
|
}
|
||||||
|
|
||||||
frappe.log_error(f"Фильтры: {filters}", "Filters Set")
|
frappe.log_error("Filters Set", f"Фильтры для поиска:\n - docstatus: 1\n - custom_asset_type: {asset_type}")
|
||||||
|
|
||||||
# Get appropriate fields based on asset type
|
# Get appropriate fields based on asset type
|
||||||
if asset_type == 'Kənd təsərrüfatı təyinatlı torpaq sahələri':
|
if asset_type == 'Kənd təsərrüfatı təyinatlı torpaq sahələri':
|
||||||
|
|
@ -479,12 +464,12 @@ def get_assets_for_year(asset_type, year):
|
||||||
f"Тип: {asset_type_short}\n"
|
f"Тип: {asset_type_short}\n"
|
||||||
f"Поля для выборки:\n" + "\n".join([f" - {f}" for f in fields])
|
f"Поля для выборки:\n" + "\n".join([f" - {f}" for f in fields])
|
||||||
)
|
)
|
||||||
frappe.log_error(fields_info, "Fields Selected")
|
frappe.log_error("Fields Selected", fields_info)
|
||||||
|
|
||||||
# Get all assets of the specified type
|
# Get all assets of the specified type
|
||||||
frappe.log_error("Выполнение запроса к БД...", "DB Query Start")
|
frappe.log_error("DB Query Start", "Выполнение запроса к БД...")
|
||||||
assets = frappe.get_list('Asset', filters=filters, fields=fields)
|
assets = frappe.get_list('Asset', filters=filters, fields=fields)
|
||||||
frappe.log_error(f"Получено активов из БД: {len(assets)}", "DB Query Done")
|
frappe.log_error("DB Query Done", f"Получено активов из БД: {len(assets)}")
|
||||||
|
|
||||||
# Filter by purchase_date year
|
# Filter by purchase_date year
|
||||||
filtered_assets = []
|
filtered_assets = []
|
||||||
|
|
@ -497,22 +482,13 @@ def get_assets_for_year(asset_type, year):
|
||||||
|
|
||||||
if purchase_year == target_year:
|
if purchase_year == target_year:
|
||||||
filtered_assets.append(asset)
|
filtered_assets.append(asset)
|
||||||
frappe.log_error(
|
frappe.log_error("Asset Matched", f"Актив подходит: {asset['name']} (дата: {asset['purchase_date']})")
|
||||||
f"Актив подходит: {asset['name']} (дата: {asset['purchase_date']})",
|
|
||||||
"Asset Matched"
|
|
||||||
)
|
|
||||||
else:
|
else:
|
||||||
skipped_wrong_year += 1
|
skipped_wrong_year += 1
|
||||||
frappe.log_error(
|
frappe.log_error("Asset Skipped", f"Актив пропущен: {asset['name']} (год: {purchase_year}, нужен {target_year})")
|
||||||
f"Актив пропущен: {asset['name']} (год: {purchase_year}, нужен {target_year})",
|
|
||||||
"Asset Skipped"
|
|
||||||
)
|
|
||||||
else:
|
else:
|
||||||
skipped_no_date += 1
|
skipped_no_date += 1
|
||||||
frappe.log_error(
|
frappe.log_error("Asset No Date", f"Актив без даты: {asset['name']}")
|
||||||
f"Актив без даты: {asset['name']}",
|
|
||||||
"Asset No Date"
|
|
||||||
)
|
|
||||||
|
|
||||||
summary = (
|
summary = (
|
||||||
f"Результаты фильтрации:\n"
|
f"Результаты фильтрации:\n"
|
||||||
|
|
@ -521,10 +497,10 @@ def get_assets_for_year(asset_type, year):
|
||||||
f"Пропущено (другой год): {skipped_wrong_year}\n"
|
f"Пропущено (другой год): {skipped_wrong_year}\n"
|
||||||
f"Пропущено (нет даты): {skipped_no_date}"
|
f"Пропущено (нет даты): {skipped_no_date}"
|
||||||
)
|
)
|
||||||
frappe.log_error(summary, "Get Assets Done")
|
frappe.log_error("Get Assets Done", summary)
|
||||||
|
|
||||||
return filtered_assets
|
return filtered_assets
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
frappe.log_error(f"Ошибка: {str(e)}\n{frappe.get_traceback()}", "Get Assets Error")
|
frappe.log_error("Get Assets Error", f"Ошибка: {str(e)}\n{frappe.get_traceback()}")
|
||||||
return []
|
return []
|
||||||
Loading…
Reference in New Issue