瑞士DTA支付记录(TA 836)生成器库
swissdta的Python项目详细描述
瑞士dta的生成器库(“datentr_geraustauschverfahren”)电子支付记录的松散灵感来自python-dta。
贡献者
- Jenny Xiao<;jennyxiao@outlook.com>;
- Loan Ventura<;minege02@gmail.com>;
免责声明
在使用库之前,请使用您的基础结构检查和测试它。
作者不保证此库将生成有效的dta记录,也不负任何责任 任何财务问题(包括但不限于:未能付款、支付给错误的一方, 付款金额不正确,财务损失)。
使用此库即表示您同意此免责声明。
许可证
分布在MIT License
功能
- 支持事务类型836890
- 实现DTA Standards and Formats中指定的大多数验证规则。
- 支持十进制,日期和带或不带空格的IBAN作为输入值
- 自动生成TA 890记录
- 自动处理序列号
- 自动为参考(TA 836)的前5个字符使用发送者标识。
- 货币代码检查(通过iso4217)
- 剪切超长的字母数字字段(如地址或用途)
- 允许的ISO拉丁代码8859-1字符的自动转换
- 具有有效值约束的字段的枚举(例如swissdta.constants.IdentificationPurpose)
- 正常默认值
- 生成正确(拉丁语-1)编码字节的序列
- 键入批注
开始
生成包含836类型的单个事务的DTA文件:
fromdatetimeimportdatetime,timedeltafromdecimalimportDecimalfromswissdtaimportChargesRule,DTAFile,IdentificationPurposedta_file=DTAFile(sender_id='ABC12',client_clearing='8888')dta_file.add_836_record(reference='01234567890',# only 11 chars, the first 5 (sender id) are added automaticallyclient_account='CH38 0888 8123 4567 8901 2',processing_date=datetime.now()+timedelta(days=1),# next daycurrency='CHF',amount=Decimal(10),client_address=('Alphabet Inc','Brandschenkestrasse 110','8002 Zürich'),recipient_iban='CH9300762011623852957',recipient_name='Herr Peter Haller',recipient_address=('Marktplaz 4','9400 Rorschach'),identification_purpose=IdentificationPurpose.UNSTRUCTURED,purpose=('DTA lib example','',''),charges_rules=ChargesRule.OUR)print(dta_file.generate().decode('latin-1'))""" >>> print(dta_file.generate().decode('latin-1')) 01000000 000001708308888 ABC120000183600ABC1201234567890CH3808888123456789012 170831CHF10, 02 Alphabet Inc Brandschenkestrasse 110 8002 Zuerich 03D CH9300762011623852957 04Herr Peter Haller Marktplaz 4 9400 Rorschach 05UDTA lib example 0 01000000 00000170830 ABC12000028900010, """
文档和测试
要生成文档并运行测试,请安装开发依赖项:
pipenv install --dev
跑步排毒
pipenv run detox
仅生成文档
pipenv run tox -e docs
只运行测试
pipenv run tox -e py36
只对代码进行lint操作
pipenv run tox -e pylint-tests,pylint
限制
- 要借记TA 836的帐户(client_account)只接受IBAN
- 受益人的银行清算编号未经银行注册处验证,无法检查其是否有效(TA 836)。
- 如果标识目的设置为结构化(TA 836),则不进行IPI引用验证。
- 不存在现有DTA文件或记录 的解析功能
- 缺少测试(应尽快修复…)