From 3ff83212ecd3ddfb603ad60f5636dfaf4efa8e26 Mon Sep 17 00:00:00 2001 From: Ali <010109ali@gmail.com> Date: Mon, 27 Oct 2025 15:19:15 +0400 Subject: [PATCH] fixed bug with purposes id and name --- .../land_tax_declaration.js | 75 +++++++++++-------- 1 file changed, 42 insertions(+), 33 deletions(-) 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 57dacda..df77f5d 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 @@ -80,17 +80,17 @@ function process_agricultural_assets_silent(frm, table_fieldname, assets, resolv if (unique_purposes.size > 0) { unique_purposes.forEach(purpose_id => { - console.log(`Загрузка данных для назначения: "${purpose_id}"`); + console.log(`Загрузка данных для назначения ID: "${purpose_id}"`); + // ИСПРАВЛЕНО: Используем frappe.client.get и ищем по name (ID) frappe.call({ - method: 'frappe.client.get_value', + method: 'frappe.client.get', args: { doctype: 'Agricultural Purpose Type', - filters: {'purpose_name': purpose_id}, - fieldname: ['name', 'purpose_name'] + name: purpose_id }, callback: function(agri_response) { - console.log(`Ответ для назначения "${purpose_id}":`, agri_response); + console.log(`Ответ для назначения ID "${purpose_id}":`, agri_response); if (agri_response.message) { agricultural_purposes[purpose_id] = { @@ -99,7 +99,7 @@ function process_agricultural_assets_silent(frm, table_fieldname, assets, resolv }; console.log(`✅ Назначение загружено:`, agricultural_purposes[purpose_id]); } else { - console.warn(`⚠️ Назначение "${purpose_id}" не найдено в базе`); + console.warn(`⚠️ Назначение ID "${purpose_id}" не найдено в базе`); } processed_count++; @@ -111,7 +111,7 @@ function process_agricultural_assets_silent(frm, table_fieldname, assets, resolv } }, error: function(error) { - console.error(`❌ Ошибка загрузки назначения "${purpose_id}":`, error); + console.error(`❌ Ошибка загрузки назначения ID "${purpose_id}":`, error); processed_count++; if (processed_count === unique_purposes.size) { group_and_create_agricultural_rows_silent(frm, table_fieldname, assets, agricultural_purposes, resolve); @@ -153,14 +153,14 @@ function group_and_create_agricultural_rows_silent(frm, table_fieldname, assets, if (!grouped_assets[group_key]) { grouped_assets[group_key] = { asset: asset, - total_area: 0, // ← ИЗМЕНЕНО с total_hectare + total_area: 0, count: 0, asset_names: [] }; console.log(`Создана новая группа: "${group_key}"`); } - grouped_assets[group_key].total_area += (asset.area || 0); // ← ИЗМЕНЕНО с hectare + grouped_assets[group_key].total_area += (asset.area || 0); grouped_assets[group_key].count += 1; grouped_assets[group_key].asset_names.push(asset.name); }); @@ -172,7 +172,7 @@ function group_and_create_agricultural_rows_silent(frm, table_fieldname, assets, Object.entries(grouped_assets).forEach(([key, group]) => { console.log(`Группа "${key}":`, { количество_активов: group.count, - общая_площадь: group.total_area, // ← ИЗМЕНЕНО + общая_площадь: group.total_area, активы: group.asset_names }); }); @@ -220,15 +220,16 @@ function create_agricultural_group_key(asset, agricultural_purposes) { function create_agricultural_row_with_calculation_silent(frm, table_fieldname, asset, agricultural_purposes, total_area, group_info, callback) { console.log('=== create_agricultural_row_with_calculation_silent ==='); - console.log('Актив:', asset.name, 'Общая площадь:', total_area); // ← ИЗМЕНЕНО + console.log('Актив:', asset.name, 'Общая площадь:', total_area); let row = frm.add_child(table_fieldname); console.log('Строка добавлена в таблицу'); - fill_agricultural_row_fields(row, asset, agricultural_purposes, total_area, group_info); // ← ИЗМЕНЕНО + fill_agricultural_row_fields(row, asset, agricultural_purposes, total_area, group_info); console.log('Поля строки заполнены:', row); - calculate_agricultural_tax_for_row_silent(row, asset, total_area, group_info, callback); // ← ИЗМЕНЕНО + // ИСПРАВЛЕНО: Передаем agricultural_purposes в функцию расчета + calculate_agricultural_tax_for_row_silent(row, asset, total_area, group_info, callback, agricultural_purposes); } function fill_agricultural_row_fields(row, asset, agricultural_purposes, total_area, group_info) { @@ -271,13 +272,14 @@ function fill_agricultural_row_fields(row, asset, agricultural_purposes, total_a } } - if (total_area > 0) { // ← ИЗМЕНЕНО с total_hectare + if (total_area > 0) { row.torpaqsahəsi6001kodlarüzrəkvmetrlə6002kodlarüzrəhektarlaümumi = total_area; - // Определяем единицу измерения для лога + // ИСПРАВЛЕНО: Определяем единицу измерения из purpose_name let unit = 'единиц'; - if (asset.agricultural_purpose) { - if (asset.agricultural_purpose === 'Təyinatı üzrə istifadə edilməyən kənd təsərrüfatı torpaqları üzrə hesablanmış vergi məbləği') { + if (asset.agricultural_purpose && agricultural_purposes[asset.agricultural_purpose]) { + let purpose_name = agricultural_purposes[asset.agricultural_purpose].purpose_name; + if (purpose_name === 'Təyinatı üzrə istifadə edilməyən kənd təsərrüfatı torpaqları üzrə hesablanmış vergi məbləği') { unit = 'кв.м'; } else { unit = 'га'; @@ -287,14 +289,21 @@ 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) { +function calculate_agricultural_tax_for_row_silent(row, asset, total_area, group_info, callback, agricultural_purposes) { console.log('=== calculate_agricultural_tax_for_row_silent ==='); + + // ИСПРАВЛЕНО: Получаем purpose_name из 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; + } + console.log('Параметры расчета:', { - area: total_area, // ← ИЗМЕНЕНО с hectare + area: total_area, cadastral_district_name: asset.cadastral_district_name, quality_groups: asset.quality_groups, agricultural_land_purpose: asset.agricultural_land_purpose, - agricultural_purpose: asset.agricultural_purpose + agricultural_purpose_name: agricultural_purpose_name }); if (!asset.cadastral_district_name || !asset.quality_groups || !asset.agricultural_land_purpose) { @@ -306,16 +315,16 @@ function calculate_agricultural_tax_for_row_silent(row, asset, total_area, group frappe.call({ method: 'taxes_az.taxes_az.doctype.land_tax_declaration.land_tax_declaration.calculate_agricultural_tax', args: { - area_value: total_area, // ← ИЗМЕНЕНО с hectare + area_value: total_area, cadastral_district_name: asset.cadastral_district_name, quality_groups: asset.quality_groups, agricultural_land_purpose: asset.agricultural_land_purpose, - agricultural_purpose_name: asset.agricultural_purpose // ← ДОБАВЛЕНО + agricultural_purpose_name: agricultural_purpose_name // ИСПРАВЛЕНО: Теперь это текст }, callback: function(response) { console.log('Результат расчета налога:', response); - if (response.message && 'tax_amount' in response.message) { // ← ИСПРАВЛЕНО + if (response.message && 'tax_amount' in response.message) { row.vergiməbləğimanatla = response.message.tax_amount; console.log(`✅ Налог рассчитан: ${response.message.tax_amount} манат`); @@ -402,14 +411,14 @@ function group_and_create_industrial_rows_silent(frm, table_fieldname, assets, r if (!grouped_assets[group_key]) { grouped_assets[group_key] = { asset: asset, - total_area: 0, // ← ИЗМЕНЕНО с total_hectare + total_area: 0, count: 0, asset_names: [] }; console.log(`Создана новая группа: "${group_key}"`); } - grouped_assets[group_key].total_area += (asset.area || 0); // ← ИЗМЕНЕНО с hectare + grouped_assets[group_key].total_area += (asset.area || 0); grouped_assets[group_key].count += 1; grouped_assets[group_key].asset_names.push(asset.name); }); @@ -421,7 +430,7 @@ function group_and_create_industrial_rows_silent(frm, table_fieldname, assets, r Object.entries(grouped_assets).forEach(([key, group]) => { console.log(`Группа "${key}":`, { количество_активов: group.count, - общая_площадь: group.total_area, // ← ИЗМЕНЕНО + общая_площадь: group.total_area, активы: group.asset_names }); }); @@ -463,15 +472,15 @@ function create_industrial_group_key(asset) { function create_industrial_row_with_calculation_silent(frm, table_fieldname, asset, total_area, group_info, callback) { console.log('=== create_industrial_row_with_calculation_silent ==='); - console.log('Актив:', asset.name, 'Общая площадь:', total_area, 'кв.м'); // ← ИЗМЕНЕНО + console.log('Актив:', asset.name, 'Общая площадь:', total_area, 'кв.м'); let row = frm.add_child(table_fieldname); console.log('Строка добавлена в таблицу'); - fill_industrial_row_fields(row, asset, total_area, group_info); // ← ИЗМЕНЕНО + fill_industrial_row_fields(row, asset, total_area, group_info); console.log('Поля строки заполнены:', row); - calculate_industrial_tax_for_row_silent(row, asset, total_area, group_info, callback); // ← ИЗМЕНЕНО + calculate_industrial_tax_for_row_silent(row, asset, total_area, group_info, callback); } function fill_industrial_row_fields(row, asset, total_area, group_info) { @@ -505,7 +514,7 @@ function fill_industrial_row_fields(row, asset, total_area, group_info) { console.log('Полезные ископаемые:', asset.mining_note ? 'Да' : 'Нет'); } - if (total_area > 0) { // ← ИЗМЕНЕНО с total_hectare + if (total_area > 0) { row.torpaqsahəsikvmetrləümumisahə = total_area; console.log('Общая площадь:', total_area, 'м²'); } @@ -514,7 +523,7 @@ function fill_industrial_row_fields(row, asset, total_area, group_info) { function calculate_industrial_tax_for_row_silent(row, asset, total_area, group_info, callback) { console.log('=== calculate_industrial_tax_for_row_silent ==='); console.log('Параметры расчета:', { - area_sqm: total_area, // ← ИЗМЕНЕНО с hectare + area_sqm: total_area, territorial_unit_name: asset.territorial_unit_name, industrial_land_purpose: asset.industrial_land_purpose }); @@ -528,14 +537,14 @@ function calculate_industrial_tax_for_row_silent(row, asset, total_area, group_i frappe.call({ method: 'taxes_az.taxes_az.doctype.land_tax_declaration.land_tax_declaration.calculate_industrial_tax', args: { - area_sqm: total_area, // ← ИЗМЕНЕНО с hectare + area_sqm: total_area, territorial_unit_name: asset.territorial_unit_name, industrial_land_purpose: asset.industrial_land_purpose }, callback: function(response) { console.log('Результат расчета налога:', response); - if (response.message && 'tax_amount' in response.message) { // ← ИСПРАВЛЕНО + if (response.message && 'tax_amount' in response.message) { row.vergiməbləğimanatla = response.message.tax_amount; console.log(`✅ Налог рассчитан: ${response.message.tax_amount} манат`);