Skip to content

wildland/syspro-ruby

Repository files navigation

syspro-ruby

syspro-ruby is an adapter gem to connect to SYSPRO 7 ERP installations. You can use this gem to connect to the SYSPRO 7 WCF Service and build Ruby applications on top of your SYSPRO data.

Installation

Add this line to your application's Gemfile:

gem 'syspro'

And then execute:

$ bundle

Or install it yourself as:

$ gem install syspro

Usage

Utilities

Logon

user_id = Syspro::Logon.logon(username, password, company_id, company_password)

user_id will be a UserId object that contains the guid supplied by SYSPRO. You will use this guid to make further requests to SYSPRO.

GetLogonProfile

user_profile = Syspro::GetLogonProfile.get_logon_profile(guid)

user_profile will be a UserProfile object that contains the following:

  • company_name
  • operator_code
  • operator_group
  • operator_email_address
  • operator_location
  • operator_language_code
  • system_language
  • accounting_date
  • company_date
  • default_ar_branch
  • default_ap_branch
  • default_bank
  • default_warehouse
  • default_customer
  • system_site_id
  • system_nationality_code
  • local_currency_code
  • currency_description
  • default_requisition_user
  • xml_to_html_transform
  • css_style
  • css_suffix
  • decimal_format
  • date_format
  • functional_role
  • database_type
  • syspro_version
  • enet_version
  • syspro_server_bit_width

Logoff

logged_off = Syspro::Logoff.logoff(guid)

logged_off will be true if the user has been successfully logged off, and will contain an error string if an error has occured.

Query

Browse

Browse returns a paginated view of a particular table.

This is an example using the generic Browse Business Object, COMBRW.

combrw = Syspro::BusinessObject::ComBrw.new
combrw.browse_name = "InvMaster"
combrw.start_condition = ""
combrw.return_rows = 5
combrw.filters = []
combrw.table_name = "InvMaster"
combrw.title = "StockCodes"
combrw.columns = [
  {name: "StockCode"}
]

browse_result = combrw.call(user_id.guid)

browse_result will be a BrowseObject, which has the following structure:

{
  title: "Title",
  rows: [ { name: "", value: "", data_type: "" } ],
  next_prev_key:  { name: "", text: "" },
  header_details: { name: "", text: "" }
}

Query

Query gives control over joins between multiple tables over a single Business Object.

This is an example using the generic Query Business Object, COMFND.

comfnd = Syspro::BusinessObjects::ComFnd.new
comfnd.table_name = "InvMaster"
comfnd.return_rows = 5
comfnd.columns = [
  {
    name: "StockCode"
  }
]
comfnd.expressions = [
  {
    andor: "And",
    column: "StockCode",
    condition: "EQ",
    value: "02"
  }
]
comfnd.order_by = "StockCode"

query_result = comfnd.call(user_id.guid)

This will return a QueryObject, which looks like this:

{
  header_details: { name: "", text: "" },
  rows: [ { name: "", value: "" } ],
  row_count: 1
}

Fetch

Fetch selects the TOP 1 of the query.

This is an example using the generic Fetch Business Object, COMFCH.

comfch = Syspro::BusinessObjects::ComFch.new
comfch.table_name = "InvMaster"
comfch.key = "02"
comfch.optional_keys = []
comfch.full_key_provided = false
comfch.default_type = ""
comfch.espresso_fetch = true

fetch_result = comfch.call(user_id.guid)

This will return a FetchObject, with the following structure:

{
  table_name: "",
  columns: [ { name: "", value: "" } ]
}

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake test to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Run bundle exec rake and ensure everything looks good.

Bug reports and pull requests are welcome on GitHub at https://github.com/ike/syspro-ruby. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.

License

The gem is available as open source under the terms of the MIT License.

Code of Conduct

Everyone interacting in the Syspro project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.