From 4c566a1a00ccfcb01d61fb6e2454077bb466c973 Mon Sep 17 00:00:00 2001 From: Ali <010109ali@gmail.com> Date: Mon, 8 Jun 2026 12:44:38 +0000 Subject: [PATCH] =?UTF-8?q?feat(tax-article):=20split=20legacy=20mixed-VAT?= =?UTF-8?q?=20group=20into=20two=20=C6=8Flav=C9=99=203=20groups?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add the two Əlavə 3 declaration tables as prefixed Tax Article groups: - "ƏDV tutulan dövriyyə barədə məlumat" (301.x, 36 articles) - "ƏDV tutulan əməliyyat sayılmayan dövriyyə barədə məlumat" (328–336, 9) mirroring the client scripts that populate Declaration of value added tax Əlavə 3. Remove the legacy "ƏDV tutulan və tutulmayan əməliyyatlar" group (6 unused, unprefixed articles) from the fixture, and add a post_model_sync patch to delete it on other sites before fixtures import (fixture import never deletes). Co-Authored-By: Claude Opus 4.8 (1M context) --- taxes_az/fixtures/tax_article.json | 596 +++++++++++++++--- taxes_az/patches.txt | 3 +- taxes_az/patches/__init__.py | 0 .../remove_legacy_mixed_vat_tax_articles.py | 27 + 4 files changed, 547 insertions(+), 79 deletions(-) create mode 100644 taxes_az/patches/__init__.py create mode 100644 taxes_az/patches/remove_legacy_mixed_vat_tax_articles.py diff --git a/taxes_az/fixtures/tax_article.json b/taxes_az/fixtures/tax_article.json index 79af55d..bc52ef6 100644 --- a/taxes_az/fixtures/tax_article.json +++ b/taxes_az/fixtures/tax_article.json @@ -329,17 +329,6 @@ "old_parent": null, "parent_tax_article": "Verginin hesablanması" }, - { - "article_name": "ƏDV tutulan və tutulmayan əməliyyatlar", - "declaration": null, - "docstatus": 0, - "doctype": "Tax Article", - "is_group": 1, - "modified": "2025-08-26 19:45:07.170148", - "name": "ƏDV tutulan və tutulmayan əməliyyatlar", - "old_parent": null, - "parent_tax_article": "Əlavə Dəyər Vergisi (ƏDV)" - }, { "article_name": "Əvəzləşdirilən vergi", "declaration": null, @@ -516,72 +505,6 @@ "old_parent": null, "parent_tax_article": null }, - { - "article_name": "VM 159.5-ci maddəsinə əsasən ƏDV tutulan əməliyyat sayılan mallardan (işlərdən, xidmətlərdən) qeyri-kommersiya məqsədləri üçün istifadə edilməsi, malların itməsi, əskik gəlməsi, xarab olması, tam amortizasiya olunmadan uçotdan silinməsi və ya oğurlanması üzrə məbləğ", - "declaration": "Declaration of value added tax", - "docstatus": 0, - "doctype": "Tax Article", - "is_group": 0, - "modified": "2025-09-19 16:35:19.689000", - "name": "VM 159.5-ci maddəsinə əsasən ƏDV tutulan əməliyyat sayılan mallardan (işlərdən, xidmətlərdən) qeyri-kommersiya məqsədləri üçün istifadə e...", - "old_parent": null, - "parent_tax_article": "ƏDV tutulan və tutulmayan əməliyyatlar" - }, - { - "article_name": "VM 159.6-cı maddəsinə əsasən ƏDV üzrə qeydiyyatı ləğv edilmə tarixinə olan mal qalığının məbləği", - "declaration": "Declaration of value added tax", - "docstatus": 0, - "doctype": "Tax Article", - "is_group": 0, - "modified": "2025-09-19 16:35:19.689000", - "name": "VM 159.6-cı maddəsinə əsasən ƏDV üzrə qeydiyyatı ləğv edilmə tarixinə olan mal qalığının məbləği", - "old_parent": null, - "parent_tax_article": "ƏDV tutulan və tutulmayan əməliyyatlar" - }, - { - "article_name": "VM-nin 159.2-ci maddəsinə əsasən bu Məcəllənin 167-ci və 168-ci maddələrinə uyğun olaraq Azərbaycan Respublikasınını hüdudlarından kənarda malların təqdim edilməsi, xidmətlərin göstərilməsi və işlər görülməsi üzrə əməliyyatlar", - "declaration": "Declaration of value added tax", - "docstatus": 0, - "doctype": "Tax Article", - "is_group": 0, - "modified": "2025-09-19 16:35:19.689000", - "name": "VM-nin 159.2-ci maddəsinə əsasən bu Məcəllənin 167-ci və 168-ci maddələrinə uyğun olaraq Azərbaycan Respublikasınını hüdudlarından kənard...", - "old_parent": null, - "parent_tax_article": "ƏDV tutulan və tutulmayan əməliyyatlar" - }, - { - "article_name": "VM-nin 159.5-ci maddəsinə əsasən fövqəladə hallarda, qanunvericiliklə müəyyən edilmiş təbii itki normaları daxilində zayolmadan əmələ gələn itkilər, təbii itki normaları daxilində xarabolmalar və bu kimi əskikgəlmələr üzrə məbləğ", - "declaration": "Declaration of value added tax", - "docstatus": 0, - "doctype": "Tax Article", - "is_group": 0, - "modified": "2025-09-19 16:35:19.689000", - "name": "VM-nin 159.5-ci maddəsinə əsasən fövqəladə hallarda, qanunvericiliklə müəyyən edilmiş təbii itki normaları daxilində zayolmadan əmələ gəl...", - "old_parent": null, - "parent_tax_article": "ƏDV tutulan və tutulmayan əməliyyatlar" - }, - { - "article_name": "VM-nin 159.7-ci maddəsinə əsasən vergiyə cəlb olunmayan əməliyyatlar", - "declaration": "Declaration of value added tax", - "docstatus": 0, - "doctype": "Tax Article", - "is_group": 0, - "modified": "2025-09-19 16:35:19.689000", - "name": "VM-nin 159.7-ci maddəsinə əsasən vergiyə cəlb olunmayan əməliyyatlar", - "old_parent": null, - "parent_tax_article": "ƏDV tutulan və tutulmayan əməliyyatlar" - }, - { - "article_name": "Vergi Məcəlləsinin 160-cı maddəsinə əsasən müəssisənin təqdim edilməsi", - "declaration": "Declaration of value added tax", - "docstatus": 0, - "doctype": "Tax Article", - "is_group": 0, - "modified": "2025-09-19 16:35:19.689000", - "name": "Vergi Məcəlləsinin 160-cı maddəsinə əsasən müəssisənin təqdim edilməsi", - "old_parent": null, - "parent_tax_article": "ƏDV tutulan və tutulmayan əməliyyatlar" - }, { "article_name": "Vergi Məcəlləsinin 165.1.1-ci maddəsinə əsasən aparılan əməliyyatlar", "declaration": "Declaration of value added tax", @@ -2385,5 +2308,522 @@ "name": "Vergi Məcəlləsinin 227.1-ci maddəsinə əsasən İşğaldan azad edilmiş ərazinin rezidentləri", "old_parent": null, "parent_tax_article": "Verginin hesablanması" + }, + { + "article_name": "ƏDV tutulan dövriyyə barədə məlumat", + "declaration": null, + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 1, + "modified": "2026-06-08 00:00:00.000000", + "name": "ƏDV tutulan dövriyyə barədə məlumat", + "old_parent": null, + "parent_tax_article": "Əlavə Dəyər Vergisi (ƏDV)" + }, + { + "article_name": "ƏDV tutulan əməliyyat sayılmayan dövriyyə barədə məlumat", + "declaration": null, + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 1, + "modified": "2026-06-08 00:00:00.000000", + "name": "ƏDV tutulan əməliyyat sayılmayan dövriyyə barədə məlumat", + "old_parent": null, + "parent_tax_article": "Əlavə Dəyər Vergisi (ƏDV)" + }, + { + "article_name": "301.1 Təqdim edilmiş mallar (işlər, xidmətlər) üzrə ƏDV-yə 18 faiz dərəcə ilə cəlb olunan əməliyyatların məbləği CƏMİ", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1 Təqdim edilmiş mallar (işlər, xidmətlər) üzrə ƏDV-yə 18 faiz dərəcə ilə cəlb olunan əməliyyatların məbləği CƏMİ", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.1 Malların təqdim edilməsindən gəlir", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.1 Malların təqdim edilməsindən gəlir", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.1.1 Girov əmlakların(malların) təqdim edilməsi", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.1.1 Girov əmlakların(malların) təqdim edilməsi", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.1.2 Əmək haqqının əvəzınə təqdim edilmiş mallar", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.1.2 Əmək haqqının əvəzınə təqdim edilmiş mallar", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.1.3 Agent vasitəsi ilə təqdim edilmiş mallar üzrə gəlirlər", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.1.3 Agent vasitəsi ilə təqdim edilmiş mallar üzrə gəlirlər", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.1.4 Müstəqil ƏDV ödəyicisi olan struktur bölmələri arasında təqdim edilmiş mallar", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.1.4 Müstəqil ƏDV ödəyicisi olan struktur bölmələri arasında təqdim edilmiş mallar", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.1.5 Haqqı ödənilməklə və ya əvəzsiz qaydada öz işçilərinə və digər şəxslərə mal verilməsi", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.1.5 Haqqı ödənilməklə və ya əvəzsiz qaydada öz işçilərinə və digər şəxslərə mal verilməsi", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.1.6 Barter əməliyyatları üzrə malların təqdim edilməsi", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.1.6 Barter əməliyyatları üzrə malların təqdim edilməsi", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.1.7 Digər malların təqdim edilməsi üzrə əməliyyatlar", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.1.7 Digər malların təqdim edilməsi üzrə əməliyyatlar", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.1.8 Təqdim ediləcək malların hesabına əvvəlcədən alınmış ödənişləri", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.1.8 Təqdim ediləcək malların hesabına əvvəlcədən alınmış ödənişləri", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.1.9 Daşınan və daşınmaz əmlakın təqdim edilməkdən gəlirlər", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.1.9 Daşınan və daşınmaz əmlakın təqdim edilməkdən gəlirlər", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.1.10 Mallar təqdim edildikdən sonra verilmiş borclar", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.1.10 Mallar təqdim edildikdən sonra verilmiş borclar", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.1.11 Mallar təqdim edilənədək verilmiş borclar", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.1.11 Mallar təqdim edilənədək verilmiş borclar", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.1.12 Malların təqdim edilməsi üzrə yaranan debitor borclar üzrə iddia müddətinin bitməsi", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.1.12 Malların təqdim edilməsi üzrə yaranan debitor borclar üzrə iddia müddətinin bitməsi", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.1.13 Qarşılıqlı hesablaşmalar aparıldıqda öhdəliyin ləğv edilməsi və ya ödənilməsi", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.1.13 Qarşılıqlı hesablaşmalar aparıldıqda öhdəliyin ləğv edilməsi və ya ödənilməsi", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.1.14 Tələb hüququ güzəşt edildikdə – güzəşt edilən məbləğ", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.1.14 Tələb hüququ güzəşt edildikdə – güzəşt edilən məbləğ", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.2 İşlərin görülməsi və xidmətlərin göstərilməsi üzrə əməliyyatlar", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.2 İşlərin görülməsi və xidmətlərin göstərilməsi üzrə əməliyyatlar", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.2.1 Daşınan və daşınmaz əmlakın icarəyə verilməsindən gəlirlər", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.2.1 Daşınan və daşınmaz əmlakın icarəyə verilməsindən gəlirlər", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.2.2 Əmək haqqının əvəzinə işlərin görülməsi və xidmətlərin göstərilməsi üzrə əməliyyatlar", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.2.2 Əmək haqqının əvəzinə işlərin görülməsi və xidmətlərin göstərilməsi üzrə əməliyyatlar", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.2.3 Müstəqil ƏDV ödəyicisi olan struktur bölmələri arasında işlərin görülməsi və xidmətlərin göstərilməsi üzrə əməliyyatlar", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.2.3 Müstəqil ƏDV ödəyicisi olan struktur bölmələri arasında işlərin görülməsi və xidmətlərin göstərilməsi üzrə əməliyyatlar", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.2.4 Əvəzsiz işlərin görülməsi və xidmətlərin göstərilməsi üzrə əməliyyatlar", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.2.4 Əvəzsiz işlərin görülməsi və xidmətlərin göstərilməsi üzrə əməliyyatlar", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.2.5 Barter əməliyyatları üzrə işlərin görülməsi və xidmətlərin göstərilməsi", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.2.5 Barter əməliyyatları üzrə işlərin görülməsi və xidmətlərin göstərilməsi", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.2.6 Sair işlərin görülməsi və xidmətlərin göstərilməsi üzrə əməliyyatlar", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.2.6 Sair işlərin görülməsi və xidmətlərin göstərilməsi üzrə əməliyyatlar", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.2.7 Təqdim ediləcək işlərin və xidmətlərin hesabına əvvəlcədən alınmış ödənişləri", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.2.7 Təqdim ediləcək işlərin və xidmətlərin hesabına əvvəlcədən alınmış ödənişləri", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.2.8 Emal əməliyyatları üzrə işlərin görülməsi və xidmətlərin göstərilməsi", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.2.8 Emal əməliyyatları üzrə işlərin görülməsi və xidmətlərin göstərilməsi", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.2.9 İşlər, xidmətlər təqdim edildikdən sonra verilmiş borclar", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.2.9 İşlər, xidmətlər təqdim edildikdən sonra verilmiş borclar", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.2.10 İşlər, xidmətlər təqdim edilənədək verilmiş borclar", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.2.10 İşlər, xidmətlər təqdim edilənədək verilmiş borclar", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.2.11 Tələb hüququ güzəşt edildikdə – güzəşt edilən məbləğ", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.2.11 Tələb hüququ güzəşt edildikdə – güzəşt edilən məbləğ", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.2.12 İşlərin, xidmətlərin təqdim edilməsi üzrə yaranan debitor borclar üzrə iddia müddətinin bitməsi", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.2.12 İşlərin, xidmətlərin təqdim edilməsi üzrə yaranan debitor borclar üzrə iddia müddətinin bitməsi", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.2.13 Qarşılıqlı hesablaşmalar aparıldıqda öhdəliyin ləğv edilməsi və ya ödənilməsi", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.2.13 Qarşılıqlı hesablaşmalar aparıldıqda öhdəliyin ləğv edilməsi və ya ödənilməsi", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.3 Vergi Məcəlləsinin 159.5-ci maddəsinə əsasən ƏDV tutulan əməliyyat sayılan mallardan (işlərdən, xidmətlərdən) qeyri-kommersiya məqsədləri üçün istifadə edilməsi, fövqəladə hallardan başqa malların itməsi, əksik gəlməsi, xarab olması, tam amortizasiya olunmadan uçotdan silinməsi və ya oğurlanması üzrə məbləğ", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.3 Vergi Məcəlləsinin 159.5-ci maddəsinə əsasən ƏDV tutulan əməliyyat sayılan mallardan (işlərdən, xidmətlərdən) qeyri-kommersiya mə...", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301.1.4 Vergi Məcəlləsinin 159.6-cü maddəsinə əsasən ƏDV üzrə qeydiyyatı ləğv edilmə tarixinə olan mal qalığının məbləği", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301.1.4 Vergi Məcəlləsinin 159.6-cü maddəsinə əsasən ƏDV üzrə qeydiyyatı ləğv edilmə tarixinə olan mal qalığının məbləği", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301-1 Elektron ticarət üzrə ƏDV-yə 18 faiz dərəcə ilə cəlb edilən əməliyyatlar", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301-1 Elektron ticarət üzrə ƏDV-yə 18 faiz dərəcə ilə cəlb edilən əməliyyatlar", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301-2 Pərakəndə ticarət üzrə ƏDV-yə 18 faiz dərəcə ilə cəlb edilən əməliyyatlar", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301-2 Pərakəndə ticarət üzrə ƏDV-yə 18 faiz dərəcə ilə cəlb edilən əməliyyatlar", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301-3 Topdan ticarət üzrə ƏDV-yə 18 faiz dərəcə ilə cəlb edilən əməliyyatlar", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301-3 Topdan ticarət üzrə ƏDV-yə 18 faiz dərəcə ilə cəlb edilən əməliyyatlar", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "301-4 Tibb müəssisələrinin və özəl tibbi praktika ilə məşğul olan fiziki şəxslərin hesabat dövrü ərzində əhaliyə göstərilən tibbi xidmətlər üzrə nağdsız qaydada POS-terminal vasitəsi ilə aparılan ödəmələr əsasında formalaşan dövriyyə", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "301-4 Tibb müəssisələrinin və özəl tibbi praktika ilə məşğul olan fiziki şəxslərin hesabat dövrü ərzində əhaliyə göstərilən tibbi xidmətl...", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan dövriyyə barədə məlumat" + }, + { + "article_name": "328. VM-nin 159.2-ci maddəsinə əsasən bu Məcəllənin 167-ci və 168-ci maddələrinə uyğun olaraq Azərbaycan Respublikasının hüdudlarından kənarda malların təqdim edilməsi, xidmətlərin göstərilməsi və işlər görülməsi üzrə əməliyyatlar", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "328. VM-nin 159.2-ci maddəsinə əsasən bu Məcəllənin 167-ci və 168-ci maddələrinə uyğun olaraq Azərbaycan Respublikasının hüdudlarından k...", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan əməliyyat sayılmayan dövriyyə barədə məlumat" + }, + { + "article_name": "329. VM-nin 159.5-ci maddəsinə əsasən fövqəladə hallarda, qanunvericiliklə müəyyən edilmiş təbii itki normaları daxilində zayolmadan əmələ gələn itkilər, təbii itki normaları daxilində xarabolmalar və bu kimi əskikgəlmələr üzrə məbləğ", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "329. VM-nin 159.5-ci maddəsinə əsasən fövqəladə hallarda, qanunvericiliklə müəyyən edilmiş təbii itki normaları daxilində zayolmadan əmə...", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan əməliyyat sayılmayan dövriyyə barədə məlumat" + }, + { + "article_name": "330. Vergi Məcəlləsinin 159.7-ci maddəsinə əsasən vergiyə cəlb olunmayan əməliyyatlar", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "330. Vergi Məcəlləsinin 159.7-ci maddəsinə əsasən vergiyə cəlb olunmayan əməliyyatlar", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan əməliyyat sayılmayan dövriyyə barədə məlumat" + }, + { + "article_name": "331. Vergi Məcəlləsinin 160-cı maddəsinə əsasən vergiyə cəlb edilməyən əməliyyatlar, o cümlədən müəssisənin təqdim edilməsi", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "331. Vergi Məcəlləsinin 160-cı maddəsinə əsasən vergiyə cəlb edilməyən əməliyyatlar, o cümlədən müəssisənin təqdim edilməsi", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan əməliyyat sayılmayan dövriyyə barədə məlumat" + }, + { + "article_name": "332. Müstəqil sahibkarlıq fəaliyyəti çərçivəsində malların göndərilməsi, işlərin görülməsi və xidmətlərin göstərilməsi sayılmayan əməliyyatlar üzrə", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "332. Müstəqil sahibkarlıq fəaliyyəti çərçivəsində malların göndərilməsi, işlərin görülməsi və xidmətlərin göstərilməsi sayılmayan əməliyy...", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan əməliyyat sayılmayan dövriyyə barədə məlumat" + }, + { + "article_name": "333. Rüsumsuz ticarət mağazalarında (Duty-Free) malların təqdim edilməsi və xidmətlərin göstərilməsi üzrə əməliyyatlar", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "333. Rüsumsuz ticarət mağazalarında (Duty-Free) malların təqdim edilməsi və xidmətlərin göstərilməsi üzrə əməliyyatlar", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan əməliyyat sayılmayan dövriyyə barədə məlumat" + }, + { + "article_name": "334. Qeyri-sahibkarlıq fəaliyyəti üzrə əməliyyatlar", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "334. Qeyri-sahibkarlıq fəaliyyəti üzrə əməliyyatlar", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan əməliyyat sayılmayan dövriyyə barədə məlumat" + }, + { + "article_name": "335. Pul vəsaitləri üzrə əməliyyatlar (maliyyə xidmətləri istisna olmaqla)", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "335. Pul vəsaitləri üzrə əməliyyatlar (maliyyə xidmətləri istisna olmaqla)", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan əməliyyat sayılmayan dövriyyə barədə məlumat" + }, + { + "article_name": "336. Torpaq sahələrinin təqdim edilməsi üzrə əməliyyatlar", + "declaration": "Declaration of value added tax", + "docstatus": 0, + "doctype": "Tax Article", + "is_group": 0, + "modified": "2026-06-08 00:00:00.000000", + "name": "336. Torpaq sahələrinin təqdim edilməsi üzrə əməliyyatlar", + "old_parent": null, + "parent_tax_article": "ƏDV tutulan əməliyyat sayılmayan dövriyyə barədə məlumat" } -] \ No newline at end of file +] diff --git a/taxes_az/patches.txt b/taxes_az/patches.txt index f15c3a9..a3e0bf7 100644 --- a/taxes_az/patches.txt +++ b/taxes_az/patches.txt @@ -3,4 +3,5 @@ # Read docs to understand patches: https://frappeframework.com/docs/v14/user/en/database-migrations [post_model_sync] -# Patches added in this section will be executed after doctypes are migrated \ No newline at end of file +# Patches added in this section will be executed after doctypes are migrated +taxes_az.patches.remove_legacy_mixed_vat_tax_articles \ No newline at end of file diff --git a/taxes_az/patches/__init__.py b/taxes_az/patches/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/taxes_az/patches/remove_legacy_mixed_vat_tax_articles.py b/taxes_az/patches/remove_legacy_mixed_vat_tax_articles.py new file mode 100644 index 0000000..2be5671 --- /dev/null +++ b/taxes_az/patches/remove_legacy_mixed_vat_tax_articles.py @@ -0,0 +1,27 @@ +"""Remove the legacy "ƏDV tutulan və tutulmayan əməliyyatlar" group and its +children. Their content was split into two prefixed groups +("ƏDV tutulan dövriyyə barədə məlumat" / "ƏDV tutulan əməliyyat sayılmayan +dövriyyə barədə məlumat") which ship via the tax_article fixture. + +Runs in post_model_sync, i.e. before fixtures are imported on migrate, so the +new prefixed articles are created cleanly without colliding with the old ones. +Idempotent: a no-op once the legacy records are gone. +""" + +import frappe + +OLD_GROUP = "ƏDV tutulan və tutulmayan əməliyyatlar" + + +def execute(): + if not frappe.db.exists("DocType", "Tax Article"): + return + + # children first (NestedSet refuses to drop a group that still has children) + for name in frappe.get_all( + "Tax Article", filters={"parent_tax_article": OLD_GROUP}, pluck="name" + ): + frappe.delete_doc("Tax Article", name, force=1, ignore_permissions=True) + + if frappe.db.exists("Tax Article", OLD_GROUP): + frappe.delete_doc("Tax Article", OLD_GROUP, force=1, ignore_permissions=True)