property tax return 507 field filling

This commit is contained in:
Ali 2026-01-05 18:58:52 +04:00
parent e3dccf1258
commit 0233c72425
2 changed files with 85 additions and 0 deletions

View File

@ -422,6 +422,9 @@ function reload_property_tax_data(frm) {
// Update Əlavə 2 (Taxable)
update_child_table_values(frm, 'elave_2', r.message.elave_2_data);
// Update vergi_hesab_4cu_1 based on il_erzinde checkbox
update_vergi_hesab_4cu_1(frm, company);
frm.refresh_fields();
frappe.show_alert({
@ -494,6 +497,37 @@ function update_child_table_values(frm, table_name, data_map) {
}
}
// ==================== UPDATE VERGI_HESAB_4CU_1 ====================
// Update the 'ayla' field in vergi_hesab_4cu_1 based on earliest Asset
function update_vergi_hesab_4cu_1(frm, company) {
if (frm.doc.il_erzinde) {
// Расчет месяцев для İl Ərzində режима
frappe.call({
method: 'taxes_az.taxes_az.doctype.property_tax_return.property_tax_return.calculate_months_for_vergi_hesab_4cu_1',
args: {
company: company,
year: frm.doc.il
},
callback: function(r) {
if (r.message !== undefined && frm.doc.vergi_hesab_4cu_1 && frm.doc.vergi_hesab_4cu_1.length > 0) {
// Обновить первую строку
const first_row = frm.doc.vergi_hesab_4cu_1[0];
frappe.model.set_value(first_row.doctype, first_row.name, 'ayla', r.message);
frm.refresh_field('vergi_hesab_4cu_1');
}
}
});
} else {
// Очистить поле ayla если tam_il
if (frm.doc.vergi_hesab_4cu_1 && frm.doc.vergi_hesab_4cu_1.length > 0) {
const first_row = frm.doc.vergi_hesab_4cu_1[0];
frappe.model.set_value(first_row.doctype, first_row.name, 'ayla', 0);
frm.refresh_field('vergi_hesab_4cu_1');
}
}
}
// ==================== MINIMUM ASSET VALUE VALIDATION ====================
// Validate that asset values in columns 503.1 and 503.2 are >= 500 AZN
// when il_erzinde mode is selected

View File

@ -757,3 +757,54 @@ def get_asset_value_adjustments(company, from_date, to_date, asset_names):
}
return adjustment_map
@frappe.whitelist()
def calculate_months_for_vergi_hesab_4cu_1(company, year):
"""
Находит самый ранний Asset по available_for_use_date в указанном году
и возвращает количество месяцев от этого месяца до конца года (включительно)
Args:
company: Название компании
year: Год для поиска (integer)
Returns:
Integer: Количество месяцев (1-12) или 0 если нет Assets
"""
try:
# Найти самый ранний Asset в году
# docstatus = 1 означает статус "Submitted" (не Draft и не Cancelled)
earliest_asset = frappe.db.sql("""
SELECT MIN(available_for_use_date) as earliest_date
FROM `tabAsset`
WHERE company = %(company)s
AND docstatus = 1
AND available_for_use_date IS NOT NULL
AND YEAR(available_for_use_date) = %(year)s
""", {
'company': company,
'year': year
}, as_dict=True)
if not earliest_asset or not earliest_asset[0].get('earliest_date'):
return 0
earliest_date = earliest_asset[0]['earliest_date']
# Получить номер месяца (1-12)
from datetime import datetime
if isinstance(earliest_date, str):
earliest_date = datetime.strptime(earliest_date, '%Y-%m-%d')
month = earliest_date.month
# Вычислить количество месяцев от этого месяца до конца года (не включая этот месяц)
# Январь (1) → 12-1=11 месяцев, Март (3) → 12-3=9 месяцев, Сентябрь (9) → 12-9=3 месяца
months_count = 12 - month
return months_count
except Exception as e:
frappe.log_error(f"Error in calculate_months_for_vergi_hesab_4cu_1: {str(e)}", "Property Tax Return")
return 0