0.01
No release in over 3 years
Low commit activity in last 3 years
A lib written in ruby that talks to the german accounting software collmex.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 2.5
>= 0
 Project Readme

Collmex-Ruby

A Ruby lib for speaking with the german accounting software collmex.

Build Status Code Climate Dependency Status Coverage Status Gem Version

Add it to your project

Just add it to your gemfile:

gem "collmex-ruby", require: "collmex"

Configuration

In your code (in a rails-projekt you might create a config/initializers/collmex-ruby.rb) you can setup your credentials:

Collmex.setup_login_data( username: "123456", password: "123456", customer_id: "123456" )

Use it

For example to get a customer and and accounting document, just enqueue the commands to the request:

request = Collmex::Request.run do
  enqueue :customer_get, id: 9999
  enqueue :accdoc_get,   id: 1
end

Take a look at the response:

request.response

It holds an array of all returned collmex api lines.

Digging deeper

API Lines

Collmex unfortunately has a batch csv api. Every request can hold a bunch of lines. The Documentation can be found here.

You can build a line by instanciating its corresponding class that inherits from Collmex::Api::Line. Under the hood, the lines are translated into csv before we send them to collmex, or parsed from csv whn we receive them from collmex. Just give the params of the line as a hash. Every line object has a @hash property that holds the data.

ACCDOC_GET

For building a line object that asks for the Accountingdocument with id 1:

accdoc_get = Collmex::Api::AccdocGet.new( id: 1 )

CUSTOMER_GET

A line that asks for the customer with id: 10

customer_get = Collmex::Api::CustomerGet.new( id: 10 )

The request

A request is initiated with

request = Collmex::Request.new

And you can enqueue your commands to it:

request.enqueue Collmex::Api::AccdocGet.new(id: 1)
request.enqueue Collmex::Api::CustomerGet.new(id: 1)

When you have finished building your request, you can execute it:

request.execute

The response

When the request is executed, the response is parsed. Every answered line now sits as an object in our response-array:

request.resonse.count        # number of returned lines
request.response.last.class  # Collmex::Api::Message

The content of a received line sits in the @hash-property of its Object.

request.response.last.to_h    # holds the data.

Sugar

You can write a request with less words by directly call the run-method and enqueue the lines inside a block (you can use symbols to identify the commands):

request = Collmex::Request.run do
  enqueue :accdoc_get, id: 1
  enqueue :customer_get, id: 10
end

Datatypes

While collmex sends and receives only strings via csv, we treat the data as ruby object.

Collmex String

Its represented as a string in ruby. There is no length restriction. So you have to care for yourself that collmex can handle all the contents of a Char field.

Collmex Float

Collmex floats are represented as floats in ruby too. You can give it a string or a integer too. When we send something to collmex in a float field, it is limited to 2 decimals.

Collmex Currency

Collmex has Currency as its own datatype. In ruby we use the smallest unit (cent in €) and take the amount as an integer. We have put some special parsing methods when a string should represent the alue of a currency field. Jus take a look at the spec/lib/collmex/api_spec.rb to see how we handle it.

Collmex Integer

Integers are the simples datatype and transparent between ruby and collmex. There is just some special handling that cares for delimiters in numbers to represent the correct value

Authors:

This lib was originally written for palabea by roman l.

Bitdeli Badge