Git Product home page Git Product logo

collmex-ruby's Introduction

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

collmex-ruby's People

Contributors

bitdeli-chef avatar iaddict avatar morgoth avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.