跳转到主要内容

Collmex导入/导出API的Python绑定

项目描述

https://github.com/gocept/gocept.collmex/workflows/tests/badge.svg https://coveralls.io/repos/github/gocept/gocept.collmex/badge.svg?branch=master Current version on PyPI Supported Python versions

简介

Collmex是一个针对(小型)公司的在线ERP系统,侧重于简单会计。<http://www.collmex.de>(注意:Collmex总部位于德国,但似乎支持英语。不过,你可能会遇到德语文本。)

此包旨在提供对Collmex API的Python绑定。它包括事务管理,以便与ZODB或其他可以与< cite>transaction 包集成的数据库集成。

凭证

要初始化与collmex服务器的连接,需要登录凭证。这些凭证可以在创建gocept.collmex.collmex.Collmex对象时明确给出,或者通过名为collmex.ini的ini文件。该ini文件必须位于项目目录或其父目录中,例如,您可以将collmex.ini放置在您的家目录中,以使用这些凭证为所有项目。ini文件必须包含用于生产的[credentials]部分以及用于测试目的的[test-credentials]部分。每个部分都必须包含以下选项:customer_idcompany_idusernamepassword。可以使用collmex.ini-example文件作为模板。

示例

[credentials]
customer_id = 42555
company_id = 1
username = realuser
password = realpassword

[test-credentials]
customer_id = 41222
company_id = 1
username = testuser
password = testpassword

Collmex API

Collmex提供了一个基于POST和CSV的API,这些API被封装在一个提供各种CSV记录类型方法的实用工具中。API文档可在http://www.collmex.de/cgi-bin/cgi.exe?1005,1,help,api中找到。

collmex对象

collmex对象是访问collmex的中心位置。在Zope 3术语中,它是一个全局实用工具

>>> import os
>>> import gocept.collmex.collmex
>>> os.environ['collmex_credential_section'] = 'test-credentials'
>>> collmex = gocept.collmex.collmex.Collmex()

飞行前清理

首先,我们需要清理Collmex环境

>>> import gocept.collmex.testing
>>> gocept.collmex.testing.cleanup_collmex()

交易集成

gocept.collmex支持事务集成。所有修改调用都在事务提交之前被缓冲。XXX解释更多。

>>> import transaction

客户:create_customer 和 get_customers

>>> customer = gocept.collmex.model.Customer()
>>> customer['Kundennummer'] = 10000
>>> customer['Firma'] = 'Testkunden'
>>> collmex.create(customer)
>>> transaction.commit()

可以使用get_customers方法列出客户

>>> customers = collmex.get_customers()
>>> customers
[<gocept.collmex.model.Customer object at 0x...>, <gocept.collmex.model.Customer object at 0x...>]
>>> len(customers)
2

第一个客户是通用的一个

>>> customer = customers[0]
>>> customer['Satzart']
'CMXKND'
>>> customer['Kundennummer']
'9999'
>>> customer['Firma']
'Allgemeiner Geschäftspartner'

第二个客户是在测试设置期间创建的

>>> customer = customers[1]
>>> customer['Satzart']
'CMXKND'
>>> customer['Kundennummer']
'10000'
>>> customer['Firma']
'Testkunden'

产品:create_product 和 get_products

使用create_product方法创建产品

>>> product = gocept.collmex.model.Product()
>>> product['Produktnummer'] = 'TEST'
>>> product['Bezeichnung'] = 'Testprodukt'
>>> product['Produktart'] = 1 # Dienstleistung
>>> product['Basismengeneinheit'] = 'HR'
>>> product['Verkaufs-Preis'] = 5
>>> collmex.create(product)
>>> transaction.commit()
>>> collmex.get_products()[0]['Bezeichnung']
'Testprodukt'

客户协议

>>> cag = gocept.collmex.model.CustomerAgreement()
>>> cag['Kunde Nr'] = '10000'
>>> cag['Firma Nr'] = 1
>>> cag['Produktnummer'] = 'TEST'
>>> cag['Gültig ab'] = '01.01.2000'
>>> cag['Gültig bis'] = '31.12.9999'
>>> cag['Preis'] = 7
>>> cag['Währung'] = "EUR"
>>> collmex.create(cag)
>>> transaction.commit()
>>> cag_from_collmex = collmex.get_customer_agreements()
>>> list(cag)
['CMXCAG', '1', '10000', 'TEST', '(NULL)', '01.01.2000', '31.12.9999', 7, 'EUR', '(NULL)']

发票:create_invoice 和 get_invoices

使用create_invoice方法创建发票

>>> import datetime
>>> start_date = datetime.datetime.now()
>>> item = gocept.collmex.model.InvoiceItem()
>>> item['Kunden-Nr'] = '10000'
>>> item['Rechnungsnummer'] = 100000
>>> item['Menge'] = 3
>>> item['Produktnummer'] = 'TEST'
>>> item['Rechnungstext'] = 'item text \u2013 with non-ascii characters'
>>> item['Positionstyp'] = 0
>>> collmex.create_invoice([item])

可以使用get_invoices方法再次查找发票。然而,如上所述,发票仅注册用于添加。目前查询不返回发票

>>> collmex.get_invoices(customer_id='10000', start_date=start_date)
[]

提交后,找到了发票

>>> transaction.commit()
>>> collmex.get_invoices(customer_id='10000',
...                      start_date=start_date)[0]['Rechnungstext']
'item text – with non-ascii characters'

活动

本节描述了活动(活动记录)的API

创建活动

要提交活动,需要一个项目和员工

>>> import datetime
>>> import gocept.collmex.testing
>>> gocept.collmex.testing.create_project('Testprojekt', collmex=collmex)
>>> gocept.collmex.testing.create_employee(collmex)
>>> act = gocept.collmex.model.Activity()
>>> act['Projekt Nr'] = '1' # Testprojekt
>>> act['Mitarbeiter Nr'] = '1' # Sebastian Wehrmann
>>> act['Satz Nr'] = '1' # TEST
>>> act['Beschreibung'] = 'allgemeine T\xe4tigkeit'
>>> act['Datum'] = datetime.date(2012, 1, 23)
>>> act['Von'] = datetime.time(8, 7)
>>> act['Bis'] = datetime.time(14, 28)
>>> act['Pausen'] = datetime.timedelta(hours=1, minutes=12)
>>> collmex.create(act)
>>> transaction.commit()

使用 get_activities 导出

get_activities返回活动对象。

>>> activities = collmex.get_activities()
>>> activities[0]['Beschreibung']
'allgemeine T\xe4tigkeit'

项目:get_projects

可以使用get_projects API导出项目。它为每个项目的每个项目集(Projektsatz)返回一个条目

>>> proj = collmex.get_projects()
>>> len(proj)
2
>>> proj[0]['Projektnummer'] == proj[1]['Projektnummer']
True
>>> proj[0]['Satz']
'7,00'
>>> proj[1]['Satz']
'9,65'
>>> proj[0]['Inaktiv']
'0'

缓存

从Collmex查询的结果在事务持续期间进行缓存。

为了展示这一点,我们对执行实际HTTP通信的_post()方法进行了跟踪,以显示何时调用它

>>> original_post = collmex._post
>>> def tracing_post(self, *args, **kw):
...     print('cache miss')
...     return original_post(*args, **kw)
>>> collmex._post = tracing_post.__get__(collmex, type(collmex))

当然,在事务中第一次从Collmex检索时

>>> transaction.abort()
>>> collmex.get_products()[0]['Bezeichnung']
cache miss
'Testprodukt'

但之后,值被缓存

>>> collmex.get_products()[0]['Bezeichnung']
'Testprodukt'

当事务结束时,缓存被无效化

>>> transaction.commit()
>>> collmex.get_products()[0]['Bezeichnung']
cache miss
'Testprodukt'
>>> collmex.get_products()[0]['Bezeichnung']
'Testprodukt'

移除跟踪仪器

>>> collmex._post = original_post

更改

2.1.0 (2024-05-31)

  • 更新发票项目到当前collmex字段名称。(#27

  • 添加客户协议(CMXCAG)

2.0.1 (2023-08-23)

  • 将轮子标记为非通用。

2.0 (2023-08-23)

  • 停止支持Python 2.7、3.5、3.6。

  • 添加对Python 3.9、3.10、3.11的支持。

  • 通过使用无效用户名进行测试来避免密码耗尽。

  • 修复测试以使用更少的连接。

1.9 (2019-09-02)

  • 停止支持Python 3.3和3.4。

  • 添加对Python 3.6、3.7和3.8b4的支持。

  • 将代码迁移到GitHub。

  • 更新测试以使用新的Collmex URL。

1.8.3 (2018-03-16)

  • 实现了CMXABO,仅适用于“collmex Verein”。

1.8.2 (2017-01-23)

  • 实现了MITGLIED_GET作为get_members()和CMXMGD作为models.Member,两者仅适用于“collmex Verein”。

1.8.1 (2016-06-09)

  • 扩展Project以通过API检索预算和汇总的工作。

1.8.0 (2016-01-27)

  • 声明与Python 3.4的兼容性。

  • 停止支持Python 3.2。

  • 确保测试不会在测试账户上连续多次使用无效凭证。

  • 如果在Collmex.browser_login期间Collmex网站返回错误,则引发ValueError。迄今为止,错误被隐藏,但以下操作失败。特别是这应该有助于发现无效凭证。

1.7.0 (2014-09-04)

  • 如果存在,则使用由环境变量COLLMEX_INI中提供的路径给出的collmex.ini文件,否则从当前目录向上查找。

  • 不要在我们的调试输出中记录密码。

1.6.0 (2014-08-18)

  • 取消弃用方法Collmex.create_invoice,现在它将自动分配发票ID。

  • 添加了模拟collmex连接,但只记录方法调用的工具gocept.collmex.testing.ConsoleDump

1.5.1 (2013-12-09)

  • 修复棕色袋发布1.5.0

1.5.0 (2013-12-09)

  • 在Activity中添加了解析/计算日期、时间、休息和持续时间的功能。

1.4.4 (2013-09-25)

  • 在创建gocept.collmex.collmex.Collmex时改进对无效凭证的检查。

  • 在解析ini文件失败时提供更多详细信息。

1.4.3 (2013-09-24)

  • 修复在创建gocept.collmex.collmex.Collmex时对无效凭证的检查。

1.4.2 (2013-09-23)

  • 登录Collmex的凭证可以通过collmex.ini文件提供。

1.4.1 (2013-09-16)

  • 测试活动的创建现在完全可定制。

1.4 (2013-09-13)

  • gocept.collmex现在与Python 3.2和Python 3.3兼容!

1.3 (2013-02-22)

  • 实现活动API(#11954)。

1.2.1 (2012-03-09)

  • 在collmex网站更改(包括表单元素的重命名)后修复gocept.collmex.collmex.Collmex.browser_login()

1.2 (2012-02-21)

注意:此版本意外发布时没有包含1.1.1中的更改,但是发布本身包含1.1的更改,因此并非损坏。

  • 在CMXPRJ(项目)上添加Inaktiv属性。

1.1.1 (2012-02-17)

  • 纠正先前的棕色袋发布。

1.1 (2012-02-17)

  • 从2012年2月9日起,不要遵守Collmex的robots.txt。:(

1.0 (2012-01-23)

  • 强制使用Python 2.7。

  • 添加了测试辅助程序get_collmex,用于从环境变量创建collmex对象。

  • 将测试辅助程序collmex_login()更改为方法:gocept.collmex.collmex.Collmex.browser_login()

  • 修改了测试辅助程序create_activity的签名,因此它不再需要参数。

0.9 (2012-01-20)

  • 添加了测试辅助程序create_activity。

0.8 (2012-01-20)

  • 添加了检索活动的API(get_activities)。

  • 更新测试和测试基础设施以反映Collmex的最近更改。

0.7 (2009-11-05)

  • 添加了检索项目和创建活动的API。

0.6 (2009-02-16)

  • 使模型对API更改具有鲁棒性,这样在记录变长时它们不会立即中断。

  • 更新客户模型以适应当前API。

0.5.1 (2009-01-08)

  • 修复多线程错误:每个线程都需要初始化线程局部数据。

0.5 (2008-12-19)

  • 将Collmex返回的值转换为unicode。

  • 在事务期间缓存结果。

0.4 (2008-12-11)

  • 添加了get_products和create_product。

  • 添加了create_customer。

  • 现在,gocept.collmex.testing.cleanup_collmex()仅删除任何现有数据,它不会添加任何示例客户或产品,请使用API进行该操作。

0.3.1 (2008-12-02)

  • Python 2.5兼容性。

0.3 (2008-12-01)

  • 上传数据时使用Windows-1252作为编码(以前为ISO-8859-1)。

  • 修复了上传失败时的交易集成。

0.2 (2008-11-28)

  • 对Collmex API更改的修改。

  • 添加了 get_customers 以查询客户(API CUSTOMER_GET)。

0.1 (2008-10-14)

  • 第一个版本。支持获取和存储发票。

项目详情


下载文件

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

源分布

gocept.collmex-2.1.0.tar.gz (26.1 kB 查看散列)

上传时间

构建分布

gocept.collmex-2.1.0-py3-none-any.whl (24.3 kB 查看散列)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面