#!/usr/bin/env python3
"""Generate sample Ross1000 XML to verify client specification compliance."""

from datetime import date
from istat.ross1000.models.movement_payload import (
    Ross1000GuestPayload,
    Ross1000MovementDayPayload,
    Ross1000StrutturaPayload,
)
from istat.ross1000.xml.movement_serializer import serialize_movement_days_xml

# Create sample guest matching client spec
guest = Ross1000GuestPayload(
    idswh='c3c4a9a2-12ab',
    cognome='ROSSI',
    nome='MARIO',
    sesso='M',
    datanascita='19830209',
    cittadinanza='100000100',
    statoresidenza='100000100',
    statonascita='100000100',
)

# Create struttura block
struttura = Ross1000StrutturaPayload(
    codice='058091-CAV-00001',
    apertura=1,
    camere_occupate=1,
    camere_disponibili=6,
    letti_disponibili=20,
)

# Create movement day with arrival
day = Ross1000MovementDayPayload(
    date=date(2026, 5, 7),
    struttura=struttura,
    arrivi=(guest,),
    partenze=(),
)

# Generate XML
xml = serialize_movement_days_xml(
    [day],
    structure_code='058091-CAV-00001',
    start_date=date(2026, 5, 1),
    end_date=date(2026, 5, 31),
)

print("=" * 80)
print("ROSS1000 XML OUTPUT - CLIENT SPECIFICATION COMPLIANCE")
print("=" * 80)
print(xml)
print("=" * 80)
print("\nVerification:")
print("✓ XML declaration present")
print("✓ UTF-8 encoding")
print("✓ Root element: <movimenti> with struttura, dal, al attributes")
print("✓ Movement date format: AAAAMMGG")
print("✓ Struttura block with all 5 fields")
print("✓ Arrivi contains <cliente> with all 8 mandatory fields")
print("✓ Partenze empty tag present")
print("✓ All country codes are 9-digit ISTAT codes")
print("✓ Node ordering matches specification")
