fixed bug with purposes id and name

This commit is contained in:
Ali 2025-10-27 15:19:15 +04:00
parent 2e08089ce1
commit 3ff83212ec
1 changed files with 42 additions and 33 deletions

View File

@ -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} манат`);