跳转到主要内容

使用invoice2data库导入供应商发票

项目描述

License: AGPL-3

会计发票导入Invoice2data

此模块是模块account_invoice_import的扩展:它添加了对常规PDF发票的支持,即没有嵌入式XML文件的PDF发票。它使用invoice2data库,该库负责提取PDF发票的文本,找到现有的发票模板并执行发票模板以从发票中提取有用信息。

要了解此模块开发的全部故事,请阅读这篇博客文章

安装

此模块需要Python库invoice2data,可在Github上找到。

要安装正确的库版本,请运行

sudo pip install git+https://github.com/invoice-x/invoice2data.git

为了在Odoo v8上使用较新的invoice2data版本,您需要Odoo v8版本日期在2016年1月29日之后,以便它包含此修复程序,该修复程序解决了此错误

invoice2data库需要最新版本的pdftotext实用程序,该实用程序在Debian/Ubuntu中尚未打包。因此,您应从Foolabs的FTP服务器下载它,然后解压缩它,并将文件bin64/pdftotext复制到/usr/local/bin

如果您希望invoice2data库在PDF不包含文本时回退到OCR(只有极少数的PDF发票是基于图像的,需要OCR),则还应安装Imagemagick(以获取convert实用程序将PDF转换为TIFF)和Tesseract OCR

sudo apt-get install imagemagick tesseract-ocr

如果您想为invoice2data库使用自定义发票模板(除了由invoice2data库提供的模板),您应该在Odoo服务器配置文件中添加一行,例如

invoice2data_templates_dir = /opt/invoice2data_local_templates

并将您的发票模板存储为YAML格式(.yml扩展名)在您配置的目录中。如果您在这个目录中添加发票模板,您不需要重启Odoo,它们将在下一次发票导入时自动使用。

如果您只想使用您自己的自定义发票模板并忽略由invoice2data库提供的模板,您应该在您的Odoo服务器配置文件中包含以下内容

invoice2data_templates_dir = /opt/invoice2data_local_templates
invoice2data_exclude_built_in_templates = True

法国用户还应该安装法国本地化中可用的模块l10n_fr_invoice_import,详情请参考此PR

配置

进入供应商表单视图并使用以下参数进行配置

  • 是否是一家公司?选择True

  • 供应商选择True

  • 设置纳税人识别号(即增值税号)(当在Odoo合作伙伴数据库中搜索供应商时默认使用增值税号)

  • 会计选项卡中创建一个发票导入配置

对于没有嵌入XML文件的供应商PDF发票,您需要在invoice2data Python库中创建一个模板文件,格式为YAML。这相当简单;如果您熟悉regexp,为每个供应商完成这项工作不应超过10分钟。

以下是一些帮助您为供应商添加模板的提示

  • Free SAS模板文件为例。您可以在invoice2data/test/pdfs/2015-07-02-invoice_free_fiber.pdf下找到该供应商的示例PDF发票。

  • 尝试在Free的示例发票上手动运行invoice2data库

% python -m invoice2data.main --debug invoice2data/test/pdfs/2015-07-02-invoice_free_fiber.pdf

在输出中,您将首先得到PDF的文本,然后是解析发票和正则表达式的调试信息,最后是包含解析结果的字典。

  • 如果供应商的增值税号出现在PDF发票的文本中,我认为将其用作关键字是个好主意。添加另外两个关键字是良好的实践:一个用于语言(例如,匹配发票的语言中的单词发票)和一个用于货币,这样就可以匹配特定语言和货币的该供应商的发票。

  • 字段列表应包含以下条目

    • ‘vat’与供应商的增值税号(如果供应商的增值税号不在PDF文件中,添加一个‘partner_name’键,或者如果供应商是法国人并且已安装模块l10n_fr_invoice_pdf_import,则添加一个‘siren’键)

    • ‘amount’(‘amount’是含税的总金额)

    • ‘amount_untaxed’或‘amount_tax’(两者之一,不需要两者都添加)

    • ‘date’:发票的日期

    • ‘invoice_number’

    • 如果PDF文件中提供此信息,则‘date_due’

用法

请参阅模块account_invoice_import的用法部分。

Try me on Runbot

错误跟踪

错误在GitHub Issues上进行跟踪。如有问题,请先检查是否已报告您的问题。如果您是第一个发现问题的,请通过提供详细且受欢迎的反馈来帮助我们解决它。

致谢

贡献者

维护者

Odoo Community Association

此模块由OCA维护。

ODoo社区协会(OCA)是一个非营利组织,其使命是支持Odoo功能的协作开发并推广其广泛应用。

要为该模块做出贡献,请访问 https://odoo-community.org

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪一个,请了解更多关于 安装包 的信息。

源代码分发

此版本没有提供源代码分发文件。请参阅 生成分发存档的教程

构建分发

支持者