Fixed bug with tax exempt area

This commit is contained in:
Ali 2025-10-27 15:55:53 +04:00
parent 3ff83212ec
commit 482db61cf7
2 changed files with 16 additions and 8 deletions

View File

@ -82,7 +82,6 @@ function process_agricultural_assets_silent(frm, table_fieldname, assets, resolv
unique_purposes.forEach(purpose_id => { unique_purposes.forEach(purpose_id => {
console.log(`Загрузка данных для назначения ID: "${purpose_id}"`); console.log(`Загрузка данных для назначения ID: "${purpose_id}"`);
// ИСПРАВЛЕНО: Используем frappe.client.get и ищем по name (ID)
frappe.call({ frappe.call({
method: 'frappe.client.get', method: 'frappe.client.get',
args: { args: {
@ -228,7 +227,6 @@ function create_agricultural_row_with_calculation_silent(frm, table_fieldname, a
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); console.log('Поля строки заполнены:', row);
// ИСПРАВЛЕНО: Передаем agricultural_purposes в функцию расчета
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);
} }
@ -275,7 +273,6 @@ function fill_agricultural_row_fields(row, asset, agricultural_purposes, total_a
if (total_area > 0) { if (total_area > 0) {
row.torpaqsahəsi6001kodlarüzrəkvmetrlə6002kodlarüzrəhektarlaümumi = total_area; row.torpaqsahəsi6001kodlarüzrəkvmetrlə6002kodlarüzrəhektarlaümumi = total_area;
// ИСПРАВЛЕНО: Определяем единицу измерения из purpose_name
let unit = 'единиц'; let unit = 'единиц';
if (asset.agricultural_purpose && agricultural_purposes[asset.agricultural_purpose]) { if (asset.agricultural_purpose && agricultural_purposes[asset.agricultural_purpose]) {
let purpose_name = agricultural_purposes[asset.agricultural_purpose].purpose_name; let purpose_name = agricultural_purposes[asset.agricultural_purpose].purpose_name;
@ -292,7 +289,6 @@ 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, agricultural_purposes) { function calculate_agricultural_tax_for_row_silent(row, asset, total_area, group_info, callback, agricultural_purposes) {
console.log('=== calculate_agricultural_tax_for_row_silent ==='); console.log('=== calculate_agricultural_tax_for_row_silent ===');
// ИСПРАВЛЕНО: Получаем purpose_name из agricultural_purposes
let agricultural_purpose_name = null; let agricultural_purpose_name = null;
if (asset.agricultural_purpose && agricultural_purposes && agricultural_purposes[asset.agricultural_purpose]) { if (asset.agricultural_purpose && agricultural_purposes && agricultural_purposes[asset.agricultural_purpose]) {
agricultural_purpose_name = agricultural_purposes[asset.agricultural_purpose].purpose_name; agricultural_purpose_name = agricultural_purposes[asset.agricultural_purpose].purpose_name;
@ -319,7 +315,7 @@ function calculate_agricultural_tax_for_row_silent(row, asset, total_area, group
cadastral_district_name: asset.cadastral_district_name, cadastral_district_name: asset.cadastral_district_name,
quality_groups: asset.quality_groups, quality_groups: asset.quality_groups,
agricultural_land_purpose: asset.agricultural_land_purpose, agricultural_land_purpose: asset.agricultural_land_purpose,
agricultural_purpose_name: agricultural_purpose_name // ИСПРАВЛЕНО: Теперь это текст agricultural_purpose_name: agricultural_purpose_name
}, },
callback: function(response) { callback: function(response) {
console.log('Результат расчета налога:', response); console.log('Результат расчета налога:', response);
@ -412,6 +408,7 @@ function group_and_create_industrial_rows_silent(frm, table_fieldname, assets, r
grouped_assets[group_key] = { grouped_assets[group_key] = {
asset: asset, asset: asset,
total_area: 0, total_area: 0,
total_tax_exempt_area: 0, // ← ДОБАВЛЕНО
count: 0, count: 0,
asset_names: [] asset_names: []
}; };
@ -419,6 +416,7 @@ function group_and_create_industrial_rows_silent(frm, table_fieldname, assets, r
} }
grouped_assets[group_key].total_area += (asset.area || 0); grouped_assets[group_key].total_area += (asset.area || 0);
grouped_assets[group_key].total_tax_exempt_area += (asset.tax_exempt_area || 0); // ← ДОБАВЛЕНО
grouped_assets[group_key].count += 1; grouped_assets[group_key].count += 1;
grouped_assets[group_key].asset_names.push(asset.name); grouped_assets[group_key].asset_names.push(asset.name);
}); });
@ -431,6 +429,7 @@ function group_and_create_industrial_rows_silent(frm, table_fieldname, assets, r
console.log(`Группа "${key}":`, { console.log(`Группа "${key}":`, {
количество_активов: group.count, количество_активов: group.count,
общая_площадь: group.total_area, общая_площадь: group.total_area,
tax_exempt_area: group.total_tax_exempt_area, // ← ДОБАВЛЕНО
активы: group.asset_names активы: group.asset_names
}); });
}); });
@ -473,6 +472,7 @@ function create_industrial_group_key(asset) {
function create_industrial_row_with_calculation_silent(frm, table_fieldname, asset, total_area, group_info, callback) { 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('=== create_industrial_row_with_calculation_silent ===');
console.log('Актив:', asset.name, 'Общая площадь:', total_area, 'кв.м'); console.log('Актив:', asset.name, 'Общая площадь:', total_area, 'кв.м');
console.log('Tax-exempt площадь:', group_info.total_tax_exempt_area, 'кв.м'); // ← ДОБАВЛЕНО
let row = frm.add_child(table_fieldname); let row = frm.add_child(table_fieldname);
console.log('Строка добавлена в таблицу'); console.log('Строка добавлена в таблицу');
@ -518,6 +518,12 @@ function fill_industrial_row_fields(row, asset, total_area, group_info) {
row.torpaqsahəsikvmetrləümumisahə = total_area; row.torpaqsahəsikvmetrləümumisahə = total_area;
console.log('Общая площадь:', total_area, 'м²'); console.log('Общая площадь:', total_area, 'м²');
} }
// ← ДОБАВЛЕНО: Заполнение tax_exempt_area
if (group_info.total_tax_exempt_area > 0) {
row.torpaqsahəsikvmetrləocümlədənvergiyəcəlbolunmayansahə = group_info.total_tax_exempt_area;
console.log('Tax-exempt площадь:', group_info.total_tax_exempt_area, 'м²');
}
} }
function calculate_industrial_tax_for_row_silent(row, asset, total_area, group_info, callback) { function calculate_industrial_tax_for_row_silent(row, asset, total_area, group_info, callback) {

View File

@ -468,7 +468,7 @@ def get_assets_for_year(asset_type, year):
'cadastral_district_code', 'cadastral_district_code',
'quality_groups', 'quality_groups',
'agricultural_land_purpose', 'agricultural_land_purpose',
'area', # ← ИЗМЕНЕНО с hectare на area 'area',
'purchase_date' 'purchase_date'
] ]
asset_type_short = "Сельхоз земли" asset_type_short = "Сельхоз земли"
@ -480,7 +480,8 @@ def get_assets_for_year(asset_type, year):
'territorial_unit_code', 'territorial_unit_code',
'industrial_land_purpose', 'industrial_land_purpose',
'mining_note', 'mining_note',
'area', # ← ИЗМЕНЕНО с hectare на area 'area',
'tax_exempt_area', # ← ДОБАВЛЕНО
'purchase_date' 'purchase_date'
] ]
asset_type_short = "Промышленные земли" asset_type_short = "Промышленные земли"
@ -508,7 +509,8 @@ 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)
area_value = asset.get('area', 0) area_value = asset.get('area', 0)
frappe.log_error("Asset Matched", f"Актив подходит: {asset['name']} (дата: {asset['purchase_date']}, площадь: {area_value})") tax_exempt = asset.get('tax_exempt_area', 0)
frappe.log_error("Asset Matched", f"Актив подходит: {asset['name']} (дата: {asset['purchase_date']}, площадь: {area_value}, tax_exempt: {tax_exempt})")
else: else:
skipped_wrong_year += 1 skipped_wrong_year += 1
frappe.log_error("Asset Skipped", f"Актив пропущен: {asset['name']} (год: {purchase_year}, нужен {target_year})") frappe.log_error("Asset Skipped", f"Актив пропущен: {asset['name']} (год: {purchase_year}, нужен {target_year})")