fix(vat): map Əlavə 8 rows to real child fieldnames
populate_vat_tables built Əlavə 8 Tablo 2 rows with keys that do not exist on "Declaration of value added tax Elave 8 2ci" (şəxsinadı, şəxsinvöeni, sertifikatınseriyası, nsi, xidmətindəyəri). set_table() assigned them onto the child object without error, so rows were created empty. Map to the actual fieldnames. The doctype stores series and number in a single "Sertifikatın seriya / nömrəsi" field, so cert_no is written whole and _split_cert_no is dropped. Also widen the two Int fields: the value column truncated decimals, and VÖEN is an identifier that must not lose leading zeros — both now match Elave 8 1ci. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
afd65ce302
commit
1aba387f87
|
|
@ -7,7 +7,6 @@ from frappe import _
|
||||||
from frappe.utils import flt, getdate, add_months, cint
|
from frappe.utils import flt, getdate, add_months, cint
|
||||||
from datetime import datetime, date
|
from datetime import datetime, date
|
||||||
import calendar
|
import calendar
|
||||||
import re
|
|
||||||
|
|
||||||
class Declarationofvalueaddedtax(Document):
|
class Declarationofvalueaddedtax(Document):
|
||||||
pass
|
pass
|
||||||
|
|
@ -27,21 +26,6 @@ ACT_TYPE_MAP = {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def _split_cert_no(cert_no):
|
|
||||||
"""Split a combined certificate number into (series, number).
|
|
||||||
|
|
||||||
Leading letters are the series, the trailing digits are the number, e.g.
|
|
||||||
"Az10000001" -> ("Az", "10000001"). If there are no leading letters the
|
|
||||||
whole value becomes the number. The series field is 3 chars wide, so it is
|
|
||||||
capped to 3 to avoid truncation errors.
|
|
||||||
"""
|
|
||||||
s = (cert_no or "").strip()
|
|
||||||
m = re.match(r"^([^\d]+)(\d.*)$", s)
|
|
||||||
if m:
|
|
||||||
return m.group(1).strip()[:3], m.group(2).strip()
|
|
||||||
return "", s
|
|
||||||
|
|
||||||
|
|
||||||
def _period_filters(year, month):
|
def _period_filters(year, month):
|
||||||
"""Build report filters (company + month date range) from year + month."""
|
"""Build report filters (company + month date range) from year + month."""
|
||||||
from frappe.utils import get_last_day
|
from frappe.utils import get_last_day
|
||||||
|
|
@ -122,13 +106,11 @@ def populate_vat_tables(year, month):
|
||||||
# item amount is kept per certificate (no splitting across certificates).
|
# item amount is kept per certificate (no splitting across certificates).
|
||||||
elave_8_2 = []
|
elave_8_2 = []
|
||||||
for r in (certificate_get_data(filters) or []):
|
for r in (certificate_get_data(filters) or []):
|
||||||
series, number = _split_cert_no(r.get("cert_no"))
|
|
||||||
elave_8_2.append({
|
elave_8_2.append({
|
||||||
"şəxsinadı": r.get("taxpayer_full_name"),
|
"sertifikatınseriyanömrəsi": r.get("cert_no"),
|
||||||
"şəxsinvöeni": r.get("voen") or None,
|
"sertifikattəqdimolunanşəxsinvöeni": r.get("voen") or None,
|
||||||
"sertifikatınseriyası": series,
|
"sertifikattəqdimolunanşəxsinadı": r.get("taxpayer_full_name"),
|
||||||
"nsi": number,
|
"sertifikataltındatəqdimolunanmallarınişlərinxidmətlərindəyəri": r.get("value"),
|
||||||
"xidmətindəyəri": r.get("value"),
|
|
||||||
})
|
})
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "sertifikatt\u0259qdimolunan\u015f\u0259xsinv\u00f6eni",
|
"fieldname": "sertifikatt\u0259qdimolunan\u015f\u0259xsinv\u00f6eni",
|
||||||
"fieldtype": "Int",
|
"fieldtype": "Data",
|
||||||
"in_list_view": 1,
|
"in_list_view": 1,
|
||||||
"label": "Sertifikat t\u0259qdim olunan \u015f\u0259xsin V\u00f6eni"
|
"label": "Sertifikat t\u0259qdim olunan \u015f\u0259xsin V\u00f6eni"
|
||||||
},
|
},
|
||||||
|
|
@ -32,7 +32,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "sertifikatalt\u0131ndat\u0259qdimolunanmallar\u0131ni\u015fl\u0259rinxidm\u0259tl\u0259rind\u0259y\u0259ri",
|
"fieldname": "sertifikatalt\u0131ndat\u0259qdimolunanmallar\u0131ni\u015fl\u0259rinxidm\u0259tl\u0259rind\u0259y\u0259ri",
|
||||||
"fieldtype": "Int",
|
"fieldtype": "Float",
|
||||||
"in_list_view": 1,
|
"in_list_view": 1,
|
||||||
"label": "Sertifikat alt\u0131nda t\u0259qdim olunan mallar\u0131n (i\u015fl\u0259rin, xidm\u0259tl\u0259rin) d\u0259y\u0259ri"
|
"label": "Sertifikat alt\u0131nda t\u0259qdim olunan mallar\u0131n (i\u015fl\u0259rin, xidm\u0259tl\u0259rin) d\u0259y\u0259ri"
|
||||||
}
|
}
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
"index_web_pages_for_search": 1,
|
"index_web_pages_for_search": 1,
|
||||||
"istable": 1,
|
"istable": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2026-06-29 12:04:23.750868",
|
"modified": "2026-07-09 10:00:00.000000",
|
||||||
"modified_by": "nihad_m@jeysoft.az",
|
"modified_by": "nihad_m@jeysoft.az",
|
||||||
"module": "Taxes Az",
|
"module": "Taxes Az",
|
||||||
"name": "Declaration of value added tax Elave 8 2ci",
|
"name": "Declaration of value added tax Elave 8 2ci",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue