From c25ad51d752c8eabb2f5ba59e915938e0dad304b Mon Sep 17 00:00:00 2001 From: Frederik Jaeckel Date: Wed, 22 Jan 2025 18:31:40 +0100 Subject: [PATCH] add pdf-import --- document.py | 29 ++++++++++++++++++++++++----- locale/de.po | 9 +++++++++ locale/en.po | 3 +++ tests/invoice-fx-basic.pdf | Bin 0 -> 28516 bytes 4 files changed, 36 insertions(+), 5 deletions(-) create mode 100644 tests/invoice-fx-basic.pdf diff --git a/document.py b/document.py index 470a4ee..8767cd9 100644 --- a/document.py +++ b/document.py @@ -47,8 +47,9 @@ class Incoming(metaclass=PoolMeta): __name__ = 'document.incoming' xsd_type = fields.Char( - string='XML Content', readonly=True, - states={'invisible': Eval('mime_type', '') != 'application/xml'}) + string='Content Data', readonly=True, + states={'invisible': ~Eval('mime_type', '').in_( + ['application/xml', 'application/pdf'])}) @classmethod def default_company(cls): @@ -72,7 +73,7 @@ class Incoming(metaclass=PoolMeta): """ invoice = super()._process_supplier_invoice() - if self.mime_type == 'application/xml': + if self.mime_type in ['application/xml', 'application/pdf']: # detect xml-content xml_info = self._facturx_detect_content() if xml_info: @@ -1037,7 +1038,23 @@ class Incoming(metaclass=PoolMeta): tuple: ('xsd tyle', '', ) defaults to None if not detected """ - xml_data = etree.fromstring(self.data) + if self.mime_type == 'application/xml': + xml_data = etree.fromstring(self.data) + elif self.mime_type == 'application/pdf': + try: + (xml_filename, xml_bytes) = facturx.get_xml_from_pdf( + self.data, check_xsd=True) + xml_data = etree.fromstring(xml_bytes) + except Exception as e1: + raise UserError(gettext( + 'document_incoming_invoice_xml.msg_convert_error', + msg=str(e1))) + else: + raise UserError(gettext( + 'document_incoming_invoice_xml.msg_convert_error', + msg='content-type "%(mime)s" not supported' % { + 'mime': self.mime_type})) + fx_flavour = facturx.get_flavor(xml_data) fx_level = facturx.get_level(xml_data) @@ -1052,7 +1069,9 @@ class Incoming(metaclass=PoolMeta): schema = etree.XMLSchema(etree.parse(fname)) try: schema.assertValid(xml_data) - self.xsd_type = xsdtype + self.xsd_type = ( + xsdtype if self.mime_type == 'application/xml' + else 'PDF + ' + xsdtype) return (xsdtype, funcname, xml_data) except etree.DocumentInvalid as e1: # fire exception for knows xml-content diff --git a/locale/de.po b/locale/de.po index 5f8d1e0..396b479 100644 --- a/locale/de.po +++ b/locale/de.po @@ -91,6 +91,7 @@ msgid "Categories used to determine tax and accounts for a product on an invoice msgstr "Kategorien zur Ermittlung von Steuer und Konten für ein Produkt auf einer Rechnungszeile." + ##################################### # document.incoming.confprodcat_rel # ##################################### @@ -105,3 +106,11 @@ msgstr "konfiguration" msgctxt "field:document.incoming.confprodcat_rel,category:" msgid "Category" msgstr "Kategorie" + + +##################### +# document.incoming # +##################### +msgctxt "field:document.incoming,xsd_type:" +msgid "Content Data" +msgstr "Dateninhalt" diff --git a/locale/en.po b/locale/en.po index aec4cc4..24dbbdf 100644 --- a/locale/en.po +++ b/locale/en.po @@ -94,3 +94,6 @@ msgctxt "field:document.incoming.confprodcat_rel,category:" msgid "Category" msgstr "Category" +msgctxt "field:document.incoming,xsd_type:" +msgid "Content Data" +msgstr "Content Data" diff --git a/tests/invoice-fx-basic.pdf b/tests/invoice-fx-basic.pdf new file mode 100644 index 0000000000000000000000000000000000000000..20978b4a045fc4f4145510bf366c75242d1644e2 GIT binary patch literal 28516 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 literal 0 HcmV?d00001