"""
utilidades
"""

from .. import form
from ..fe import fe_from_string
from datetime import datetime

def billing_reference(xmldocument: str, klass: form.BillingReference) -> form.BillingReference:
    """
    construye BillingReference desde XMLDOCUMENT
    usando KLASS como clase.
    """
    if not issubclass(klass, form.BillingReference):
        raise TypeError('klass expected subclass of BillingReference')
    
    fachoxml = fe_from_string(xmldocument)
    
    uid = fachoxml.get_element_text('./cbc:ID')
    uuid = fachoxml.get_element_text('./cbc:UUID')
    issue_date = fachoxml.get_element_text('./cbc:IssueDate')
    date = datetime.strptime(issue_date, '%Y-%m-%d')
    return klass(ident=uid, uuid=uuid, date=date)