Commit
d9177f32280bce23ed500524f5d2203c7c8d3c74
create sor model; create sorqbs bo files; create sor test
| @@ -25,10 +25,12 @@ require 'syspro/api_operations/query' |
| @@ -25,10 +25,12 @@ require 'syspro/api_operations/query' |
25
| require 'syspro/business_objects/combrw' |
25
| require 'syspro/business_objects/combrw' |
26
| require 'syspro/business_objects/comfch' |
26
| require 'syspro/business_objects/comfch' |
27
| require 'syspro/business_objects/comfnd' |
27
| require 'syspro/business_objects/comfnd' |
| |
28
| +require 'syspro/business_objects/sorqbs' |
28
| |
29
| |
29
| require 'syspro/business_objects/parsers/combrw_parser' |
30
| require 'syspro/business_objects/parsers/combrw_parser' |
30
| require 'syspro/business_objects/parsers/comfch_parser' |
31
| require 'syspro/business_objects/parsers/comfch_parser' |
31
| require 'syspro/business_objects/parsers/comfnd_parser' |
32
| require 'syspro/business_objects/parsers/comfnd_parser' |
| |
33
| +require 'syspro/business_objects/parsers/sorqbs_parser' |
32
| |
34
| |
33
| # Main Module |
35
| # Main Module |
34
| module Syspro |
36
| module Syspro |
| @@ -16,8 +16,6 @@ module Syspro |
| @@ -16,8 +16,6 @@ module Syspro |
16
| request(:get, '/Query/Query', params) |
16
| request(:get, '/Query/Query', params) |
17
| end |
17
| end |
18
| |
18
| |
19
| - def find; end |
| |
20
| - |
| |
21
| private |
19
| private |
22
| |
20
| |
23
| def warn_on_opts_in_params(params) |
21
| def warn_on_opts_in_params(params) |
| |
1
| +module Syspro |
| |
2
| + module BusinessObjects |
| |
3
| + module Models |
| |
4
| + class Sor |
| |
5
| + attr_accessor :customer, :name, :customer_po_number, :cust_stock_code, :stock_code, :description, |
| |
6
| + :supply_wh, :release_manager, :release_status, :purchase_order, :shipment_days, |
| |
7
| + :num_day_drops, :num_week_drops, :day_in_week, :num_month_drops, :day_in_month, |
| |
8
| + :price_contract_num, :stock_uom, :contract_qty, :total_delivered, :total_received, |
| |
9
| + :opening_cume, :data_last_inv, :base_date, :expiry_date, :last_invoice, :buying_group, |
| |
10
| + :last_dispatch_note, :confirmed_release_details, :unconfirmed_release_details, :release_details, |
| |
11
| + :delivery_history_details, :release_history_details, :sor_detail, :contract_item |
| |
12
| + end |
| |
13
| + end |
| |
14
| + end |
| |
15
| +end |
| |
16
| + |
| |
1
| +# frozen_string_literal: true |
| |
2
| + |
| |
3
| +module Syspro |
| |
4
| + module BusinessObjects |
| |
5
| + module Parsers |
| |
6
| + class SorQbs |
| |
7
| + attr_reader :doc |
| |
8
| + |
| |
9
| + def initialize(doc) |
| |
10
| + @doc = doc |
| |
11
| + end |
| |
12
| + |
| |
13
| + def parse |
| |
14
| + binding.pry |
| |
15
| + sor = Syspro::BusinessObjects::Models::Sor.new() |
| |
16
| + end |
| |
17
| + end |
| |
18
| + end |
| |
19
| + end |
| |
20
| +end |
| |
21
| + |
| |
1
| +<?xml version="1.0" encoding="Windows-1252"?> |
| |
2
| +<Query xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xsd:noNamespaceSchemaLocation="SORQBS.XSD"> |
| |
3
| + <Option> |
| |
4
| + <IncludeSalesOrderDetails><%= @include_sales_order_details %></IncludeSalesOrderDetails> |
| |
5
| + <IncludeContractDetails><%= @include_contact_details %></IncludeContractDetails> |
| |
6
| + <IncludeDeliveryHistory><%= @include_delivery_history %></IncludeDeliveryHistory> |
| |
7
| + <IncludeUnconfirmedReleases><%= @include_unconfirmed_releases %></IncludeUnconfirmedReleases> |
| |
8
| + <IncludeConfirmedReleases><%= @include_confirmed_releases %></IncludeConfirmedReleases> |
| |
9
| + <IncludeReleaseDetails><%= @include_release_details %></IncludeReleaseDetails> |
| |
10
| + <IncludeReleaseHistory><%= @include_release_history %></IncludeReleaseHistory> |
| |
11
| + </Option> |
| |
12
| + <% unless @filters.empty? %> |
| |
13
| + <Filter> |
| |
14
| + <% for filter in @filters %> |
| |
15
| + <<%= filter[:name] %> FilterType="<% filter[:type] %>" FilterValue="<% filter[:value] %>"/> |
| |
16
| + <% end %> |
| |
17
| + </Filter> |
| |
18
| + <% end %> |
| |
19
| +</Query> |
| |
20
| + |
| |
1
| +# frozen_string_literal: true |
| |
2
| + |
| |
3
| +require 'syspro/business_objects/parsers/sorqbs_parser' |
| |
4
| +require 'erb' |
| |
5
| + |
| |
6
| +module Syspro |
| |
7
| + module BusinessObjects |
| |
8
| + class SorQbs < ApiResource |
| |
9
| + include Syspro::ApiOperations::Query |
| |
10
| + include Syspro::BusinessObjects::Parsers |
| |
11
| + |
| |
12
| + attr_accessor :include_sales_order_details, :include_contact_details, :include_delivery_history, |
| |
13
| + :include_unconfirmed_releases, :include_confirmed_releases, :include_release_details, |
| |
14
| + :include_release_history, :filters |
| |
15
| + |
| |
16
| + def call(user_id) |
| |
17
| + xml_in = template.result(binding) |
| |
18
| + business_object = 'SORQBS' |
| |
19
| + params = { 'UserId' => user_id, 'BusinessObject' => business_object, 'XmlIn' => xml_in } |
| |
20
| + resp = SorQbs.query(params) |
| |
21
| + parse_response(resp) |
| |
22
| + end |
| |
23
| + |
| |
24
| + def template |
| |
25
| + ERB.new File.read(File.expand_path('schemas/sorqbs.xml.erb', File.dirname(__FILE__))), nil, '%' |
| |
26
| + end |
| |
27
| + |
| |
28
| + def parse_response(resp) |
| |
29
| + handle_errors(resp) |
| |
30
| + parser = SorQbsParser.new(respo[0].data) |
| |
31
| + parser.parse |
| |
32
| + end |
| |
33
| + |
| |
34
| + def handle_errors(resp) |
| |
35
| + body = resp[0].http_body |
| |
36
| + raise SysproError, body if body =~ /^(ERROR)/ |
| |
37
| + end |
| |
38
| + end |
| |
39
| + end |
| |
40
| +end |
| |
41
| + |
| |
1
| +--- |
| |
2
| +http_interactions: |
| |
3
| +- request: |
| |
4
| + method: get |
| |
5
| + uri: http://syspro.wildlandlabs.com:90/SYSPROWCFService/Rest/logon?CompanyId=L&CompanyPassword=&Operator=wland&OperatorPassword=piperita2016 |
| |
6
| + body: |
| |
7
| + encoding: US-ASCII |
| |
8
| + string: '' |
| |
9
| + headers: |
| |
10
| + User-Agent: |
| |
11
| + - Syspro/7 RubyBindings/1.0.0.alpha.1 |
| |
12
| + Content-Type: |
| |
13
| + - application/x-www-form-urlencoded |
| |
14
| + Accept-Encoding: |
| |
15
| + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 |
| |
16
| + Accept: |
| |
17
| + - "*/*" |
| |
18
| + response: |
| |
19
| + status: |
| |
20
| + code: 200 |
| |
21
| + message: OK |
| |
22
| + headers: |
| |
23
| + Content-Length: |
| |
24
| + - '36' |
| |
25
| + Content-Type: |
| |
26
| + - application/octet-stream |
| |
27
| + Server: |
| |
28
| + - Microsoft-HTTPAPI/2.0 |
| |
29
| + Date: |
| |
30
| + - Wed, 11 Apr 2018 19:00:49 GMT |
| |
31
| + body: |
| |
32
| + encoding: UTF-8 |
| |
33
| + string: 'E621DED6B5E98C4783D130230F6B29E700 ' |
| |
34
| + http_version: |
| |
35
| + recorded_at: Wed, 11 Apr 2018 19:00:49 GMT |
| |
36
| +- request: |
| |
37
| + method: get |
| |
38
| + uri: http://syspro.wildlandlabs.com:90/SYSPROWCFService/Rest/Query/Query?BusinessObject=SORQBS&UserId=E621DED6B5E98C4783D130230F6B29E700%20%20&XmlIn=%3C?xml%20version=%221.0%22%20encoding=%22Windows-1252%22?%3E%0A%3CQuery%20xmlns:xsd=%22http://www.w3.org/2001/XMLSchema-instance%22%20xsd:noNamespaceSchemaLocation=%22SORQBS.XSD%22%3E%0A%20%20%3COption%3E%0A%20%20%20%20%3CIncludeSalesOrderDetails%3Etrue%3C/IncludeSalesOrderDetails%3E%0A%20%20%20%20%3CIncludeContractDetails%3Etrue%3C/IncludeContractDetails%3E%0A%20%20%20%20%3CIncludeDeliveryHistory%3Etrue%3C/IncludeDeliveryHistory%3E%0A%20%20%20%20%3CIncludeUnconfirmedReleases%3Etrue%3C/IncludeUnconfirmedReleases%3E%0A%20%20%20%20%3CIncludeConfirmedReleases%3Etrue%3C/IncludeConfirmedReleases%3E%0A%20%20%20%20%3CIncludeReleaseDetails%3Etrue%3C/IncludeReleaseDetails%3E%0A%20%20%20%20%3CIncludeReleaseHistory%3Etrue%3C/IncludeReleaseHistory%3E%0A%20%20%3C/Option%3E%0A%20%20%20%0A%20%20%20%20%3CFilter%3E%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%3CCustomer%20FilterType=%22%22%20FilterValue=%22%22/%3E%0A%20%20%20%20%20%20%0A%20%20%20%20%3C/Filter%3E%0A%20%20%0A%3C/Query%3E%0A%0A |
| |
39
| + body: |
| |
40
| + encoding: US-ASCII |
| |
41
| + string: '' |
| |
42
| + headers: |
| |
43
| + User-Agent: |
| |
44
| + - Syspro/7 RubyBindings/1.0.0.alpha.1 |
| |
45
| + Content-Type: |
| |
46
| + - application/x-www-form-urlencoded |
| |
47
| + Accept-Encoding: |
| |
48
| + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 |
| |
49
| + Accept: |
| |
50
| + - "*/*" |
| |
51
| + response: |
| |
52
| + status: |
| |
53
| + code: 200 |
| |
54
| + message: OK |
| |
55
| + headers: |
| |
56
| + Content-Length: |
| |
57
| + - '102' |
| |
58
| + Content-Type: |
| |
59
| + - application/octet-stream |
| |
60
| + Server: |
| |
61
| + - Microsoft-HTTPAPI/2.0 |
| |
62
| + Date: |
| |
63
| + - Wed, 11 Apr 2018 19:00:53 GMT |
| |
64
| + body: |
| |
65
| + encoding: UTF-8 |
| |
66
| + string: 'ERROR: Access denied to Functional Area ''SorBlanketSo'' for operator |
| |
67
| + ''WLAND'' (Business Object ''SORQBS'')' |
| |
68
| + http_version: |
| |
69
| + recorded_at: Wed, 11 Apr 2018 19:00:53 GMT |
| |
70
| +recorded_with: VCR 4.0.0 |
| |
1
| +# frozen_string_literal: true |
| |
2
| + |
| |
3
| +require 'test_helper' |
| |
4
| + |
| |
5
| +class SorTest < Minitest::Test |
| |
6
| + extend Minitest::Spec::DSL |
| |
7
| + before { VCR.insert_cassette name } |
| |
8
| + after { VCR.eject_cassette } |
| |
9
| + |
| |
10
| + let(:username) { 'wland' } |
| |
11
| + let(:password) { 'piperita2016' } |
| |
12
| + let(:company) { 'L' } |
| |
13
| + let(:company_password) { '' } |
| |
14
| + let(:user_id) do |
| |
15
| + Syspro::Logon.logon(username, password, company, company_password) |
| |
16
| + end |
| |
17
| + |
| |
18
| + def test_sor_query |
| |
19
| + sorqbs = Syspro::BusinessObjects::SorQbs.new |
| |
20
| + |
| |
21
| + sorqbs.include_sales_order_details = true |
| |
22
| + sorqbs.include_contact_details = true |
| |
23
| + sorqbs.include_delivery_history = true |
| |
24
| + sorqbs.include_unconfirmed_releases = true |
| |
25
| + sorqbs.include_confirmed_releases = true |
| |
26
| + sorqbs.include_release_details = true |
| |
27
| + sorqbs.include_release_history = true |
| |
28
| + sorqbs.filters = [ |
| |
29
| + { name: 'Customer', type: 'A', value: 'JJJ001' } |
| |
30
| + ] |
| |
31
| + |
| |
32
| + sor_result = sorqbs.call(user_id.guid) |
| |
33
| + refute_nil sor_result |
| |
34
| + end |
| |
35
| +end |
| |
36
| + |