diff --git a/eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py b/eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py index 6f594bf..935b6c3 100644 --- a/eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py +++ b/eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py @@ -8,6 +8,7 @@ import frappe from drafthorse.models.document import Document as DrafthorseDocument from erpnext import get_default_company +from facturx import get_xml_from_pdf from frappe import _, _dict, get_site_path from frappe.model.document import Document from frappe.model.mapper import get_mapped_doc @@ -86,7 +87,13 @@ def before_submit(self): def parse_einvoice(self): path_to_einvoice = Path(get_site_path(self.einvoice.lstrip("/"))).resolve() - xml = path_to_einvoice.read_bytes() + if path_to_einvoice.suffix == ".pdf": + xml_filename, xml = get_xml_from_pdf(path_to_einvoice.read_bytes()) + elif path_to_einvoice.suffix == ".xml": + xml = path_to_einvoice.read_bytes() + else: + frappe.throw(_("Unsupported file format '{0}'").format(path_to_einvoice.suffix)) + doc = DrafthorseDocument.parse(xml) self.id = str(doc.header.id) self.issue_date = str(doc.header.issue_date_time)