From d4fe4a53f4ad667b9b53885812c98faa3fa0b788 Mon Sep 17 00:00:00 2001 From: Away <010109ali@gmail.com> Date: Tue, 9 Sep 2025 16:48:17 +0000 Subject: [PATCH] push from taxes --- taxes_az/fixtures/client_script.json | 57 ++++--- ...ration_of_withholding_tax_on_winnings.json | 18 +-- ...thholding_tax_on_winnings_vergi_hesab.json | 10 +- .../land_tax_declaration.json | 153 +++++++++--------- .../land_tax_declaration_elave_1.json | 51 +++--- .../land_tax_declaration_elave_2.json | 24 +-- .../land_tax_declaration_vergi_hesab.json | 8 +- 7 files changed, 166 insertions(+), 155 deletions(-) diff --git a/taxes_az/fixtures/client_script.json b/taxes_az/fixtures/client_script.json index bb4c940..f26b58d 100644 --- a/taxes_az/fixtures/client_script.json +++ b/taxes_az/fixtures/client_script.json @@ -2,6 +2,7 @@ { "docstatus": 0, "doctype": "Client Script", +<<<<<<< Updated upstream "dt": "Property tax return", "enabled": 0, "modified": "2025-08-04 19:19:28.002273", @@ -107,6 +108,14 @@ "module": "Taxes Az", "name": "Formula_Editor_Script_for_Declaration of mining tax", "script": "// Generated by Formula Editor\nfrappe.ui.form.on(\"Declaration of mining tax\", {\n \"refresh\": async function(frm) {\n initialize_table_row_formulas(frm);\n calculate_721hesablanmışvergiməbləğinincəmi(frm);\n calculate_722vergiməcəlləsinin(frm);\n },\n \"ay\": async function(frm) {\n await calculate_721hesablanmışvergiməbləğinincəmi(frm); // order: 10\n \n // Формула строки 1 в таблице faydalı_qazıntıların_hasilatı (порядок: 1)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 1) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 0;\n const formula = \"report(Mişar daşları)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 1 в таблице faydalı_qazıntıların_hasilatı (порядок: 2)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 1) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 0;\n const formula = \"report(Mişar daşları) * 2\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 2 в таблице faydalı_qazıntıların_hasilatı (порядок: 3)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 2) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 1;\n const formula = \"report(Üzlük daşları)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 2 в таблице faydalı_qazıntıların_hasilatı (порядок: 4)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 2) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 1;\n const formula = \"report(Üzlük daşları) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 3 в таблице faydalı_qazıntıların_hasilatı (порядок: 5)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 3) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 2;\n const formula = \"report(Seolit)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 3 в таблице faydalı_qazıntıların_hasilatı (порядок: 6)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 3) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 2;\n const formula = \"report(Seolit) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 4 в таблице faydalı_qazıntıların_hasilatı (порядок: 7)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 4) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 3;\n const formula = \"report(Barit)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 4 в таблице faydalı_qazıntıların_hasilatı (порядок: 8)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 4) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 3;\n const formula = \"report(Barit) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 5 в таблице faydalı_qazıntıların_hasilatı (порядок: 9)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 5) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 4;\n const formula = \"report(Yüngül doldurucuların istehsalı üçün gillər)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 5 в таблице faydalı_qazıntıların_hasilatı (порядок: 10)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 5) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 4;\n const formula = \"report(Yüngül doldurucuların istehsalı üçün gillər) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 6 в таблице faydalı_qazıntıların_hasilatı (порядок: 11)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 6) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 5;\n const formula = \"report(Vulkan külü və pemza)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 6 в таблице faydalı_qazıntıların_hasilatı (порядок: 12)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 6) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 5;\n const formula = \"report(Vulkan külü və pemza) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 7 в таблице faydalı_qazıntıların_hasilatı (порядок: 13)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 7) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 6;\n const formula = \"report(Kvars qumları)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 7 в таблице faydalı_qazıntıların_hasilatı (порядок: 14)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 7) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 6;\n const formula = \"report(Kvars qumları) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 8 в таблице faydalı_qazıntıların_hasilatı (порядок: 15)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 8) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 7;\n const formula = \"report(Sement xammalı)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 8 в таблице faydalı_qazıntıların_hasilatı (порядок: 16)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 8) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 7;\n const formula = \"report(Sement xammalı) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 9 в таблице faydalı_qazıntıların_hasilatı (порядок: 17)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 9) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 8;\n const formula = \"report(Duz)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 9 в таблице faydalı_qazıntıların_hasilatı (порядок: 18)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 9) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 8;\n const formula = \"report(Duz) * 6\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 10 в таблице faydalı_qazıntıların_hasilatı (порядок: 19)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 10) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 9;\n const formula = \"report(Qiymətli və yarımqiymətli bəzək daşları)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 10 в таблице faydalı_qazıntıların_hasilatı (порядок: 20)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 10) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 9;\n const formula = \"report(Qiymətli və yarımqiymətli bəzək daşları) * 6\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 11 в таблице faydalı_qazıntıların_hasilatı (порядок: 21)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 11) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 10;\n const formula = \"report(Yodlu bromlu sular)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 11 в таблице faydalı_qazıntıların_hasilatı (порядок: 22)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 11) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 10;\n const formula = \"report(Yodlu bromlu sular) * 0.04\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 12 в таблице faydalı_qazıntıların_hasilatı (порядок: 23)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 12) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 11;\n const formula = \"report(Mineral sular)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 12 в таблице faydalı_qazıntıların_hasilatı (порядок: 24)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 12) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 11;\n const formula = \"report(Mineral sular) * 10\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 13 в таблице faydalı_qazıntıların_hasilatı (порядок: 25)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 13) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 12;\n const formula = \"report(Bentonit gillər)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 13 в таблице faydalı_qazıntıların_hasilatı (порядок: 26)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 13) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 12;\n const formula = \"report(Bentonit gillər) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 14 в таблице faydalı_qazıntıların_hasilatı (порядок: 27)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 14) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 13;\n const formula = \"report(Kərpic-kirəmit gilləri)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 14 в таблице faydalı_qazıntıların_hasilatı (порядок: 28)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 14) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 13;\n const formula = \"report(Kərpic-kirəmit gilləri) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 15 в таблице faydalı_qazıntıların_hasilatı (порядок: 29)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 15) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 14;\n const formula = \"report(Tikinti qumları)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 15 в таблице faydalı_qazıntıların_hasilatı (порядок: 30)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 15) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 14;\n const formula = \"report(Tikinti qumları) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 16 в таблице faydalı_qazıntıların_hasilatı (порядок: 31)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 16) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 15;\n const formula = \"report(Çınqıl xammalı)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 16 в таблице faydalı_qazıntıların_hasilatı (порядок: 32)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 16) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 15;\n const formula = \"report(Çınqıl xammalı) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 17 в таблице faydalı_qazıntıların_hasilatı (порядок: 33)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 17) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 16;\n const formula = \"report(Gips, gəc)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 17 в таблице faydalı_qazıntıların_hasilatı (порядок: 34)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 17) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 16;\n const formula = \"report(Gips, gəc) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 1 в таблице topdansatış_qiyməti_ilə (порядок: 35)\n if (frm.doc.topdansatış_qiyməti_ilə && frm.doc.topdansatış_qiyməti_ilə.length >= 1) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 0;\n const formula = \"report(Xam neft-Topdan satış qiyməti)\";\n \n await calculate_table_row_field(frm, \"topdansatış_qiyməti_ilə\", rowIndex, \"topdansatışqiymətimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 2 в таблице topdansatış_qiyməti_ilə (порядок: 36)\n if (frm.doc.topdansatış_qiyməti_ilə && frm.doc.topdansatış_qiyməti_ilə.length >= 2) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 1;\n const formula = \"report(Təbii qaz-Topdan satış qiyməti)\";\n \n await calculate_table_row_field(frm, \"topdansatış_qiyməti_ilə\", rowIndex, \"topdansatışqiymətimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 3 в таблице topdansatış_qiyməti_ilə (порядок: 37)\n if (frm.doc.topdansatış_qiyməti_ilə && frm.doc.topdansatış_qiyməti_ilə.length >= 3) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 2;\n const formula = \"report(Filiz faydalı qazıntıları: bütün növ metallar-Topdan satış qiyməti)\";\n \n await calculate_table_row_field(frm, \"topdansatış_qiyməti_ilə\", rowIndex, \"topdansatışqiymətimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 1 в таблице topdansatış_qiyməti_ilə (порядок: 38)\n if (frm.doc.topdansatış_qiyməti_ilə && frm.doc.topdansatış_qiyməti_ilə.length >= 1) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 0;\n const formula = \"report(Xam neft-Topdan satış qiyməti) * 26/ 100\";\n \n await calculate_table_row_field(frm, \"topdansatış_qiyməti_ilə\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 2 в таблице topdansatış_qiyməti_ilə (порядок: 39)\n if (frm.doc.topdansatış_qiyməti_ilə && frm.doc.topdansatış_qiyməti_ilə.length >= 2) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 1;\n const formula = \"report(Təbii qaz-Topdan satış qiyməti) * 20/ 100\";\n \n await calculate_table_row_field(frm, \"topdansatış_qiyməti_ilə\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 3 в таблице topdansatış_qiyməti_ilə (порядок: 40)\n if (frm.doc.topdansatış_qiyməti_ilə && frm.doc.topdansatış_qiyməti_ilə.length >= 3) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 2;\n const formula = \"report(Filiz faydalı qazıntıları: bütün növ metallar-Topdan satış qiyməti) * 3/ 100\";\n \n await calculate_table_row_field(frm, \"topdansatış_qiyməti_ilə\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n await calculate_722vergiməcəlləsinin(frm); // order: 999\n },\n \"il\": async function(frm) {\n await calculate_721hesablanmışvergiməbləğinincəmi(frm); // order: 10\n \n // Формула строки 1 в таблице faydalı_qazıntıların_hasilatı (порядок: 1)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 1) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 0;\n const formula = \"report(Mişar daşları)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 1 в таблице faydalı_qazıntıların_hasilatı (порядок: 2)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 1) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 0;\n const formula = \"report(Mişar daşları) * 2\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 2 в таблице faydalı_qazıntıların_hasilatı (порядок: 3)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 2) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 1;\n const formula = \"report(Üzlük daşları)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 2 в таблице faydalı_qazıntıların_hasilatı (порядок: 4)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 2) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 1;\n const formula = \"report(Üzlük daşları) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 3 в таблице faydalı_qazıntıların_hasilatı (порядок: 5)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 3) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 2;\n const formula = \"report(Seolit)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 3 в таблице faydalı_qazıntıların_hasilatı (порядок: 6)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 3) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 2;\n const formula = \"report(Seolit) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 4 в таблице faydalı_qazıntıların_hasilatı (порядок: 7)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 4) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 3;\n const formula = \"report(Barit)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 4 в таблице faydalı_qazıntıların_hasilatı (порядок: 8)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 4) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 3;\n const formula = \"report(Barit) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 5 в таблице faydalı_qazıntıların_hasilatı (порядок: 9)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 5) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 4;\n const formula = \"report(Yüngül doldurucuların istehsalı üçün gillər)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 5 в таблице faydalı_qazıntıların_hasilatı (порядок: 10)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 5) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 4;\n const formula = \"report(Yüngül doldurucuların istehsalı üçün gillər) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 6 в таблице faydalı_qazıntıların_hasilatı (порядок: 11)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 6) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 5;\n const formula = \"report(Vulkan külü və pemza)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 6 в таблице faydalı_qazıntıların_hasilatı (порядок: 12)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 6) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 5;\n const formula = \"report(Vulkan külü və pemza) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 7 в таблице faydalı_qazıntıların_hasilatı (порядок: 13)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 7) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 6;\n const formula = \"report(Kvars qumları)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 7 в таблице faydalı_qazıntıların_hasilatı (порядок: 14)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 7) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 6;\n const formula = \"report(Kvars qumları) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 8 в таблице faydalı_qazıntıların_hasilatı (порядок: 15)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 8) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 7;\n const formula = \"report(Sement xammalı)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 8 в таблице faydalı_qazıntıların_hasilatı (порядок: 16)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 8) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 7;\n const formula = \"report(Sement xammalı) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 9 в таблице faydalı_qazıntıların_hasilatı (порядок: 17)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 9) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 8;\n const formula = \"report(Duz)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 9 в таблице faydalı_qazıntıların_hasilatı (порядок: 18)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 9) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 8;\n const formula = \"report(Duz) * 6\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 10 в таблице faydalı_qazıntıların_hasilatı (порядок: 19)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 10) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 9;\n const formula = \"report(Qiymətli və yarımqiymətli bəzək daşları)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 10 в таблице faydalı_qazıntıların_hasilatı (порядок: 20)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 10) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 9;\n const formula = \"report(Qiymətli və yarımqiymətli bəzək daşları) * 6\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 11 в таблице faydalı_qazıntıların_hasilatı (порядок: 21)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 11) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 10;\n const formula = \"report(Yodlu bromlu sular)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 11 в таблице faydalı_qazıntıların_hasilatı (порядок: 22)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 11) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 10;\n const formula = \"report(Yodlu bromlu sular) * 0.04\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 12 в таблице faydalı_qazıntıların_hasilatı (порядок: 23)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 12) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 11;\n const formula = \"report(Mineral sular)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 12 в таблице faydalı_qazıntıların_hasilatı (порядок: 24)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 12) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 11;\n const formula = \"report(Mineral sular) * 10\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 13 в таблице faydalı_qazıntıların_hasilatı (порядок: 25)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 13) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 12;\n const formula = \"report(Bentonit gillər)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 13 в таблице faydalı_qazıntıların_hasilatı (порядок: 26)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 13) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 12;\n const formula = \"report(Bentonit gillər) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 14 в таблице faydalı_qazıntıların_hasilatı (порядок: 27)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 14) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 13;\n const formula = \"report(Kərpic-kirəmit gilləri)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 14 в таблице faydalı_qazıntıların_hasilatı (порядок: 28)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 14) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 13;\n const formula = \"report(Kərpic-kirəmit gilləri) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 15 в таблице faydalı_qazıntıların_hasilatı (порядок: 29)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 15) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 14;\n const formula = \"report(Tikinti qumları)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 15 в таблице faydalı_qazıntıların_hasilatı (порядок: 30)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 15) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 14;\n const formula = \"report(Tikinti qumları) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 16 в таблице faydalı_qazıntıların_hasilatı (порядок: 31)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 16) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 15;\n const formula = \"report(Çınqıl xammalı)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 16 в таблице faydalı_qazıntıların_hasilatı (порядок: 32)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 16) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 15;\n const formula = \"report(Çınqıl xammalı) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 17 в таблице faydalı_qazıntıların_hasilatı (порядок: 33)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 17) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 16;\n const formula = \"report(Gips, gəc)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 17 в таблице faydalı_qazıntıların_hasilatı (порядок: 34)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 17) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 16;\n const formula = \"report(Gips, gəc) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 1 в таблице topdansatış_qiyməti_ilə (порядок: 35)\n if (frm.doc.topdansatış_qiyməti_ilə && frm.doc.topdansatış_qiyməti_ilə.length >= 1) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 0;\n const formula = \"report(Xam neft-Topdan satış qiyməti)\";\n \n await calculate_table_row_field(frm, \"topdansatış_qiyməti_ilə\", rowIndex, \"topdansatışqiymətimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 2 в таблице topdansatış_qiyməti_ilə (порядок: 36)\n if (frm.doc.topdansatış_qiyməti_ilə && frm.doc.topdansatış_qiyməti_ilə.length >= 2) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 1;\n const formula = \"report(Təbii qaz-Topdan satış qiyməti)\";\n \n await calculate_table_row_field(frm, \"topdansatış_qiyməti_ilə\", rowIndex, \"topdansatışqiymətimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 3 в таблице topdansatış_qiyməti_ilə (порядок: 37)\n if (frm.doc.topdansatış_qiyməti_ilə && frm.doc.topdansatış_qiyməti_ilə.length >= 3) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 2;\n const formula = \"report(Filiz faydalı qazıntıları: bütün növ metallar-Topdan satış qiyməti)\";\n \n await calculate_table_row_field(frm, \"topdansatış_qiyməti_ilə\", rowIndex, \"topdansatışqiymətimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 1 в таблице topdansatış_qiyməti_ilə (порядок: 38)\n if (frm.doc.topdansatış_qiyməti_ilə && frm.doc.topdansatış_qiyməti_ilə.length >= 1) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 0;\n const formula = \"report(Xam neft-Topdan satış qiyməti) * 26/ 100\";\n \n await calculate_table_row_field(frm, \"topdansatış_qiyməti_ilə\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 2 в таблице topdansatış_qiyməti_ilə (порядок: 39)\n if (frm.doc.topdansatış_qiyməti_ilə && frm.doc.topdansatış_qiyməti_ilə.length >= 2) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 1;\n const formula = \"report(Təbii qaz-Topdan satış qiyməti) * 20/ 100\";\n \n await calculate_table_row_field(frm, \"topdansatış_qiyməti_ilə\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 3 в таблице topdansatış_qiyməti_ilə (порядок: 40)\n if (frm.doc.topdansatış_qiyməti_ilə && frm.doc.topdansatış_qiyməti_ilə.length >= 3) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 2;\n const formula = \"report(Filiz faydalı qazıntıları: bütün növ metallar-Topdan satış qiyməti) * 3/ 100\";\n \n await calculate_table_row_field(frm, \"topdansatış_qiyməti_ilə\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n await calculate_722vergiməcəlləsinin(frm); // order: 999\n },\n \"faydalı_qazıntıların_hasilatı_add\": function(frm) {\n // Обновляем индексы строк после добавления новой строки\n setTimeout(() => initialize_table_row_formulas(frm), 100);\n },\n \"faydalı_qazıntıların_hasilatı_remove\": function(frm) {\n // Обновляем индексы строк после удаления строки\n setTimeout(() => initialize_table_row_formulas(frm), 100);\n },\n \"topdansatış_qiyməti_ilə_add\": function(frm) {\n // Обновляем индексы строк после добавления новой строки\n setTimeout(() => initialize_table_row_formulas(frm), 100);\n },\n \"topdansatış_qiyməti_ilə_remove\": function(frm) {\n // Обновляем индексы строк после удаления строки\n setTimeout(() => initialize_table_row_formulas(frm), 100);\n },\n});\n\n\n // Функция для обработки и выполнения формул\n async function processFormula(frm, formula) {\n try {\n // Проверяем наличие вызовов отчетов\n if (formula.includes(\"report(\")) {\n // Извлекаем все вызовы report() из формулы\n const reportRegex = /report\\(([^)]+)\\)/g;\n let match;\n let processedFormula = formula;\n \n // Массив для хранения промисов запросов к отчетам\n const reportPromises = [];\n const reportPlaceholders = [];\n \n // Находим все вызовы report() и заменяем их на плейсхолдеры\n while ((match = reportRegex.exec(formula)) !== null) {\n const fullMatch = match[0]; // report(fieldName)\n const fieldName = match[1]; // fieldName\n \n // Создаем уникальный плейсхолдер\n const placeholder = `__REPORT_PLACEHOLDER_${reportPromises.length}__`;\n \n // Ищем данные отчета в хранилище\n const reportFields = JSON.parse(frm.doc.report_fields_storage || \"{}\");\n const reportField = Object.values(reportFields).find(f => f.name === fieldName);\n \n if (reportField) {\n // Добавляем промис запроса к отчету\n reportPromises.push(\n getReportFieldValue(\n frm,\n reportField.report, \n JSON.parse(reportField.filters_json || \"{}\"), \n reportField.field_name, \n reportField.aggregation || 'sum'\n )\n );\n \n // Запоминаем соответствие плейсхолдера и вызова\n reportPlaceholders.push({\n placeholder: placeholder,\n original: fullMatch\n });\n \n // Заменяем вызов отчета на плейсхолдер\n processedFormula = processedFormula.replace(fullMatch, placeholder);\n }\n }\n \n // Если нашли вызовы отчетов, ждем выполнения всех запросов\n if (reportPromises.length > 0) {\n const reportResults = await Promise.all(reportPromises);\n \n // Заменяем плейсхолдеры на результаты\n for (let i = 0; i < reportPlaceholders.length; i++) {\n // Убедимся, что результат - числовое значение\n const reportValue = reportResults[i] !== undefined ? Number(reportResults[i]) : 0;\n processedFormula = processedFormula.replace(\n reportPlaceholders[i].placeholder, \n reportValue\n );\n }\n \n // Теперь формула не содержит вызовов report(), обрабатываем её обычным способом\n let transformResult = transform_expression(processedFormula, false);\n \n // Если есть внешняя трансформация, применяем её\n let result;\n if (transformResult && transformResult.transformed) {\n result = eval(transformResult.transformed);\n } else {\n // Иначе просто вычисляем выражение\n result = eval(processedFormula);\n }\n \n // Возвращаем результат\n return isNaN(result) ? 0 : result;\n }\n }\n \n // Стандартная обработка для формул без отчетов\n let transformResult = transform_expression(formula, false);\n let result = eval(transformResult.transformed);\n return isNaN(result) ? 0 : result;\n } catch (e) {\n return 0;\n }\n }\n\n\n // Функция для расчета универсальных полей\n async function calculate_universal_fields(frm) {\n \n }\n \n // Функция для обработки квартала (rüb) и года (il)\n function processQuarterDateField(docValues) {\n // Проверяем, есть ли у нас значения rüb и il\n if (docValues && docValues.rüb && docValues.il) {\n // Получаем номер квартала (преобразуем из строки вида \"1 Rüb\" в число 1)\n const quarterStr = docValues.rüb;\n const quarterMatch = quarterStr.match(/(\\d+)/);\n \n if (!quarterMatch) {\n return null;\n }\n \n const quarterNum = parseInt(quarterMatch[1]);\n \n // Получаем год из поля il или используем текущий год\n let year = docValues.il || new Date().getFullYear();\n \n // Определяем начальный и конечный месяц квартала\n let startMonth, endMonth;\n \n switch(quarterNum) {\n case 1:\n startMonth = 1; // Январь\n endMonth = 3; // Март\n break;\n case 2:\n startMonth = 4; // Апрель\n endMonth = 6; // Июнь\n break;\n case 3:\n startMonth = 7; // Июль\n endMonth = 9; // Сентябрь\n break;\n case 4:\n startMonth = 10; // Октябрь\n endMonth = 12; // Декабрь\n break;\n default:\n return null;\n }\n \n // Определяем первый день квартала (1-е число начального месяца)\n const firstDay = new Date(year, startMonth - 1, 1);\n \n // Последний день квартала (последнее число конечного месяца)\n const lastDay = new Date(year, endMonth, 0);\n \n // Форматируем даты в формате YYYY-MM-DD\n const firstDayStr = `${year}-${String(startMonth).padStart(2, '0')}-01`;\n const lastDayStr = `${year}-${String(endMonth).padStart(2, '0')}-${String(lastDay.getDate()).padStart(2, '0')}`; \n \n // Возвращаем объект с диапазоном дат\n return {\n start: firstDayStr,\n end: lastDayStr\n };\n }\n \n // Если это не специальное поле или значение не распознано, возвращаем null\n return null;\n }\n \n // Функция для обработки специальных полей с азербайджанскими месяцами\n function processAzerbayjanDateField(docValues) {\n // Словарь для сопоставления названий месяцев с их номерами\n const monthNames = {\n \"Yanvar\": 1,\n \"Fevral\": 2,\n \"Mart\": 3,\n \"Aprel\": 4,\n \"May\": 5,\n \"İyun\": 6,\n \"İyul\": 7,\n \"Avqust\": 8,\n \"Sentyabr\": 9,\n \"Oktyabr\": 10,\n \"Noyabr\": 11,\n \"Dekabr\": 12\n };\n \n // Проверяем наличие квартала (rüb) и года (il)\n if (docValues && docValues.rüb && docValues.il) {\n // Вызываем специальную функцию для обработки квартала\n return processQuarterDateField(docValues);\n }\n \n // Проверяем, есть ли у нас значения ay и il\n if (docValues && docValues.ay && monthNames[docValues.ay]) {\n // Получаем номер месяца\n const monthNum = monthNames[docValues.ay];\n \n // Получаем год из поля il или используем текущий год\n let year = docValues.il || new Date().getFullYear();\n \n // Определяем первый день месяца (1-е число)\n const firstDay = new Date(year, monthNum - 1, 1);\n \n // Последний день месяца (получаем последнее число месяца)\n const lastDay = new Date(year, monthNum, 0);\n \n // Форматируем даты в формате YYYY-MM-DD\n const firstDayStr = `${year}-${String(monthNum).padStart(2, '0')}-01`;\n const lastDayStr = `${year}-${String(monthNum).padStart(2, '0')}-${String(lastDay.getDate()).padStart(2, '0')}`; \n \n // Возвращаем объект с диапазоном дат\n return {\n start: firstDayStr,\n end: lastDayStr\n };\n }\n \n // Если это не специальное поле или значение не распознано, возвращаем null\n return null;\n }\n \n\n\n// Функция для обработки азербайджанских дат\nfunction processAzerbayjanDateField(docValues) {\n // Словарь для сопоставления названий месяцев с их номерами\n const monthNames = {\n \"Yanvar\": 1,\n \"Fevral\": 2,\n \"Mart\": 3,\n \"Aprel\": 4,\n \"May\": 5,\n \"İyun\": 6,\n \"İyul\": 7,\n \"Avqust\": 8,\n \"Sentyabr\": 9,\n \"Oktyabr\": 10,\n \"Noyabr\": 11,\n \"Dekabr\": 12\n };\n \n // Проверяем наличие квартала (rüb) и года (il)\n if (docValues && docValues.rüb && docValues.il) {\n // Получаем номер квартала (преобразуем из строки вида \"1 Rüb\" в число 1)\n const quarterStr = docValues.rüb;\n const quarterMatch = quarterStr.match(/(\\d+)/);\n \n if (!quarterMatch) {\n return null;\n }\n \n const quarterNum = parseInt(quarterMatch[1]);\n \n // Получаем год из поля il или используем текущий год\n let year = docValues.il || new Date().getFullYear();\n \n // Определяем начальный и конечный месяц квартала\n let startMonth, endMonth;\n \n switch(quarterNum) {\n case 1:\n startMonth = 1; // Январь\n endMonth = 3; // Март\n break;\n case 2:\n startMonth = 4; // Апрель\n endMonth = 6; // Июнь\n break;\n case 3:\n startMonth = 7; // Июль\n endMonth = 9; // Сентябрь\n break;\n case 4:\n startMonth = 10; // Октябрь\n endMonth = 12; // Декабрь\n break;\n default:\n return null;\n }\n \n // Определяем первый день квартала (1-е число начального месяца)\n const firstDay = new Date(year, startMonth - 1, 1);\n \n // Последний день квартала (последнее число конечного месяца)\n const lastDay = new Date(year, endMonth, 0);\n \n // Форматируем даты в формате YYYY-MM-DD\n const firstDayStr = year + \"-\" + String(startMonth).padStart(2, '0') + \"-01\";\n const lastDayStr = year + \"-\" + String(endMonth).padStart(2, '0') + \"-\" + String(lastDay.getDate()).padStart(2, '0'); \n \n // Возвращаем объект с диапазоном дат\n return {\n start: firstDayStr,\n end: lastDayStr\n };\n }\n \n // Проверяем, есть ли у нас значения ay и il\n if (docValues && docValues.ay && monthNames[docValues.ay]) {\n // Получаем номер месяца\n const monthNum = monthNames[docValues.ay];\n \n // Получаем год из поля il или используем текущий год\n let year = docValues.il || new Date().getFullYear();\n \n // Определяем первый день месяца (1-е число)\n const firstDay = new Date(year, monthNum - 1, 1);\n \n // Последний день месяца (получаем последнее число месяца)\n const lastDay = new Date(year, monthNum, 0);\n \n // Форматируем даты в формате YYYY-MM-DD\n const firstDayStr = year + \"-\" + String(monthNum).padStart(2, '0') + \"-01\";\n const lastDayStr = year + \"-\" + String(monthNum).padStart(2, '0') + \"-\" + String(lastDay.getDate()).padStart(2, '0'); \n \n // Возвращаем объект с диапазоном дат\n return {\n start: firstDayStr,\n end: lastDayStr\n };\n }\n \n // Если это не специальное поле или значение не распознано, возвращаем null\n return null;\n}\n\nasync function getReportFieldValue(frm, reportName, filters, fieldName, aggregation) {\n try {\n // Обрабатываем фильтры с возможными ссылками на поля документа\n const processedFilters = {};\n \n for (const key in filters) {\n let value = filters[key];\n \n // Проверяем, является ли значение ссылкой на поле документа\n if (typeof value === 'string' && value.startsWith('doc.')) {\n const docField = value.substring(4);\n if (frm.doc[docField] !== undefined) {\n processedFilters[key] = frm.doc[docField];\n continue;\n }\n }\n \n // Обработка специальных переменных\n if (typeof value === 'string' && value.startsWith('$')) {\n switch (value) {\n case '$DefaultCompany':\n // Получаем компанию по умолчанию из настроек или документа\n processedFilters[key] = frm.doc.company || frappe.defaults.get_user_default(\"Company\");\n continue;\n \n case '$AyIlSpecial':\n // Обрабатываем специальные даты для азербайджанских месяцев/кварталов\n const dateRange = processAzerbayjanDateField(frm.doc);\n if (dateRange) {\n // Для полей from_date и to_date используем соответствующие значения\n if (key === 'from_date') {\n processedFilters[key] = dateRange.start;\n } else if (key === 'to_date') {\n processedFilters[key] = dateRange.end;\n } else {\n // Для других полей используем начальную дату\n processedFilters[key] = dateRange.start;\n }\n } else {\n // Если не удалось получить диапазон дат, используем текущую дату\n processedFilters[key] = frappe.datetime.get_today();\n }\n continue;\n \n default:\n // Для других $-переменных оставляем как есть\n processedFilters[key] = value;\n continue;\n }\n }\n \n // Обычные значения\n processedFilters[key] = value;\n }\n \n // Проверяем кеш\n if (!window.reportCache) window.reportCache = {};\n \n const cacheKey = reportName + \"|\" + JSON.stringify(processedFilters) + \"|\" + fieldName + \"|\" + aggregation;\n const now = new Date().getTime();\n \n if (window.reportCache[cacheKey] && \n window.reportCache[cacheKey].timestamp > now - 5 * 60 * 1000) {\n return window.reportCache[cacheKey].value;\n }\n \n // Выполняем запрос к серверу\n try {\n const result = await frappe.call({\n method: \"formula_editor.api.run_report_for_formula\",\n args: {\n report_name: reportName,\n filters: processedFilters,\n field_name: fieldName\n },\n freeze: false\n });\n \n if (result && result.message !== undefined) {\n if (result.message.error) {\n console.error('Report error:', result.message.error);\n return 0;\n } \n \n let value = parseFloat(result.message);\n if (isNaN(value)) value = 0;\n \n // Округляем до 2 знаков после запятой\n value = Math.round(value * 100) / 100;\n \n // Сохраняем в кеш\n window.reportCache[cacheKey] = {\n value: value,\n timestamp: now\n };\n \n return value;\n }\n } catch (err) {\n console.error('Report field error:', err);\n }\n \n return 0;\n } catch (error) {\n console.error('getReportFieldValue error:', error);\n return 0;\n }\n}\n\n\n function transform_expression(expression, for_child_table = false, table_name = null) {\n let transformed = expression;\n let needsAsync = false;\n let reportCalls = [];\n\n // === Обработка report(...) ===\n const reportRegex = /report\\(([^)]+)\\)/g;\n let match;\n \n // Находим все вызовы report() в выражении\n while ((match = reportRegex.exec(expression)) !== null) {\n const reportName = match[1]; // Имя поля отчета\n const fullMatch = match[0]; // Полный текст match - \"report(xyz)\"\n needsAsync = true;\n \n // Создаем уникальный плейсхолдер\n const placeholder = `__REPORT_PLACEHOLDER_${reportCalls.length}__`;\n \n // Ищем соответствующее поле отчета по имени\n \n if (reportName === \"Xam neft\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Xam_neft___ton\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Təbii qaz\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Tebii_qaz___m3\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Filiz faydalı qazıntıları: bütün növ metallar\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Filiz_faydali_qazintilari__butun_nov_metallar___ton\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Mişar daşları\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Misar_daslari___m3\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Üzlük daşları\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Üzluk_daslari___m3\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Seolit\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Seolit___ton\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Barit\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Barit___ton\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Yüngül doldurucuların istehsalı üçün gillər\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Yungul_doldurucular_ucun_giller___m3\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Vulkan külü və pemza\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Vulkan_kulu_ve_pemza___m3\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Kvars qumları\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Kvars_qumlari___ton\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Sement xammalı\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Sement_xammali___ton\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Duz\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Duz___ton\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Qiymətli və yarımqiymətli bəzək daşları\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Qiymetli_ve_yarimqiymetli_bezek_daslari___karat___qram\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Yodlu bromlu sular\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Yodlu_bromlu_sular___m3\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Mineral sular\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Mineral_sular___m3\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Bentonit gillər\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Bentonit_giller___ton\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Kərpic-kirəmit gilləri\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Kerpic_kiremit_gilleri___m3\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Tikinti qumları\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Tikinti_qumlari___m3\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Çınqıl xammalı\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Çinqil_xammali___m3\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Gips, gəc\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Gips,_gec___ton\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Xam neft-Topdan satış qiyməti\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Xam_neft___ton_sales\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Təbii qaz-Topdan satış qiyməti\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Tebii_qaz___m3_sales\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Filiz faydalı qazıntıları: bütün növ metallar-Topdan satış qiyməti\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Filiz_faydali_qazintilari__butun_nov_metallar___ton_sales\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n }\n\n // === Обработка table(...) ===\n const tableRegex = /table\\(([^,)]+),\\s*([^,)]+),\\s*([^)]+)\\)/g;\n let tableMatch;\n while ((tableMatch = tableRegex.exec(expression)) !== null) {\n const fullMatch = tableMatch[0];\n const tableName = tableMatch[1].trim().replace(/['\"]/g, '');\n const rowNumber = tableMatch[2].trim();\n const fieldName = tableMatch[3].trim().replace(/['\"]/g, '');\n \n const replacement = `(function() { \n try {\n if (!frm.doc[\"${tableName}\"] || !frm.doc[\"${tableName}\"][${rowNumber} - 1]) {\n return 0;\n }\n const value = frm.doc[\"${tableName}\"][${rowNumber} - 1][\"${fieldName}\"];\n return parseFloat(value) || 0;\n } catch (e) {\n return 0;\n }\n })()`;\n \n transformed = transformed.replace(fullMatch, replacement);\n }\n\n // === Обработка universal полей ===\n \n\n // === Обработка val() и row() ===\n const tablePrefixes = [\"items\", \"taxes\", \"packed_items\", \"payments\", \"advances\", \"timesheets\", \"payment_schedule\", \"sales_team\"];\n\n for (const prefix of tablePrefixes) {\n const sumPattern = new RegExp(`sum\\\\(${prefix}_([^)]+)\\\\)`, 'g');\n transformed = transformed.replace(sumPattern, (m, f) => \n `(frm.doc[\"${prefix}\"] && frm.doc[\"${prefix}\"].reduce((s, r) => s + (parseFloat(r[\"${f}\"]) || 0), 0) || 0)`\n );\n\n const valPattern = new RegExp(`val\\\\(${prefix}_([^)]+)\\\\)`, 'g');\n transformed = transformed.replace(valPattern, (m, f) => \n `(frm.doc[\"${prefix}\"] && frm.doc[\"${prefix}\"].reduce((s, r) => s + (parseFloat(r[\"${f}\"]) || 0), 0) || 0)`\n );\n }\n\n if (for_child_table) {\n transformed = transformed.replace(/row\\(([^)]+)\\)/g, (m, f) => \n `(parseFloat(row[\"${f}\"]) || 0)`\n );\n\n transformed = transformed.replace(/val\\(([^)]+)\\)/g, (m, f) => {\n if (f.startsWith(table_name + '_')) {\n return `(parseFloat(row[\"${f.slice(table_name.length + 1)}\"]) || 0)`;\n }\n return `(parseFloat(frm.doc[\"${f}\"]) || 0)`;\n });\n } else {\n transformed = transformed.replace(/val\\(([^)]+)\\)/g, (m, f) => \n `(parseFloat(frm.doc[\"${f}\"]) || 0)`\n );\n\n transformed = transformed.replace(/row\\(([^)]+)\\)/g, () => \n `0 /* ERROR: row() вне табличной части */`\n );\n }\n\n return { transformed, needsAsync, reportCalls };\n }\n\n\n// Функция для получения индекса строки по её имени (name/cdn)\nfunction get_row_index(frm, tableName, rowName) {\n \n // Проверяем наличие таблицы\n if (!frm.doc[tableName]) {\n return -1;\n }\n \n // Выводим все строки для отладки\n frm.doc[tableName].forEach((row, idx) => {\n });\n \n // Ищем индекс строки по имени\n for (let i = 0; i < frm.doc[tableName].length; i++) {\n if (frm.doc[tableName][i].name === rowName) {\n return i;\n }\n }\n return -1;\n}\n\n// Функция для доступа к полям конкретных строк таблицы\nfunction table_row(tableName, rowIndex, fieldName) {\n // Проверяем наличие необходимых аргументов\n if (!tableName || rowIndex === undefined || !fieldName) {\n return 0;\n }\n \n // Преобразуем rowIndex в число (на случай, если передана строка)\n const rowIdx = parseInt(rowIndex) - 1; // Индексация с 1 для пользователя, но с 0 в массиве\n \n try {\n // Проверяем наличие таблицы и строки\n if (!frm.doc[tableName] || !frm.doc[tableName][rowIdx]) {\n return 0;\n }\n \n // Получаем значение поля\n const value = frm.doc[tableName][rowIdx][fieldName];\n \n // Проверяем на NaN и возвращаем значение или 0\n const numValue = parseFloat(value);\n if (isNaN(numValue)) {\n return 0;\n }\n return numValue;\n } catch (error) {\n return 0;\n }\n}\n\n// Функция для обновления значения поля конкретной строки таблицы\nfunction set_table_row(frm, tableName, rowIndex, fieldName, value) {\n // Проверяем наличие необходимых аргументов\n if (!frm || !tableName || rowIndex === undefined || !fieldName) {\n return false;\n }\n \n // Преобразуем rowIndex в число (на случай, если передана строка)\n const rowIdx = parseInt(rowIndex) - 1; // Индексация с 1 для пользователя, но с 0 в массиве\n \n try {\n // Проверяем наличие таблицы и строки\n if (!frm.doc[tableName] || !frm.doc[tableName][rowIdx]) {\n return false;\n }\n \n // Получаем строку таблицы\n const row = frm.doc[tableName][rowIdx];\n \n // Получаем сетевое имя cdt и cdn для Frappe\n const cdt = frm.fields_dict[tableName].grid.doctype;\n const cdn = row.name;\n \n // Проверяем, является ли значение NaN, и если да, заменяем его на 0\n let finalValue = value;\n if (typeof value === 'number' && isNaN(value)) {\n finalValue = 0;\n }\n \n // Обновляем значение поля\n frappe.model.set_value(cdt, cdn, fieldName, finalValue);\n \n return true;\n } catch (error) {\n return false;\n }\n}\n\n// Функция для поиска строки таблицы по значению поля\nfunction find_table_row(frm, tableName, fieldName, value) {\n // Проверяем наличие необходимых аргументов\n if (!frm || !tableName || !fieldName) {\n return -1;\n }\n \n try {\n // Проверяем наличие таблицы\n if (!frm.doc[tableName]) {\n return -1;\n }\n \n // Ищем строку с указанным значением поля\n for (let i = 0; i < frm.doc[tableName].length; i++) {\n if (frm.doc[tableName][i][fieldName] == value) {\n // Возвращаем индекс строки (начиная с 1 для пользователя)\n return i + 1;\n }\n }\n \n // Если строка не найдена\n return -1;\n } catch (error) {\n return -1;\n }\n}\n\n\n async function calculate_721hesablanmışvergiməbləğinincəmi(frm) {\n try {\n \n const { transformed, needsAsync, reportCalls } = transform_expression(\"report(Mişar daşları) + report(Üzlük daşları) + report(Seolit) + report(Barit) + report(Yüngül doldurucuların istehsalı üçün gillər) + report(Vulkan külü və pemza) + report(Kvars qumları) + report(Sement xammalı) + report(Duz) + report(Qiymətli və yarımqiymətli bəzək daşları) + report(Yodlu bromlu sular) + report(Mineral sular) + report(Bentonit gillər) + report(Kərpic-kirəmit gilləri) + report(Tikinti qumları) + report(Çınqıl xammalı) + report(Gips, gəc) + report(Xam neft-Topdan satış qiyməti) + report(Təbii qaz-Topdan satış qiyməti) + report(Filiz faydalı qazıntıları: bütün növ metallar-Topdan satış qiyməti)\", false);\n \n // Обработка вызовов отчетов, если они есть\n let finalExpression = transformed;\n if (reportCalls && reportCalls.length > 0) {\n // Собираем все результаты отчетов\n const reportResults = [];\n for (const call of reportCalls) {\n const result = await getReportFieldValue(\n frm,\n call.reportName,\n call.filters,\n call.fieldName,\n call.aggregation\n );\n reportResults.push({ placeholder: call.placeholder, value: result });\n }\n \n // Заменяем плейсхолдеры на полученные значения\n for (const result of reportResults) {\n finalExpression = finalExpression.replace(result.placeholder, result.value);\n }\n }\n \n // Теперь можно безопасно вычислить выражение\n const result = eval(finalExpression);\n frm.set_value(\"721hesablanmışvergiməbləğinincəmi\", isNaN(result) ? 0 : result);\n } catch (e) {\n }\n }\n\n\n async function calculate_722vergiməcəlləsinin(frm) {\n try {\n \n const { transformed, needsAsync, reportCalls } = transform_expression(\"table('faydalı_qazıntıların_hasilatı', 1, 'vergininməbləğimanatla')\", false);\n \n // Обработка вызовов отчетов, если они есть\n let finalExpression = transformed;\n if (reportCalls && reportCalls.length > 0) {\n // Собираем все результаты отчетов\n const reportResults = [];\n for (const call of reportCalls) {\n const result = await getReportFieldValue(\n frm,\n call.reportName,\n call.filters,\n call.fieldName,\n call.aggregation\n );\n reportResults.push({ placeholder: call.placeholder, value: result });\n }\n \n // Заменяем плейсхолдеры на полученные значения\n for (const result of reportResults) {\n finalExpression = finalExpression.replace(result.placeholder, result.value);\n }\n }\n \n // Теперь можно безопасно вычислить выражение\n const result = eval(finalExpression);\n frm.set_value(\"722vergiməcəlləsinin\", isNaN(result) ? 0 : result);\n } catch (e) {\n }\n }\n\n\n // Функция для инициализации формул строк табличных частей\n function initialize_table_row_formulas(frm) {\n try {\n // Получаем информацию о формулах для строк табличных частей\n const formulas = JSON.parse(frm.doc.table_row_formulas_storage || \"{}\");\n \n // ВАЖНО: Преобразуем объект в массив и сортируем его по порядку выполнения\n const sortedFormulas = Object.entries(formulas).map(([id, formula]) => {\n return { id, ...formula };\n }).sort((a, b) => {\n // Сортировка по значению поля order (если порядок не задан, используем 10 по умолчанию)\n const orderA = a.order !== undefined ? parseInt(a.order) : 10;\n const orderB = b.order !== undefined ? parseInt(b.order) : 10;\n return orderA - orderB;\n });\n \n // Группируем формулы по табличным частям и строкам\n const formulasByTableAndRow = {};\n \n sortedFormulas.forEach(formula => {\n const tableName = formula.table_name;\n const rowIndex = parseInt(formula.row_index);\n \n if (!formulasByTableAndRow[tableName]) {\n formulasByTableAndRow[tableName] = {};\n }\n \n if (!formulasByTableAndRow[tableName][rowIndex]) {\n formulasByTableAndRow[tableName][rowIndex] = [];\n }\n \n formulasByTableAndRow[tableName][rowIndex].push(formula);\n });\n \n // Устанавливаем обработчики для каждой табличной части\n Object.keys(formulasByTableAndRow).forEach(tableName => {\n if (!frm.doc[tableName]) {\n return;\n }\n \n // Для каждой строки таблицы\n frm.doc[tableName].forEach((row, rowIdx) => {\n // Получаем отсортированные формулы для текущей строки (строки нумеруются с 1, а индексы с 0)\n const rowFormulas = formulasByTableAndRow[tableName][rowIdx + 1] || [];\n \n // Выполняем формулы в порядке сортировки (по полю order)\n for (const formula of rowFormulas) {\n try {\n // Определяем необходимость асинхронного вызова\n const usesUniversal = formula.formula && formula.formula.includes(\"univ(\");\n const usesReports = formula.formula && formula.formula.includes(\"report(\");\n \n // Вызываем расчет формулы согласно установленному порядку\n if (usesUniversal || usesReports) {\n // Для асинхронных вызовов используем await в асинхронной IIFE\n (async () => {\n try {\n await calculate_table_row_field(frm, tableName, rowIdx, formula.field_name, formula.formula, \"refresh\");\n } catch (asyncError) {\n }\n })();\n } else {\n // Для синхронных вызовов выполняем напрямую\n calculate_table_row_field(frm, tableName, rowIdx, formula.field_name, formula.formula, \"refresh\");\n }\n } catch (error) {\n }\n }\n });\n });\n } catch (error) {\n }\n }\n\n\n// Функция для расчета значения поля в строке табличной части\nasync function calculate_table_row_field(frm, tableName, rowIndex, fieldName, formula, triggerField) {\n try {\n \n if (!frm.doc[tableName] || !frm.doc[tableName][rowIndex]) {\n return;\n }\n\n const row = frm.doc[tableName][rowIndex];\n const cdt = frm.fields_dict[tableName].grid.doctype;\n const cdn = row.name;\n \n // === ЕДИНАЯ ТОЧКА ОБРАБОТКИ ВСЕХ ФУНКЦИЙ ===\n let finalFormula, reportCalls;\n \n try {\n // Используем transform_expression как единственную точку преобразования\n const transformResult = transform_expression(formula, true, tableName);\n \n if (transformResult) {\n finalFormula = transformResult.transformed;\n reportCalls = transformResult.reportCalls || [];\n } else {\n finalFormula = formula;\n reportCalls = [];\n }\n } catch (transformError) {\n console.error('Ошибка transform_expression:', transformError);\n finalFormula = formula;\n reportCalls = [];\n }\n \n // === ОБРАБОТКА АСИНХРОННЫХ ВЫЗОВОВ ОТЧЕТОВ ===\n if (reportCalls && reportCalls.length > 0) {\n try {\n // Выполняем все асинхронные запросы к отчетам параллельно\n const reportResults = await Promise.all(\n reportCalls.map(call => \n getReportFieldValue(\n frm,\n call.reportName,\n call.filters,\n call.fieldName,\n call.aggregation\n )\n )\n );\n \n // Заменяем плейсхолдеры на реальные значения\n for (let i = 0; i < reportCalls.length; i++) {\n const reportValue = reportResults[i] !== undefined ? Number(reportResults[i]) : 0;\n finalFormula = finalFormula.replace(\n reportCalls[i].placeholder, \n reportValue\n );\n }\n } catch (reportError) {\n console.error('Ошибка получения данных отчетов:', reportError);\n // В случае ошибки заменяем все плейсхолдеры на 0\n for (const call of reportCalls) {\n finalFormula = finalFormula.replace(call.placeholder, 0);\n }\n }\n }\n \n // === ВЫЧИСЛЕНИЕ ФИНАЛЬНОЙ ФОРМУЛЫ ===\n let result = 0;\n try {\n // Создаем функцию с доступом к контексту row и frm\n const evalFunc = new Function('row', 'frm', `return ${finalFormula};`);\n result = evalFunc(row, frm);\n } catch (evalError) {\n console.error('Ошибка вычисления формулы:', evalError, 'Formula:', finalFormula);\n }\n\n if (isNaN(result)) {\n result = 0;\n }\n\n // Устанавливаем вычисленное значение\n frappe.model.set_value(cdt, cdn, fieldName, result);\n\n // Обновляем таблицу\n frm.refresh_field(tableName);\n } catch (err) {\n console.error('Ошибка в calculate_table_row_field:', err);\n }\n}\n\n\n// Функция для получения индекса строки по её имени\nfunction get_row_index(frm, tableName, rowName) {\n \n // Проверяем наличие таблицы\n if (!frm.doc[tableName]) {\n return -1;\n }\n \n // Ищем индекс строки по имени\n for (let i = 0; i < frm.doc[tableName].length; i++) {\n if (frm.doc[tableName][i].name === rowName) {\n return i;\n }\n }\n return -1;\n}", +======= + "dt": "Declaration of mining tax", + "enabled": 1, + "modified": "2025-08-29 13:34:41.106666", + "module": "Taxes Az", + "name": "Formula_Editor_Script_for_Declaration of mining tax", + "script": "// Generated by Formula Editor\nfrappe.ui.form.on(\"Declaration of mining tax\", {\n \"refresh\": async function(frm) {\n initialize_table_row_formulas(frm);\n calculate_721hesablanmışvergiməbləğinincəmi(frm);\n calculate_723büdcəyəödənilməlivergininməbləğ(frm);\n },\n \"ay\": async function(frm) {\n \n // Формула строки 1 в таблице faydalı_qazıntıların_hasilatı (порядок: 1)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 1) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 0;\n const formula = \"report(Mişar daşları)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 1 в таблице faydalı_qazıntıların_hasilatı (порядок: 2)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 1) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 0;\n const formula = \"report(Mişar daşları) * 2\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 2 в таблице faydalı_qazıntıların_hasilatı (порядок: 3)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 2) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 1;\n const formula = \"report(Üzlük daşları)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 2 в таблице faydalı_qazıntıların_hasilatı (порядок: 4)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 2) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 1;\n const formula = \"report(Üzlük daşları) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 3 в таблице faydalı_qazıntıların_hasilatı (порядок: 5)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 3) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 2;\n const formula = \"report(Seolit)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 3 в таблице faydalı_qazıntıların_hasilatı (порядок: 6)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 3) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 2;\n const formula = \"report(Seolit) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 4 в таблице faydalı_qazıntıların_hasilatı (порядок: 7)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 4) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 3;\n const formula = \"report(Barit)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 4 в таблице faydalı_qazıntıların_hasilatı (порядок: 8)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 4) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 3;\n const formula = \"report(Barit) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 5 в таблице faydalı_qazıntıların_hasilatı (порядок: 9)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 5) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 4;\n const formula = \"report(Yüngül doldurucuların istehsalı üçün gillər)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 5 в таблице faydalı_qazıntıların_hasilatı (порядок: 10)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 5) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 4;\n const formula = \"report(Yüngül doldurucuların istehsalı üçün gillər) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 6 в таблице faydalı_qazıntıların_hasilatı (порядок: 11)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 6) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 5;\n const formula = \"report(Vulkan külü və pemza)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 6 в таблице faydalı_qazıntıların_hasilatı (порядок: 12)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 6) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 5;\n const formula = \"report(Vulkan külü və pemza) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 7 в таблице faydalı_qazıntıların_hasilatı (порядок: 13)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 7) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 6;\n const formula = \"report(Kvars qumları)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 7 в таблице faydalı_qazıntıların_hasilatı (порядок: 14)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 7) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 6;\n const formula = \"report(Kvars qumları) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 8 в таблице faydalı_qazıntıların_hasilatı (порядок: 15)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 8) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 7;\n const formula = \"report(Sement xammalı)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 8 в таблице faydalı_qazıntıların_hasilatı (порядок: 16)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 8) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 7;\n const formula = \"report(Sement xammalı) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 9 в таблице faydalı_qazıntıların_hasilatı (порядок: 17)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 9) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 8;\n const formula = \"report(Duz)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 9 в таблице faydalı_qazıntıların_hasilatı (порядок: 18)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 9) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 8;\n const formula = \"report(Duz) * 6\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 10 в таблице faydalı_qazıntıların_hasilatı (порядок: 19)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 10) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 9;\n const formula = \"report(Qiymətli və yarımqiymətli bəzək daşları)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 10 в таблице faydalı_qazıntıların_hasilatı (порядок: 20)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 10) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 9;\n const formula = \"report(Qiymətli və yarımqiymətli bəzək daşları) * 6\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 11 в таблице faydalı_qazıntıların_hasilatı (порядок: 21)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 11) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 10;\n const formula = \"report(Yodlu bromlu sular)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 11 в таблице faydalı_qazıntıların_hasilatı (порядок: 22)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 11) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 10;\n const formula = \"report(Yodlu bromlu sular) * 0.04\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 12 в таблице faydalı_qazıntıların_hasilatı (порядок: 23)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 12) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 11;\n const formula = \"report(Mineral sular)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 12 в таблице faydalı_qazıntıların_hasilatı (порядок: 24)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 12) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 11;\n const formula = \"report(Mineral sular) * 10\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 13 в таблице faydalı_qazıntıların_hasilatı (порядок: 25)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 13) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 12;\n const formula = \"report(Bentonit gillər)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 13 в таблице faydalı_qazıntıların_hasilatı (порядок: 26)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 13) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 12;\n const formula = \"report(Bentonit gillər) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 14 в таблице faydalı_qazıntıların_hasilatı (порядок: 27)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 14) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 13;\n const formula = \"report(Kərpic-kirəmit gilləri)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 14 в таблице faydalı_qazıntıların_hasilatı (порядок: 28)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 14) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 13;\n const formula = \"report(Kərpic-kirəmit gilləri) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 15 в таблице faydalı_qazıntıların_hasilatı (порядок: 29)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 15) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 14;\n const formula = \"report(Tikinti qumları)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 15 в таблице faydalı_qazıntıların_hasilatı (порядок: 30)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 15) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 14;\n const formula = \"report(Tikinti qumları) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 16 в таблице faydalı_qazıntıların_hasilatı (порядок: 31)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 16) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 15;\n const formula = \"report(Çınqıl xammalı)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 16 в таблице faydalı_qazıntıların_hasilatı (порядок: 32)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 16) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 15;\n const formula = \"report(Çınqıl xammalı) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 17 в таблице faydalı_qazıntıların_hasilatı (порядок: 33)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 17) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 16;\n const formula = \"report(Gips, gəc)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 17 в таблице faydalı_qazıntıların_hasilatı (порядок: 34)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 17) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 16;\n const formula = \"report(Gips, gəc) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 1 в таблице topdansatış_qiyməti_ilə (порядок: 35)\n if (frm.doc.topdansatış_qiyməti_ilə && frm.doc.topdansatış_qiyməti_ilə.length >= 1) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 0;\n const formula = \"report(Xam neft-Topdan satış qiyməti)\";\n \n await calculate_table_row_field(frm, \"topdansatış_qiyməti_ilə\", rowIndex, \"topdansatışqiymətimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 2 в таблице topdansatış_qiyməti_ilə (порядок: 36)\n if (frm.doc.topdansatış_qiyməti_ilə && frm.doc.topdansatış_qiyməti_ilə.length >= 2) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 1;\n const formula = \"report(Təbii qaz-Topdan satış qiyməti)\";\n \n await calculate_table_row_field(frm, \"topdansatış_qiyməti_ilə\", rowIndex, \"topdansatışqiymətimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 3 в таблице topdansatış_qiyməti_ilə (порядок: 37)\n if (frm.doc.topdansatış_qiyməti_ilə && frm.doc.topdansatış_qiyməti_ilə.length >= 3) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 2;\n const formula = \"report(Filiz faydalı qazıntıları: bütün növ metallar-Topdan satış qiyməti)\";\n \n await calculate_table_row_field(frm, \"topdansatış_qiyməti_ilə\", rowIndex, \"topdansatışqiymətimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 1 в таблице topdansatış_qiyməti_ilə (порядок: 38)\n if (frm.doc.topdansatış_qiyməti_ilə && frm.doc.topdansatış_qiyməti_ilə.length >= 1) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 0;\n const formula = \"report(Xam neft-Topdan satış qiyməti) * 26/ 100\";\n \n await calculate_table_row_field(frm, \"topdansatış_qiyməti_ilə\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 2 в таблице topdansatış_qiyməti_ilə (порядок: 39)\n if (frm.doc.topdansatış_qiyməti_ilə && frm.doc.topdansatış_qiyməti_ilə.length >= 2) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 1;\n const formula = \"report(Təbii qaz-Topdan satış qiyməti) * 20/ 100\";\n \n await calculate_table_row_field(frm, \"topdansatış_qiyməti_ilə\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n \n // Формула строки 3 в таблице topdansatış_qiyməti_ilə (порядок: 40)\n if (frm.doc.topdansatış_qiyməti_ilə && frm.doc.topdansatış_qiyməti_ilə.length >= 3) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 2;\n const formula = \"report(Filiz faydalı qazıntıları: bütün növ metallar-Topdan satış qiyməti) * 3/ 100\";\n \n await calculate_table_row_field(frm, \"topdansatış_qiyməti_ilə\", rowIndex, \"vergininməbləğimanatla\", formula, \"ay\");\n } catch (error) {\n }\n }\n await calculate_721hesablanmışvergiməbləğinincəmi(frm); // order: 99\n await calculate_723büdcəyəödənilməlivergininməbləğ(frm); // order: 100\n },\n \"il\": async function(frm) {\n \n // Формула строки 1 в таблице faydalı_qazıntıların_hasilatı (порядок: 1)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 1) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 0;\n const formula = \"report(Mişar daşları)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 1 в таблице faydalı_qazıntıların_hasilatı (порядок: 2)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 1) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 0;\n const formula = \"report(Mişar daşları) * 2\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 2 в таблице faydalı_qazıntıların_hasilatı (порядок: 3)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 2) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 1;\n const formula = \"report(Üzlük daşları)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 2 в таблице faydalı_qazıntıların_hasilatı (порядок: 4)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 2) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 1;\n const formula = \"report(Üzlük daşları) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 3 в таблице faydalı_qazıntıların_hasilatı (порядок: 5)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 3) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 2;\n const formula = \"report(Seolit)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 3 в таблице faydalı_qazıntıların_hasilatı (порядок: 6)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 3) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 2;\n const formula = \"report(Seolit) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 4 в таблице faydalı_qazıntıların_hasilatı (порядок: 7)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 4) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 3;\n const formula = \"report(Barit)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 4 в таблице faydalı_qazıntıların_hasilatı (порядок: 8)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 4) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 3;\n const formula = \"report(Barit) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 5 в таблице faydalı_qazıntıların_hasilatı (порядок: 9)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 5) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 4;\n const formula = \"report(Yüngül doldurucuların istehsalı üçün gillər)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 5 в таблице faydalı_qazıntıların_hasilatı (порядок: 10)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 5) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 4;\n const formula = \"report(Yüngül doldurucuların istehsalı üçün gillər) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 6 в таблице faydalı_qazıntıların_hasilatı (порядок: 11)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 6) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 5;\n const formula = \"report(Vulkan külü və pemza)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 6 в таблице faydalı_qazıntıların_hasilatı (порядок: 12)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 6) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 5;\n const formula = \"report(Vulkan külü və pemza) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 7 в таблице faydalı_qazıntıların_hasilatı (порядок: 13)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 7) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 6;\n const formula = \"report(Kvars qumları)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 7 в таблице faydalı_qazıntıların_hasilatı (порядок: 14)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 7) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 6;\n const formula = \"report(Kvars qumları) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 8 в таблице faydalı_qazıntıların_hasilatı (порядок: 15)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 8) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 7;\n const formula = \"report(Sement xammalı)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 8 в таблице faydalı_qazıntıların_hasilatı (порядок: 16)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 8) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 7;\n const formula = \"report(Sement xammalı) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 9 в таблице faydalı_qazıntıların_hasilatı (порядок: 17)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 9) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 8;\n const formula = \"report(Duz)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 9 в таблице faydalı_qazıntıların_hasilatı (порядок: 18)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 9) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 8;\n const formula = \"report(Duz) * 6\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 10 в таблице faydalı_qazıntıların_hasilatı (порядок: 19)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 10) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 9;\n const formula = \"report(Qiymətli və yarımqiymətli bəzək daşları)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 10 в таблице faydalı_qazıntıların_hasilatı (порядок: 20)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 10) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 9;\n const formula = \"report(Qiymətli və yarımqiymətli bəzək daşları) * 6\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 11 в таблице faydalı_qazıntıların_hasilatı (порядок: 21)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 11) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 10;\n const formula = \"report(Yodlu bromlu sular)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 11 в таблице faydalı_qazıntıların_hasilatı (порядок: 22)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 11) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 10;\n const formula = \"report(Yodlu bromlu sular) * 0.04\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 12 в таблице faydalı_qazıntıların_hasilatı (порядок: 23)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 12) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 11;\n const formula = \"report(Mineral sular)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 12 в таблице faydalı_qazıntıların_hasilatı (порядок: 24)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 12) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 11;\n const formula = \"report(Mineral sular) * 10\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 13 в таблице faydalı_qazıntıların_hasilatı (порядок: 25)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 13) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 12;\n const formula = \"report(Bentonit gillər)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 13 в таблице faydalı_qazıntıların_hasilatı (порядок: 26)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 13) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 12;\n const formula = \"report(Bentonit gillər) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 14 в таблице faydalı_qazıntıların_hasilatı (порядок: 27)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 14) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 13;\n const formula = \"report(Kərpic-kirəmit gilləri)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 14 в таблице faydalı_qazıntıların_hasilatı (порядок: 28)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 14) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 13;\n const formula = \"report(Kərpic-kirəmit gilləri) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 15 в таблице faydalı_qazıntıların_hasilatı (порядок: 29)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 15) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 14;\n const formula = \"report(Tikinti qumları)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 15 в таблице faydalı_qazıntıların_hasilatı (порядок: 30)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 15) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 14;\n const formula = \"report(Tikinti qumları) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 16 в таблице faydalı_qazıntıların_hasilatı (порядок: 31)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 16) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 15;\n const formula = \"report(Çınqıl xammalı)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 16 в таблице faydalı_qazıntıların_hasilatı (порядок: 32)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 16) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 15;\n const formula = \"report(Çınqıl xammalı) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 17 в таблице faydalı_qazıntıların_hasilatı (порядок: 33)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 17) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 16;\n const formula = \"report(Gips, gəc)\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"faydalıqazıntılarınhasilatınhəcmi\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 17 в таблице faydalı_qazıntıların_hasilatı (порядок: 34)\n if (frm.doc.faydalı_qazıntıların_hasilatı && frm.doc.faydalı_qazıntıların_hasilatı.length >= 17) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 16;\n const formula = \"report(Gips, gəc) * 1\";\n \n await calculate_table_row_field(frm, \"faydalı_qazıntıların_hasilatı\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 1 в таблице topdansatış_qiyməti_ilə (порядок: 35)\n if (frm.doc.topdansatış_qiyməti_ilə && frm.doc.topdansatış_qiyməti_ilə.length >= 1) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 0;\n const formula = \"report(Xam neft-Topdan satış qiyməti)\";\n \n await calculate_table_row_field(frm, \"topdansatış_qiyməti_ilə\", rowIndex, \"topdansatışqiymətimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 2 в таблице topdansatış_qiyməti_ilə (порядок: 36)\n if (frm.doc.topdansatış_qiyməti_ilə && frm.doc.topdansatış_qiyməti_ilə.length >= 2) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 1;\n const formula = \"report(Təbii qaz-Topdan satış qiyməti)\";\n \n await calculate_table_row_field(frm, \"topdansatış_qiyməti_ilə\", rowIndex, \"topdansatışqiymətimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 3 в таблице topdansatış_qiyməti_ilə (порядок: 37)\n if (frm.doc.topdansatış_qiyməti_ilə && frm.doc.topdansatış_qiyməti_ilə.length >= 3) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 2;\n const formula = \"report(Filiz faydalı qazıntıları: bütün növ metallar-Topdan satış qiyməti)\";\n \n await calculate_table_row_field(frm, \"topdansatış_qiyməti_ilə\", rowIndex, \"topdansatışqiymətimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 1 в таблице topdansatış_qiyməti_ilə (порядок: 38)\n if (frm.doc.topdansatış_qiyməti_ilə && frm.doc.topdansatış_qiyməti_ilə.length >= 1) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 0;\n const formula = \"report(Xam neft-Topdan satış qiyməti) * 26/ 100\";\n \n await calculate_table_row_field(frm, \"topdansatış_qiyməti_ilə\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 2 в таблице topdansatış_qiyməti_ilə (порядок: 39)\n if (frm.doc.topdansatış_qiyməti_ilə && frm.doc.topdansatış_qiyməti_ilə.length >= 2) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 1;\n const formula = \"report(Təbii qaz-Topdan satış qiyməti) * 20/ 100\";\n \n await calculate_table_row_field(frm, \"topdansatış_qiyməti_ilə\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n \n // Формула строки 3 в таблице topdansatış_qiyməti_ilə (порядок: 40)\n if (frm.doc.topdansatış_qiyməti_ilə && frm.doc.topdansatış_qiyməti_ilə.length >= 3) {\n try {\n // Индекс строки на 1 меньше номера строки\n const rowIndex = 2;\n const formula = \"report(Filiz faydalı qazıntıları: bütün növ metallar-Topdan satış qiyməti) * 3/ 100\";\n \n await calculate_table_row_field(frm, \"topdansatış_qiyməti_ilə\", rowIndex, \"vergininməbləğimanatla\", formula, \"il\");\n } catch (error) {\n }\n }\n await calculate_721hesablanmışvergiməbləğinincəmi(frm); // order: 99\n await calculate_723büdcəyəödənilməlivergininməbləğ(frm); // order: 100\n },\n \"faydalı_qazıntıların_hasilatı_add\": function(frm) {\n // Обновляем индексы строк после добавления новой строки\n setTimeout(() => initialize_table_row_formulas(frm), 100);\n },\n \"faydalı_qazıntıların_hasilatı_remove\": function(frm) {\n // Обновляем индексы строк после удаления строки\n setTimeout(() => initialize_table_row_formulas(frm), 100);\n },\n \"topdansatış_qiyməti_ilə_add\": function(frm) {\n // Обновляем индексы строк после добавления новой строки\n setTimeout(() => initialize_table_row_formulas(frm), 100);\n },\n \"topdansatış_qiyməti_ilə_remove\": function(frm) {\n // Обновляем индексы строк после удаления строки\n setTimeout(() => initialize_table_row_formulas(frm), 100);\n },\n});\n\n\n // Функция для обработки и выполнения формул\n async function processFormula(frm, formula) {\n try {\n // Проверяем наличие вызовов отчетов\n if (formula.includes(\"report(\")) {\n // Извлекаем все вызовы report() из формулы\n const reportRegex = /report\\(([^)]+)\\)/g;\n let match;\n let processedFormula = formula;\n \n // Массив для хранения промисов запросов к отчетам\n const reportPromises = [];\n const reportPlaceholders = [];\n \n // Находим все вызовы report() и заменяем их на плейсхолдеры\n while ((match = reportRegex.exec(formula)) !== null) {\n const fullMatch = match[0]; // report(fieldName)\n const fieldName = match[1]; // fieldName\n \n // Создаем уникальный плейсхолдер\n const placeholder = `__REPORT_PLACEHOLDER_${reportPromises.length}__`;\n \n // Ищем данные отчета в хранилище\n const reportFields = JSON.parse(frm.doc.report_fields_storage || \"{}\");\n const reportField = Object.values(reportFields).find(f => f.name === fieldName);\n \n if (reportField) {\n // Добавляем промис запроса к отчету\n reportPromises.push(\n getReportFieldValue(\n frm,\n reportField.report, \n JSON.parse(reportField.filters_json || \"{}\"), \n reportField.field_name, \n reportField.aggregation || 'sum'\n )\n );\n \n // Запоминаем соответствие плейсхолдера и вызова\n reportPlaceholders.push({\n placeholder: placeholder,\n original: fullMatch\n });\n \n // Заменяем вызов отчета на плейсхолдер\n processedFormula = processedFormula.replace(fullMatch, placeholder);\n }\n }\n \n // Если нашли вызовы отчетов, ждем выполнения всех запросов\n if (reportPromises.length > 0) {\n const reportResults = await Promise.all(reportPromises);\n \n // Заменяем плейсхолдеры на результаты\n for (let i = 0; i < reportPlaceholders.length; i++) {\n // Убедимся, что результат - числовое значение\n const reportValue = reportResults[i] !== undefined ? Number(reportResults[i]) : 0;\n processedFormula = processedFormula.replace(\n reportPlaceholders[i].placeholder, \n reportValue\n );\n }\n \n // Теперь формула не содержит вызовов report(), обрабатываем её обычным способом\n let transformResult = transform_expression(processedFormula, false);\n \n // Если есть внешняя трансформация, применяем её\n let result;\n if (transformResult && transformResult.transformed) {\n result = eval(transformResult.transformed);\n } else {\n // Иначе просто вычисляем выражение\n result = eval(processedFormula);\n }\n \n // Возвращаем результат\n return isNaN(result) ? 0 : result;\n }\n }\n \n // Стандартная обработка для формул без отчетов\n let transformResult = transform_expression(formula, false);\n let result = eval(transformResult.transformed);\n return isNaN(result) ? 0 : result;\n } catch (e) {\n return 0;\n }\n }\n\n\n // Функция для расчета универсальных полей\n async function calculate_universal_fields(frm) {\n \n }\n \n // Функция для обработки квартала (rüb) и года (il)\n function processQuarterDateField(docValues) {\n // Проверяем, есть ли у нас значения rüb и il\n if (docValues && docValues.rüb && docValues.il) {\n // Получаем номер квартала (преобразуем из строки вида \"1 Rüb\" в число 1)\n const quarterStr = docValues.rüb;\n const quarterMatch = quarterStr.match(/(\\d+)/);\n \n if (!quarterMatch) {\n return null;\n }\n \n const quarterNum = parseInt(quarterMatch[1]);\n \n // Получаем год из поля il или используем текущий год\n let year = docValues.il || new Date().getFullYear();\n \n // Определяем начальный и конечный месяц квартала\n let startMonth, endMonth;\n \n switch(quarterNum) {\n case 1:\n startMonth = 1; // Январь\n endMonth = 3; // Март\n break;\n case 2:\n startMonth = 4; // Апрель\n endMonth = 6; // Июнь\n break;\n case 3:\n startMonth = 7; // Июль\n endMonth = 9; // Сентябрь\n break;\n case 4:\n startMonth = 10; // Октябрь\n endMonth = 12; // Декабрь\n break;\n default:\n return null;\n }\n \n // Определяем первый день квартала (1-е число начального месяца)\n const firstDay = new Date(year, startMonth - 1, 1);\n \n // Последний день квартала (последнее число конечного месяца)\n const lastDay = new Date(year, endMonth, 0);\n \n // Форматируем даты в формате YYYY-MM-DD\n const firstDayStr = `${year}-${String(startMonth).padStart(2, '0')}-01`;\n const lastDayStr = `${year}-${String(endMonth).padStart(2, '0')}-${String(lastDay.getDate()).padStart(2, '0')}`; \n \n // Возвращаем объект с диапазоном дат\n return {\n start: firstDayStr,\n end: lastDayStr\n };\n }\n \n // Если это не специальное поле или значение не распознано, возвращаем null\n return null;\n }\n \n // Функция для обработки специальных полей с азербайджанскими месяцами\n function processAzerbayjanDateField(docValues) {\n // Словарь для сопоставления названий месяцев с их номерами\n const monthNames = {\n \"Yanvar\": 1,\n \"Fevral\": 2,\n \"Mart\": 3,\n \"Aprel\": 4,\n \"May\": 5,\n \"İyun\": 6,\n \"İyul\": 7,\n \"Avqust\": 8,\n \"Sentyabr\": 9,\n \"Oktyabr\": 10,\n \"Noyabr\": 11,\n \"Dekabr\": 12\n };\n \n // Проверяем наличие квартала (rüb) и года (il)\n if (docValues && docValues.rüb && docValues.il) {\n // Вызываем специальную функцию для обработки квартала\n return processQuarterDateField(docValues);\n }\n \n // Проверяем, есть ли у нас значения ay и il\n if (docValues && docValues.ay && monthNames[docValues.ay]) {\n // Получаем номер месяца\n const monthNum = monthNames[docValues.ay];\n \n // Получаем год из поля il или используем текущий год\n let year = docValues.il || new Date().getFullYear();\n \n // Определяем первый день месяца (1-е число)\n const firstDay = new Date(year, monthNum - 1, 1);\n \n // Последний день месяца (получаем последнее число месяца)\n const lastDay = new Date(year, monthNum, 0);\n \n // Форматируем даты в формате YYYY-MM-DD\n const firstDayStr = `${year}-${String(monthNum).padStart(2, '0')}-01`;\n const lastDayStr = `${year}-${String(monthNum).padStart(2, '0')}-${String(lastDay.getDate()).padStart(2, '0')}`; \n \n // Возвращаем объект с диапазоном дат\n return {\n start: firstDayStr,\n end: lastDayStr\n };\n }\n \n // Если это не специальное поле или значение не распознано, возвращаем null\n return null;\n }\n \n\n\n// Функция для обработки азербайджанских дат\nfunction processAzerbayjanDateField(docValues) {\n // Словарь для сопоставления названий месяцев с их номерами\n const monthNames = {\n \"Yanvar\": 1,\n \"Fevral\": 2,\n \"Mart\": 3,\n \"Aprel\": 4,\n \"May\": 5,\n \"İyun\": 6,\n \"İyul\": 7,\n \"Avqust\": 8,\n \"Sentyabr\": 9,\n \"Oktyabr\": 10,\n \"Noyabr\": 11,\n \"Dekabr\": 12\n };\n \n // Проверяем наличие квартала (rüb) и года (il)\n if (docValues && docValues.rüb && docValues.il) {\n // Получаем номер квартала (преобразуем из строки вида \"1 Rüb\" в число 1)\n const quarterStr = docValues.rüb;\n const quarterMatch = quarterStr.match(/(\\d+)/);\n \n if (!quarterMatch) {\n return null;\n }\n \n const quarterNum = parseInt(quarterMatch[1]);\n \n // Получаем год из поля il или используем текущий год\n let year = docValues.il || new Date().getFullYear();\n \n // Определяем начальный и конечный месяц квартала\n let startMonth, endMonth;\n \n switch(quarterNum) {\n case 1:\n startMonth = 1; // Январь\n endMonth = 3; // Март\n break;\n case 2:\n startMonth = 4; // Апрель\n endMonth = 6; // Июнь\n break;\n case 3:\n startMonth = 7; // Июль\n endMonth = 9; // Сентябрь\n break;\n case 4:\n startMonth = 10; // Октябрь\n endMonth = 12; // Декабрь\n break;\n default:\n return null;\n }\n \n // Определяем первый день квартала (1-е число начального месяца)\n const firstDay = new Date(year, startMonth - 1, 1);\n \n // Последний день квартала (последнее число конечного месяца)\n const lastDay = new Date(year, endMonth, 0);\n \n // Форматируем даты в формате YYYY-MM-DD\n const firstDayStr = year + \"-\" + String(startMonth).padStart(2, '0') + \"-01\";\n const lastDayStr = year + \"-\" + String(endMonth).padStart(2, '0') + \"-\" + String(lastDay.getDate()).padStart(2, '0'); \n \n // Возвращаем объект с диапазоном дат\n return {\n start: firstDayStr,\n end: lastDayStr\n };\n }\n \n // Проверяем, есть ли у нас значения ay и il\n if (docValues && docValues.ay && monthNames[docValues.ay]) {\n // Получаем номер месяца\n const monthNum = monthNames[docValues.ay];\n \n // Получаем год из поля il или используем текущий год\n let year = docValues.il || new Date().getFullYear();\n \n // Определяем первый день месяца (1-е число)\n const firstDay = new Date(year, monthNum - 1, 1);\n \n // Последний день месяца (получаем последнее число месяца)\n const lastDay = new Date(year, monthNum, 0);\n \n // Форматируем даты в формате YYYY-MM-DD\n const firstDayStr = year + \"-\" + String(monthNum).padStart(2, '0') + \"-01\";\n const lastDayStr = year + \"-\" + String(monthNum).padStart(2, '0') + \"-\" + String(lastDay.getDate()).padStart(2, '0'); \n \n // Возвращаем объект с диапазоном дат\n return {\n start: firstDayStr,\n end: lastDayStr\n };\n }\n \n // Если это не специальное поле или значение не распознано, возвращаем null\n return null;\n}\n\nasync function getReportFieldValue(frm, reportName, filters, fieldName, aggregation) {\n try {\n // Обрабатываем фильтры с возможными ссылками на поля документа\n const processedFilters = {};\n \n for (const key in filters) {\n let value = filters[key];\n \n // Проверяем, является ли значение ссылкой на поле документа\n if (typeof value === 'string' && value.startsWith('doc.')) {\n const docField = value.substring(4);\n if (frm.doc[docField] !== undefined) {\n processedFilters[key] = frm.doc[docField];\n continue;\n }\n }\n \n // Обработка специальных переменных\n if (typeof value === 'string' && value.startsWith('$')) {\n switch (value) {\n case '$DefaultCompany':\n // Получаем компанию по умолчанию из настроек или документа\n processedFilters[key] = frm.doc.company || frappe.defaults.get_user_default(\"Company\");\n continue;\n \n case '$AyIlSpecial':\n // Обрабатываем специальные даты для азербайджанских месяцев/кварталов\n const dateRange = processAzerbayjanDateField(frm.doc);\n if (dateRange) {\n // Для полей from_date и to_date используем соответствующие значения\n if (key === 'from_date') {\n processedFilters[key] = dateRange.start;\n } else if (key === 'to_date') {\n processedFilters[key] = dateRange.end;\n } else {\n // Для других полей используем начальную дату\n processedFilters[key] = dateRange.start;\n }\n } else {\n // Если не удалось получить диапазон дат, используем текущую дату\n processedFilters[key] = frappe.datetime.get_today();\n }\n continue;\n \n default:\n // Для других $-переменных оставляем как есть\n processedFilters[key] = value;\n continue;\n }\n }\n \n // Обычные значения\n processedFilters[key] = value;\n }\n \n // Проверяем кеш\n if (!window.reportCache) window.reportCache = {};\n \n const cacheKey = reportName + \"|\" + JSON.stringify(processedFilters) + \"|\" + fieldName + \"|\" + aggregation;\n const now = new Date().getTime();\n \n if (window.reportCache[cacheKey] && \n window.reportCache[cacheKey].timestamp > now - 5 * 60 * 1000) {\n return window.reportCache[cacheKey].value;\n }\n \n // Выполняем запрос к серверу\n try {\n const result = await frappe.call({\n method: \"formula_editor.api.run_report_for_formula\",\n args: {\n report_name: reportName,\n filters: processedFilters,\n field_name: fieldName\n },\n freeze: false\n });\n \n if (result && result.message !== undefined) {\n if (result.message.error) {\n console.error('Report error:', result.message.error);\n return 0;\n } \n \n let value = parseFloat(result.message);\n if (isNaN(value)) value = 0;\n \n // Округляем до 2 знаков после запятой\n value = Math.round(value * 100) / 100;\n \n // Сохраняем в кеш\n window.reportCache[cacheKey] = {\n value: value,\n timestamp: now\n };\n \n return value;\n }\n } catch (err) {\n console.error('Report field error:', err);\n }\n \n return 0;\n } catch (error) {\n console.error('getReportFieldValue error:', error);\n return 0;\n }\n}\n\n\n function transform_expression(expression, for_child_table = false, table_name = null) {\n let transformed = expression;\n let needsAsync = false;\n let reportCalls = [];\n\n // === Обработка report(...) ===\n const reportRegex = /report\\(([^)]+)\\)/g;\n let match;\n \n // Находим все вызовы report() в выражении\n while ((match = reportRegex.exec(expression)) !== null) {\n const reportName = match[1]; // Имя поля отчета\n const fullMatch = match[0]; // Полный текст match - \"report(xyz)\"\n needsAsync = true;\n \n // Создаем уникальный плейсхолдер\n const placeholder = `__REPORT_PLACEHOLDER_${reportCalls.length}__`;\n \n // Ищем соответствующее поле отчета по имени\n \n if (reportName === \"Xam neft\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Xam_neft___ton\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Təbii qaz\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Tebii_qaz___m3\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Filiz faydalı qazıntıları: bütün növ metallar\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Filiz_faydali_qazintilari__butun_nov_metallar___ton\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Mişar daşları\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Misar_daslari___m3\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Üzlük daşları\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Üzluk_daslari___m3\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Seolit\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Seolit___ton\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Barit\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Barit___ton\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Yüngül doldurucuların istehsalı üçün gillər\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Yungul_doldurucular_ucun_giller___m3\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Vulkan külü və pemza\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Vulkan_kulu_ve_pemza___m3\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Kvars qumları\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Kvars_qumlari___ton\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Sement xammalı\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Sement_xammali___ton\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Duz\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Duz___ton\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Qiymətli və yarımqiymətli bəzək daşları\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Qiymetli_ve_yarimqiymetli_bezek_daslari___karat___qram\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Yodlu bromlu sular\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Yodlu_bromlu_sular___m3\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Mineral sular\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Mineral_sular___m3\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Bentonit gillər\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Bentonit_giller___ton\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Kərpic-kirəmit gilləri\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Kerpic_kiremit_gilleri___m3\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Tikinti qumları\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Tikinti_qumlari___m3\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Çınqıl xammalı\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Çinqil_xammali___m3\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Gips, gəc\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Gips,_gec___ton\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Xam neft-Topdan satış qiyməti\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Xam_neft___ton_sales\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Təbii qaz-Topdan satış qiyməti\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Tebii_qaz___m3_sales\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n if (reportName === \"Filiz faydalı qazıntıları: bütün növ metallar-Topdan satış qiyməti\") {\n reportCalls.push({\n placeholder: placeholder,\n reportName: \"Mining Resources Stock Report\",\n filters: JSON.parse(\"{\\\"company\\\":\\\"$DefaultCompany\\\",\\\"from_date\\\":\\\"$AyIlSpecial\\\",\\\"to_date\\\":\\\"$AyIlSpecial\\\",\\\"fiscal_year\\\":\\\"$DefaultFiscalYear\\\"}\"),\n fieldName: \"Filiz_faydali_qazintilari__butun_nov_metallar___ton_sales\",\n aggregation: \"sum\"\n });\n \n transformed = transformed.replace(fullMatch, placeholder);\n }\n }\n\n // === Обработка table(...) ===\n const tableRegex = /table\\(([^,)]+),\\s*([^,)]+),\\s*([^)]+)\\)/g;\n let tableMatch;\n while ((tableMatch = tableRegex.exec(expression)) !== null) {\n const fullMatch = tableMatch[0];\n const tableName = tableMatch[1].trim().replace(/['\"]/g, '');\n const rowNumber = tableMatch[2].trim();\n const fieldName = tableMatch[3].trim().replace(/['\"]/g, '');\n \n const replacement = `(function() { \n try {\n if (!frm.doc[\"${tableName}\"] || !frm.doc[\"${tableName}\"][${rowNumber} - 1]) {\n return 0;\n }\n const value = frm.doc[\"${tableName}\"][${rowNumber} - 1][\"${fieldName}\"];\n return parseFloat(value) || 0;\n } catch (e) {\n return 0;\n }\n })()`;\n \n transformed = transformed.replace(fullMatch, replacement);\n }\n\n // === Обработка universal полей ===\n \n\n // === Обработка val() и row() ===\n const tablePrefixes = [\"items\", \"taxes\", \"packed_items\", \"payments\", \"advances\", \"timesheets\", \"payment_schedule\", \"sales_team\"];\n\n for (const prefix of tablePrefixes) {\n const sumPattern = new RegExp(`sum\\\\(${prefix}_([^)]+)\\\\)`, 'g');\n transformed = transformed.replace(sumPattern, (m, f) => \n `(frm.doc[\"${prefix}\"] && frm.doc[\"${prefix}\"].reduce((s, r) => s + (parseFloat(r[\"${f}\"]) || 0), 0) || 0)`\n );\n\n const valPattern = new RegExp(`val\\\\(${prefix}_([^)]+)\\\\)`, 'g');\n transformed = transformed.replace(valPattern, (m, f) => \n `(frm.doc[\"${prefix}\"] && frm.doc[\"${prefix}\"].reduce((s, r) => s + (parseFloat(r[\"${f}\"]) || 0), 0) || 0)`\n );\n }\n\n if (for_child_table) {\n transformed = transformed.replace(/row\\(([^)]+)\\)/g, (m, f) => \n `(parseFloat(row[\"${f}\"]) || 0)`\n );\n\n transformed = transformed.replace(/val\\(([^)]+)\\)/g, (m, f) => {\n if (f.startsWith(table_name + '_')) {\n return `(parseFloat(row[\"${f.slice(table_name.length + 1)}\"]) || 0)`;\n }\n return `(parseFloat(frm.doc[\"${f}\"]) || 0)`;\n });\n } else {\n transformed = transformed.replace(/val\\(([^)]+)\\)/g, (m, f) => \n `(parseFloat(frm.doc[\"${f}\"]) || 0)`\n );\n\n transformed = transformed.replace(/row\\(([^)]+)\\)/g, () => \n `0 /* ERROR: row() вне табличной части */`\n );\n }\n\n return { transformed, needsAsync, reportCalls };\n }\n\n\n// Функция для получения индекса строки по её имени (name/cdn)\nfunction get_row_index(frm, tableName, rowName) {\n \n // Проверяем наличие таблицы\n if (!frm.doc[tableName]) {\n return -1;\n }\n \n // Выводим все строки для отладки\n frm.doc[tableName].forEach((row, idx) => {\n });\n \n // Ищем индекс строки по имени\n for (let i = 0; i < frm.doc[tableName].length; i++) {\n if (frm.doc[tableName][i].name === rowName) {\n return i;\n }\n }\n return -1;\n}\n\n// Функция для доступа к полям конкретных строк таблицы\nfunction table_row(tableName, rowIndex, fieldName) {\n // Проверяем наличие необходимых аргументов\n if (!tableName || rowIndex === undefined || !fieldName) {\n return 0;\n }\n \n // Преобразуем rowIndex в число (на случай, если передана строка)\n const rowIdx = parseInt(rowIndex) - 1; // Индексация с 1 для пользователя, но с 0 в массиве\n \n try {\n // Проверяем наличие таблицы и строки\n if (!frm.doc[tableName] || !frm.doc[tableName][rowIdx]) {\n return 0;\n }\n \n // Получаем значение поля\n const value = frm.doc[tableName][rowIdx][fieldName];\n \n // Проверяем на NaN и возвращаем значение или 0\n const numValue = parseFloat(value);\n if (isNaN(numValue)) {\n return 0;\n }\n return numValue;\n } catch (error) {\n return 0;\n }\n}\n\n// Функция для обновления значения поля конкретной строки таблицы\nfunction set_table_row(frm, tableName, rowIndex, fieldName, value) {\n // Проверяем наличие необходимых аргументов\n if (!frm || !tableName || rowIndex === undefined || !fieldName) {\n return false;\n }\n \n // Преобразуем rowIndex в число (на случай, если передана строка)\n const rowIdx = parseInt(rowIndex) - 1; // Индексация с 1 для пользователя, но с 0 в массиве\n \n try {\n // Проверяем наличие таблицы и строки\n if (!frm.doc[tableName] || !frm.doc[tableName][rowIdx]) {\n return false;\n }\n \n // Получаем строку таблицы\n const row = frm.doc[tableName][rowIdx];\n \n // Получаем сетевое имя cdt и cdn для Frappe\n const cdt = frm.fields_dict[tableName].grid.doctype;\n const cdn = row.name;\n \n // Проверяем, является ли значение NaN, и если да, заменяем его на 0\n let finalValue = value;\n if (typeof value === 'number' && isNaN(value)) {\n finalValue = 0;\n }\n \n // Обновляем значение поля\n frappe.model.set_value(cdt, cdn, fieldName, finalValue);\n \n return true;\n } catch (error) {\n return false;\n }\n}\n\n// Функция для поиска строки таблицы по значению поля\nfunction find_table_row(frm, tableName, fieldName, value) {\n // Проверяем наличие необходимых аргументов\n if (!frm || !tableName || !fieldName) {\n return -1;\n }\n \n try {\n // Проверяем наличие таблицы\n if (!frm.doc[tableName]) {\n return -1;\n }\n \n // Ищем строку с указанным значением поля\n for (let i = 0; i < frm.doc[tableName].length; i++) {\n if (frm.doc[tableName][i][fieldName] == value) {\n // Возвращаем индекс строки (начиная с 1 для пользователя)\n return i + 1;\n }\n }\n \n // Если строка не найдена\n return -1;\n } catch (error) {\n return -1;\n }\n}\n\n\n async function calculate_721hesablanmışvergiməbləğinincəmi(frm) {\n try {\n \n const { transformed, needsAsync, reportCalls } = transform_expression(\"table(topdansatış_qiyməti_ilə, 1, vergininməbləğimanatla) + table(topdansatış_qiyməti_ilə, 2, vergininməbləğimanatla) + table(topdansatış_qiyməti_ilə, 3, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 1, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 2, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 3, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 4, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 5, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 6, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 7, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 8, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 9, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 10, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 11, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 12, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 13, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 14, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 15, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 16, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 17, vergininməbləğimanatla)\", false);\n \n // Обработка вызовов отчетов, если они есть\n let finalExpression = transformed;\n if (reportCalls && reportCalls.length > 0) {\n // Собираем все результаты отчетов\n const reportResults = [];\n for (const call of reportCalls) {\n const result = await getReportFieldValue(\n frm,\n call.reportName,\n call.filters,\n call.fieldName,\n call.aggregation\n );\n reportResults.push({ placeholder: call.placeholder, value: result });\n }\n \n // Заменяем плейсхолдеры на полученные значения\n for (const result of reportResults) {\n finalExpression = finalExpression.replace(result.placeholder, result.value);\n }\n }\n \n // Теперь можно безопасно вычислить выражение\n const result = eval(finalExpression);\n frm.set_value(\"721hesablanmışvergiməbləğinincəmi\", isNaN(result) ? 0 : result);\n } catch (e) {\n }\n }\n\n\n async function calculate_723büdcəyəödənilməlivergininməbləğ(frm) {\n try {\n \n const { transformed, needsAsync, reportCalls } = transform_expression(\"table(topdansatış_qiyməti_ilə, 1, vergininməbləğimanatla) + table(topdansatış_qiyməti_ilə, 2, vergininməbləğimanatla) + table(topdansatış_qiyməti_ilə, 3, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 1, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 2, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 3, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 4, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 5, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 6, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 7, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 8, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 9, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 10, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 11, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 12, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 13, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 14, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 15, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 16, vergininməbləğimanatla) + table(faydalı_qazıntıların_hasilatı, 17, vergininməbləğimanatla)\", false);\n \n // Обработка вызовов отчетов, если они есть\n let finalExpression = transformed;\n if (reportCalls && reportCalls.length > 0) {\n // Собираем все результаты отчетов\n const reportResults = [];\n for (const call of reportCalls) {\n const result = await getReportFieldValue(\n frm,\n call.reportName,\n call.filters,\n call.fieldName,\n call.aggregation\n );\n reportResults.push({ placeholder: call.placeholder, value: result });\n }\n \n // Заменяем плейсхолдеры на полученные значения\n for (const result of reportResults) {\n finalExpression = finalExpression.replace(result.placeholder, result.value);\n }\n }\n \n // Теперь можно безопасно вычислить выражение\n const result = eval(finalExpression);\n frm.set_value(\"723büdcəyəödənilməlivergininməbləğ\", isNaN(result) ? 0 : result);\n } catch (e) {\n }\n }\n\n\n // Функция для инициализации формул строк табличных частей\n function initialize_table_row_formulas(frm) {\n try {\n // Получаем информацию о формулах для строк табличных частей\n const formulas = JSON.parse(frm.doc.table_row_formulas_storage || \"{}\");\n \n // ВАЖНО: Преобразуем объект в массив и сортируем его по порядку выполнения\n const sortedFormulas = Object.entries(formulas).map(([id, formula]) => {\n return { id, ...formula };\n }).sort((a, b) => {\n // Сортировка по значению поля order (если порядок не задан, используем 10 по умолчанию)\n const orderA = a.order !== undefined ? parseInt(a.order) : 10;\n const orderB = b.order !== undefined ? parseInt(b.order) : 10;\n return orderA - orderB;\n });\n \n // Группируем формулы по табличным частям и строкам\n const formulasByTableAndRow = {};\n \n sortedFormulas.forEach(formula => {\n const tableName = formula.table_name;\n const rowIndex = parseInt(formula.row_index);\n \n if (!formulasByTableAndRow[tableName]) {\n formulasByTableAndRow[tableName] = {};\n }\n \n if (!formulasByTableAndRow[tableName][rowIndex]) {\n formulasByTableAndRow[tableName][rowIndex] = [];\n }\n \n formulasByTableAndRow[tableName][rowIndex].push(formula);\n });\n \n // Устанавливаем обработчики для каждой табличной части\n Object.keys(formulasByTableAndRow).forEach(tableName => {\n if (!frm.doc[tableName]) {\n return;\n }\n \n // Для каждой строки таблицы\n frm.doc[tableName].forEach((row, rowIdx) => {\n // Получаем отсортированные формулы для текущей строки (строки нумеруются с 1, а индексы с 0)\n const rowFormulas = formulasByTableAndRow[tableName][rowIdx + 1] || [];\n \n // Выполняем формулы в порядке сортировки (по полю order)\n for (const formula of rowFormulas) {\n try {\n // Определяем необходимость асинхронного вызова\n const usesUniversal = formula.formula && formula.formula.includes(\"univ(\");\n const usesReports = formula.formula && formula.formula.includes(\"report(\");\n \n // Вызываем расчет формулы согласно установленному порядку\n if (usesUniversal || usesReports) {\n // Для асинхронных вызовов используем await в асинхронной IIFE\n (async () => {\n try {\n await calculate_table_row_field(frm, tableName, rowIdx, formula.field_name, formula.formula, \"refresh\");\n } catch (asyncError) {\n }\n })();\n } else {\n // Для синхронных вызовов выполняем напрямую\n calculate_table_row_field(frm, tableName, rowIdx, formula.field_name, formula.formula, \"refresh\");\n }\n } catch (error) {\n }\n }\n });\n });\n } catch (error) {\n }\n }\n\n\n// Функция для расчета значения поля в строке табличной части\nasync function calculate_table_row_field(frm, tableName, rowIndex, fieldName, formula, triggerField) {\n try {\n \n if (!frm.doc[tableName] || !frm.doc[tableName][rowIndex]) {\n return;\n }\n\n const row = frm.doc[tableName][rowIndex];\n const cdt = frm.fields_dict[tableName].grid.doctype;\n const cdn = row.name;\n \n // === ЕДИНАЯ ТОЧКА ОБРАБОТКИ ВСЕХ ФУНКЦИЙ ===\n let finalFormula, reportCalls;\n \n try {\n // Используем transform_expression как единственную точку преобразования\n const transformResult = transform_expression(formula, true, tableName);\n \n if (transformResult) {\n finalFormula = transformResult.transformed;\n reportCalls = transformResult.reportCalls || [];\n } else {\n finalFormula = formula;\n reportCalls = [];\n }\n } catch (transformError) {\n console.error('Ошибка transform_expression:', transformError);\n finalFormula = formula;\n reportCalls = [];\n }\n \n // === ОБРАБОТКА АСИНХРОННЫХ ВЫЗОВОВ ОТЧЕТОВ ===\n if (reportCalls && reportCalls.length > 0) {\n try {\n // Выполняем все асинхронные запросы к отчетам параллельно\n const reportResults = await Promise.all(\n reportCalls.map(call => \n getReportFieldValue(\n frm,\n call.reportName,\n call.filters,\n call.fieldName,\n call.aggregation\n )\n )\n );\n \n // Заменяем плейсхолдеры на реальные значения\n for (let i = 0; i < reportCalls.length; i++) {\n const reportValue = reportResults[i] !== undefined ? Number(reportResults[i]) : 0;\n finalFormula = finalFormula.replace(\n reportCalls[i].placeholder, \n reportValue\n );\n }\n } catch (reportError) {\n console.error('Ошибка получения данных отчетов:', reportError);\n // В случае ошибки заменяем все плейсхолдеры на 0\n for (const call of reportCalls) {\n finalFormula = finalFormula.replace(call.placeholder, 0);\n }\n }\n }\n \n // === ВЫЧИСЛЕНИЕ ФИНАЛЬНОЙ ФОРМУЛЫ ===\n let result = 0;\n try {\n // Создаем функцию с доступом к контексту row и frm\n const evalFunc = new Function('row', 'frm', `return ${finalFormula};`);\n result = evalFunc(row, frm);\n } catch (evalError) {\n console.error('Ошибка вычисления формулы:', evalError, 'Formula:', finalFormula);\n }\n\n if (isNaN(result)) {\n result = 0;\n }\n\n // Устанавливаем вычисленное значение\n frappe.model.set_value(cdt, cdn, fieldName, result);\n\n // Обновляем таблицу\n frm.refresh_field(tableName);\n } catch (err) {\n console.error('Ошибка в calculate_table_row_field:', err);\n }\n}\n\n\n// Функция для получения индекса строки по её имени\nfunction get_row_index(frm, tableName, rowName) {\n \n // Проверяем наличие таблицы\n if (!frm.doc[tableName]) {\n return -1;\n }\n \n // Ищем индекс строки по имени\n for (let i = 0; i < frm.doc[tableName].length; i++) {\n if (frm.doc[tableName][i].name === rowName) {\n return i;\n }\n }\n return -1;\n}", +>>>>>>> Stashed changes "view": "Form" }, { @@ -571,28 +580,6 @@ "script": "frappe.ui.form.on('Excise declaration', {\r\n refresh: function (frm) {\r\n console.log('Running refresh function for Excise declaration');\r\n\r\n // Устанавливаем custom query для поля \"əsasfəaliyyətnövününkodu\"\r\n if (frm.fields_dict['əsasfəaliyyətnövününkodu']) {\r\n frm.fields_dict['əsasfəaliyyətnövününkodu'].get_query = function () {\r\n console.log('Setting get_query for field: əsasfəaliyyətnövününkodu');\r\n return {\r\n query: 'frappe.desk.search.search_link',\r\n filters: { // Убедитесь, что передается словарь\r\n doctype: 'Main type of activity'\r\n }\r\n };\r\n };\r\n } else {\r\n console.error('Field əsasfəaliyyətnövününkodu not found in fields_dict.');\r\n }\r\n }\r\n});\r\n", "view": "Form" }, - { - "docstatus": 0, - "doctype": "Client Script", - "dt": "Declaration of withholding tax on winnings", - "enabled": 1, - "modified": "2025-01-10 15:06:38.418947", - "module": "Taxes Az", - "name": "DefaultDeclarationOfWithholdingTaxOnWinningsVergiHesab", - "script": "//table_hyte - Table Adı\r\n//frappe.ui.form.on('Declaration of withholding tax on winnings' - Doctype Adı\r\n//göstəricilər - kolonka adı\r\n\r\n\r\n\r\nfrappe.ui.form.on('Declaration of withholding tax on winnings', {\r\n onload: function(frm) {\r\n if (!frm.doc.__islocal) return; \r\n\r\n if (!frm.doc.table_hyte) {\r\n frm.set_value('table_hyte', []); \r\n }\r\n\r\n //burda dəyişik et\r\n if (frm.doc.il === 2025) { \r\n const default_rows_2025 = [\r\n { göstəricilər: '1620. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından uduşlardan (mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '7' },\r\n { göstəricilər: '1621. Lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1621.1 o cümlədən qeyri-rezident şəxslər tərəfindən ödənilən gəlirlər üzrə', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1622. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından, lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatladan) əldə edilmiş gəlirlər üzrə cəmi ', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1623. Lotereya təşkilatçısı tərəfindən keçirilən lotereyalardan və idman mərc oyunları operatoru tərəfindən keçirilən idman mərc oyunlarından pul şəklində əldə edilən uduşların vergidən azadolunan hissəsi ', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1625. Ödənilməli vergi məbləği', istehsalınhəcmi_tab: '8' },\r\n\r\n ];\r\n default_rows_2025.forEach(row => {\r\n frm.add_child('table_hyte', row);\r\n });\r\n } else if (frm.doc.il === 2024) { \r\n const default_rows_2024 = [\r\n { göstəricilər: '1620. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından uduşlardan (mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '7' },\r\n { göstəricilər: '1621. Lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1621.1 o cümlədən qeyri-rezident şəxslər tərəfindən ödənilən gəlirlər üzrə', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1622. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından, lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatladan) əldə edilmiş gəlirlər üzrə cəmi ', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1623. Lotereya təşkilatçısı tərəfindən keçirilən lotereyalardan və idman mərc oyunları operatoru tərəfindən keçirilən idman mərc oyunlarından pul şəklində əldə edilən uduşların vergidən azadolunan hissəsi ', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1625. Ödənilməli vergi məbləği', istehsalınhəcmi_tab: '8' },\r\n\r\n ];\r\n default_rows_2024.forEach(row => {\r\n frm.add_child('table_hyte', row);\r\n });\r\n } else if (frm.doc.il === 2023) {\r\n const default_rows_2023 = [\r\n { göstəricilər: '1620. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından uduşlardan (mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '7' },\r\n { göstəricilər: '1621. Lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1621.1 o cümlədən qeyri-rezident şəxslər tərəfindən ödənilən gəlirlər üzrə', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1622. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından, lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatladan) əldə edilmiş gəlirlər üzrə cəmi ', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1623. Lotereya təşkilatçısı tərəfindən keçirilən lotereyalardan və idman mərc oyunları operatoru tərəfindən keçirilən idman mərc oyunlarından pul şəklində əldə edilən uduşların vergidən azadolunan hissəsi ', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1625. Ödənilməli vergi məbləği', istehsalınhəcmi_tab: '8' },\r\n\r\n ];\r\n default_rows_2023.forEach(row => {\r\n frm.add_child('table_hyte', row);\r\n });\r\n } else if (frm.doc.il === 2022) {\r\n const default_rows_2022 = [\r\n { göstəricilər: '1620. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından uduşlardan (mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '7' },\r\n { göstəricilər: '1621. Lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1621.1 o cümlədən qeyri-rezident şəxslər tərəfindən ödənilən gəlirlər üzrə', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1622. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından, lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatladan) əldə edilmiş gəlirlər üzrə cəmi ', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1623. Lotereya təşkilatçısı tərəfindən keçirilən lotereyalardan və idman mərc oyunları operatoru tərəfindən keçirilən idman mərc oyunlarından pul şəklində əldə edilən uduşların vergidən azadolunan hissəsi ', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1625. Ödənilməli vergi məbləği', istehsalınhəcmi_tab: '8' },\r\n\r\n ];\r\n default_rows_2023.forEach(row => {\r\n frm.add_child('table_hyte', row);\r\n });\r\n } else if (frm.doc.il === 2021) {\r\n const default_rows_2022 = [\r\n { göstəricilər: '1620. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından uduşlardan (mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '9' },\r\n { göstəricilər: '1621. Lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '10' },\r\n { göstəricilər: '1621.1 o cümlədən qeyri-rezident şəxslər tərəfindən ödənilən gəlirlər üzrə', istehsalınhəcmi_tab: '10' },\r\n { göstəricilər: '1622. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından, lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatladan) əldə edilmiş gəlirlər üzrə cəmi ', istehsalınhəcmi_tab: '10' },\r\n { göstəricilər: '1623. Müvafiq icra hakimiyyəti orqanının müəyyən etdiyi orqanda (qurumda) qeydiyyatdan keçmiş lotereyalardan pul şəklində əldə edilən uduşların vergidən azadolunan 10 manatadək olan hissəsi' },\r\n { göstəricilər: '1625. Ödənilməli vergi məbləği' },\r\n ];\r\n default_rows_2023.forEach(row => {\r\n frm.add_child('table_hyte', row);\r\n });\r\n } else if (frm.doc.il === 2020) {\r\n const default_rows_2022 = [\r\n { göstəricilər: '1620. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından uduşlardan (mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '9' },\r\n { göstəricilər: '1621. Lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '10' },\r\n { göstəricilər: '1621.1 o cümlədən qeyri-rezident şəxslər tərəfindən ödənilən gəlirlər üzrə', istehsalınhəcmi_tab: '10' },\r\n { göstəricilər: '1622. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından, lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatladan) əldə edilmiş gəlirlər üzrə cəmi ', istehsalınhəcmi_tab: '10' },\r\n { göstəricilər: '1623. Müvafiq icra hakimiyyəti orqanının müəyyən etdiyi orqanda (qurumda) qeydiyyatdan keçmiş lotereyalardan pul şəklində əldə edilən uduşların vergidən azadolunan 10 manatadək olan hissəsi' },\r\n { göstəricilər: '1625. Ödənilməli vergi məbləği' },\r\n ]; \r\n default_rows_2022.forEach(row => {\r\n frm.add_child('table_hyte', row);\r\n });\r\n } else if (frm.doc.il === 2019) {\r\n const default_rows_2021 = [\r\n { göstəricilər: '1620. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından uduşlardan (mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '9' },\r\n { göstəricilər: '1621. Lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '10' },\r\n { göstəricilər: '1621.1 o cümlədən qeyri-rezident şəxslər tərəfindən ödənilən gəlirlər üzrə', istehsalınhəcmi_tab: '10' },\r\n { göstəricilər: '1622. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından, lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatladan) əldə edilmiş gəlirlər üzrə cəmi ', istehsalınhəcmi_tab: '10' },\r\n { göstəricilər: '1623. Müvafiq icra hakimiyyəti orqanının müəyyən etdiyi orqanda (qurumda) qeydiyyatdan keçmiş lotereyalardan pul şəklində əldə edilən uduşların vergidən azadolunan 10 manatadək olan hissəsi' },\r\n { göstəricilər: '1625. Ödənilməli vergi məbləği' },\r\n ];\r\n default_rows_2021.forEach(row => {\r\n frm.add_child('table_hyte', row);\r\n });\r\n } else if (frm.doc.il === 2018) {\r\n const default_rows_2020 = [\r\n { göstəricilər: '1620. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından uduşlardan (mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '11' }, //məsəl üçün 2020 lazım deyilsə, onda bu 2 sətrləri sil prosto\r\n { göstəricilər: '1621. Lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '12' },\r\n { göstəricilər: '1621.1 o cümlədən qeyri-rezident şəxslər tərəfindən ödənilən gəlirlər üzrə', istehsalınhəcmi_tab: '12' },\r\n { göstəricilər: '1625. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından, lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan', istehsalınhəcmi_tab: '12' },\r\n ];\r\n default_rows_2021.forEach(row => {\r\n frm.add_child('table_hyte', row);\r\n });\r\n } else if (frm.doc.il === 2017) {\r\n const default_rows_2020 = [\r\n { göstəricilər: '1620. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından uduşlardan (mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '11' }, //məsəl üçün 2020 lazım deyilsə, onda bu 2 sətrləri sil prosto\r\n { göstəricilər: '1621. Lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '12' },\r\n { göstəricilər: '1621.1 o cümlədən qeyri-rezident şəxslər tərəfindən ödənilən gəlirlər üzrə', istehsalınhəcmi_tab: '12' },\r\n { göstəricilər: '1625. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından, lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan', istehsalınhəcmi_tab: '12' },\r\n ];\r\n default_rows_2020.forEach(row => {\r\n frm.add_child('table_hyte', row);\r\n });\r\n }\r\n\r\n frm.refresh_field('table_hyte'); \r\n },\r\n\r\n il: function(frm) {\r\n frm.set_value('table_hyte', []); \r\n\r\n //və burda dəyişik et\r\n if (frm.doc.il === 2025) { \r\n const default_rows_2025 = [\r\n { göstəricilər: '1620. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından uduşlardan (mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '7' },\r\n { göstəricilər: '1621. Lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1621.1 o cümlədən qeyri-rezident şəxslər tərəfindən ödənilən gəlirlər üzrə', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1622. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından, lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatladan) əldə edilmiş gəlirlər üzrə cəmi ', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1623. Lotereya təşkilatçısı tərəfindən keçirilən lotereyalardan və idman mərc oyunları operatoru tərəfindən keçirilən idman mərc oyunlarından pul şəklində əldə edilən uduşların vergidən azadolunan hissəsi ', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1625. Ödənilməli vergi məbləği', istehsalınhəcmi_tab: '8' },\r\n\r\n ];\r\n default_rows_2025.forEach(row => {\r\n frm.add_child('table_hyte', row);\r\n });\r\n } else if (frm.doc.il === 2024) { \r\n const default_rows_2024 = [\r\n { göstəricilər: '1620. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından uduşlardan (mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '7' },\r\n { göstəricilər: '1621. Lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1621.1 o cümlədən qeyri-rezident şəxslər tərəfindən ödənilən gəlirlər üzrə', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1622. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından, lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatladan) əldə edilmiş gəlirlər üzrə cəmi ', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1623. Lotereya təşkilatçısı tərəfindən keçirilən lotereyalardan və idman mərc oyunları operatoru tərəfindən keçirilən idman mərc oyunlarından pul şəklində əldə edilən uduşların vergidən azadolunan hissəsi ', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1625. Ödənilməli vergi məbləği', istehsalınhəcmi_tab: '8' },\r\n\r\n ];\r\n default_rows_2024.forEach(row => {\r\n frm.add_child('table_hyte', row);\r\n });\r\n } else if (frm.doc.il === 2023) {\r\n const default_rows_2023 = [\r\n { göstəricilər: '1620. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından uduşlardan (mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '7' },\r\n { göstəricilər: '1621. Lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1621.1 o cümlədən qeyri-rezident şəxslər tərəfindən ödənilən gəlirlər üzrə', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1622. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından, lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatladan) əldə edilmiş gəlirlər üzrə cəmi ', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1623. Lotereya təşkilatçısı tərəfindən keçirilən lotereyalardan və idman mərc oyunları operatoru tərəfindən keçirilən idman mərc oyunlarından pul şəklində əldə edilən uduşların vergidən azadolunan hissəsi ', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1625. Ödənilməli vergi məbləği', istehsalınhəcmi_tab: '8' },\r\n\r\n ];\r\n \r\n default_rows_2023.forEach(row => {\r\n frm.add_child('table_hyte', row);\r\n });\r\n } else if (frm.doc.il === 2022) {\r\n const default_rows_2022 = [\r\n { göstəricilər: '1620. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından uduşlardan (mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '7' },\r\n { göstəricilər: '1621. Lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1621.1 o cümlədən qeyri-rezident şəxslər tərəfindən ödənilən gəlirlər üzrə', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1622. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından, lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatladan) əldə edilmiş gəlirlər üzrə cəmi ', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1623. Lotereya təşkilatçısı tərəfindən keçirilən lotereyalardan və idman mərc oyunları operatoru tərəfindən keçirilən idman mərc oyunlarından pul şəklində əldə edilən uduşların vergidən azadolunan hissəsi ', istehsalınhəcmi_tab: '8' },\r\n { göstəricilər: '1625. Ödənilməli vergi məbləği', istehsalınhəcmi_tab: '8' },\r\n\r\n ];\r\n default_rows_2022.forEach(row => {\r\n frm.add_child('table_hyte', row);\r\n });\r\n } else if (frm.doc.il === 2021) {\r\n const default_rows_2021 = [\r\n { göstəricilər: '1620. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından uduşlardan (mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '9' },\r\n { göstəricilər: '1621. Lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '10' },\r\n { göstəricilər: '1621.1 o cümlədən qeyri-rezident şəxslər tərəfindən ödənilən gəlirlər üzrə', istehsalınhəcmi_tab: '10' },\r\n { göstəricilər: '1622. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından, lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatladan) əldə edilmiş gəlirlər üzrə cəmi ', istehsalınhəcmi_tab: '10' },\r\n { göstəricilər: '1623. Müvafiq icra hakimiyyəti orqanının müəyyən etdiyi orqanda (qurumda) qeydiyyatdan keçmiş lotereyalardan pul şəklində əldə edilən uduşların vergidən azadolunan 10 manatadək olan hissəsi' },\r\n { göstəricilər: '1625. Ödənilməli vergi məbləği' },\r\n ];\r\n default_rows_2022.forEach(row => {\r\n frm.add_child('table_hyte', row);\r\n });\r\n } else if (frm.doc.il === 2020) {\r\n const default_rows_2021 = [\r\n { göstəricilər: '1620. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından uduşlardan (mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '9' },\r\n { göstəricilər: '1621. Lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '10' },\r\n { göstəricilər: '1621.1 o cümlədən qeyri-rezident şəxslər tərəfindən ödənilən gəlirlər üzrə', istehsalınhəcmi_tab: '10' },\r\n { göstəricilər: '1622. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından, lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatladan) əldə edilmiş gəlirlər üzrə cəmi ', istehsalınhəcmi_tab: '10' },\r\n { göstəricilər: '1623. Müvafiq icra hakimiyyəti orqanının müəyyən etdiyi orqanda (qurumda) qeydiyyatdan keçmiş lotereyalardan pul şəklində əldə edilən uduşların vergidən azadolunan 10 manatadək olan hissəsi' },\r\n { göstəricilər: '1625. Ödənilməli vergi məbləği' },\r\n ];\r\n default_rows_2022.forEach(row => {\r\n frm.add_child('table_hyte', row);\r\n });\r\n } else if (frm.doc.il === 2019) {\r\n const default_rows_2021 = [\r\n { göstəricilər: '1620. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından uduşlardan (mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '9' },\r\n { göstəricilər: '1621. Lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '10' },\r\n { göstəricilər: '1621.1 o cümlədən qeyri-rezident şəxslər tərəfindən ödənilən gəlirlər üzrə', istehsalınhəcmi_tab: '10' },\r\n { göstəricilər: '1622. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından, lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatladan) əldə edilmiş gəlirlər üzrə cəmi ', istehsalınhəcmi_tab: '10' },\r\n { göstəricilər: '1623. Müvafiq icra hakimiyyəti orqanının müəyyən etdiyi orqanda (qurumda) qeydiyyatdan keçmiş lotereyalardan pul şəklində əldə edilən uduşların vergidən azadolunan 10 manatadək olan hissəsi' },\r\n { göstəricilər: '1625. Ödənilməli vergi məbləği' },\r\n ];\r\n default_rows_2021.forEach(row => {\r\n frm.add_child('table_hyte', row);\r\n });\r\n } else if (frm.doc.il === 2018) {\r\n const default_rows_2020 = [\r\n { göstəricilər: '1620. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından uduşlardan (mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '11' }, //məsəl üçün 2020 lazım deyilsə, onda bu 2 sətrləri sil prosto\r\n { göstəricilər: '1621. Lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '12' },\r\n { göstəricilər: '1621.1 o cümlədən qeyri-rezident şəxslər tərəfindən ödənilən gəlirlər üzrə', istehsalınhəcmi_tab: '12' },\r\n { göstəricilər: '1625. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından, lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan', istehsalınhəcmi_tab: '12' },\r\n ];\r\n default_rows_2021.forEach(row => {\r\n frm.add_child('table_hyte', row);\r\n });\r\n } else if (frm.doc.il === 2017) {\r\n const default_rows_2020 = [\r\n { göstəricilər: '1620. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından uduşlardan (mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '11' }, //məsəl üçün 2020 lazım deyilsə, onda bu 2 sətrləri sil prosto\r\n { göstəricilər: '1621. Lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatlardan) əldə edilmiş gəlirlər üzrə', istehsalınhəcmi_tab: '12' },\r\n { göstəricilər: '1621.1 o cümlədən qeyri-rezident şəxslər tərəfindən ödənilən gəlirlər üzrə', istehsalınhəcmi_tab: '12' },\r\n { göstəricilər: '1625. İdman oyunları ilə əlaqədar aparılan mərc oyunlarından, lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan', istehsalınhəcmi_tab: '12' },\r\n ];\r\n default_rows_2020.forEach(row => {\r\n frm.add_child('table_hyte', row);\r\n });\r\n }\r\n\r\n frm.refresh_field('table_hyte'); \r\n }\r\n});\r\n", - "view": "Form" - }, - { - "docstatus": 0, - "doctype": "Client Script", - "dt": "Declaration of withholding tax on winnings", - "enabled": 1, - "modified": "2025-01-10 12:28:39.639073", - "module": "Taxes Az", - "name": "DefaultDeclaration of withholding tax on winnings Vergi hesab", - "script": "frappe.ui.form.on('Declaration of withholding tax on winnings', {\r\n onload: function(frm) {\r\n if (!frm.doc.__islocal) return; \r\n\r\n if (!frm.doc.table_hyte) {\r\n frm.set_value('table_hyte', []); \r\n }\r\n\r\n const default_rows = [\r\n { göstəricilər: '1620. İdman mərc oyunlarından əldə edilmiş uduşlar', SahəAdı2: 'Məlumat' },\r\n ];\r\n\r\n default_rows.forEach(row => {\r\n frm.add_child('table_hyte', row);\r\n });\r\n\r\n frm.refresh_field('table_hyte'); \r\n }\r\n});", - "view": "Form" - }, { "docstatus": 0, "doctype": "Client Script", @@ -895,10 +882,10 @@ "doctype": "Client Script", "dt": "Land tax declaration", "enabled": 1, - "modified": "2025-01-20 20:26:50.551530", + "modified": "2025-09-02 16:26:30.530257", "module": "Taxes Az", "name": "Default Land tax declaration Vergi Hesab", - "script": "frappe.ui.form.on('Land tax declaration', {\r\n onload: function(frm) {\r\n if (!frm.doc.__islocal) return; \r\n\r\n if (!frm.doc.table_skib) {\r\n frm.set_value('table_skib', []); \r\n }\r\n\r\n const default_rows = [\r\n { göstəricilər: '600. Kənd təsərrüfatı təyinatlı torpaq sahələri üzrə hesablanmış vergi məbləği', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '600.1 Təyinatı üzrə istifadə edilməyən kənd təsərrüfatı torpaqları üzrə hesablanmış vergi məbləği', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '600.2 Təyinatı üzrə istifadə edilən və ya irriqasiya, meliorasiya və digər aqrotexniki səbəblərdən təyinatı üzrə istifadə edilməsi mümkün olmayan kənd təsərrüfatı torpaqları üzrə verginin məbləği', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '611. Sənaye, tikinti, nəqliyyat, rabitə, ticarət-məişət xidməti və digər xüsusi təyinatlı torpaq sahələri, yasayış fondları, həyətyanı və bağ sahələri üzrə hesablanmış vergi məbləği', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '612. Hesablanmış vergi məbləğinin cəmi (sətr.600+sətr.611)', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '615. Güzəştlər (sət.615.1+sət.615.2 + sət.615.3+ sət.615.4+ sət.615.5 + 615.6)', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '615.1 Vergi Məcəlləsinin 207.3-cü maddəsinə əsasən Sənaye, yaxud texnologiyalar parklarının rezidenti olan hüquqi şəxsin sənaye, yaxud texnologiyalar parklarında istifadə etdikləri torpaqlara görə', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '615.2 Vergi Məcəlləsinin 207.4-cü maddəsinə əsasən Sənaye, yaxud texnologiyalar parklarının idarəedici təşkilatı və ya operatorunun sənaye, yaxud texnologiyalar parklarının ərazisində istifadə etdiyi torpaqlara görə', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '615.3 Vergi Məcəlləsinin 207.5-ci maddəsinə əsasən İnvestisiya təşviqi sənədini almış hüquqi şəxs həmin sənədi aldığı tarixdən mülkiyyətində və ya istifadəsində olan müvafiq torpaqlara görə', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '615.4 Vergi Məcəlləsinin 207.6-cı maddəsinə əsasən KOB klaster şirkətləri KOB klaster şirkətlərinin reyestrinə daxil edildiyi tarixdən 7 il müddətinə mülkiyyətində və ya istifadəsində olan torpaqlara görə', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '615.5 Vergi Məcəlləsinin 207.7-ci maddəsinə əsasən \"Aqrarkredit” Qapalı Səhmdar Cəmiyyəti Bank Olmayan Kredit Təşkilatı və “Azərbaycan Sənaye Korporasiyası” Açıq Səhmdar Cəmiyyəti ödəmə qabiliyyətini itirmiş bankların rezolyusiyası və sağlamlaşdırma tədbirləri çərçivəsində Azərbaycan Respublikasının Prezidentinin qərarına əsasən aldığı problemli aktivlərin (borcların) əvəzində əldə etdiyi, onun mülkiyyətində (balansında) olan və siyahısını Azərbaycan Respublikasının İqtisadiyyat Nazirliyi ilə razılaşdırdığı torpağa görə', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '615.6 Vergi Məcəlləsinin 207.8-ci maddəsinə əsasən Geoloji ayırma sənədi əsasında faydalı qazıntı yataqlarının (neft və qaz yataqları istisna olmaqla) axtarışı, qiymətləndirilməsi və kəşfiyyatı işlərinə cəlb edilən torpaq sahələrinə görə torpaq vergisi müvafiq təsdiqedici sənədlər (geoloji-kəşfiyyat işlərini həyata keçirən şəxsin podrat müqaviləsi, geoloji-kəşfiyyat planı, geoloji-kəşfiyyatla bağlı təqdim edilən hesabat) əsasında faydalı qazıntı yataqlarının axtarışı, qiymətləndirilməsi və kəşfiyyatı işlərinə başlanıldığı təqvim ili üzrə 75 faiz', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '615.7 Vergi Məcəlləsinin 207.9-cu maddəsinə əsasən Vergi Məcəlləsinin 207.9-cu maddəsinə əsasən Kredit təşkilatları məhkəmənin qanuni qüvvəyə minmiş qərarına əsasən müflis elan olunduğu halda kredit təşkilatının müflis elan olunması ilə bağlı məhkəmə qərarının qüvvəyə mindiyi ildən etibarən torpaq vergisini ödəməkdən azaddırlar', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '615.8 Vergi Məcəlləsinin 207.10-cu maddəsinə əsasən Siyahısı Azərbaycan Respublikasının Nazirlər Kabineti tərəfindən təsdiq edilmiş idxal mallarını yerli istehsal (emal) malları ilə əvəz edəcək qida (ərzaq) məhsullarının istehsalı ilə məşğul olan hüquqi və fiziki şəxslər həmin fəaliyyət prosesində istifadə olunan torpaqlara görə müvafiq siyahının təsdiq edildiyi ildən etibarən 7 il müddətinə torpaq vergisini ödəməkdən azaddırlar', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '615.9 Vergi Məcəlləsinin 207.11-ci maddəsinə əsasən Azərbaycan Respublikasında dövlət əmlakının özəlləşdirilməsinin dövlət proqramlarına uyğun olaraq 2023-cü il 1 yanvar tarixindən sonra özəlləşdirilməsi barədə qərar qəbul edilən dövlətə məxsus hüquqi şəxslər özəlləşdirilməsi barədə qərarın qəbul edildiyi ildən etibarən özəlləşdirilmə prosesi müddətində, lakin 3 ildən çox olmayaraq, torpaq vergisini ödəməkdən azaddırlar', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '615.10 Vergi Məcəlləsinin 227.1-ci maddəsinə əsasən İşğaldan azad edilmiş ərazinin rezidentləri', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '616. Büdcəyə ödənilməli vergi məbləğinin cəmi (sətr.612-sətr.615)', SahəAdı2: 'Məlumat' },\r\n ];\r\n\r\n default_rows.forEach(row => {\r\n frm.add_child('table_skib', row);\r\n });\r\n\r\n frm.refresh_field('table_skib'); \r\n }\r\n});", + "script": "frappe.ui.form.on('Land tax declaration', {\r\n onload: function(frm) {\r\n if (!frm.doc.__islocal) return; \r\n\r\n if (!frm.doc.verginin_hesablanması) {\r\n frm.set_value('verginin_hesablanması', []); \r\n }\r\n\r\n const default_rows = [\r\n { göstəricilər: '600. Kənd təsərrüfatı təyinatlı torpaq sahələri üzrə hesablanmış vergi məbləği', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '600.1 Təyinatı üzrə istifadə edilməyən kənd təsərrüfatı torpaqları üzrə hesablanmış vergi məbləği', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '600.2 Təyinatı üzrə istifadə edilən və ya irriqasiya, meliorasiya və digər aqrotexniki səbəblərdən təyinatı üzrə istifadə edilməsi mümkün olmayan kənd təsərrüfatı torpaqları üzrə verginin məbləği', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '611. Sənaye, tikinti, nəqliyyat, rabitə, ticarət-məişət xidməti və digər xüsusi təyinatlı torpaq sahələri, yasayış fondları, həyətyanı və bağ sahələri üzrə hesablanmış vergi məbləği', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '612. Hesablanmış vergi məbləğinin cəmi (sətr.600+sətr.611)', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '615. Güzəştlər (sət.615.1+sət.615.2 + sət.615.3+ sət.615.4+ sət.615.5 + 615.6)', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '615.1 Vergi Məcəlləsinin 207.3-cü maddəsinə əsasən Sənaye, yaxud texnologiyalar parklarının rezidenti olan hüquqi şəxsin sənaye, yaxud texnologiyalar parklarında istifadə etdikləri torpaqlara görə', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '615.2 Vergi Məcəlləsinin 207.4-cü maddəsinə əsasən Sənaye, yaxud texnologiyalar parklarının idarəedici təşkilatı və ya operatorunun sənaye, yaxud texnologiyalar parklarının ərazisində istifadə etdiyi torpaqlara görə', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '615.3 Vergi Məcəlləsinin 207.5-ci maddəsinə əsasən İnvestisiya təşviqi sənədini almış hüquqi şəxs həmin sənədi aldığı tarixdən mülkiyyətində və ya istifadəsində olan müvafiq torpaqlara görə', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '615.4 Vergi Məcəlləsinin 207.6-cı maddəsinə əsasən KOB klaster şirkətləri KOB klaster şirkətlərinin reyestrinə daxil edildiyi tarixdən 7 il müddətinə mülkiyyətində və ya istifadəsində olan torpaqlara görə', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '615.5 Vergi Məcəlləsinin 207.7-ci maddəsinə əsasən \"Aqrarkredit” Qapalı Səhmdar Cəmiyyəti Bank Olmayan Kredit Təşkilatı və “Azərbaycan Sənaye Korporasiyası” Açıq Səhmdar Cəmiyyəti ödəmə qabiliyyətini itirmiş bankların rezolyusiyası və sağlamlaşdırma tədbirləri çərçivəsində Azərbaycan Respublikasının Prezidentinin qərarına əsasən aldığı problemli aktivlərin (borcların) əvəzində əldə etdiyi, onun mülkiyyətində (balansında) olan və siyahısını Azərbaycan Respublikasının İqtisadiyyat Nazirliyi ilə razılaşdırdığı torpağa görə', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '615.6 Vergi Məcəlləsinin 207.8-ci maddəsinə əsasən Geoloji ayırma sənədi əsasında faydalı qazıntı yataqlarının (neft və qaz yataqları istisna olmaqla) axtarışı, qiymətləndirilməsi və kəşfiyyatı işlərinə cəlb edilən torpaq sahələrinə görə torpaq vergisi müvafiq təsdiqedici sənədlər (geoloji-kəşfiyyat işlərini həyata keçirən şəxsin podrat müqaviləsi, geoloji-kəşfiyyat planı, geoloji-kəşfiyyatla bağlı təqdim edilən hesabat) əsasında faydalı qazıntı yataqlarının axtarışı, qiymətləndirilməsi və kəşfiyyatı işlərinə başlanıldığı təqvim ili üzrə 75 faiz', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '615.7 Vergi Məcəlləsinin 207.9-cu maddəsinə əsasən Vergi Məcəlləsinin 207.9-cu maddəsinə əsasən Kredit təşkilatları məhkəmənin qanuni qüvvəyə minmiş qərarına əsasən müflis elan olunduğu halda kredit təşkilatının müflis elan olunması ilə bağlı məhkəmə qərarının qüvvəyə mindiyi ildən etibarən torpaq vergisini ödəməkdən azaddırlar', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '615.8 Vergi Məcəlləsinin 207.10-cu maddəsinə əsasən Siyahısı Azərbaycan Respublikasının Nazirlər Kabineti tərəfindən təsdiq edilmiş idxal mallarını yerli istehsal (emal) malları ilə əvəz edəcək qida (ərzaq) məhsullarının istehsalı ilə məşğul olan hüquqi və fiziki şəxslər həmin fəaliyyət prosesində istifadə olunan torpaqlara görə müvafiq siyahının təsdiq edildiyi ildən etibarən 7 il müddətinə torpaq vergisini ödəməkdən azaddırlar', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '615.9 Vergi Məcəlləsinin 207.11-ci maddəsinə əsasən Azərbaycan Respublikasında dövlət əmlakının özəlləşdirilməsinin dövlət proqramlarına uyğun olaraq 2023-cü il 1 yanvar tarixindən sonra özəlləşdirilməsi barədə qərar qəbul edilən dövlətə məxsus hüquqi şəxslər özəlləşdirilməsi barədə qərarın qəbul edildiyi ildən etibarən özəlləşdirilmə prosesi müddətində, lakin 3 ildən çox olmayaraq, torpaq vergisini ödəməkdən azaddırlar', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '615.10 Vergi məcəlləsinin 207.12-ci maddəsinə əsasən Kredit təşkilatları verilmiş kredit müqabilində onların mülkiyyətinə keçən torpaqlara görə', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '615.11 Vergi Məcəlləsinin 227.1-ci maddəsinə əsasən İşğaldan azad edilmiş ərazinin rezidentləri', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '616. Büdcəyə ödənilməli vergi məbləğinin cəmi (sətr.612-sətr.615)', SahəAdı2: 'Məlumat' },\r\n ];\r\n\r\n default_rows.forEach(row => {\r\n frm.add_child('verginin_hesablanması', row);\r\n });\r\n\r\n frm.refresh_field('verginin_hesablanması'); \r\n }\r\n});", "view": "Form" }, { @@ -1527,5 +1514,27 @@ "name": "RoadTax2Rename", "script": "frappe.ui.form.on('Road tax 2', {\r\n refresh: function(frm) {\r\n const fieldname = 'istehsal';\r\n const new_label = '104. İstehsal edilərək daxili istehlaka yönəldilən (topdan satılan) və idxal olunan yanacaq məhsulları üzrə cəmi hesablanmış icbari tibbi sığorta haqqı';\r\n \r\n if (frm.fields_dict[fieldname]) {\r\n frm.fields_dict[fieldname].df.label = new_label;\r\n frm.fields_dict[fieldname].refresh();\r\n }\r\n }\r\n});", "view": "Form" + }, + { + "docstatus": 0, + "doctype": "Client Script", + "dt": "Declaration of withholding tax on winnings", + "enabled": 1, + "modified": "2025-09-02 14:49:10.312375", + "module": "Taxes Az", + "name": "DefaultDeclarationOfWithholdingTaxOnWinnings", + "script": "frappe.ui.form.on('Declaration of withholding tax on winnings', {\r\n onload: function(frm) {\r\n if (!frm.doc.__islocal) return; \r\n\r\n if (!frm.doc.verginin_hesablanmsı) {\r\n frm.set_value('verginin_hesablanmsı', []); \r\n }\r\n\r\n const default_rows = [\r\n { göstəricilər: '1620 İdman oyunları ilə əlaqədar aparılan mərc oyunlarından uduşlardan (mükafatlardan) əldə edilmiş gəlirlər üzrə', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '1621 Lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan(mükafatlardan) əldə edilmiş gəlirlər üzrə', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '1621.1 O cümlədən qeyri-rezident şəxslər tərəfindən ödənilən gəlirlər üzrə', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '1622 İdman oyunları ilə əlaqədar aparılan mərc oyunlarından, lotereyaların keçirilməsindən, habelə digər yarışlardan və müsabiqələrdən pul şəkilində uduşlardan (mükafatlardan) əldə edilmiş gəlirlər üzrə cəmi', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '1623 Lotereya təşkilatçısı tərəfindən keçirilən lotereyalardan və idman mərc oyunları operatoru tərəfindən keçirilən idman mərc oyunlarından pul şəklində əldə edilən uduşların vergidən azadolunan hissəsi', SahəAdı2: 'Məlumat' },\r\n { göstəricilər: '1625 Ödənilməli vergi məbləği:', SahəAdı2: 'Məlumat' },\r\n ];\r\n\r\n default_rows.forEach(row => {\r\n frm.add_child('verginin_hesablanmsı', row);\r\n });\r\n\r\n frm.refresh_field('verginin_hesablanmsı'); \r\n }\r\n});", + "view": "Form" + }, + { + "docstatus": 0, + "doctype": "Client Script", + "dt": "Land tax declaration", + "enabled": 1, + "modified": "2025-09-02 17:01:54.857634", + "module": "Taxes Az", + "name": "Land tax declaration 2", + "script": "frappe.ui.form.on('Land tax declaration', {\r\n refresh: function(frm) {\r\n\r\n // Старое название поля (метка) и новое название\r\n const old_label = \"600.2 Təyinatı\";\r\n const new_label = \"600.2 Təyinatı üzrə istifadə edilən və ya irreqasiya, meliorasiya və digər aqrotexniki səbəblərdən təyinatı üzrə istifadə edilməsi mümkün olmayan kənd təsərrüfatı torpaq sahələri üzrə cəmi (hektarla)\";\r\n // Поиск элементов в DOM, содержащих старое название\r\n let labels = document.querySelectorAll(\"label, .control-label, .data-label, .section-head\");\r\n let field_found = false;\r\n\r\n labels.forEach(label => {\r\n if (label.textContent.trim() === old_label) {\r\n label.textContent = new_label; // Изменяем текст метки\r\n field_found = true;\r\n }\r\n });\r\n\r\n if (!field_found) {\r\n }\r\n }\r\n});\r\n", + "view": "Form" } ] \ No newline at end of file diff --git a/taxes_az/taxes_az/doctype/declaration_of_withholding_tax_on_winnings/declaration_of_withholding_tax_on_winnings.json b/taxes_az/taxes_az/doctype/declaration_of_withholding_tax_on_winnings/declaration_of_withholding_tax_on_winnings.json index 1a009ec..9753d57 100644 --- a/taxes_az/taxes_az/doctype/declaration_of_withholding_tax_on_winnings/declaration_of_withholding_tax_on_winnings.json +++ b/taxes_az/taxes_az/doctype/declaration_of_withholding_tax_on_winnings/declaration_of_withholding_tax_on_winnings.json @@ -33,7 +33,7 @@ "verginin_hesablanmas\u0131_tab", "html_owur", "section_break_bebd", - "table_hyte" + "verginin_hesablanms\u0131" ], "fields": [ { @@ -132,8 +132,8 @@ { "fieldname": "d\u0259qiql\u0259\u015fdirilmi\u015fb\u0259yannam\u0259nint\u0259qdimedilm\u0259sibar\u0259d\u0259bildiri\u015f", "fieldtype": "Float", - "precision": "2", - "label": "D\u0259qiql\u0259\u015fdirilmi\u015f b\u0259yannam\u0259nin t\u0259qdim edilm\u0259si bar\u0259d\u0259 bildiri\u015fin n\u00f6mr\u0259si" + "label": "D\u0259qiql\u0259\u015fdirilmi\u015f b\u0259yannam\u0259nin t\u0259qdim edilm\u0259si bar\u0259d\u0259 bildiri\u015fin n\u00f6mr\u0259si", + "precision": "2" }, { "fieldname": "column_break_xcxz", @@ -174,20 +174,20 @@ "fieldname": "section_break_bebd", "fieldtype": "Section Break" }, - { - "fieldname": "table_hyte", - "fieldtype": "Table", - "options": "Declaration of withholding tax on winnings Vergi hesab" - }, { "fieldname": "idar\u0259", "fieldtype": "Section Break", "label": "\u0130dar\u0259" + }, + { + "fieldname": "verginin_hesablanms\u0131", + "fieldtype": "Table", + "options": "Declaration of withholding tax on winnings Vergi hesab" } ], "index_web_pages_for_search": 1, "links": [], - "modified": "2025-01-15 14:16:46.233819", + "modified": "2025-09-02 14:45:38.031668", "modified_by": "Administrator", "module": "Taxes Az", "name": "Declaration of withholding tax on winnings", diff --git a/taxes_az/taxes_az/doctype/declaration_of_withholding_tax_on_winnings_vergi_hesab/declaration_of_withholding_tax_on_winnings_vergi_hesab.json b/taxes_az/taxes_az/doctype/declaration_of_withholding_tax_on_winnings_vergi_hesab/declaration_of_withholding_tax_on_winnings_vergi_hesab.json index 13d6f6c..701a77d 100644 --- a/taxes_az/taxes_az/doctype/declaration_of_withholding_tax_on_winnings_vergi_hesab/declaration_of_withholding_tax_on_winnings_vergi_hesab.json +++ b/taxes_az/taxes_az/doctype/declaration_of_withholding_tax_on_winnings_vergi_hesab/declaration_of_withholding_tax_on_winnings_vergi_hesab.json @@ -16,29 +16,29 @@ "fieldtype": "Select", "in_list_view": 1, "label": "G\u00f6st\u0259ricil\u0259r", - "options": "1620. \u0130dman m\u0259rc oyunlar\u0131ndan \u0259ld\u0259 edilmi\u015f udu\u015flar", + "options": "1620 \u0130dman oyunlar\u0131 il\u0259 \u0259laq\u0259dar apar\u0131lan m\u0259rc oyunlar\u0131ndan udu\u015flardan (m\u00fckafatlardan) \u0259ld\u0259 edilmi\u015f g\u0259lirl\u0259r \u00fczr\u0259\n1621 Lotereyalar\u0131n ke\u00e7irilm\u0259sind\u0259n, habel\u0259 dig\u0259r yar\u0131\u015flardan v\u0259 m\u00fcsabiq\u0259l\u0259rd\u0259n pul \u015f\u0259kilind\u0259 udu\u015flardan(m\u00fckafatlardan) \u0259ld\u0259 edilmi\u015f g\u0259lirl\u0259r \u00fczr\u0259\n1621.1 O c\u00fcml\u0259d\u0259n qeyri-rezident \u015f\u0259xsl\u0259r t\u0259r\u0259find\u0259n \u00f6d\u0259nil\u0259n g\u0259lirl\u0259r \u00fczr\u0259\n1622 \u0130dman oyunlar\u0131 il\u0259 \u0259laq\u0259dar apar\u0131lan m\u0259rc oyunlar\u0131ndan, lotereyalar\u0131n ke\u00e7irilm\u0259sind\u0259n, habel\u0259 dig\u0259r yar\u0131\u015flardan v\u0259 m\u00fcsabiq\u0259l\u0259rd\u0259n pul \u015f\u0259kilind\u0259 udu\u015flardan (m\u00fckafatlardan) \u0259ld\u0259 edilmi\u015f g\u0259lirl\u0259r \u00fczr\u0259 c\u0259mi\n1623 Lotereya t\u0259\u015fkilat\u00e7\u0131s\u0131 t\u0259r\u0259find\u0259n ke\u00e7iril\u0259n lotereyalardan v\u0259 idman m\u0259rc oyunlar\u0131 operatoru t\u0259r\u0259find\u0259n ke\u00e7iril\u0259n idman m\u0259rc oyunlar\u0131ndan pul \u015f\u0259klind\u0259 \u0259ld\u0259 edil\u0259n udu\u015flar\u0131n vergid\u0259n azadolunan hiss\u0259si\n1625 \u00d6d\u0259nilm\u0259li vergi m\u0259bl\u0259\u011fi:", "read_only": 1 }, { "fieldname": "g\u0259lirinm\u0259bl\u0259\u011fimanatla", "fieldtype": "Float", - "precision": "2", "in_list_view": 1, - "label": "G\u0259lirin m\u0259bl\u0259\u011fi, manatla" + "label": "G\u0259lirin m\u0259bl\u0259\u011fi, manatla", + "precision": "2" }, { "fieldname": "vergininm\u0259bl\u0259\u011fimanatla", "fieldtype": "Float", - "precision": "2", "in_list_view": 1, "label": "Verginin m\u0259bl\u0259\u011fi, manatla", + "precision": "2", "read_only": 1 } ], "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2025-01-10 12:05:53.533420", + "modified": "2025-09-02 14:39:19.937690", "modified_by": "Administrator", "module": "Taxes Az", "name": "Declaration of withholding tax on winnings Vergi hesab", diff --git a/taxes_az/taxes_az/doctype/land_tax_declaration/land_tax_declaration.json b/taxes_az/taxes_az/doctype/land_tax_declaration/land_tax_declaration.json index 0897f9c..9bbb333 100644 --- a/taxes_az/taxes_az/doctype/land_tax_declaration/land_tax_declaration.json +++ b/taxes_az/taxes_az/doctype/land_tax_declaration/land_tax_declaration.json @@ -35,36 +35,36 @@ "verginin_hesablanmas\u0131_tab", "html_ikbb", "section_break_rjpz", - "table_skib", + "verginin_hesablanmas\u0131", "\u0259lav\u0259_1_tab", "section_break_qlqi", - "table_yehy", + "\u0259lav\u0259_1", "section_break_mhes", "html_juxb", "t\u0259yinat\u0131\u00fczr\u0259istifad\u0259edilm\u0259y\u0259nk\u0259ndt\u0259s\u0259rr\u00fcfat\u0131torpaqsah\u0259l\u0259ric\u0259mi", "\u00fcmumisah\u0259", "column_break_sbfi", - "oc\u00fcml\u0259d\u0259nvergiy\u0259c\u0259lbolunmayansah\u0259", + "vergiy\u0259c\u0259lbolunmayansah\u0259", "column_break_mdei", - "vergim\u0259bl\u0259\u011fi", + "vergim\u0259bl\u0259\u011fimanatla", "6002t\u0259yinat\u0131\u00fczr\u0259istifad\u0259edil\u0259n", - "\u00fcmumisah\u02591", + "\u00fcmumisah\u02592", "column_break_vjhv", - "oc\u00fcml\u0259d\u0259nvergiy\u0259c\u0259lbolunmayansah\u02591", + "vergiy\u0259c\u0259lbolunmayansah\u02592", "column_break_gxlo", - "vergim\u0259bl\u0259\u011fi1", + "vergim\u0259bl\u0259\u011fimanatla2", "600k\u0259ndt\u0259s\u0259rr\u00fcfat\u0131t\u0259yinatl\u0131torpaqsah\u0259l\u0259ri\u00fczr\u0259c\u0259mi", - "int_tizs", + "vergim\u0259bl\u0259\u011fimanatla3", "\u0259lav\u0259_2_tab", "html_ybie", "section_break_hnrj", - "table_mavl", + "\u0259lav\u0259_2", "611\u00fczr\u0259vergininc\u0259mi", - "\u00fcmumisah\u02592", + "\u00fcmumisah\u02594", "column_break_bnhl", - "oc\u00fcml\u0259d\u0259nvergiy\u0259c\u0259lbolunmayansah\u02592", + "vergiy\u0259c\u0259lbolunmayansah\u02594", "column_break_lhqj", - "vergim\u0259bl\u0259\u011fi2" + "vergim\u0259bl\u0259\u011fimanatla4" ], "fields": [ { @@ -168,8 +168,8 @@ { "fieldname": "d\u0259qiql\u0259\u015fdirilmi\u015fb\u0259yannam\u0259nint\u0259qdimedilm\u0259sibar\u0259d\u0259bildiri\u015f", "fieldtype": "Float", - "precision": "2", - "label": "D\u0259qiql\u0259\u015fdirilmi\u015f b\u0259yannam\u0259nin t\u0259qdim edilm\u0259si bar\u0259d\u0259 bildiri\u015fin n\u00f6mr\u0259si" + "label": "D\u0259qiql\u0259\u015fdirilmi\u015f b\u0259yannam\u0259nin t\u0259qdim edilm\u0259si bar\u0259d\u0259 bildiri\u015fin n\u00f6mr\u0259si", + "precision": "2" }, { "fieldname": "column_break_xcxz", @@ -231,29 +231,14 @@ "fieldname": "section_break_rjpz", "fieldtype": "Section Break" }, - { - "fieldname": "table_skib", - "fieldtype": "Table", - "options": "Land tax declaration Vergi Hesab" - }, { "fieldname": "section_break_qlqi", "fieldtype": "Section Break" }, - { - "fieldname": "table_yehy", - "fieldtype": "Table", - "options": "Land tax declaration Elave 1" - }, { "fieldname": "section_break_hnrj", "fieldtype": "Section Break" }, - { - "fieldname": "table_mavl", - "fieldtype": "Table", - "options": "Land tax declaration Elave 2" - }, { "fieldname": "section_break_mhes", "fieldtype": "Section Break" @@ -271,60 +256,30 @@ { "fieldname": "\u00fcmumisah\u0259", "fieldtype": "Float", - "precision": "2", - "label": "\u00dcmumi sah\u0259" + "label": "\u00dcmumi sah\u0259", + "precision": "2" }, { "fieldname": "column_break_sbfi", "fieldtype": "Column Break" }, - { - "fieldname": "oc\u00fcml\u0259d\u0259nvergiy\u0259c\u0259lbolunmayansah\u0259", - "fieldtype": "Float", - "precision": "2", - "label": "o c\u00fcml\u0259d\u0259n, vergiy\u0259 c\u0259lb olunmayan sah\u0259" - }, { "fieldname": "column_break_mdei", "fieldtype": "Column Break" }, - { - "fieldname": "vergim\u0259bl\u0259\u011fi", - "fieldtype": "Float", - "precision": "2", - "label": "Vergi m\u0259bl\u0259\u011fi" - }, { "fieldname": "6002t\u0259yinat\u0131\u00fczr\u0259istifad\u0259edil\u0259n", "fieldtype": "Section Break", - "label": "600.2 T\u0259yinat\u0131 \u00fczr\u0259 istifad\u0259 edil\u0259n" - }, - { - "fieldname": "\u00fcmumisah\u02591", - "fieldtype": "Float", - "precision": "2", - "label": "\u00dcmumi sah\u0259" + "label": "600.2 T\u0259yinat\u0131" }, { "fieldname": "column_break_vjhv", "fieldtype": "Column Break" }, - { - "fieldname": "oc\u00fcml\u0259d\u0259nvergiy\u0259c\u0259lbolunmayansah\u02591", - "fieldtype": "Float", - "precision": "2", - "label": "o c\u00fcml\u0259d\u0259n, vergiy\u0259 c\u0259lb olunmayan sah\u0259" - }, { "fieldname": "column_break_gxlo", "fieldtype": "Column Break" }, - { - "fieldname": "vergim\u0259bl\u0259\u011fi1", - "fieldtype": "Float", - "precision": "2", - "label": "Vergi m\u0259bl\u0259\u011fi" - }, { "fieldname": "600k\u0259ndt\u0259s\u0259rr\u00fcfat\u0131t\u0259yinatl\u0131torpaqsah\u0259l\u0259ri\u00fczr\u0259c\u0259mi", "fieldtype": "Section Break", @@ -338,38 +293,84 @@ { "fieldname": "\u00fcmumisah\u02592", "fieldtype": "Float", - "precision": "2", - "label": "\u00dcmumi sah\u0259" + "label": "\u00dcmumi sah\u0259", + "precision": "2" }, { "fieldname": "column_break_bnhl", "fieldtype": "Column Break" }, - { - "fieldname": "oc\u00fcml\u0259d\u0259nvergiy\u0259c\u0259lbolunmayansah\u02592", - "fieldtype": "Float", - "precision": "2", - "label": "o c\u00fcml\u0259d\u0259n, vergiy\u0259 c\u0259lb olunmayan sah\u0259" - }, { "fieldname": "column_break_lhqj", "fieldtype": "Column Break" }, { - "fieldname": "vergim\u0259bl\u0259\u011fi2", - "fieldtype": "Float", - "precision": "2", - "label": "Vergi m\u0259bl\u0259\u011fi" + "fieldname": "verginin_hesablanmas\u0131", + "fieldtype": "Table", + "options": "Land tax declaration Vergi Hesab" }, { - "fieldname": "int_tizs", + "fieldname": "\u0259lav\u0259_1", + "fieldtype": "Table", + "options": "Land tax declaration Elave 1" + }, + { + "fieldname": "\u0259lav\u0259_2", + "fieldtype": "Table", + "options": "Land tax declaration Elave 2" + }, + { + "fieldname": "vergiy\u0259c\u0259lbolunmayansah\u0259", "fieldtype": "Float", + "label": "Vergiy\u0259 c\u0259lb olunmayan sah\u0259", + "precision": "2" + }, + { + "fieldname": "vergim\u0259bl\u0259\u011fimanatla", + "fieldtype": "Float", + "label": "Vergi m\u0259bl\u0259\u011fi, manatla", + "precision": "2" + }, + { + "fieldname": "vergiy\u0259c\u0259lbolunmayansah\u02592", + "fieldtype": "Float", + "label": "Vergiy\u0259 c\u0259lb olunmayan sah\u0259", + "precision": "2" + }, + { + "fieldname": "vergim\u0259bl\u0259\u011fimanatla2", + "fieldtype": "Float", + "label": "Vergi m\u0259bl\u0259\u011fi, manatla", + "precision": "2" + }, + { + "fieldname": "vergim\u0259bl\u0259\u011fimanatla3", + "fieldtype": "Float", + "label": "Vergi m\u0259bl\u0259\u011fi, manatla", + "precision": "2" + }, + { + "fieldname": "vergiy\u0259c\u0259lbolunmayansah\u02594", + "fieldtype": "Float", + "label": "Vergiy\u0259 c\u0259lb olunmayan sah\u0259", + "precision": "2" + }, + { + "fieldname": "vergim\u0259bl\u0259\u011fimanatla4", + "fieldtype": "Float", + "label": "Vergi m\u0259bl\u0259\u011fi, manatla", + "precision": "2" + }, + { + "fieldname": "\u00fcmumisah\u02594", + "fieldtype": "Float", + "label": "\u00dcmumi sah\u0259", "precision": "2" } ], "index_web_pages_for_search": 1, "links": [], - "modified": "2025-01-20 20:10:41.343043", + "modified": "2025-09-02 17:05:55.022813", "modified_by": "Administrator", "module": "Taxes Az", "name": "Land tax declaration", diff --git a/taxes_az/taxes_az/doctype/land_tax_declaration_elave_1/land_tax_declaration_elave_1.json b/taxes_az/taxes_az/doctype/land_tax_declaration_elave_1/land_tax_declaration_elave_1.json index 0b9108d..1e8cc4a 100644 --- a/taxes_az/taxes_az/doctype/land_tax_declaration_elave_1/land_tax_declaration_elave_1.json +++ b/taxes_az/taxes_az/doctype/land_tax_declaration_elave_1/land_tax_declaration_elave_1.json @@ -6,8 +6,7 @@ "editable_grid": 1, "engine": "InnoDB", "field_order": [ - "b\u0259yannam\u0259\u00fczr\u0259s\u0259trinkodu", - "b\u0259yannam\u0259\u00fczr\u0259s\u0259trinad\u0131", + "b\u0259yannam\u0259s\u0259trininkoduv\u0259ad\u0131", "torpaqsah\u0259sininyerl\u0259\u015fdiyikadastrqiym\u0259trayonununkodu", "torpaqsah\u0259sininyerl\u0259\u015fdiyikadastrqiym\u0259trayonununad\u0131", "keyfiyy\u0259tqrupu", @@ -15,29 +14,17 @@ "torpaqsah\u0259sinint\u0259yinat\u0131bi\u00e7\u0259n\u0259k\u00f6r\u00fc\u015fotlaqlar", "torpaqsah\u0259si6001kodlar\u00fczr\u0259kvmetrl\u02596002kodlar\u00fczr\u0259hektarla\u00fcmumi", "torpaqsah\u0259si6001kodlar\u00fczr\u0259kvmetrl\u02596002kodlar\u00fczr\u0259hektarla", + "torpaqsah\u0259sininoldu\u011fuaylar\u0131nsay\u0131", "vergim\u0259bl\u0259\u011fimanatla" ], "fields": [ - { - "fieldname": "b\u0259yannam\u0259\u00fczr\u0259s\u0259trinkodu", - "fieldtype": "Select", - "in_list_view": 1, - "label": "B\u0259yannam\u0259 \u00fczr\u0259 s\u0259trin kodu", - "options": "600.1\n600.2" - }, - { - "fieldname": "b\u0259yannam\u0259\u00fczr\u0259s\u0259trinad\u0131", - "fieldtype": "Date", - "in_list_view": 1, - "label": "B\u0259yannam\u0259 \u00fczr\u0259 s\u0259trin ad\u0131", - "read_only": 1 - }, { "fieldname": "torpaqsah\u0259sininyerl\u0259\u015fdiyikadastrqiym\u0259trayonununkodu", - "fieldtype": "Float", - "precision": "2", + "fieldtype": "Int", "in_list_view": 1, - "label": "Torpaq sah\u0259sinin yerl\u0259\u015fdiyi kadastr qiym\u0259t rayonunun kodu" + "label": "Torpaq sah\u0259sinin yerl\u0259\u015fdiyi kadastr qiym\u0259t rayonunun kodu", + "length": 2, + "precision": "2" }, { "fieldname": "torpaqsah\u0259sininyerl\u0259\u015fdiyikadastrqiym\u0259trayonununad\u0131", @@ -70,30 +57,44 @@ { "fieldname": "torpaqsah\u0259si6001kodlar\u00fczr\u0259kvmetrl\u02596002kodlar\u00fczr\u0259hektarla\u00fcmumi", "fieldtype": "Float", - "precision": "2", "in_list_view": 1, - "label": "Torpaq sah\u0259si (600.1 kodlar \u00fczr\u0259 kv. metrl\u0259, 600.2 kodlar \u00fczr\u0259 hektarla) \u00fcmumi sah\u0259" + "label": "Torpaq sah\u0259si (600.1 kodlar \u00fczr\u0259 kv. metrl\u0259, 600.2 kodlar \u00fczr\u0259 hektarla) \u00fcmumi sah\u0259", + "precision": "2" }, { "fieldname": "torpaqsah\u0259si6001kodlar\u00fczr\u0259kvmetrl\u02596002kodlar\u00fczr\u0259hektarla", "fieldtype": "Float", - "precision": "2", "in_list_view": 1, - "label": "Torpaq sah\u0259si (600.1 kodlar \u00fczr\u0259 kv. metrl\u0259, 600.2 kodlar \u00fczr\u0259 hektarla) O c\u00fcml\u0259d\u0259n, vergiy\u0259 c\u0259lb olunmayan sah\u0259" + "label": "Torpaq sah\u0259si (600.1 kodlar \u00fczr\u0259 kv. metrl\u0259, 600.2 kodlar \u00fczr\u0259 hektarla) O c\u00fcml\u0259d\u0259n, vergiy\u0259 c\u0259lb olunmayan sah\u0259", + "precision": "2" }, { "fieldname": "vergim\u0259bl\u0259\u011fimanatla", "fieldtype": "Float", - "precision": "2", "in_list_view": 1, "label": "Vergi m\u0259bl\u0259\u011fi, manatla", + "precision": "2", "read_only": 1 + }, + { + "fieldname": "b\u0259yannam\u0259s\u0259trininkoduv\u0259ad\u0131", + "fieldtype": "Select", + "in_list_view": 1, + "label": "B\u0259yannam\u0259 s\u0259trinin kodu v\u0259 ad\u0131", + "options": "600.1 T\u0259yinat\u0131 \u00fczr\u0259 istifad\u0259 edilm\u0259y\u0259n k\u0259nd t\u0259s\u0259rr\u00fcfat\u0131 torpaqlar\u0131 \u00fczr\u0259 hesablanm\u0131\u015f vergi m\u0259bl\u0259\u011fi\n600.2 T\u0259yinat\u0131 \u00fczr\u0259 istifad\u0259 edil\u0259n v\u0259 ya irriqasiya, meliorasiya v\u0259 dig\u0259r aqrotexniki s\u0259b\u0259bl\u0259rd\u0259n t\u0259yinat\u0131 \u00fczr\u0259 istifad\u0259 edilm\u0259si m\u00fcmk\u00fcn olmayan k\u0259nd t\u0259s\u0259rr\u00fcfat\u0131 torpaqlar\u0131 \u00fczr\u0259 verginin m\u0259bl\u0259\u011fi" + }, + { + "fieldname": "torpaqsah\u0259sininoldu\u011fuaylar\u0131nsay\u0131", + "fieldtype": "Float", + "in_list_view": 1, + "label": "Torpaq sah\u0259sinin vergi \u00f6d\u0259yicisinin hesabat ili \u0259rzind\u0259 m\u00fclkiyy\u0259tind\u0259 (icar\u0259 v\u0259 ya dig\u0259r \u0259saslarla istifad\u0259sind\u0259) oldu\u011fu aylar\u0131n say\u0131", + "precision": "2" } ], "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2025-01-20 20:13:39.077537", + "modified": "2025-09-02 16:46:09.956144", "modified_by": "Administrator", "module": "Taxes Az", "name": "Land tax declaration Elave 1", diff --git a/taxes_az/taxes_az/doctype/land_tax_declaration_elave_2/land_tax_declaration_elave_2.json b/taxes_az/taxes_az/doctype/land_tax_declaration_elave_2/land_tax_declaration_elave_2.json index 6e352e9..638a1dd 100644 --- a/taxes_az/taxes_az/doctype/land_tax_declaration_elave_2/land_tax_declaration_elave_2.json +++ b/taxes_az/taxes_az/doctype/land_tax_declaration_elave_2/land_tax_declaration_elave_2.json @@ -10,26 +10,26 @@ "torpaqsah\u0259sininyerl\u0259\u015fdiyi\u0259razim\u0259nt\u0259q\u0259sininad\u0131", "torpaqsah\u0259sinint\u0259yinat\u0131s\u0259nay\u0259tikinti", "torpaqsah\u0259sinint\u0259yinat\u0131ya\u015fay\u0131\u015ffondlar\u0131", + "faydal\u0131qaz\u0131nt\u0131\u00e7\u0131xar\u0131lmas\u0131bar\u0259d\u0259qeyd", "torpaqsah\u0259sikvmetrl\u0259\u00fcmumisah\u0259", "torpaqsah\u0259sikvmetrl\u0259oc\u00fcml\u0259d\u0259nvergiy\u0259c\u0259lbolunmayansah\u0259", - "vergim\u0259bl\u0259\u011fimanatla", - "faydal\u0131qaz\u0131nt\u0131\u00e7\u0131xar\u0131lmas\u0131bar\u0259d\u0259qeydm\u00fcvafiqxanadaxg\u00f6st\u0259rin" + "vergim\u0259bl\u0259\u011fimanatla" ], "fields": [ { "fieldname": "vergim\u0259bl\u0259\u011fimanatla", "fieldtype": "Float", - "precision": "2", "in_list_view": 1, "label": "Vergi m\u0259bl\u0259\u011fi, manatla", + "precision": "2", "read_only": 1 }, { "fieldname": "torpaqsah\u0259sininyerl\u0259\u015fdiyi\u0259razim\u0259nt\u0259q\u0259sininkodu", "fieldtype": "Float", - "precision": "2", "in_list_view": 1, - "label": "Torpaq sah\u0259sinin yerl\u0259\u015fdiyi \u0259razi m\u0259nt\u0259q\u0259sinin kodu" + "label": "Torpaq sah\u0259sinin yerl\u0259\u015fdiyi \u0259razi m\u0259nt\u0259q\u0259sinin kodu", + "precision": "2" }, { "fieldname": "torpaqsah\u0259sininyerl\u0259\u015fdiyi\u0259razim\u0259nt\u0259q\u0259sininad\u0131", @@ -55,29 +55,29 @@ { "fieldname": "torpaqsah\u0259sikvmetrl\u0259\u00fcmumisah\u0259", "fieldtype": "Float", - "precision": "2", "in_list_view": 1, - "label": "Torpaq sah\u0259si kv.metrl\u0259 \u00fcmumi sah\u0259" + "label": "Torpaq sah\u0259si kv.metrl\u0259 \u00fcmumi sah\u0259", + "precision": "2" }, { "fieldname": "torpaqsah\u0259sikvmetrl\u0259oc\u00fcml\u0259d\u0259nvergiy\u0259c\u0259lbolunmayansah\u0259", "fieldtype": "Float", - "precision": "2", "in_list_view": 1, - "label": "Torpaq sah\u0259si kv.metrl\u0259 O c\u00fcml\u0259d\u0259n, vergiy\u0259 c\u0259lb olunmayan sah\u0259" + "label": "Torpaq sah\u0259si kv.metrl\u0259 O c\u00fcml\u0259d\u0259n, vergiy\u0259 c\u0259lb olunmayan sah\u0259", + "precision": "2" }, { "default": "0", - "fieldname": "faydal\u0131qaz\u0131nt\u0131\u00e7\u0131xar\u0131lmas\u0131bar\u0259d\u0259qeydm\u00fcvafiqxanadaxg\u00f6st\u0259rin", + "fieldname": "faydal\u0131qaz\u0131nt\u0131\u00e7\u0131xar\u0131lmas\u0131bar\u0259d\u0259qeyd", "fieldtype": "Check", "in_list_view": 1, - "label": "Faydal\u0131 qaz\u0131nt\u0131 \u00e7\u0131xar\u0131lmas\u0131 bar\u0259d\u0259 qeyd (m\u00fcvafiq xanada X g\u00f6st\u0259rin)" + "label": "Faydal\u0131 qaz\u0131nt\u0131 \u00e7\u0131xar\u0131lmas\u0131 bar\u0259d\u0259 qeyd" } ], "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2025-01-20 19:34:14.520967", + "modified": "2025-09-02 16:36:58.193908", "modified_by": "Administrator", "module": "Taxes Az", "name": "Land tax declaration Elave 2", diff --git a/taxes_az/taxes_az/doctype/land_tax_declaration_vergi_hesab/land_tax_declaration_vergi_hesab.json b/taxes_az/taxes_az/doctype/land_tax_declaration_vergi_hesab/land_tax_declaration_vergi_hesab.json index 71bc98e..c4c7ad9 100644 --- a/taxes_az/taxes_az/doctype/land_tax_declaration_vergi_hesab/land_tax_declaration_vergi_hesab.json +++ b/taxes_az/taxes_az/doctype/land_tax_declaration_vergi_hesab/land_tax_declaration_vergi_hesab.json @@ -15,21 +15,21 @@ "fieldtype": "Select", "in_list_view": 1, "label": "G\u00f6st\u0259ricil\u0259r", - "options": "600. K\u0259nd t\u0259s\u0259rr\u00fcfat\u0131 t\u0259yinatl\u0131 torpaq sah\u0259l\u0259ri \u00fczr\u0259 hesablanm\u0131\u015f vergi m\u0259bl\u0259\u011fi\n600.1 T\u0259yinat\u0131 \u00fczr\u0259 istifad\u0259 edilm\u0259y\u0259n k\u0259nd t\u0259s\u0259rr\u00fcfat\u0131 torpaqlar\u0131 \u00fczr\u0259 hesablanm\u0131\u015f vergi m\u0259bl\u0259\u011fi\n600.2 T\u0259yinat\u0131 \u00fczr\u0259 istifad\u0259 edil\u0259n v\u0259 ya irriqasiya, meliorasiya v\u0259 dig\u0259r aqrotexniki s\u0259b\u0259bl\u0259rd\u0259n t\u0259yinat\u0131 \u00fczr\u0259 istifad\u0259 edilm\u0259si m\u00fcmk\u00fcn olmayan k\u0259nd t\u0259s\u0259rr\u00fcfat\u0131 torpaqlar\u0131 \u00fczr\u0259 verginin m\u0259bl\u0259\u011fi\n611. S\u0259naye, tikinti, n\u0259qliyyat, rabit\u0259, ticar\u0259t-m\u0259i\u015f\u0259t xidm\u0259ti v\u0259 dig\u0259r x\u00fcsusi t\u0259yinatl\u0131 torpaq sah\u0259l\u0259ri, yasay\u0131\u015f fondlar\u0131, h\u0259y\u0259tyan\u0131 v\u0259 ba\u011f sah\u0259l\u0259ri \u00fczr\u0259 hesablanm\u0131\u015f vergi m\u0259bl\u0259\u011fi\n612. Hesablanm\u0131\u015f vergi m\u0259bl\u0259\u011finin c\u0259mi (s\u0259tr.600+s\u0259tr.611)\n615. G\u00fcz\u0259\u015ftl\u0259r (s\u0259t.615.1+s\u0259t.615.2 + s\u0259t.615.3+ s\u0259t.615.4+ s\u0259t.615.5 + 615.6)\n615.1 Vergi M\u0259c\u0259ll\u0259sinin 207.3-c\u00fc madd\u0259sin\u0259 \u0259sas\u0259n S\u0259naye, yaxud texnologiyalar parklar\u0131n\u0131n rezidenti olan h\u00fcquqi \u015f\u0259xsin s\u0259naye, yaxud texnologiyalar parklar\u0131nda istifad\u0259 etdikl\u0259ri torpaqlara g\u00f6r\u0259\n615.2 Vergi M\u0259c\u0259ll\u0259sinin 207.4-c\u00fc madd\u0259sin\u0259 \u0259sas\u0259n S\u0259naye, yaxud texnologiyalar parklar\u0131n\u0131n idar\u0259edici t\u0259\u015fkilat\u0131 v\u0259 ya operatorunun s\u0259naye, yaxud texnologiyalar parklar\u0131n\u0131n \u0259razisind\u0259 istifad\u0259 etdiyi torpaqlara g\u00f6r\u0259\n615.3 Vergi M\u0259c\u0259ll\u0259sinin 207.5-ci madd\u0259sin\u0259 \u0259sas\u0259n \u0130nvestisiya t\u0259\u015fviqi s\u0259n\u0259dini alm\u0131\u015f h\u00fcquqi \u015f\u0259xs h\u0259min s\u0259n\u0259di ald\u0131\u011f\u0131 tarixd\u0259n m\u00fclkiyy\u0259tind\u0259 v\u0259 ya istifad\u0259sind\u0259 olan m\u00fcvafiq torpaqlara g\u00f6r\u0259\n615.4 Vergi M\u0259c\u0259ll\u0259sinin 207.6-c\u0131 madd\u0259sin\u0259 \u0259sas\u0259n KOB klaster \u015firk\u0259tl\u0259ri KOB klaster \u015firk\u0259tl\u0259rinin reyestrin\u0259 daxil edildiyi tarixd\u0259n 7 il m\u00fcdd\u0259tin\u0259 m\u00fclkiyy\u0259tind\u0259 v\u0259 ya istifad\u0259sind\u0259 olan torpaqlara g\u00f6r\u0259\n615.5 Vergi M\u0259c\u0259ll\u0259sinin 207.7-ci madd\u0259sin\u0259 \u0259sas\u0259n \"Aqrarkredit\u201d Qapal\u0131 S\u0259hmdar C\u0259miyy\u0259ti Bank Olmayan Kredit T\u0259\u015fkilat\u0131 v\u0259 \u201cAz\u0259rbaycan S\u0259naye Korporasiyas\u0131\u201d A\u00e7\u0131q S\u0259hmdar C\u0259miyy\u0259ti \u00f6d\u0259m\u0259 qabiliyy\u0259tini itirmi\u015f banklar\u0131n rezolyusiyas\u0131 v\u0259 sa\u011flamla\u015fd\u0131rma t\u0259dbirl\u0259ri \u00e7\u0259r\u00e7iv\u0259sind\u0259 Az\u0259rbaycan Respublikas\u0131n\u0131n Prezidentinin q\u0259rar\u0131na \u0259sas\u0259n ald\u0131\u011f\u0131 problemli aktivl\u0259rin (borclar\u0131n) \u0259v\u0259zind\u0259 \u0259ld\u0259 etdiyi, onun m\u00fclkiyy\u0259tind\u0259 (balans\u0131nda) olan v\u0259 siyah\u0131s\u0131n\u0131 Az\u0259rbaycan Respublikas\u0131n\u0131n \u0130qtisadiyyat Nazirliyi il\u0259 raz\u0131la\u015fd\u0131rd\u0131\u011f\u0131 torpa\u011fa g\u00f6r\u0259\n615.6 Vergi M\u0259c\u0259ll\u0259sinin 207.8-ci madd\u0259sin\u0259 \u0259sas\u0259n Geoloji ay\u0131rma s\u0259n\u0259di \u0259sas\u0131nda faydal\u0131 qaz\u0131nt\u0131 yataqlar\u0131n\u0131n (neft v\u0259 qaz yataqlar\u0131 istisna olmaqla) axtar\u0131\u015f\u0131, qiym\u0259tl\u0259ndirilm\u0259si v\u0259 k\u0259\u015ffiyyat\u0131 i\u015fl\u0259rin\u0259 c\u0259lb edil\u0259n torpaq sah\u0259l\u0259rin\u0259 g\u00f6r\u0259 torpaq vergisi m\u00fcvafiq t\u0259sdiqedici s\u0259n\u0259dl\u0259r (geoloji-k\u0259\u015ffiyyat i\u015fl\u0259rini h\u0259yata ke\u00e7ir\u0259n \u015f\u0259xsin podrat m\u00fcqavil\u0259si, geoloji-k\u0259\u015ffiyyat plan\u0131, geoloji-k\u0259\u015ffiyyatla ba\u011fl\u0131 t\u0259qdim edil\u0259n hesabat) \u0259sas\u0131nda faydal\u0131 qaz\u0131nt\u0131 yataqlar\u0131n\u0131n axtar\u0131\u015f\u0131, qiym\u0259tl\u0259ndirilm\u0259si v\u0259 k\u0259\u015ffiyyat\u0131 i\u015fl\u0259rin\u0259 ba\u015flan\u0131ld\u0131\u011f\u0131 t\u0259qvim ili \u00fczr\u0259 75 faiz\n615.7 Vergi M\u0259c\u0259ll\u0259sinin 207.9-cu madd\u0259sin\u0259 \u0259sas\u0259n Vergi M\u0259c\u0259ll\u0259sinin 207.9-cu madd\u0259sin\u0259 \u0259sas\u0259n Kredit t\u0259\u015fkilatlar\u0131 m\u0259hk\u0259m\u0259nin qanuni q\u00fcvv\u0259y\u0259 minmi\u015f q\u0259rar\u0131na \u0259sas\u0259n m\u00fcflis elan olundu\u011fu halda kredit t\u0259\u015fkilat\u0131n\u0131n m\u00fcflis elan olunmas\u0131 il\u0259 ba\u011fl\u0131 m\u0259hk\u0259m\u0259 q\u0259rar\u0131n\u0131n q\u00fcvv\u0259y\u0259 mindiyi ild\u0259n etibar\u0259n torpaq vergisini \u00f6d\u0259m\u0259kd\u0259n azadd\u0131rlar\n615.8 Vergi M\u0259c\u0259ll\u0259sinin 207.10-cu madd\u0259sin\u0259 \u0259sas\u0259n Siyah\u0131s\u0131 Az\u0259rbaycan Respublikas\u0131n\u0131n Nazirl\u0259r Kabineti t\u0259r\u0259find\u0259n t\u0259sdiq edilmi\u015f idxal mallar\u0131n\u0131 yerli istehsal (emal) mallar\u0131 il\u0259 \u0259v\u0259z ed\u0259c\u0259k qida (\u0259rzaq) m\u0259hsullar\u0131n\u0131n istehsal\u0131 il\u0259 m\u0259\u015f\u011ful olan h\u00fcquqi v\u0259 fiziki \u015f\u0259xsl\u0259r h\u0259min f\u0259aliyy\u0259t prosesind\u0259 istifad\u0259 olunan torpaqlara g\u00f6r\u0259 m\u00fcvafiq siyah\u0131n\u0131n t\u0259sdiq edildiyi ild\u0259n etibar\u0259n 7 il m\u00fcdd\u0259tin\u0259 torpaq vergisini \u00f6d\u0259m\u0259kd\u0259n azadd\u0131rlar\n615.9 Vergi M\u0259c\u0259ll\u0259sinin 207.11-ci madd\u0259sin\u0259 \u0259sas\u0259n Az\u0259rbaycan Respublikas\u0131nda d\u00f6vl\u0259t \u0259mlak\u0131n\u0131n \u00f6z\u0259ll\u0259\u015fdirilm\u0259sinin d\u00f6vl\u0259t proqramlar\u0131na uy\u011fun olaraq 2023-c\u00fc il 1 yanvar tarixind\u0259n sonra \u00f6z\u0259ll\u0259\u015fdirilm\u0259si bar\u0259d\u0259 q\u0259rar q\u0259bul edil\u0259n d\u00f6vl\u0259t\u0259 m\u0259xsus h\u00fcquqi \u015f\u0259xsl\u0259r \u00f6z\u0259ll\u0259\u015fdirilm\u0259si bar\u0259d\u0259 q\u0259rar\u0131n q\u0259bul edildiyi ild\u0259n etibar\u0259n \u00f6z\u0259ll\u0259\u015fdirilm\u0259 prosesi m\u00fcdd\u0259tind\u0259, lakin 3 ild\u0259n \u00e7ox olmayaraq, torpaq vergisini \u00f6d\u0259m\u0259kd\u0259n azadd\u0131rlar\n615.10 Vergi M\u0259c\u0259ll\u0259sinin 227.1-ci madd\u0259sin\u0259 \u0259sas\u0259n \u0130\u015f\u011faldan azad edilmi\u015f \u0259razinin rezidentl\u0259ri\n616. B\u00fcdc\u0259y\u0259 \u00f6d\u0259nilm\u0259li vergi m\u0259bl\u0259\u011finin c\u0259mi (s\u0259tr.612-s\u0259tr.615)", + "options": "600. K\u0259nd t\u0259s\u0259rr\u00fcfat\u0131 t\u0259yinatl\u0131 torpaq sah\u0259l\u0259ri \u00fczr\u0259 hesablanm\u0131\u015f vergi m\u0259bl\u0259\u011fi\n600.1 T\u0259yinat\u0131 \u00fczr\u0259 istifad\u0259 edilm\u0259y\u0259n k\u0259nd t\u0259s\u0259rr\u00fcfat\u0131 torpaqlar\u0131 \u00fczr\u0259 hesablanm\u0131\u015f vergi m\u0259bl\u0259\u011fi\n600.2 T\u0259yinat\u0131 \u00fczr\u0259 istifad\u0259 edil\u0259n v\u0259 ya irriqasiya, meliorasiya v\u0259 dig\u0259r aqrotexniki s\u0259b\u0259bl\u0259rd\u0259n t\u0259yinat\u0131 \u00fczr\u0259 istifad\u0259 edilm\u0259si m\u00fcmk\u00fcn olmayan k\u0259nd t\u0259s\u0259rr\u00fcfat\u0131 torpaqlar\u0131 \u00fczr\u0259 verginin m\u0259bl\u0259\u011fi\n611. S\u0259naye, tikinti, n\u0259qliyyat, rabit\u0259, ticar\u0259t-m\u0259i\u015f\u0259t xidm\u0259ti v\u0259 dig\u0259r x\u00fcsusi t\u0259yinatl\u0131 torpaq sah\u0259l\u0259ri, yasay\u0131\u015f fondlar\u0131, h\u0259y\u0259tyan\u0131 v\u0259 ba\u011f sah\u0259l\u0259ri \u00fczr\u0259 hesablanm\u0131\u015f vergi m\u0259bl\u0259\u011fi\n612. Hesablanm\u0131\u015f vergi m\u0259bl\u0259\u011finin c\u0259mi (s\u0259tr.600+s\u0259tr.611)\n615. G\u00fcz\u0259\u015ftl\u0259r (s\u0259t.615.1+s\u0259t.615.2 + s\u0259t.615.3+ s\u0259t.615.4+ s\u0259t.615.5 + 615.6)\n615.1 Vergi M\u0259c\u0259ll\u0259sinin 207.3-c\u00fc madd\u0259sin\u0259 \u0259sas\u0259n S\u0259naye, yaxud texnologiyalar parklar\u0131n\u0131n rezidenti olan h\u00fcquqi \u015f\u0259xsin s\u0259naye, yaxud texnologiyalar parklar\u0131nda istifad\u0259 etdikl\u0259ri torpaqlara g\u00f6r\u0259\n615.2 Vergi M\u0259c\u0259ll\u0259sinin 207.4-c\u00fc madd\u0259sin\u0259 \u0259sas\u0259n S\u0259naye, yaxud texnologiyalar parklar\u0131n\u0131n idar\u0259edici t\u0259\u015fkilat\u0131 v\u0259 ya operatorunun s\u0259naye, yaxud texnologiyalar parklar\u0131n\u0131n \u0259razisind\u0259 istifad\u0259 etdiyi torpaqlara g\u00f6r\u0259\n615.3 Vergi M\u0259c\u0259ll\u0259sinin 207.5-ci madd\u0259sin\u0259 \u0259sas\u0259n \u0130nvestisiya t\u0259\u015fviqi s\u0259n\u0259dini alm\u0131\u015f h\u00fcquqi \u015f\u0259xs h\u0259min s\u0259n\u0259di ald\u0131\u011f\u0131 tarixd\u0259n m\u00fclkiyy\u0259tind\u0259 v\u0259 ya istifad\u0259sind\u0259 olan m\u00fcvafiq torpaqlara g\u00f6r\u0259\n615.4 Vergi M\u0259c\u0259ll\u0259sinin 207.6-c\u0131 madd\u0259sin\u0259 \u0259sas\u0259n KOB klaster \u015firk\u0259tl\u0259ri KOB klaster \u015firk\u0259tl\u0259rinin reyestrin\u0259 daxil edildiyi tarixd\u0259n 7 il m\u00fcdd\u0259tin\u0259 m\u00fclkiyy\u0259tind\u0259 v\u0259 ya istifad\u0259sind\u0259 olan torpaqlara g\u00f6r\u0259\n615.5 Vergi M\u0259c\u0259ll\u0259sinin 207.7-ci madd\u0259sin\u0259 \u0259sas\u0259n \"Aqrarkredit\u201d Qapal\u0131 S\u0259hmdar C\u0259miyy\u0259ti Bank Olmayan Kredit T\u0259\u015fkilat\u0131 v\u0259 \u201cAz\u0259rbaycan S\u0259naye Korporasiyas\u0131\u201d A\u00e7\u0131q S\u0259hmdar C\u0259miyy\u0259ti \u00f6d\u0259m\u0259 qabiliyy\u0259tini itirmi\u015f banklar\u0131n rezolyusiyas\u0131 v\u0259 sa\u011flamla\u015fd\u0131rma t\u0259dbirl\u0259ri \u00e7\u0259r\u00e7iv\u0259sind\u0259 Az\u0259rbaycan Respublikas\u0131n\u0131n Prezidentinin q\u0259rar\u0131na \u0259sas\u0259n ald\u0131\u011f\u0131 problemli aktivl\u0259rin (borclar\u0131n) \u0259v\u0259zind\u0259 \u0259ld\u0259 etdiyi, onun m\u00fclkiyy\u0259tind\u0259 (balans\u0131nda) olan v\u0259 siyah\u0131s\u0131n\u0131 Az\u0259rbaycan Respublikas\u0131n\u0131n \u0130qtisadiyyat Nazirliyi il\u0259 raz\u0131la\u015fd\u0131rd\u0131\u011f\u0131 torpa\u011fa g\u00f6r\u0259\n615.6 Vergi M\u0259c\u0259ll\u0259sinin 207.8-ci madd\u0259sin\u0259 \u0259sas\u0259n Geoloji ay\u0131rma s\u0259n\u0259di \u0259sas\u0131nda faydal\u0131 qaz\u0131nt\u0131 yataqlar\u0131n\u0131n (neft v\u0259 qaz yataqlar\u0131 istisna olmaqla) axtar\u0131\u015f\u0131, qiym\u0259tl\u0259ndirilm\u0259si v\u0259 k\u0259\u015ffiyyat\u0131 i\u015fl\u0259rin\u0259 c\u0259lb edil\u0259n torpaq sah\u0259l\u0259rin\u0259 g\u00f6r\u0259 torpaq vergisi m\u00fcvafiq t\u0259sdiqedici s\u0259n\u0259dl\u0259r (geoloji-k\u0259\u015ffiyyat i\u015fl\u0259rini h\u0259yata ke\u00e7ir\u0259n \u015f\u0259xsin podrat m\u00fcqavil\u0259si, geoloji-k\u0259\u015ffiyyat plan\u0131, geoloji-k\u0259\u015ffiyyatla ba\u011fl\u0131 t\u0259qdim edil\u0259n hesabat) \u0259sas\u0131nda faydal\u0131 qaz\u0131nt\u0131 yataqlar\u0131n\u0131n axtar\u0131\u015f\u0131, qiym\u0259tl\u0259ndirilm\u0259si v\u0259 k\u0259\u015ffiyyat\u0131 i\u015fl\u0259rin\u0259 ba\u015flan\u0131ld\u0131\u011f\u0131 t\u0259qvim ili \u00fczr\u0259 75 faiz\n615.7 Vergi M\u0259c\u0259ll\u0259sinin 207.9-cu madd\u0259sin\u0259 \u0259sas\u0259n Vergi M\u0259c\u0259ll\u0259sinin 207.9-cu madd\u0259sin\u0259 \u0259sas\u0259n Kredit t\u0259\u015fkilatlar\u0131 m\u0259hk\u0259m\u0259nin qanuni q\u00fcvv\u0259y\u0259 minmi\u015f q\u0259rar\u0131na \u0259sas\u0259n m\u00fcflis elan olundu\u011fu halda kredit t\u0259\u015fkilat\u0131n\u0131n m\u00fcflis elan olunmas\u0131 il\u0259 ba\u011fl\u0131 m\u0259hk\u0259m\u0259 q\u0259rar\u0131n\u0131n q\u00fcvv\u0259y\u0259 mindiyi ild\u0259n etibar\u0259n torpaq vergisini \u00f6d\u0259m\u0259kd\u0259n azadd\u0131rlar\n615.8 Vergi M\u0259c\u0259ll\u0259sinin 207.10-cu madd\u0259sin\u0259 \u0259sas\u0259n Siyah\u0131s\u0131 Az\u0259rbaycan Respublikas\u0131n\u0131n Nazirl\u0259r Kabineti t\u0259r\u0259find\u0259n t\u0259sdiq edilmi\u015f idxal mallar\u0131n\u0131 yerli istehsal (emal) mallar\u0131 il\u0259 \u0259v\u0259z ed\u0259c\u0259k qida (\u0259rzaq) m\u0259hsullar\u0131n\u0131n istehsal\u0131 il\u0259 m\u0259\u015f\u011ful olan h\u00fcquqi v\u0259 fiziki \u015f\u0259xsl\u0259r h\u0259min f\u0259aliyy\u0259t prosesind\u0259 istifad\u0259 olunan torpaqlara g\u00f6r\u0259 m\u00fcvafiq siyah\u0131n\u0131n t\u0259sdiq edildiyi ild\u0259n etibar\u0259n 7 il m\u00fcdd\u0259tin\u0259 torpaq vergisini \u00f6d\u0259m\u0259kd\u0259n azadd\u0131rlar\n615.9 Vergi M\u0259c\u0259ll\u0259sinin 207.11-ci madd\u0259sin\u0259 \u0259sas\u0259n Az\u0259rbaycan Respublikas\u0131nda d\u00f6vl\u0259t \u0259mlak\u0131n\u0131n \u00f6z\u0259ll\u0259\u015fdirilm\u0259sinin d\u00f6vl\u0259t proqramlar\u0131na uy\u011fun olaraq 2023-c\u00fc il 1 yanvar tarixind\u0259n sonra \u00f6z\u0259ll\u0259\u015fdirilm\u0259si bar\u0259d\u0259 q\u0259rar q\u0259bul edil\u0259n d\u00f6vl\u0259t\u0259 m\u0259xsus h\u00fcquqi \u015f\u0259xsl\u0259r \u00f6z\u0259ll\u0259\u015fdirilm\u0259si bar\u0259d\u0259 q\u0259rar\u0131n q\u0259bul edildiyi ild\u0259n etibar\u0259n \u00f6z\u0259ll\u0259\u015fdirilm\u0259 prosesi m\u00fcdd\u0259tind\u0259, lakin 3 ild\u0259n \u00e7ox olmayaraq, torpaq vergisini \u00f6d\u0259m\u0259kd\u0259n azadd\u0131rlar\n615.10 Vergi m\u0259c\u0259ll\u0259sinin 207.12-ci madd\u0259sin\u0259 \u0259sas\u0259n Kredit t\u0259\u015fkilatlar\u0131 verilmi\u015f kredit m\u00fcqabilind\u0259 onlar\u0131n m\u00fclkiyy\u0259tin\u0259 ke\u00e7\u0259n torpaqlara g\u00f6r\u0259\n615.11 Vergi M\u0259c\u0259ll\u0259sinin 227.1-ci madd\u0259sin\u0259 \u0259sas\u0259n \u0130\u015f\u011faldan azad edilmi\u015f \u0259razinin rezidentl\u0259ri\n616. B\u00fcdc\u0259y\u0259 \u00f6d\u0259nilm\u0259li vergi m\u0259bl\u0259\u011finin c\u0259mi (s\u0259tr.612-s\u0259tr.615)", "read_only": 1 }, { "fieldname": "vergim\u0259bl\u0259\u011fimanatla", "fieldtype": "Float", - "precision": "2", "in_list_view": 1, - "label": "Vergi m\u0259bl\u0259\u011fi, manatla" + "label": "Vergi m\u0259bl\u0259\u011fi, manatla", + "precision": "2" } ], "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2025-01-20 18:58:09.363351", + "modified": "2025-09-02 16:20:15.667739", "modified_by": "Administrator", "module": "Taxes Az", "name": "Land tax declaration Vergi Hesab",