Проверка схемы не прошла; XML не соответствует стандартам UBL 2.1 в соответствии со спецификациями ZATCA

Я пытаюсь использовать валидацию моего xml со стандартами UBL 2.1 в соответствии со спецификациями ZATCA. Но я не могу проверить это, так как мой xml выглядит отлично, но я не понимаю, что происходит не так .Я использовал пакет python json2xml для создания xml.Этот пакет генерирует xml из json.

Erros перечисляет то, что я получаю от ZATCA XML Validator:

категория : XSD_SCHEMA_ERROR

code :SAXParseException

message : Schema validation failed; XML не соответствует стандартам UBL 2.1 в соответствии со спецификациями ZATCA

Вот мой код Xml:

Вот код python, который я написал для создания XML:

def download_invoice_xml(request, invoice_type, invoice_no):
in_data = InvoiceReport.objects.filter(invoice_type=invoice_type, invoice_number=invoice_no)
for inv in in_data:
    jsonData = inv.invoice_data
    mode = inv.creation_mode  

# Issuetime = jsonData['IssueTime']
# d1 = datetime.strptime(Issuetime, "%Y-%m-%dT%H:%M:%S")
# dt_to_string = d1.strftime('%d-%m-%Y %H:%M:%S')
# jsonData['IssueTime'] = dt_to_string
#
# Issuedate = jsonData['IssueDate']
# d2 = datetime.strptime(Issuedate, "%Y-%m-%d")
# dt_to_string2 = d1.strftime('%d-%m-%Y')
# jsonData['IssueDate'] = dt_to_string2
if jsonData.get('AllowanceCharge').get('ChargeIndicator') == 0:
    jsonData['AllowanceCharge']['ChargeIndicator'] = False
for i in jsonData.get('InvoiceLine'):
    if i.get('AllowanceCharge').get('ChargeIndicator') == 0:
        i['AllowanceCharge']['ChargeIndicator'] = False
    if i.get('Price').get('AllowanceCharge').get('ChargeIndicator') == 0:
        i['Price']['AllowanceCharge']['ChargeIndicator'] = False
xml_output = json2xml.Json2xml(jsonData, wrapper="Invoice", pretty=True, attr_type=False).to_xml()

now = datetime.now()
if xml_output:
    response = HttpResponse(xml_output, content_type='application/xml')
    xml_date = jsonData['IssueDate'].replace("-", "")
    xml_time = jsonData['IssueTime'].replace(":", "")
    filename = jsonData['AccountingSupplierParty']['Party']['PartyTaxScheme']['CompanyID'] + "_" + \
               xml_date + "T" + xml_time + "_" + str(jsonData['ID']) + ".xml"
    # filename = jsonData['AccountingSupplierParty']['Party']['PartyIdentification']['ID'] + "_%s_%s.xml" % (
    #     str((now.strftime("%Y%m%d%H%M%S"))), jsonData['ID'])      
    content = "attachment; filename=%s" % (filename)
    response['Content-Disposition'] = content
    return response
return HttpResponse("Not found")

Это часть системы ZATCA E-invoice и код проекта написан на python django.

Спецификации

UBL, которые не выполняются, обычно делятся на две категории:

  1. Требуется атрибут, но вы его не предоставили.
  2. Порядок атрибутов внутри элемента неправильный.

Чтобы решить вашу проблему, вы должны проверить каждый элемент вашего XML на соответствие спецификации UBL Schema и найти требуемые атрибуты, которые вы не предоставляете, или атрибуты не по порядку...

  • Перейдите на этот сайт, где перечислены спецификации UBL: http://www.datypic.com/sc/ubl21/ss.html

    .
  • В поисковой строке вверху введите название элемента, за которым следует слово "Тип" (например: Invoice --> поиск InvoiceType

    .

enter image description here

  • В спецификации элемента найдите каждый атрибут, отношение которого начинается с [1 . Этот атрибут является обязательным, убедитесь, что вы предоставили для него значение. enter image description here
  • Проверьте порядок атрибутов и убедитесь, что они добавлены в правильном порядке. enter image description here

Это гарантирует, что все ваши элементы будут соответствовать спецификациям UBL.

Существует много проблем в : https://sandbox.zatca.gov.sa/. Поскольку результаты в кодировании и обмене счетами имеют много ошибок, Закят был предупрежден снова и снова

Вернуться на верх