Commit 724c1cbe05051e44f65ec67325a08926692561b1

Authored by Isaac Lewis
1 parent 0f29247c

add to readme; fix queryobject

@@ -72,6 +72,103 @@ logged_off = Syspro::Logoff.logoff(guid) @@ -72,6 +72,103 @@ logged_off = Syspro::Logoff.logoff(guid)
72 ``` 72 ```
73 `logged_off` will be `true` if the user has been successfully logged off, and will contain an error string if an error has occured. 73 `logged_off` will be `true` if the user has been successfully logged off, and will contain an error string if an error has occured.
74 74
  75 +### Query
  76 +
  77 +#### Browse
  78 +Browse returns a paginated view of a particular table.
  79 +
  80 +This is an example using the generic Browse Business Object, `COMBRW`.
  81 +```rb
  82 +combrw = Syspro::BusinessObject::ComBrw.new
  83 +combrw.browse_name = "InvMaster"
  84 +combrw.start_condition = ""
  85 +combrw.return_rows = 5
  86 +combrw.filters = []
  87 +combrw.table_name = "InvMaster"
  88 +combrw.title = "StockCodes"
  89 +combrw.columns = [
  90 + {name: "StockCode"}
  91 +]
  92 +
  93 +browse_result = combrw.call(user_id.guid)
  94 +```
  95 +
  96 +`browse_result` will be a BrowseObject, which has the following structure:
  97 +
  98 +```rb
  99 +{
  100 + title: "Title",
  101 + rows: [ { name: "", value: "", data_type: "" } ],
  102 + next_prev_key: { name: "", text: "" },
  103 + header_details: { name: "", text: "" }
  104 +}
  105 +```
  106 +
  107 +#### Query
  108 +
  109 +Query gives control over joins between multiple tables over a single Business Object.
  110 +
  111 +This is an example using the generic Query Business Object, `COMFND`.
  112 +
  113 +```rb
  114 +comfnd = Syspro::BusinessObjects::ComFnd.new
  115 +comfnd.table_name = "InvMaster"
  116 +comfnd.return_rows = 5
  117 +comfnd.columns = [
  118 + {
  119 + name: "StockCode"
  120 + }
  121 +]
  122 +comfnd.expressions = [
  123 + {
  124 + andor: "And",
  125 + column: "StockCode",
  126 + condition: "EQ",
  127 + value: "02"
  128 + }
  129 +]
  130 +comfnd.order_by = "StockCode"
  131 +
  132 +query_result = comfnd.call(user_id.guid)
  133 +```
  134 +
  135 +This will return a QueryObject, which looks like this:
  136 +
  137 +```rb
  138 +{
  139 + header_details: { name: "", text: "" },
  140 + rows: [ { name: "", value: "" } ],
  141 + row_count: 1
  142 +}
  143 +```
  144 +
  145 +#### Fetch
  146 +
  147 +Fetch selects the `TOP 1` of the query.
  148 +
  149 +This is an example using the generic Fetch Business Object, `COMFCH`.
  150 +
  151 +```rb
  152 +comfch = Syspro::BusinessObjects::ComFch.new
  153 +comfch.table_name = "InvMaster"
  154 +comfch.key = "02"
  155 +comfch.optional_keys = []
  156 +comfch.full_key_provided = false
  157 +comfch.default_type = ""
  158 +comfch.espresso_fetch = true
  159 +
  160 +fetch_result = comfch.call(user_id.guid)
  161 +```
  162 +
  163 +This will return a FetchObject, with the following structure:
  164 +
  165 +```rb
  166 +{
  167 + table_name: "",
  168 + columns: [ { name: "", value: "" } ]
  169 +}
  170 +```
  171 +
75 ## Development 172 ## Development
76 173
77 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. 174 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.
lib/syspro/business_objects/parsers/comfnd_parser.rb
@@ -30,14 +30,14 @@ module Syspro @@ -30,14 +30,14 @@ module Syspro
30 } 30 }
31 }.flatten(1).compact 31 }.flatten(1).compact
32 32
33 - FindObject.new( 33 + QueryObject.new(
34 header_details_obj, 34 header_details_obj,
35 rows_obj, 35 rows_obj,
36 doc.first_element_child.xpath('//RowsReturned').text.to_i 36 doc.first_element_child.xpath('//RowsReturned').text.to_i
37 ) 37 )
38 end 38 end
39 39
40 - FindObject = Struct.new(:header_details, :rows, :row_count) 40 + QueryObject = Struct.new(:header_details, :rows, :row_count)
41 end 41 end
42 end 42 end
43 end 43 end
test/query_test.rb
@@ -41,9 +41,9 @@ class QueryTest < Minitest::Test @@ -41,9 +41,9 @@ class QueryTest < Minitest::Test
41 ] 41 ]
42 comfnd.order_by = "StockCode" 42 comfnd.order_by = "StockCode"
43 43
44 - find_result = comfnd.call(user_id.guid) 44 + query_result = comfnd.call(user_id.guid)
45 45
46 - refute_nil find_result 46 + refute_nil query_result
47 end 47 end
48 48
49 def test_query_fetch 49 def test_query_fetch