https://github.com/quambene/eric-rs
Rust bindings and SDK for the ELSTER Rich Client (ERiC)
https://github.com/quambene/eric-rs
accounting bindings eric sdk taxes
Last synced: 2 months ago
JSON representation
Rust bindings and SDK for the ELSTER Rich Client (ERiC)
- Host: GitHub
- URL: https://github.com/quambene/eric-rs
- Owner: quambene
- License: apache-2.0
- Created: 2024-08-02T19:39:09.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2024-08-31T12:52:37.000Z (8 months ago)
- Last Synced: 2025-02-10T03:28:10.941Z (2 months ago)
- Topics: accounting, bindings, eric, sdk, taxes
- Language: Rust
- Homepage:
- Size: 132 KB
- Stars: 23
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Eric
[](https://crates.io/crates/eric-bindings)
[](https://docs.rs/eric-bindings)
[](https://crates.io/crates/eric-sdk)
[](https://docs.rs/eric-sdk)
[](https://github.com/quambene/eric-rs/actions/workflows/ci.yml)Rust bindings and SDK for the ELSTER Rich Client (ERiC)
- [What is ELSTER?](#what-is-elster)
- [What is ERiC?](#what-is-eric)
- [Requirements](#requirements)
- [Rust bindings](#rust-bindings)
- [Select bindings](#select-bindings)
- [Generate bindings](#generate-bindings)
- [Test bindings](#test-bindings)
- [Eric SDK](#eric-sdk)
- [Usage](#usage)
- [Supported Eric versions](#supported-eric-versions)
- [Test SDK](#test-sdk)
- [Changelog](#changelog)## What is ELSTER?
Elster (short for _Elektronische Steuererklärung_) is a project by the German tax administration to process tax returns and declarations.
## What is ERiC?
ERiC (short for _Elster Rich Client_) is a shared C library that is integrated into a tax application. ERiC checks the data provided by the tax application for plausibility, and transmits the validated data in encrypted form to the computing center of the respective tax administration.
## Requirements
You need to have the shared library `libericapi.so` and the header file `ericapi.h` available on your system which can be downloaded from [ELSTER for developers](https://www.elster.de/elsterweb/entwickler/login) after access has been requested [here](https://www.elster.de/elsterweb/registrierung-entwickler/form).
## Rust bindings
### Select bindings
The bindings are selected from the pre-generated bindings by specifying the
environment variables `PATH_VENDOR`, `LIBRARY_NAME`, `LIBRARY_PATH`, `HEADER_FILE`, and
`PLUGIN_PATH`. For example:``` bash
PATH_VENDOR="ERiC-40.2.10.0-Linux-x86_64/ERiC-40.2.10.0/Linux-x86_64"
LIBRARY_NAME=ericapi
LIBRARY_PATH="$PATH_VENDOR/lib"
HEADER_FILE="$PATH_VENDOR/include/ericapi.h"
PLUGIN_PATH="$PATH_VENDOR/lib/plugins2"
```### Generate bindings
You can also generate bindings on-the-fly for your specific platform and
architecture by using feature flag `generate-bindings`:``` bash
cargo build -p eric-bindings --features generate-bindings
```The bindings are generated in
`target/debug/build/eric-bindings-/out/bindings.rs`.To generate the bindings on your platform and architecture, you need `libclang` as well. For example, on Debian/Ubuntu install:
``` bash
apt install llvm-dev libclang-dev clang
```### Test bindings
The bindings are included in `src/lib.rs` via `include!` macro and tested by:
``` bash
cargo test -p eric-bindings --lib
```Logs are written to `eric.log` in the current directory.
## Eric SDK
`eric-sdk` supports single-threaded Eric instances.
### Usage
To use `eric-sdk`, add the shared C library to your path (e.g. to `LD_LIBRARY_PATH` on Linux).
To send the xml file, the path and password of the Elster certificate have to be provided via environment variables `CERTIFICATE_PATH` and `CERTIFICATE_PASSWORD`.
### Supported Eric versions
| Rust SDK | Eric |
| -------- | -------- |
| 0.1.0 | 38.1.6.0 |
| 0.2.0 | 39.6.4.0 |
| 0.3.0 | 40.1.8.0 |### Test SDK
``` bash
# Run unit tests
cargo test -p eric-sdk --lib# Run integration tests
cargo test -p eric-sdk --test '*' -- --test-threads=1# Run external tests
cargo test -p eric-sdk --test '*' --features external-test -- --test-threads=1
```## Changelog
The `eric-rs` repository contains multiple crates with separate changelogs:
- `eric-bindings`: [view changelog](https://github.com/quambene/eric-rs/blob/main/eric-bindings/CHANGELOG.md)
- `eric-sdk`: [view changelog](https://github.com/quambene/eric-rs/blob/main/eric-sdk/CHANGELOG.md)